OpenCores
URL https://opencores.org/ocsvn/ao486/ao486/trunk

Subversion Repositories ao486

[/] [ao486/] [trunk/] [rtl/] [ao486/] [commands/] [CMD_MOVSX_MOVZX.txt] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 alfik
 
2
3
`define CMD_MOVZX       #AUTOGEN_NEXT_CMD
4
 
5
`define CMD_MOVSX       #AUTOGEN_NEXT_CMD
6
7
 
8
9
dec_ready_2byte_modregrm && { decoder[7:1], 1'b0 } == 8'hB6
10
`CMD_MOVZX
11
IF(decoder[0] == 1'b0); SET(dec_is_8bit); ENDIF();
12
SET(consume_modregrm_one);
13
14
 
15
16
dec_ready_2byte_modregrm && { decoder[7:1], 1'b0 } == 8'hBE
17
`CMD_MOVSX
18
IF(decoder[0] == 1'b0); SET(dec_is_8bit); ENDIF();
19
SET(consume_modregrm_one);
20
21
 
22
23
IF(rd_cmd == `CMD_MOVSX || rd_cmd == `CMD_MOVZX);
24
 
25
    SET(rd_dst_is_reg);
26
 
27
    SET(rd_req_reg_not_8bit);
28
 
29
    // dst: reg, src: reg
30
    IF(rd_modregrm_mod == 2'b11);
31
 
32
        SET(rd_src_is_rm);
33
 
34
        IF(rd_mutex_busy_modregrm_rm); SET(rd_waiting); ENDIF();
35
    ENDIF();
36
 
37
    // dst: memory, src: reg
38
    IF(rd_modregrm_mod != 2'b11);
39
 
40
        SET(read_length_word);
41
 
42
        SET(rd_src_is_memory);
43
 
44
        IF(rd_mutex_busy_memory); SET(rd_waiting);
45
        ELSE();
46
            SET(read_virtual);
47
 
48
            IF(~(read_for_rd_ready)); SET(rd_waiting); ENDIF();
49
        ENDIF();
50
    ENDIF();
51
ENDIF();
52
53
 
54
55
IF(exe_cmd == `CMD_MOVSX || exe_cmd == `CMD_MOVZX);
56
 
57
    SET(exe_result, (exe_cmd == `CMD_MOVSX && exe_is_8bit)?     { {24{src[7]}},  src[7:0] } :
58
                    (exe_cmd == `CMD_MOVSX)?                    { {16{src[15]}}, src[15:0] } :
59
                    (exe_cmd == `CMD_MOVZX && exe_is_8bit)?     { 24'd0, src[7:0] } :
60
                                                                { 16'd0, src[15:0] });
61
 
62
    SET(exe_is_8bit_clear, exe_is_8bit);
63
 
64
ENDIF();
65
66
 
67
68
IF(wr_cmd == `CMD_MOVSX || wr_cmd == `CMD_MOVZX);
69
    SET(write_regrm);
70
ENDIF();
71

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.