aboutsummaryrefslogtreecommitdiff
path: root/inst.v
blob: 6bb99733fef990d45e027aea94bfcfbe9f85969a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
`define UNIMP      32'b00000000000000000000000000000000
`define J          32'b1100000_?????????????????????????
`define JAL        32'b1100001_?????????????????????????
`define JALR_C     32'b1100010_000_????????????_?????_?????
`define JALR_R     32'b1100010_001_????????????_?????_?????
`define JALR_J     32'b1100010_010_????????????_?????_?????
`define BEQ        32'b1100011_000_???????_?????_?????_?????
`define BNE        32'b1100011_001_???????_?????_?????_?????
`define BLT        32'b1100011_100_???????_?????_?????_?????
`define BGE        32'b1100011_101_???????_?????_?????_?????
`define BLTU       32'b1100011_110_???????_?????_?????_?????
`define BGEU       32'b1100011_111_???????_?????_?????_?????
`define LUI        32'b1110001_????????????????????_?????
`define ADDI       32'b1110100_000_????????????_?????_?????
`define SLTI       32'b1110100_010_????????????_?????_?????
`define SLTIU      32'b1110100_011_????????????_?????_?????
`define ANDI       32'b1110100_100_????????????_?????_?????
`define ORI        32'b1110100_101_????????????_?????_?????
`define XORI       32'b1110100_110_????????????_?????_?????
`define SLLI       32'b1110100_111_000001_??????_?????_?????
`define SRLI       32'b1110100_111_000010_??????_?????_?????
`define SRAI       32'b1110100_111_000011_??????_?????_?????
`define ADD        32'b1110101_0000000000_?????_?????_?????
`define SUB        32'b1110101_0000000001_?????_?????_?????
`define SLT        32'b1110101_0000000010_?????_?????_?????
`define SLTU       32'b1110101_0000000011_?????_?????_?????
`define AND        32'b1110101_0000000100_?????_?????_?????
`define OR         32'b1110101_0000000101_?????_?????_?????
`define XOR        32'b1110101_0000000110_?????_?????_?????
`define NOR        32'b1110101_0000000111_?????_?????_?????
`define SLL        32'b1110101_1110000010_?????_?????_?????
`define SRL        32'b1110101_1110000100_?????_?????_?????
`define SRA        32'b1110101_1110000110_?????_?????_?????
`define MUL        32'b1110101_0010000000_?????_?????_?????
`define MULH       32'b1110101_0010000010_?????_?????_?????
`define MULHU      32'b1110101_0010000011_?????_?????_?????
`define DIV        32'b1110101_0010000100_?????_?????_?????
`define DIVU       32'b1110101_0010000101_?????_?????_?????
`define REM        32'b1110101_0010000110_?????_?????_?????
`define REMU       32'b1110101_0010000111_?????_?????_?????
`define ADDIW      32'b1110110_000_????????????_?????_?????
`define SLLIW      32'b1110110_111_000001_0_?????_?????_?????
`define SRLIW      32'b1110110_111_000010_0_?????_?????_?????
`define SRAIW      32'b1110110_111_000011_0_?????_?????_?????
`define ADDW       32'b1110111_0000000000_?????_?????_?????
`define SUBW       32'b1110111_0000000001_?????_?????_?????
`define SLLW       32'b1110111_1110000010_?????_?????_?????
`define SRLW       32'b1110111_1110000100_?????_?????_?????
`define SRAW       32'b1110111_1110000110_?????_?????_?????
`define MULW       32'b1110111_0010000000_?????_?????_?????
`define MULHW      32'b1110111_0010000010_?????_?????_?????
`define MULHUW     32'b1110111_0010000011_?????_?????_?????
`define DIVW       32'b1110111_0010000100_?????_?????_?????
`define DIVUW      32'b1110111_0010000101_?????_?????_?????
`define REMW       32'b1110111_0010000110_?????_?????_?????
`define REMUW      32'b1110111_0010000111_?????_?????_?????
`define LB         32'b1111000_000_????????????_?????_?????
`define LH         32'b1111000_001_????????????_?????_?????
`define LW         32'b1111000_010_????????????_?????_?????
`define LD         32'b1111000_011_????????????_?????_?????
`define LBU        32'b1111000_100_????????????_?????_?????
`define LHU        32'b1111000_101_????????????_?????_?????
`define LWU        32'b1111000_110_????????????_?????_?????
`define SYNCI      32'b1111000_111_????????????_?????_00000
`define SB         32'b1111001_000_???????_?????_?????_?????
`define SH         32'b1111001_001_???????_?????_?????_?????
`define SW         32'b1111001_010_???????_?????_?????_?????
`define SD         32'b1111001_011_???????_?????_?????_?????
`define AMOW_ADD   32'b1111010_0100000000_?????_?????_?????
`define AMOW_SWAP  32'b1111010_0100000001_?????_?????_?????
`define AMOW_AND   32'b1111010_0100000010_?????_?????_?????
`define AMOW_OR    32'b1111010_0100000011_?????_?????_?????
`define AMOW_MIN   32'b1111010_0100000100_?????_?????_?????
`define AMOW_MAX   32'b1111010_0100000101_?????_?????_?????
`define AMOW_MINU  32'b1111010_0100000110_?????_?????_?????
`define AMOW_MAXU  32'b1111010_0100000111_?????_?????_?????
`define AMO_ADD    32'b1111010_0110000000_?????_?????_?????
`define AMO_SWAP   32'b1111010_0110000001_?????_?????_?????
`define AMO_AND    32'b1111010_0110000010_?????_?????_?????
`define AMO_OR     32'b1111010_0110000011_?????_?????_?????
`define AMO_MIN    32'b1111010_0110000100_?????_?????_?????
`define AMO_MAX    32'b1111010_0110000101_?????_?????_?????
`define AMO_MINU   32'b1111010_0110000110_?????_?????_?????
`define AMO_MAXU   32'b1111010_0110000111_?????_?????_?????
`define RDNPC      32'b1111011_0000000000_00000_00000_?????
`define MFCR       32'b1111011_0010000000_?????_00000_?????
`define MTCR       32'b1111011_0010000001_?????_?????_00000
`define SYNC       32'b1111011_0100000000_00000_00000_00000
`define SYSCALL    32'b1111011_0110000000_00000_00000_00000
`define EI         32'b1101011_0000000000_00000_00000_?????
`define DI         32'b1101011_0000000001_00000_00000_?????
`define MFPCR      32'b1101011_0010000000_?????_00000_?????
`define MTPCR      32'b1101011_0010000001_?????_?????_00000
`define ERET       32'b1101011_0100000000_00000_00000_00000
`define ADD_S      32'b1101010_0000000000_?????_?????_?????
`define SUB_S      32'b1101010_0000000001_?????_?????_?????
`define MUL_S      32'b1101010_0000000010_?????_?????_?????
`define DIV_S      32'b1101010_0000000011_?????_?????_?????
`define SQRT_S     32'b1101010_0000000100_00000_?????_?????
`define SGNINJ_S   32'b1101010_0000000101_?????_?????_?????
`define SGNINJN_S  32'b1101010_0000000110_?????_?????_?????
`define SGNMUL_S   32'b1101010_0000000111_?????_?????_?????
`define ADD_D      32'b1101010_1100000000_?????_?????_?????
`define SUB_D      32'b1101010_1100000001_?????_?????_?????
`define MUL_D      32'b1101010_1100000010_?????_?????_?????
`define DIV_D      32'b1101010_1100000011_?????_?????_?????
`define SQRT_D     32'b1101010_1100000100_00000_?????_?????
`define SGNINJ_D   32'b1101010_1100000101_?????_?????_?????
`define SGNINJN_D  32'b1101010_1100000110_?????_?????_?????
`define SGNMUL_D   32'b1101010_1100000111_?????_?????_?????
`define ADD_S_RM   32'b1101010_001_??_00000_?????_?????_?????
`define SUB_S_RM   32'b1101010_001_??_00001_?????_?????_?????
`define MUL_S_RM   32'b1101010_001_??_00010_?????_?????_?????
`define DIV_S_RM   32'b1101010_001_??_00011_?????_?????_?????
`define SQRT_S_RM  32'b1101010_001_??_00100_00000_?????_?????
`define ADD_D_RM   32'b1101010_111_??_00000_?????_?????_?????
`define SUB_D_RM   32'b1101010_111_??_00001_?????_?????_?????
`define MUL_D_RM   32'b1101010_111_??_00010_?????_?????_?????
`define DIV_D_RM   32'b1101010_111_??_00011_?????_?????_?????
`define SQRT_D_RM  32'b1101010_111_??_00100_00000_?????_?????
`define CVT_L_S_RM 32'b1101010_001_??_01000_00000_?????_?????
`define CVTU_L_S_RM 32'b1101010_001_??_01001_00000_?????_?????
`define CVT_W_S_RM 32'b1101010_001_??_01010_00000_?????_?????
`define CVTU_W_S_RM 32'b1101010_001_??_01011_00000_?????_?????
`define CVT_L_D_RM 32'b1101010_111_??_01000_00000_?????_?????
`define CVTU_L_D_RM 32'b1101010_111_??_01001_00000_?????_?????
`define CVT_W_D_RM 32'b1101010_111_??_01010_00000_?????_?????
`define CVTU_W_D_RM 32'b1101010_111_??_01011_00000_?????_?????
`define CVT_S_L    32'b1101010_0000001100_00000_?????_?????
`define CVTU_S_L   32'b1101010_0000001101_00000_?????_?????
`define CVT_S_W    32'b1101010_0000001110_00000_?????_?????
`define CVTU_S_W   32'b1101010_0000001111_00000_?????_?????
`define CVT_D_L    32'b1101010_1100001100_00000_?????_?????
`define CVTU_D_L   32'b1101010_1100001101_00000_?????_?????
`define CVT_D_W    32'b1101010_1100001110_00000_?????_?????
`define CVTU_D_W   32'b1101010_1100001111_00000_?????_?????
`define CVT_S_L_RM 32'b1101010_001_??_01100_00000_?????_?????
`define CVTU_S_L_RM 32'b1101010_001_??_01101_00000_?????_?????
`define CVT_S_W_RM 32'b1101010_001_??_01110_00000_?????_?????
`define CVTU_S_W_RM 32'b1101010_001_??_01111_00000_?????_?????
`define CVT_D_L_RM 32'b1101010_111_??_01100_00000_?????_?????
`define CVTU_D_L_RM 32'b1101010_111_??_01101_00000_?????_?????
`define CVT_S_D    32'b1101010_0000010011_00000_?????_?????
`define CVT_D_S    32'b1101010_1100010000_00000_?????_?????
`define CVT_S_D_RM 32'b1101010_001_??_10011_00000_?????_?????
`define C_EQ_S     32'b1101010_0000010101_?????_?????_?????
`define C_LT_S     32'b1101010_0000010110_?????_?????_?????
`define C_LE_S     32'b1101010_0000010111_?????_?????_?????
`define C_EQ_D     32'b1101010_1100010101_?????_?????_?????
`define C_LT_D     32'b1101010_1100010110_?????_?????_?????
`define C_LE_D     32'b1101010_1100010111_?????_?????_?????
`define MFF_S      32'b1101010_0001011000_?????_00000_?????
`define MFF_D      32'b1101010_1101011000_?????_00000_?????
`define MFFL_D     32'b1101010_1101011001_?????_00000_?????
`define MFFH_D     32'b1101010_1101011010_?????_00000_?????
`define MTF_S      32'b1101010_0001011100_00000_?????_?????
`define MTF_D      32'b1101010_1101011100_00000_?????_?????
`define MTFLH_D    32'b1101010_1101111100_?????_?????_?????
`define L_S        32'b1101000_010_????????????_?????_?????
`define L_D        32'b1101000_011_????????????_?????_?????
`define S_S        32'b1101001_010_???????_?????_?????_?????
`define S_D        32'b1101001_011_???????_?????_?????_?????
`define MADD_S     32'b1101100_000_00_?????_?????_?????_?????
`define MSUB_S     32'b1101101_000_00_?????_?????_?????_?????
`define NMSUB_S    32'b1101110_000_00_?????_?????_?????_?????
`define NMADD_S    32'b1101111_000_00_?????_?????_?????_?????
`define MADD_D     32'b1101100_110_00_?????_?????_?????_?????
`define MSUB_D     32'b1101101_110_00_?????_?????_?????_?????
`define NMSUB_D    32'b1101110_110_00_?????_?????_?????_?????
`define NMADD_D    32'b1101111_110_00_?????_?????_?????_?????
`define MADD_S_RM  32'b1101100_001_??_?????_?????_?????_?????
`define MSUB_S_RM  32'b1101101_001_??_?????_?????_?????_?????
`define NMSUB_S_RM 32'b1101110_001_??_?????_?????_?????_?????
`define NMADD_S_RM 32'b1101111_001_??_?????_?????_?????_?????
`define MADD_D_RM  32'b1101100_111_??_?????_?????_?????_?????
`define MSUB_D_RM  32'b1101101_111_??_?????_?????_?????_?????
`define NMSUB_D_RM 32'b1101110_111_??_?????_?????_?????_?????
`define NMADD_D_RM 32'b1101111_111_??_?????_?????_?????_?????