RISC-V Instruction Set » History » Version 43
Andrei Tatarnikov, 07/26/2018 06:00 PM
1 | 7 | Andrei Tatarnikov | h1. Instructions supported by MicroTESK for RISC-V |
---|---|---|---|
2 | |||
3 | 41 | Andrei Tatarnikov | The table below shows the status of support for particular instructions in MicroTESK for RISC-V. |
4 | 38 | Andrei Tatarnikov | |
5 | 42 | Andrei Tatarnikov | Here is the explanation of the meaning of the <code>Specified</code> and <code>Validated</code> columns: |
6 | 38 | Andrei Tatarnikov | |
7 | 1 | Alexander Protsenko | To be supported in MicroTESK, instructions need to be described in formal specifications. The <code>Specified</code> column shows whether specific instructions were described in the specifications. |
8 | |||
9 | The instruction semantics described in specifications may be incomplete or invalid. Therefore, instruction specifications must be validated with tests (e.g. ones ported from https://github.com/riscv/riscv-tests). To perform validation, the tests are executed in an ISA simulator constructed on the basis of the specifications. The <code>Validated</code> column shows whether the specifications of specific instructions were validated with tests. |
||
10 | |||
11 | 42 | Andrei Tatarnikov | NOTE: Incomplete or invalid semantics of instruction in specifications does not that these instructions cannot be used in test programs. It just prevents using them in tests that require information on the current state of registers and memory (e.g. self-checking tests and constraint-based tests). In general, to generate random tests, only the syntax of instructions is required to be valid while the semantics may be incomplete. |
12 | |||
13 | There are three statuses of support based on the two columns and marked with colors: |
||
14 | |||
15 | {background:#cfc}. | Fully supported (fully specified and validated) | |
||
16 | {background:#ff9}. | Partially supported (specified, but not fully validated) | |
||
17 | {background:#fcc}. | Currently unsupported (not specified and not validated yet) | |
||
18 | 39 | Andrei Tatarnikov | |
19 | 43 | Andrei Tatarnikov | h2. Instruction table: |
20 | |||
21 | 11 | Andrei Tatarnikov | {font-weight:bold; background:#ddd}. | Instruction Set | Instructions | Specified | Validated | |
22 | 30 | Andrei Tatarnikov | {background:#cfc}. | *RV32I (User)* | LUI |
23 | 19 | Andrei Tatarnikov | AUIPC |
24 | JAL |
||
25 | JALR |
||
26 | BEQ |
||
27 | BNE |
||
28 | BLT |
||
29 | BGE |
||
30 | BLTU |
||
31 | BGEU |
||
32 | LB |
||
33 | LH |
||
34 | LW |
||
35 | LBU |
||
36 | LHU |
||
37 | SB |
||
38 | SH |
||
39 | SW |
||
40 | ADDI |
||
41 | SLTI |
||
42 | SLTIU |
||
43 | XORI |
||
44 | ORI |
||
45 | ANDI |
||
46 | SLLI |
||
47 | SRLI |
||
48 | SRAI |
||
49 | SLL |
||
50 | SRL |
||
51 | SRA |
||
52 | ADD |
||
53 | SUB |
||
54 | SLT |
||
55 | SLTU |
||
56 | XOR |
||
57 | OR |
||
58 | 23 | Andrei Tatarnikov | AND | Yes (37/37) | Yes (37/37) | |
59 | 30 | Andrei Tatarnikov | {background:#cfc}. | *RV64I (User)* | LWU |
60 | 22 | Andrei Tatarnikov | LD |
61 | SD |
||
62 | ADDIW |
||
63 | SLLIW |
||
64 | SRLIW |
||
65 | SRAIW |
||
66 | ADDW |
||
67 | SUBW |
||
68 | SLLW |
||
69 | 1 | Alexander Protsenko | SRLW |
70 | SRAW | Yes (12/12) | Yes (12/12) | |
||
71 | 30 | Andrei Tatarnikov | {background:#ff9}. | *RV32I (System)* | ECALL |
72 | EBREAK |
||
73 | FENCE |
||
74 | FENCE.I |
||
75 | MRET |
||
76 | SRET |
||
77 | URET |
||
78 | WFI |
||
79 | CSRRW |
||
80 | CSRRS |
||
81 | CSRRC |
||
82 | CSRRWI |
||
83 | CSRRSI |
||
84 | 31 | Andrei Tatarnikov | CSRRCI | Yes (14/14) | No (0/14) | |
85 | 15 | Andrei Tatarnikov | {background:#cfc}. | *RV32M* | MUL |
86 | 18 | Andrei Tatarnikov | MULH |
87 | MULHSU |
||
88 | MULHU |
||
89 | DIV |
||
90 | DIVU |
||
91 | REM |
||
92 | REMU | Yes (8/8) | Yes (8/8) | |
||
93 | 15 | Andrei Tatarnikov | {background:#cfc}. | *RV64M* | MULW |
94 | 18 | Andrei Tatarnikov | DIVW |
95 | DIVUW |
||
96 | REMW |
||
97 | REMUW | Yes (5/5) | Yes (5/5) | |
||
98 | 15 | Andrei Tatarnikov | {background:#cfc}. | *RV32A* | LR.W |
99 | 18 | Andrei Tatarnikov | SC.W |
100 | AMOSWAP.W |
||
101 | AMOADD.W |
||
102 | AMOXOR.W |
||
103 | AMOAND.W |
||
104 | AMOOR.W |
||
105 | AMOMIN.W |
||
106 | AMOMAX.W |
||
107 | AMOMINU.W |
||
108 | AMOMAXU.W | Yes (11/11) | Yes (11/11) | |
||
109 | 15 | Andrei Tatarnikov | {background:#cfc}. | *RV64A* | LR.D |
110 | 18 | Andrei Tatarnikov | SC.D |
111 | AMOSWAP.D |
||
112 | AMOADD.D |
||
113 | AMOXOR.D |
||
114 | AMOAND.D |
||
115 | AMOOR.D |
||
116 | AMOMIN.D |
||
117 | AMOMAX.D |
||
118 | AMOMINU.D |
||
119 | AMOMAXU.D | Yes (11/11) | Yes (11/11) | |
||
120 | 15 | Andrei Tatarnikov | {background:#ff9}. | *RV32F* | FLW |
121 | 17 | Andrei Tatarnikov | FSW |
122 | FMADD.S |
||
123 | FMSUB.S |
||
124 | FNMSUB.S |
||
125 | FNMADD.S |
||
126 | FADD.S |
||
127 | FSUB.S |
||
128 | FMUL.S |
||
129 | FDIV.S |
||
130 | FSQRT.S |
||
131 | FSGNJ.S |
||
132 | FSGNJN.S |
||
133 | FSGNJX.S |
||
134 | FMIN.S |
||
135 | FMAX.S |
||
136 | FCVT.W.S |
||
137 | FCVT.WU.S |
||
138 | FMV.X.W (FMV.X.S) |
||
139 | FEQ.S |
||
140 | FLT.S |
||
141 | FLE.S |
||
142 | FCLASS.S |
||
143 | FCVT.S.W |
||
144 | FCVT.S.WU |
||
145 | 35 | Andrei Tatarnikov | FMV.W.X (FMV.S.X) | Yes (26/26) | Partially (8/26) |
146 | 36 | Andrei Tatarnikov | Including (8): |
147 | 35 | Andrei Tatarnikov | FLW |
148 | FSW |
||
149 | FEQ_S |
||
150 | FLE_S |
||
151 | FLT_S |
||
152 | FEQ_S |
||
153 | FLE_S |
||
154 | FLT_S | |
||
155 | 17 | Andrei Tatarnikov | {background:#ff9}. | *RV64F* | FCVT.L.S |
156 | FCVT.LU.S |
||
157 | FCVT.S.L |
||
158 | 36 | Andrei Tatarnikov | FCVT.S.LU | Yes (4/4) | Partially (0/4) | |
159 | 17 | Andrei Tatarnikov | {background:#ff9}. | *RV32D* | FLD |
160 | FSD |
||
161 | FMADD.D |
||
162 | FMSUB.D |
||
163 | FNMSUB.D |
||
164 | FNMADD.D |
||
165 | FADD.D |
||
166 | FSUB.D |
||
167 | FMUL.D |
||
168 | FDIV.D |
||
169 | FSQRT.D |
||
170 | FSGNJ.D |
||
171 | FSGNJN.D |
||
172 | FSGNJX.D |
||
173 | FMIN.D |
||
174 | FMAX.D |
||
175 | FCVT.S.D |
||
176 | FCVT.D.S |
||
177 | FEQ.D |
||
178 | FLT.D |
||
179 | FLE.D |
||
180 | FCLASS.D |
||
181 | FCVT.W.D |
||
182 | 1 | Alexander Protsenko | FCVT.WU.D |
183 | FCVT.D.W |
||
184 | 36 | Andrei Tatarnikov | FCVT.D.WU | Yes (26/26) | Partially (2/26) |
185 | Including (2): |
||
186 | FLD |
||
187 | FSD | |
||
188 | 18 | Andrei Tatarnikov | {background:#ff9}. | *RV64D* | FCVT.L.D |
189 | 1 | Alexander Protsenko | FCVT.LU.D |
190 | 18 | Andrei Tatarnikov | FMV.X.D |
191 | FCVT.D.L |
||
192 | FCVT.D.LU |
||
193 | 36 | Andrei Tatarnikov | FMV.D.X | Yes (6/6) | No (0/6) | |
194 | 28 | Andrei Tatarnikov | {background:#ff9}. | *RVC* | C.ADDI4SPN |
195 | C.FLD |
||
196 | C.LQ |
||
197 | C.LW |
||
198 | C.FLW |
||
199 | C.LD |
||
200 | C.FSD |
||
201 | C.SQ |
||
202 | C.SW |
||
203 | C.FSW |
||
204 | C.SD |
||
205 | C.NOP |
||
206 | C.ADDI |
||
207 | C.JAL |
||
208 | C.ADDIW |
||
209 | C.LI |
||
210 | C.ADDI16SP |
||
211 | C.LUI |
||
212 | C.SRLI |
||
213 | C.SRLI64 |
||
214 | C.SRAI |
||
215 | C.SRAI64 |
||
216 | C.ANDI |
||
217 | C.SUB |
||
218 | C.XOR |
||
219 | C.OR |
||
220 | C.AND |
||
221 | C.SUBW |
||
222 | C.ADDW |
||
223 | C.J |
||
224 | C.BEQZ |
||
225 | C.BNEZ |
||
226 | C.SLLI |
||
227 | C.SLLI64 |
||
228 | C.FLDSP |
||
229 | C.LQSP |
||
230 | C.LWSP |
||
231 | C.FLWSP |
||
232 | C.LDSP |
||
233 | C.JR |
||
234 | C.MV |
||
235 | C.EBREAK |
||
236 | C.JALR |
||
237 | C.ADD |
||
238 | C.FSDSP |
||
239 | C.SQSP |
||
240 | C.SWSP |
||
241 | C.FSWSP |
||
242 | C.SDSP | Yes (49/49) | Partially (36/49) |
||
243 | 32 | Andrei Tatarnikov | Excluding (13): |
244 | C.LQ |
||
245 | C.FLW |
||
246 | C.SQ |
||
247 | C.FSW |
||
248 | C.NOP |
||
249 | C.SRLI64 |
||
250 | C.SRAI64 |
||
251 | C.SLLI64 |
||
252 | C.LQSP |
||
253 | C.FLWSP |
||
254 | C.EBREAK |
||
255 | C.SQSP |
||
256 | C.FSWSP | |
||
257 | 34 | Andrei Tatarnikov | {background:#fcc}. | *RV64Q* | | No | No | |
258 | 33 | Andrei Tatarnikov | {background:#fcc}. | *RV32V* | VADD |
259 | VSUB |
||
260 | VSL |
||
261 | VSR |
||
262 | VAND |
||
263 | VOR |
||
264 | VXOR |
||
265 | VSEQ |
||
266 | VSNE |
||
267 | VSLT |
||
268 | VSGE |
||
269 | VCLIP |
||
270 | VCVT |
||
271 | VMPOP |
||
272 | VMFIRST |
||
273 | VEXTRACT |
||
274 | VINSERT |
||
275 | VMERGE |
||
276 | VSELECT |
||
277 | VSLIDE |
||
278 | VDIV |
||
279 | VREM |
||
280 | VMUL |
||
281 | VMULH |
||
282 | VMIN |
||
283 | VMAX |
||
284 | VSGNJ |
||
285 | VSGNJN |
||
286 | VSGNJX |
||
287 | VSQRT |
||
288 | VCLASS |
||
289 | VPOPC |
||
290 | VADDI |
||
291 | VSLI |
||
292 | VSRI |
||
293 | VANDI |
||
294 | VORI |
||
295 | VXORI |
||
296 | VCLIPI |
||
297 | 10 | Andrei Tatarnikov | VMADD |
298 | 7 | Andrei Tatarnikov | VMSUB |
299 | 37 | Andrei Tatarnikov | VNMADD |
300 | VNMSUB | No | No | |
||
301 | {background:#ddd}. | Total | | | | |