Project

General

Profile

RISC-V Instruction Set » History » Version 49

Alexander Kamkin, 05/01/2020 10:38 AM

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 45 Andrei Tatarnikov
To be supported in MicroTESK, instructions need to be described in formal specifications. The <code>Specified</code> column shows whether specific instructions have been described in the specifications.
8 1 Alexander Protsenko
9 46 Andrei Tatarnikov
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 have been validated with tests.
10 1 Alexander Protsenko
11 48 Andrei Tatarnikov
_NOTE: Incomplete or invalid semantics of instruction in specifications does not mean 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 42 Andrei Tatarnikov
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 49 Alexander Kamkin
{background:#ff9}. | Partially supported (specified but not fully validated) |
17 42 Andrei Tatarnikov
{background:#fcc}. | Currently unsupported (not specified and not validated yet) |
18 39 Andrei Tatarnikov
19 44 Andrei Tatarnikov
h2. Instruction table
20 43 Andrei Tatarnikov
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 |  |   | |