]>
Commit | Line | Data |
---|---|---|
2a53cff4 BK |
1 | # |
2 | # RISC-V translation routines for the RVXI Base Integer Instruction Set. | |
3 | # | |
4 | # Copyright (c) 2018 Peer Adelt, peer.adelt@hni.uni-paderborn.de | |
5 | # Bastian Koppelmann, kbastian@mail.uni-paderborn.de | |
6 | # | |
7 | # This program is free software; you can redistribute it and/or modify it | |
8 | # under the terms and conditions of the GNU General Public License, | |
9 | # version 2 or later, as published by the Free Software Foundation. | |
10 | # | |
11 | # This program is distributed in the hope it will be useful, but WITHOUT | |
12 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
14 | # more details. | |
15 | # | |
16 | # You should have received a copy of the GNU General Public License along with | |
17 | # this program. If not, see <http://www.gnu.org/licenses/>. | |
18 | ||
19 | # Fields: | |
6f0e74ff | 20 | %rs3 27:5 |
3cca75a6 BK |
21 | %rs2 20:5 |
22 | %rs1 15:5 | |
2a53cff4 | 23 | %rd 7:5 |
daf866b6 | 24 | %sh5 20:5 |
2a53cff4 | 25 | |
00718208 | 26 | %sh7 20:7 |
771fbe15 | 27 | %csr 20:12 |
6f0e74ff | 28 | %rm 12:3 |
751538d5 | 29 | %nf 29:3 !function=ex_plus_1 |
b73a987b | 30 | |
2a53cff4 | 31 | # immediates: |
3cca75a6 | 32 | %imm_i 20:s12 |
c1000d4e | 33 | %imm_s 25:s7 7:5 |
3cca75a6 BK |
34 | %imm_b 31:s1 7:1 25:6 8:4 !function=ex_shift_1 |
35 | %imm_j 31:s1 12:8 20:1 21:10 !function=ex_shift_1 | |
2a53cff4 BK |
36 | %imm_u 12:s20 !function=ex_shift_12 |
37 | ||
3cca75a6 | 38 | # Argument sets: |
e7617997 | 39 | &empty |
3cca75a6 | 40 | &b imm rs2 rs1 |
7a50d3e2 | 41 | &i imm rs1 rd |
e7617997 | 42 | &j imm rd |
f2ab1728 | 43 | &r rd rs1 rs2 |
43824018 | 44 | &r2 rd rs1 |
e7617997 RH |
45 | &s imm rs1 rs2 |
46 | &u imm rd | |
b73a987b | 47 | &shift shamt rs1 rd |
3b77c289 | 48 | &atomic aq rl rs2 rs1 rd |
43740e3a | 49 | &rmrr vm rd rs1 rs2 |
d9e4ce72 | 50 | &rmr vm rd rs2 |
268fcca6 | 51 | &rwdvm vm wd rd rs1 rs2 |
751538d5 LZ |
52 | &r2nfvm vm rd rs1 nf |
53 | &rnfvm vm rd rs1 rs2 nf | |
3cca75a6 | 54 | |
2a53cff4 | 55 | # Formats 32: |
f2ab1728 | 56 | @r ....... ..... ..... ... ..... ....... &r %rs2 %rs1 %rd |
7a50d3e2 | 57 | @i ............ ..... ... ..... ....... &i imm=%imm_i %rs1 %rd |
3cca75a6 | 58 | @b ....... ..... ..... ... ..... ....... &b imm=%imm_b %rs2 %rs1 |
e7617997 RH |
59 | @s ....... ..... ..... ... ..... ....... &s imm=%imm_s %rs2 %rs1 |
60 | @u .................... ..... ....... &u imm=%imm_u %rd | |
61 | @j .................... ..... ....... &j imm=%imm_j %rd | |
2a53cff4 | 62 | |
00718208 | 63 | @sh ...... ...... ..... ... ..... ....... &shift shamt=%sh7 %rs1 %rd |
771fbe15 | 64 | @csr ............ ..... ... ..... ....... %csr %rs1 %rd |
b73a987b | 65 | |
3b77c289 BK |
66 | @atom_ld ..... aq:1 rl:1 ..... ........ ..... ....... &atomic rs2=0 %rs1 %rd |
67 | @atom_st ..... aq:1 rl:1 ..... ........ ..... ....... &atomic %rs2 %rs1 %rd | |
68 | ||
6f0e74ff BK |
69 | @r4_rm ..... .. ..... ..... ... ..... ....... %rs3 %rs2 %rs1 %rm %rd |
70 | @r_rm ....... ..... ..... ... ..... ....... %rs2 %rs1 %rm %rd | |
71 | @r2_rm ....... ..... ..... ... ..... ....... %rs1 %rm %rd | |
43824018 | 72 | @r2 ....... ..... ..... ... ..... ....... &r2 %rs1 %rd |
751538d5 | 73 | @r2_nfvm ... ... vm:1 ..... ..... ... ..... ....... &r2nfvm %nf %rs1 %rd |
d9e4ce72 | 74 | @r2_vm ...... vm:1 ..... ..... ... ..... ....... &rmr %rs2 %rd |
126bec3f | 75 | @r1_vm ...... vm:1 ..... ..... ... ..... ....... %rd |
751538d5 | 76 | @r_nfvm ... ... vm:1 ..... ..... ... ..... ....... &rnfvm %nf %rs2 %rs1 %rd |
2843420a | 77 | @r2rd ....... ..... ..... ... ..... ....... %rs2 %rd |
43740e3a | 78 | @r_vm ...... vm:1 ..... ..... ... ..... ....... &rmrr %rs2 %rs1 %rd |
3a6f8f68 | 79 | @r_vm_1 ...... . ..... ..... ... ..... ....... &rmrr vm=1 %rs2 %rs1 %rd |
f020a7a1 | 80 | @r_vm_0 ...... . ..... ..... ... ..... ....... &rmrr vm=0 %rs2 %rs1 %rd |
268fcca6 | 81 | @r_wdvm ..... wd:1 vm:1 ..... ..... ... ..... ....... &rwdvm %rs2 %rs1 %rd |
2b7168fc | 82 | @r2_zimm . zimm:11 ..... ... ..... ....... %rs1 %rd |
8c5362ac | 83 | @r2_s ....... ..... ..... ... ..... ....... %rs2 %rs1 |
6f0e74ff | 84 | |
895c412c | 85 | @hfence_gvma ....... ..... ..... ... ..... ....... %rs2 %rs1 |
b8429ded | 86 | @hfence_vvma ....... ..... ..... ... ..... ....... %rs2 %rs1 |
895c412c | 87 | |
4ba79c47 BK |
88 | @sfence_vma ....... ..... ..... ... ..... ....... %rs2 %rs1 |
89 | @sfence_vm ....... ..... ..... ... ..... ....... %rs1 | |
90 | ||
daf866b6 AF |
91 | # Formats 64: |
92 | @sh5 ....... ..... ..... ... ..... ....... &shift shamt=%sh5 %rs1 %rd | |
4ba79c47 BK |
93 | |
94 | # *** Privileged Instructions *** | |
895c412c AF |
95 | ecall 000000000000 00000 000 00000 1110011 |
96 | ebreak 000000000001 00000 000 00000 1110011 | |
97 | uret 0000000 00010 00000 000 00000 1110011 | |
98 | sret 0001000 00010 00000 000 00000 1110011 | |
895c412c AF |
99 | mret 0011000 00010 00000 000 00000 1110011 |
100 | wfi 0001000 00101 00000 000 00000 1110011 | |
895c412c AF |
101 | sfence_vma 0001001 ..... ..... 000 00000 1110011 @sfence_vma |
102 | sfence_vm 0001000 00100 ..... 000 00000 1110011 @sfence_vm | |
4ba79c47 | 103 | |
2a53cff4 BK |
104 | # *** RV32I Base Instruction Set *** |
105 | lui .................... ..... 0110111 @u | |
106 | auipc .................... ..... 0010111 @u | |
3cca75a6 BK |
107 | jal .................... ..... 1101111 @j |
108 | jalr ............ ..... 000 ..... 1100111 @i | |
109 | beq ....... ..... ..... 000 ..... 1100011 @b | |
110 | bne ....... ..... ..... 001 ..... 1100011 @b | |
111 | blt ....... ..... ..... 100 ..... 1100011 @b | |
112 | bge ....... ..... ..... 101 ..... 1100011 @b | |
113 | bltu ....... ..... ..... 110 ..... 1100011 @b | |
114 | bgeu ....... ..... ..... 111 ..... 1100011 @b | |
c1000d4e BK |
115 | lb ............ ..... 000 ..... 0000011 @i |
116 | lh ............ ..... 001 ..... 0000011 @i | |
117 | lw ............ ..... 010 ..... 0000011 @i | |
118 | lbu ............ ..... 100 ..... 0000011 @i | |
119 | lhu ............ ..... 101 ..... 0000011 @i | |
120 | sb ....... ..... ..... 000 ..... 0100011 @s | |
121 | sh ....... ..... ..... 001 ..... 0100011 @s | |
122 | sw ....... ..... ..... 010 ..... 0100011 @s | |
b73a987b BK |
123 | addi ............ ..... 000 ..... 0010011 @i |
124 | slti ............ ..... 010 ..... 0010011 @i | |
125 | sltiu ............ ..... 011 ..... 0010011 @i | |
126 | xori ............ ..... 100 ..... 0010011 @i | |
127 | ori ............ ..... 110 ..... 0010011 @i | |
128 | andi ............ ..... 111 ..... 0010011 @i | |
00718208 KC |
129 | slli 00000. ...... ..... 001 ..... 0010011 @sh |
130 | srli 00000. ...... ..... 101 ..... 0010011 @sh | |
131 | srai 01000. ...... ..... 101 ..... 0010011 @sh | |
b73a987b BK |
132 | add 0000000 ..... ..... 000 ..... 0110011 @r |
133 | sub 0100000 ..... ..... 000 ..... 0110011 @r | |
134 | sll 0000000 ..... ..... 001 ..... 0110011 @r | |
135 | slt 0000000 ..... ..... 010 ..... 0110011 @r | |
136 | sltu 0000000 ..... ..... 011 ..... 0110011 @r | |
137 | xor 0000000 ..... ..... 100 ..... 0110011 @r | |
138 | srl 0000000 ..... ..... 101 ..... 0110011 @r | |
139 | sra 0100000 ..... ..... 101 ..... 0110011 @r | |
140 | or 0000000 ..... ..... 110 ..... 0110011 @r | |
141 | and 0000000 ..... ..... 111 ..... 0110011 @r | |
0c865e85 BK |
142 | fence ---- pred:4 succ:4 ----- 000 ----- 0001111 |
143 | fence_i ---- ---- ---- ----- 001 ----- 0001111 | |
771fbe15 BK |
144 | csrrw ............ ..... 001 ..... 1110011 @csr |
145 | csrrs ............ ..... 010 ..... 1110011 @csr | |
146 | csrrc ............ ..... 011 ..... 1110011 @csr | |
147 | csrrwi ............ ..... 101 ..... 1110011 @csr | |
148 | csrrsi ............ ..... 110 ..... 1110011 @csr | |
149 | csrrci ............ ..... 111 ..... 1110011 @csr | |
d2e2c1e4 | 150 | |
daf866b6 AF |
151 | # *** RV64I Base Instruction Set (in addition to RV32I) *** |
152 | lwu ............ ..... 110 ..... 0000011 @i | |
153 | ld ............ ..... 011 ..... 0000011 @i | |
154 | sd ....... ..... ..... 011 ..... 0100011 @s | |
155 | addiw ............ ..... 000 ..... 0011011 @i | |
156 | slliw 0000000 ..... ..... 001 ..... 0011011 @sh5 | |
157 | srliw 0000000 ..... ..... 101 ..... 0011011 @sh5 | |
158 | sraiw 0100000 ..... ..... 101 ..... 0011011 @sh5 | |
159 | addw 0000000 ..... ..... 000 ..... 0111011 @r | |
160 | subw 0100000 ..... ..... 000 ..... 0111011 @r | |
161 | sllw 0000000 ..... ..... 001 ..... 0111011 @r | |
162 | srlw 0000000 ..... ..... 101 ..... 0111011 @r | |
163 | sraw 0100000 ..... ..... 101 ..... 0111011 @r | |
164 | ||
d2e2c1e4 BK |
165 | # *** RV32M Standard Extension *** |
166 | mul 0000001 ..... ..... 000 ..... 0110011 @r | |
167 | mulh 0000001 ..... ..... 001 ..... 0110011 @r | |
168 | mulhsu 0000001 ..... ..... 010 ..... 0110011 @r | |
169 | mulhu 0000001 ..... ..... 011 ..... 0110011 @r | |
170 | div 0000001 ..... ..... 100 ..... 0110011 @r | |
171 | divu 0000001 ..... ..... 101 ..... 0110011 @r | |
172 | rem 0000001 ..... ..... 110 ..... 0110011 @r | |
173 | remu 0000001 ..... ..... 111 ..... 0110011 @r | |
3b77c289 | 174 | |
daf866b6 AF |
175 | # *** RV64M Standard Extension (in addition to RV32M) *** |
176 | mulw 0000001 ..... ..... 000 ..... 0111011 @r | |
177 | divw 0000001 ..... ..... 100 ..... 0111011 @r | |
178 | divuw 0000001 ..... ..... 101 ..... 0111011 @r | |
179 | remw 0000001 ..... ..... 110 ..... 0111011 @r | |
180 | remuw 0000001 ..... ..... 111 ..... 0111011 @r | |
181 | ||
3b77c289 BK |
182 | # *** RV32A Standard Extension *** |
183 | lr_w 00010 . . 00000 ..... 010 ..... 0101111 @atom_ld | |
184 | sc_w 00011 . . ..... ..... 010 ..... 0101111 @atom_st | |
185 | amoswap_w 00001 . . ..... ..... 010 ..... 0101111 @atom_st | |
186 | amoadd_w 00000 . . ..... ..... 010 ..... 0101111 @atom_st | |
187 | amoxor_w 00100 . . ..... ..... 010 ..... 0101111 @atom_st | |
188 | amoand_w 01100 . . ..... ..... 010 ..... 0101111 @atom_st | |
189 | amoor_w 01000 . . ..... ..... 010 ..... 0101111 @atom_st | |
190 | amomin_w 10000 . . ..... ..... 010 ..... 0101111 @atom_st | |
191 | amomax_w 10100 . . ..... ..... 010 ..... 0101111 @atom_st | |
192 | amominu_w 11000 . . ..... ..... 010 ..... 0101111 @atom_st | |
193 | amomaxu_w 11100 . . ..... ..... 010 ..... 0101111 @atom_st | |
6f0e74ff | 194 | |
daf866b6 AF |
195 | # *** RV64A Standard Extension (in addition to RV32A) *** |
196 | lr_d 00010 . . 00000 ..... 011 ..... 0101111 @atom_ld | |
197 | sc_d 00011 . . ..... ..... 011 ..... 0101111 @atom_st | |
198 | amoswap_d 00001 . . ..... ..... 011 ..... 0101111 @atom_st | |
199 | amoadd_d 00000 . . ..... ..... 011 ..... 0101111 @atom_st | |
200 | amoxor_d 00100 . . ..... ..... 011 ..... 0101111 @atom_st | |
201 | amoand_d 01100 . . ..... ..... 011 ..... 0101111 @atom_st | |
202 | amoor_d 01000 . . ..... ..... 011 ..... 0101111 @atom_st | |
203 | amomin_d 10000 . . ..... ..... 011 ..... 0101111 @atom_st | |
204 | amomax_d 10100 . . ..... ..... 011 ..... 0101111 @atom_st | |
205 | amominu_d 11000 . . ..... ..... 011 ..... 0101111 @atom_st | |
206 | amomaxu_d 11100 . . ..... ..... 011 ..... 0101111 @atom_st | |
207 | ||
6f0e74ff BK |
208 | # *** RV32F Standard Extension *** |
209 | flw ............ ..... 010 ..... 0000111 @i | |
210 | fsw ....... ..... ..... 010 ..... 0100111 @s | |
211 | fmadd_s ..... 00 ..... ..... ... ..... 1000011 @r4_rm | |
212 | fmsub_s ..... 00 ..... ..... ... ..... 1000111 @r4_rm | |
213 | fnmsub_s ..... 00 ..... ..... ... ..... 1001011 @r4_rm | |
214 | fnmadd_s ..... 00 ..... ..... ... ..... 1001111 @r4_rm | |
215 | fadd_s 0000000 ..... ..... ... ..... 1010011 @r_rm | |
216 | fsub_s 0000100 ..... ..... ... ..... 1010011 @r_rm | |
217 | fmul_s 0001000 ..... ..... ... ..... 1010011 @r_rm | |
218 | fdiv_s 0001100 ..... ..... ... ..... 1010011 @r_rm | |
219 | fsqrt_s 0101100 00000 ..... ... ..... 1010011 @r2_rm | |
220 | fsgnj_s 0010000 ..... ..... 000 ..... 1010011 @r | |
221 | fsgnjn_s 0010000 ..... ..... 001 ..... 1010011 @r | |
222 | fsgnjx_s 0010000 ..... ..... 010 ..... 1010011 @r | |
223 | fmin_s 0010100 ..... ..... 000 ..... 1010011 @r | |
224 | fmax_s 0010100 ..... ..... 001 ..... 1010011 @r | |
225 | fcvt_w_s 1100000 00000 ..... ... ..... 1010011 @r2_rm | |
226 | fcvt_wu_s 1100000 00001 ..... ... ..... 1010011 @r2_rm | |
227 | fmv_x_w 1110000 00000 ..... 000 ..... 1010011 @r2 | |
228 | feq_s 1010000 ..... ..... 010 ..... 1010011 @r | |
229 | flt_s 1010000 ..... ..... 001 ..... 1010011 @r | |
230 | fle_s 1010000 ..... ..... 000 ..... 1010011 @r | |
231 | fclass_s 1110000 00000 ..... 001 ..... 1010011 @r2 | |
232 | fcvt_s_w 1101000 00000 ..... ... ..... 1010011 @r2_rm | |
233 | fcvt_s_wu 1101000 00001 ..... ... ..... 1010011 @r2_rm | |
234 | fmv_w_x 1111000 00000 ..... 000 ..... 1010011 @r2 | |
97f8b493 | 235 | |
daf866b6 AF |
236 | # *** RV64F Standard Extension (in addition to RV32F) *** |
237 | fcvt_l_s 1100000 00010 ..... ... ..... 1010011 @r2_rm | |
238 | fcvt_lu_s 1100000 00011 ..... ... ..... 1010011 @r2_rm | |
239 | fcvt_s_l 1101000 00010 ..... ... ..... 1010011 @r2_rm | |
240 | fcvt_s_lu 1101000 00011 ..... ... ..... 1010011 @r2_rm | |
241 | ||
97f8b493 BK |
242 | # *** RV32D Standard Extension *** |
243 | fld ............ ..... 011 ..... 0000111 @i | |
244 | fsd ....... ..... ..... 011 ..... 0100111 @s | |
245 | fmadd_d ..... 01 ..... ..... ... ..... 1000011 @r4_rm | |
246 | fmsub_d ..... 01 ..... ..... ... ..... 1000111 @r4_rm | |
247 | fnmsub_d ..... 01 ..... ..... ... ..... 1001011 @r4_rm | |
248 | fnmadd_d ..... 01 ..... ..... ... ..... 1001111 @r4_rm | |
249 | fadd_d 0000001 ..... ..... ... ..... 1010011 @r_rm | |
250 | fsub_d 0000101 ..... ..... ... ..... 1010011 @r_rm | |
251 | fmul_d 0001001 ..... ..... ... ..... 1010011 @r_rm | |
252 | fdiv_d 0001101 ..... ..... ... ..... 1010011 @r_rm | |
253 | fsqrt_d 0101101 00000 ..... ... ..... 1010011 @r2_rm | |
254 | fsgnj_d 0010001 ..... ..... 000 ..... 1010011 @r | |
255 | fsgnjn_d 0010001 ..... ..... 001 ..... 1010011 @r | |
256 | fsgnjx_d 0010001 ..... ..... 010 ..... 1010011 @r | |
257 | fmin_d 0010101 ..... ..... 000 ..... 1010011 @r | |
258 | fmax_d 0010101 ..... ..... 001 ..... 1010011 @r | |
259 | fcvt_s_d 0100000 00001 ..... ... ..... 1010011 @r2_rm | |
260 | fcvt_d_s 0100001 00000 ..... ... ..... 1010011 @r2_rm | |
261 | feq_d 1010001 ..... ..... 010 ..... 1010011 @r | |
262 | flt_d 1010001 ..... ..... 001 ..... 1010011 @r | |
263 | fle_d 1010001 ..... ..... 000 ..... 1010011 @r | |
264 | fclass_d 1110001 00000 ..... 001 ..... 1010011 @r2 | |
265 | fcvt_w_d 1100001 00000 ..... ... ..... 1010011 @r2_rm | |
266 | fcvt_wu_d 1100001 00001 ..... ... ..... 1010011 @r2_rm | |
267 | fcvt_d_w 1101001 00000 ..... ... ..... 1010011 @r2_rm | |
268 | fcvt_d_wu 1101001 00001 ..... ... ..... 1010011 @r2_rm | |
b8429ded | 269 | |
daf866b6 AF |
270 | # *** RV64D Standard Extension (in addition to RV32D) *** |
271 | fcvt_l_d 1100001 00010 ..... ... ..... 1010011 @r2_rm | |
272 | fcvt_lu_d 1100001 00011 ..... ... ..... 1010011 @r2_rm | |
273 | fmv_x_d 1110001 00000 ..... 000 ..... 1010011 @r2 | |
274 | fcvt_d_l 1101001 00010 ..... ... ..... 1010011 @r2_rm | |
275 | fcvt_d_lu 1101001 00011 ..... ... ..... 1010011 @r2_rm | |
276 | fmv_d_x 1111001 00000 ..... 000 ..... 1010011 @r2 | |
277 | ||
b8429ded | 278 | # *** RV32H Base Instruction Set *** |
8c5362ac AF |
279 | hlv_b 0110000 00000 ..... 100 ..... 1110011 @r2 |
280 | hlv_bu 0110000 00001 ..... 100 ..... 1110011 @r2 | |
281 | hlv_h 0110010 00000 ..... 100 ..... 1110011 @r2 | |
282 | hlv_hu 0110010 00001 ..... 100 ..... 1110011 @r2 | |
283 | hlvx_hu 0110010 00011 ..... 100 ..... 1110011 @r2 | |
284 | hlv_w 0110100 00000 ..... 100 ..... 1110011 @r2 | |
285 | hlvx_wu 0110100 00011 ..... 100 ..... 1110011 @r2 | |
286 | hsv_b 0110001 ..... ..... 100 00000 1110011 @r2_s | |
287 | hsv_h 0110011 ..... ..... 100 00000 1110011 @r2_s | |
288 | hsv_w 0110101 ..... ..... 100 00000 1110011 @r2_s | |
b8429ded AF |
289 | hfence_gvma 0110001 ..... ..... 000 00000 1110011 @hfence_gvma |
290 | hfence_vvma 0010001 ..... ..... 000 00000 1110011 @hfence_vvma | |
2b7168fc | 291 | |
c30a0757 | 292 | # *** RV64H Base Instruction Set *** |
daf866b6 AF |
293 | hlv_wu 0110100 00001 ..... 100 ..... 1110011 @r2 |
294 | hlv_d 0110110 00000 ..... 100 ..... 1110011 @r2 | |
295 | hsv_d 0110111 ..... ..... 100 00000 1110011 @r2_s | |
751538d5 LZ |
296 | |
297 | # *** Vector loads and stores are encoded within LOADFP/STORE-FP *** | |
298 | vlb_v ... 100 . 00000 ..... 000 ..... 0000111 @r2_nfvm | |
299 | vlh_v ... 100 . 00000 ..... 101 ..... 0000111 @r2_nfvm | |
300 | vlw_v ... 100 . 00000 ..... 110 ..... 0000111 @r2_nfvm | |
301 | vle_v ... 000 . 00000 ..... 111 ..... 0000111 @r2_nfvm | |
302 | vlbu_v ... 000 . 00000 ..... 000 ..... 0000111 @r2_nfvm | |
303 | vlhu_v ... 000 . 00000 ..... 101 ..... 0000111 @r2_nfvm | |
304 | vlwu_v ... 000 . 00000 ..... 110 ..... 0000111 @r2_nfvm | |
022b4ecf LZ |
305 | vlbff_v ... 100 . 10000 ..... 000 ..... 0000111 @r2_nfvm |
306 | vlhff_v ... 100 . 10000 ..... 101 ..... 0000111 @r2_nfvm | |
307 | vlwff_v ... 100 . 10000 ..... 110 ..... 0000111 @r2_nfvm | |
308 | vleff_v ... 000 . 10000 ..... 111 ..... 0000111 @r2_nfvm | |
309 | vlbuff_v ... 000 . 10000 ..... 000 ..... 0000111 @r2_nfvm | |
310 | vlhuff_v ... 000 . 10000 ..... 101 ..... 0000111 @r2_nfvm | |
311 | vlwuff_v ... 000 . 10000 ..... 110 ..... 0000111 @r2_nfvm | |
751538d5 LZ |
312 | vsb_v ... 000 . 00000 ..... 000 ..... 0100111 @r2_nfvm |
313 | vsh_v ... 000 . 00000 ..... 101 ..... 0100111 @r2_nfvm | |
314 | vsw_v ... 000 . 00000 ..... 110 ..... 0100111 @r2_nfvm | |
315 | vse_v ... 000 . 00000 ..... 111 ..... 0100111 @r2_nfvm | |
316 | ||
317 | vlsb_v ... 110 . ..... ..... 000 ..... 0000111 @r_nfvm | |
318 | vlsh_v ... 110 . ..... ..... 101 ..... 0000111 @r_nfvm | |
319 | vlsw_v ... 110 . ..... ..... 110 ..... 0000111 @r_nfvm | |
320 | vlse_v ... 010 . ..... ..... 111 ..... 0000111 @r_nfvm | |
321 | vlsbu_v ... 010 . ..... ..... 000 ..... 0000111 @r_nfvm | |
322 | vlshu_v ... 010 . ..... ..... 101 ..... 0000111 @r_nfvm | |
323 | vlswu_v ... 010 . ..... ..... 110 ..... 0000111 @r_nfvm | |
324 | vssb_v ... 010 . ..... ..... 000 ..... 0100111 @r_nfvm | |
325 | vssh_v ... 010 . ..... ..... 101 ..... 0100111 @r_nfvm | |
326 | vssw_v ... 010 . ..... ..... 110 ..... 0100111 @r_nfvm | |
327 | vsse_v ... 010 . ..... ..... 111 ..... 0100111 @r_nfvm | |
328 | ||
f732560e LZ |
329 | vlxb_v ... 111 . ..... ..... 000 ..... 0000111 @r_nfvm |
330 | vlxh_v ... 111 . ..... ..... 101 ..... 0000111 @r_nfvm | |
331 | vlxw_v ... 111 . ..... ..... 110 ..... 0000111 @r_nfvm | |
332 | vlxe_v ... 011 . ..... ..... 111 ..... 0000111 @r_nfvm | |
333 | vlxbu_v ... 011 . ..... ..... 000 ..... 0000111 @r_nfvm | |
334 | vlxhu_v ... 011 . ..... ..... 101 ..... 0000111 @r_nfvm | |
335 | vlxwu_v ... 011 . ..... ..... 110 ..... 0000111 @r_nfvm | |
336 | # Vector ordered-indexed and unordered-indexed store insns. | |
337 | vsxb_v ... -11 . ..... ..... 000 ..... 0100111 @r_nfvm | |
338 | vsxh_v ... -11 . ..... ..... 101 ..... 0100111 @r_nfvm | |
339 | vsxw_v ... -11 . ..... ..... 110 ..... 0100111 @r_nfvm | |
340 | vsxe_v ... -11 . ..... ..... 111 ..... 0100111 @r_nfvm | |
341 | ||
268fcca6 LZ |
342 | #*** Vector AMO operations are encoded under the standard AMO major opcode *** |
343 | vamoswapw_v 00001 . . ..... ..... 110 ..... 0101111 @r_wdvm | |
344 | vamoaddw_v 00000 . . ..... ..... 110 ..... 0101111 @r_wdvm | |
345 | vamoxorw_v 00100 . . ..... ..... 110 ..... 0101111 @r_wdvm | |
346 | vamoandw_v 01100 . . ..... ..... 110 ..... 0101111 @r_wdvm | |
347 | vamoorw_v 01000 . . ..... ..... 110 ..... 0101111 @r_wdvm | |
348 | vamominw_v 10000 . . ..... ..... 110 ..... 0101111 @r_wdvm | |
349 | vamomaxw_v 10100 . . ..... ..... 110 ..... 0101111 @r_wdvm | |
350 | vamominuw_v 11000 . . ..... ..... 110 ..... 0101111 @r_wdvm | |
351 | vamomaxuw_v 11100 . . ..... ..... 110 ..... 0101111 @r_wdvm | |
352 | ||
751538d5 | 353 | # *** new major opcode OP-V *** |
43740e3a LZ |
354 | vadd_vv 000000 . ..... ..... 000 ..... 1010111 @r_vm |
355 | vadd_vx 000000 . ..... ..... 100 ..... 1010111 @r_vm | |
356 | vadd_vi 000000 . ..... ..... 011 ..... 1010111 @r_vm | |
357 | vsub_vv 000010 . ..... ..... 000 ..... 1010111 @r_vm | |
358 | vsub_vx 000010 . ..... ..... 100 ..... 1010111 @r_vm | |
359 | vrsub_vx 000011 . ..... ..... 100 ..... 1010111 @r_vm | |
360 | vrsub_vi 000011 . ..... ..... 011 ..... 1010111 @r_vm | |
8fcdf776 LZ |
361 | vwaddu_vv 110000 . ..... ..... 010 ..... 1010111 @r_vm |
362 | vwaddu_vx 110000 . ..... ..... 110 ..... 1010111 @r_vm | |
363 | vwadd_vv 110001 . ..... ..... 010 ..... 1010111 @r_vm | |
364 | vwadd_vx 110001 . ..... ..... 110 ..... 1010111 @r_vm | |
365 | vwsubu_vv 110010 . ..... ..... 010 ..... 1010111 @r_vm | |
366 | vwsubu_vx 110010 . ..... ..... 110 ..... 1010111 @r_vm | |
367 | vwsub_vv 110011 . ..... ..... 010 ..... 1010111 @r_vm | |
368 | vwsub_vx 110011 . ..... ..... 110 ..... 1010111 @r_vm | |
369 | vwaddu_wv 110100 . ..... ..... 010 ..... 1010111 @r_vm | |
370 | vwaddu_wx 110100 . ..... ..... 110 ..... 1010111 @r_vm | |
371 | vwadd_wv 110101 . ..... ..... 010 ..... 1010111 @r_vm | |
372 | vwadd_wx 110101 . ..... ..... 110 ..... 1010111 @r_vm | |
373 | vwsubu_wv 110110 . ..... ..... 010 ..... 1010111 @r_vm | |
374 | vwsubu_wx 110110 . ..... ..... 110 ..... 1010111 @r_vm | |
375 | vwsub_wv 110111 . ..... ..... 010 ..... 1010111 @r_vm | |
376 | vwsub_wx 110111 . ..... ..... 110 ..... 1010111 @r_vm | |
3a6f8f68 LZ |
377 | vadc_vvm 010000 1 ..... ..... 000 ..... 1010111 @r_vm_1 |
378 | vadc_vxm 010000 1 ..... ..... 100 ..... 1010111 @r_vm_1 | |
379 | vadc_vim 010000 1 ..... ..... 011 ..... 1010111 @r_vm_1 | |
380 | vmadc_vvm 010001 1 ..... ..... 000 ..... 1010111 @r_vm_1 | |
381 | vmadc_vxm 010001 1 ..... ..... 100 ..... 1010111 @r_vm_1 | |
382 | vmadc_vim 010001 1 ..... ..... 011 ..... 1010111 @r_vm_1 | |
383 | vsbc_vvm 010010 1 ..... ..... 000 ..... 1010111 @r_vm_1 | |
384 | vsbc_vxm 010010 1 ..... ..... 100 ..... 1010111 @r_vm_1 | |
385 | vmsbc_vvm 010011 1 ..... ..... 000 ..... 1010111 @r_vm_1 | |
386 | vmsbc_vxm 010011 1 ..... ..... 100 ..... 1010111 @r_vm_1 | |
d3842924 LZ |
387 | vand_vv 001001 . ..... ..... 000 ..... 1010111 @r_vm |
388 | vand_vx 001001 . ..... ..... 100 ..... 1010111 @r_vm | |
389 | vand_vi 001001 . ..... ..... 011 ..... 1010111 @r_vm | |
390 | vor_vv 001010 . ..... ..... 000 ..... 1010111 @r_vm | |
391 | vor_vx 001010 . ..... ..... 100 ..... 1010111 @r_vm | |
392 | vor_vi 001010 . ..... ..... 011 ..... 1010111 @r_vm | |
393 | vxor_vv 001011 . ..... ..... 000 ..... 1010111 @r_vm | |
394 | vxor_vx 001011 . ..... ..... 100 ..... 1010111 @r_vm | |
395 | vxor_vi 001011 . ..... ..... 011 ..... 1010111 @r_vm | |
3277d955 LZ |
396 | vsll_vv 100101 . ..... ..... 000 ..... 1010111 @r_vm |
397 | vsll_vx 100101 . ..... ..... 100 ..... 1010111 @r_vm | |
398 | vsll_vi 100101 . ..... ..... 011 ..... 1010111 @r_vm | |
399 | vsrl_vv 101000 . ..... ..... 000 ..... 1010111 @r_vm | |
400 | vsrl_vx 101000 . ..... ..... 100 ..... 1010111 @r_vm | |
401 | vsrl_vi 101000 . ..... ..... 011 ..... 1010111 @r_vm | |
402 | vsra_vv 101001 . ..... ..... 000 ..... 1010111 @r_vm | |
403 | vsra_vx 101001 . ..... ..... 100 ..... 1010111 @r_vm | |
404 | vsra_vi 101001 . ..... ..... 011 ..... 1010111 @r_vm | |
7689b028 LZ |
405 | vnsrl_vv 101100 . ..... ..... 000 ..... 1010111 @r_vm |
406 | vnsrl_vx 101100 . ..... ..... 100 ..... 1010111 @r_vm | |
407 | vnsrl_vi 101100 . ..... ..... 011 ..... 1010111 @r_vm | |
408 | vnsra_vv 101101 . ..... ..... 000 ..... 1010111 @r_vm | |
409 | vnsra_vx 101101 . ..... ..... 100 ..... 1010111 @r_vm | |
410 | vnsra_vi 101101 . ..... ..... 011 ..... 1010111 @r_vm | |
1366fc79 LZ |
411 | vmseq_vv 011000 . ..... ..... 000 ..... 1010111 @r_vm |
412 | vmseq_vx 011000 . ..... ..... 100 ..... 1010111 @r_vm | |
413 | vmseq_vi 011000 . ..... ..... 011 ..... 1010111 @r_vm | |
414 | vmsne_vv 011001 . ..... ..... 000 ..... 1010111 @r_vm | |
415 | vmsne_vx 011001 . ..... ..... 100 ..... 1010111 @r_vm | |
416 | vmsne_vi 011001 . ..... ..... 011 ..... 1010111 @r_vm | |
417 | vmsltu_vv 011010 . ..... ..... 000 ..... 1010111 @r_vm | |
418 | vmsltu_vx 011010 . ..... ..... 100 ..... 1010111 @r_vm | |
419 | vmslt_vv 011011 . ..... ..... 000 ..... 1010111 @r_vm | |
420 | vmslt_vx 011011 . ..... ..... 100 ..... 1010111 @r_vm | |
421 | vmsleu_vv 011100 . ..... ..... 000 ..... 1010111 @r_vm | |
422 | vmsleu_vx 011100 . ..... ..... 100 ..... 1010111 @r_vm | |
423 | vmsleu_vi 011100 . ..... ..... 011 ..... 1010111 @r_vm | |
424 | vmsle_vv 011101 . ..... ..... 000 ..... 1010111 @r_vm | |
425 | vmsle_vx 011101 . ..... ..... 100 ..... 1010111 @r_vm | |
426 | vmsle_vi 011101 . ..... ..... 011 ..... 1010111 @r_vm | |
427 | vmsgtu_vx 011110 . ..... ..... 100 ..... 1010111 @r_vm | |
428 | vmsgtu_vi 011110 . ..... ..... 011 ..... 1010111 @r_vm | |
429 | vmsgt_vx 011111 . ..... ..... 100 ..... 1010111 @r_vm | |
430 | vmsgt_vi 011111 . ..... ..... 011 ..... 1010111 @r_vm | |
558fa779 LZ |
431 | vminu_vv 000100 . ..... ..... 000 ..... 1010111 @r_vm |
432 | vminu_vx 000100 . ..... ..... 100 ..... 1010111 @r_vm | |
433 | vmin_vv 000101 . ..... ..... 000 ..... 1010111 @r_vm | |
434 | vmin_vx 000101 . ..... ..... 100 ..... 1010111 @r_vm | |
435 | vmaxu_vv 000110 . ..... ..... 000 ..... 1010111 @r_vm | |
436 | vmaxu_vx 000110 . ..... ..... 100 ..... 1010111 @r_vm | |
437 | vmax_vv 000111 . ..... ..... 000 ..... 1010111 @r_vm | |
438 | vmax_vx 000111 . ..... ..... 100 ..... 1010111 @r_vm | |
958b85f3 LZ |
439 | vmul_vv 100101 . ..... ..... 010 ..... 1010111 @r_vm |
440 | vmul_vx 100101 . ..... ..... 110 ..... 1010111 @r_vm | |
441 | vmulh_vv 100111 . ..... ..... 010 ..... 1010111 @r_vm | |
442 | vmulh_vx 100111 . ..... ..... 110 ..... 1010111 @r_vm | |
443 | vmulhu_vv 100100 . ..... ..... 010 ..... 1010111 @r_vm | |
444 | vmulhu_vx 100100 . ..... ..... 110 ..... 1010111 @r_vm | |
445 | vmulhsu_vv 100110 . ..... ..... 010 ..... 1010111 @r_vm | |
446 | vmulhsu_vx 100110 . ..... ..... 110 ..... 1010111 @r_vm | |
85e6658c LZ |
447 | vdivu_vv 100000 . ..... ..... 010 ..... 1010111 @r_vm |
448 | vdivu_vx 100000 . ..... ..... 110 ..... 1010111 @r_vm | |
449 | vdiv_vv 100001 . ..... ..... 010 ..... 1010111 @r_vm | |
450 | vdiv_vx 100001 . ..... ..... 110 ..... 1010111 @r_vm | |
451 | vremu_vv 100010 . ..... ..... 010 ..... 1010111 @r_vm | |
452 | vremu_vx 100010 . ..... ..... 110 ..... 1010111 @r_vm | |
453 | vrem_vv 100011 . ..... ..... 010 ..... 1010111 @r_vm | |
454 | vrem_vx 100011 . ..... ..... 110 ..... 1010111 @r_vm | |
97b1cba3 LZ |
455 | vwmulu_vv 111000 . ..... ..... 010 ..... 1010111 @r_vm |
456 | vwmulu_vx 111000 . ..... ..... 110 ..... 1010111 @r_vm | |
457 | vwmulsu_vv 111010 . ..... ..... 010 ..... 1010111 @r_vm | |
458 | vwmulsu_vx 111010 . ..... ..... 110 ..... 1010111 @r_vm | |
459 | vwmul_vv 111011 . ..... ..... 010 ..... 1010111 @r_vm | |
460 | vwmul_vx 111011 . ..... ..... 110 ..... 1010111 @r_vm | |
54df813a LZ |
461 | vmacc_vv 101101 . ..... ..... 010 ..... 1010111 @r_vm |
462 | vmacc_vx 101101 . ..... ..... 110 ..... 1010111 @r_vm | |
463 | vnmsac_vv 101111 . ..... ..... 010 ..... 1010111 @r_vm | |
464 | vnmsac_vx 101111 . ..... ..... 110 ..... 1010111 @r_vm | |
465 | vmadd_vv 101001 . ..... ..... 010 ..... 1010111 @r_vm | |
466 | vmadd_vx 101001 . ..... ..... 110 ..... 1010111 @r_vm | |
467 | vnmsub_vv 101011 . ..... ..... 010 ..... 1010111 @r_vm | |
468 | vnmsub_vx 101011 . ..... ..... 110 ..... 1010111 @r_vm | |
2b587b33 LZ |
469 | vwmaccu_vv 111100 . ..... ..... 010 ..... 1010111 @r_vm |
470 | vwmaccu_vx 111100 . ..... ..... 110 ..... 1010111 @r_vm | |
471 | vwmacc_vv 111101 . ..... ..... 010 ..... 1010111 @r_vm | |
472 | vwmacc_vx 111101 . ..... ..... 110 ..... 1010111 @r_vm | |
473 | vwmaccsu_vv 111110 . ..... ..... 010 ..... 1010111 @r_vm | |
474 | vwmaccsu_vx 111110 . ..... ..... 110 ..... 1010111 @r_vm | |
475 | vwmaccus_vx 111111 . ..... ..... 110 ..... 1010111 @r_vm | |
f020a7a1 LZ |
476 | vmv_v_v 010111 1 00000 ..... 000 ..... 1010111 @r2 |
477 | vmv_v_x 010111 1 00000 ..... 100 ..... 1010111 @r2 | |
478 | vmv_v_i 010111 1 00000 ..... 011 ..... 1010111 @r2 | |
479 | vmerge_vvm 010111 0 ..... ..... 000 ..... 1010111 @r_vm_0 | |
480 | vmerge_vxm 010111 0 ..... ..... 100 ..... 1010111 @r_vm_0 | |
481 | vmerge_vim 010111 0 ..... ..... 011 ..... 1010111 @r_vm_0 | |
eb2650e3 LZ |
482 | vsaddu_vv 100000 . ..... ..... 000 ..... 1010111 @r_vm |
483 | vsaddu_vx 100000 . ..... ..... 100 ..... 1010111 @r_vm | |
484 | vsaddu_vi 100000 . ..... ..... 011 ..... 1010111 @r_vm | |
485 | vsadd_vv 100001 . ..... ..... 000 ..... 1010111 @r_vm | |
486 | vsadd_vx 100001 . ..... ..... 100 ..... 1010111 @r_vm | |
487 | vsadd_vi 100001 . ..... ..... 011 ..... 1010111 @r_vm | |
488 | vssubu_vv 100010 . ..... ..... 000 ..... 1010111 @r_vm | |
489 | vssubu_vx 100010 . ..... ..... 100 ..... 1010111 @r_vm | |
490 | vssub_vv 100011 . ..... ..... 000 ..... 1010111 @r_vm | |
491 | vssub_vx 100011 . ..... ..... 100 ..... 1010111 @r_vm | |
b7aee481 LZ |
492 | vaadd_vv 100100 . ..... ..... 000 ..... 1010111 @r_vm |
493 | vaadd_vx 100100 . ..... ..... 100 ..... 1010111 @r_vm | |
494 | vaadd_vi 100100 . ..... ..... 011 ..... 1010111 @r_vm | |
495 | vasub_vv 100110 . ..... ..... 000 ..... 1010111 @r_vm | |
496 | vasub_vx 100110 . ..... ..... 100 ..... 1010111 @r_vm | |
9f0ff9e5 LZ |
497 | vsmul_vv 100111 . ..... ..... 000 ..... 1010111 @r_vm |
498 | vsmul_vx 100111 . ..... ..... 100 ..... 1010111 @r_vm | |
0a1eaf00 LZ |
499 | vwsmaccu_vv 111100 . ..... ..... 000 ..... 1010111 @r_vm |
500 | vwsmaccu_vx 111100 . ..... ..... 100 ..... 1010111 @r_vm | |
501 | vwsmacc_vv 111101 . ..... ..... 000 ..... 1010111 @r_vm | |
502 | vwsmacc_vx 111101 . ..... ..... 100 ..... 1010111 @r_vm | |
503 | vwsmaccsu_vv 111110 . ..... ..... 000 ..... 1010111 @r_vm | |
504 | vwsmaccsu_vx 111110 . ..... ..... 100 ..... 1010111 @r_vm | |
505 | vwsmaccus_vx 111111 . ..... ..... 100 ..... 1010111 @r_vm | |
04a61406 LZ |
506 | vssrl_vv 101010 . ..... ..... 000 ..... 1010111 @r_vm |
507 | vssrl_vx 101010 . ..... ..... 100 ..... 1010111 @r_vm | |
508 | vssrl_vi 101010 . ..... ..... 011 ..... 1010111 @r_vm | |
509 | vssra_vv 101011 . ..... ..... 000 ..... 1010111 @r_vm | |
510 | vssra_vx 101011 . ..... ..... 100 ..... 1010111 @r_vm | |
511 | vssra_vi 101011 . ..... ..... 011 ..... 1010111 @r_vm | |
9ff3d287 LZ |
512 | vnclipu_vv 101110 . ..... ..... 000 ..... 1010111 @r_vm |
513 | vnclipu_vx 101110 . ..... ..... 100 ..... 1010111 @r_vm | |
514 | vnclipu_vi 101110 . ..... ..... 011 ..... 1010111 @r_vm | |
515 | vnclip_vv 101111 . ..... ..... 000 ..... 1010111 @r_vm | |
516 | vnclip_vx 101111 . ..... ..... 100 ..... 1010111 @r_vm | |
517 | vnclip_vi 101111 . ..... ..... 011 ..... 1010111 @r_vm | |
ce2a0343 LZ |
518 | vfadd_vv 000000 . ..... ..... 001 ..... 1010111 @r_vm |
519 | vfadd_vf 000000 . ..... ..... 101 ..... 1010111 @r_vm | |
520 | vfsub_vv 000010 . ..... ..... 001 ..... 1010111 @r_vm | |
521 | vfsub_vf 000010 . ..... ..... 101 ..... 1010111 @r_vm | |
522 | vfrsub_vf 100111 . ..... ..... 101 ..... 1010111 @r_vm | |
eeffab2e LZ |
523 | vfwadd_vv 110000 . ..... ..... 001 ..... 1010111 @r_vm |
524 | vfwadd_vf 110000 . ..... ..... 101 ..... 1010111 @r_vm | |
525 | vfwadd_wv 110100 . ..... ..... 001 ..... 1010111 @r_vm | |
526 | vfwadd_wf 110100 . ..... ..... 101 ..... 1010111 @r_vm | |
527 | vfwsub_vv 110010 . ..... ..... 001 ..... 1010111 @r_vm | |
528 | vfwsub_vf 110010 . ..... ..... 101 ..... 1010111 @r_vm | |
529 | vfwsub_wv 110110 . ..... ..... 001 ..... 1010111 @r_vm | |
530 | vfwsub_wf 110110 . ..... ..... 101 ..... 1010111 @r_vm | |
0e0057cb LZ |
531 | vfmul_vv 100100 . ..... ..... 001 ..... 1010111 @r_vm |
532 | vfmul_vf 100100 . ..... ..... 101 ..... 1010111 @r_vm | |
533 | vfdiv_vv 100000 . ..... ..... 001 ..... 1010111 @r_vm | |
534 | vfdiv_vf 100000 . ..... ..... 101 ..... 1010111 @r_vm | |
535 | vfrdiv_vf 100001 . ..... ..... 101 ..... 1010111 @r_vm | |
f7c7b7cd LZ |
536 | vfwmul_vv 111000 . ..... ..... 001 ..... 1010111 @r_vm |
537 | vfwmul_vf 111000 . ..... ..... 101 ..... 1010111 @r_vm | |
4aa5a8fe LZ |
538 | vfmacc_vv 101100 . ..... ..... 001 ..... 1010111 @r_vm |
539 | vfnmacc_vv 101101 . ..... ..... 001 ..... 1010111 @r_vm | |
540 | vfnmacc_vf 101101 . ..... ..... 101 ..... 1010111 @r_vm | |
541 | vfmacc_vf 101100 . ..... ..... 101 ..... 1010111 @r_vm | |
542 | vfmsac_vv 101110 . ..... ..... 001 ..... 1010111 @r_vm | |
543 | vfmsac_vf 101110 . ..... ..... 101 ..... 1010111 @r_vm | |
544 | vfnmsac_vv 101111 . ..... ..... 001 ..... 1010111 @r_vm | |
545 | vfnmsac_vf 101111 . ..... ..... 101 ..... 1010111 @r_vm | |
546 | vfmadd_vv 101000 . ..... ..... 001 ..... 1010111 @r_vm | |
547 | vfmadd_vf 101000 . ..... ..... 101 ..... 1010111 @r_vm | |
548 | vfnmadd_vv 101001 . ..... ..... 001 ..... 1010111 @r_vm | |
549 | vfnmadd_vf 101001 . ..... ..... 101 ..... 1010111 @r_vm | |
550 | vfmsub_vv 101010 . ..... ..... 001 ..... 1010111 @r_vm | |
551 | vfmsub_vf 101010 . ..... ..... 101 ..... 1010111 @r_vm | |
552 | vfnmsub_vv 101011 . ..... ..... 001 ..... 1010111 @r_vm | |
553 | vfnmsub_vf 101011 . ..... ..... 101 ..... 1010111 @r_vm | |
0dd50959 LZ |
554 | vfwmacc_vv 111100 . ..... ..... 001 ..... 1010111 @r_vm |
555 | vfwmacc_vf 111100 . ..... ..... 101 ..... 1010111 @r_vm | |
556 | vfwnmacc_vv 111101 . ..... ..... 001 ..... 1010111 @r_vm | |
557 | vfwnmacc_vf 111101 . ..... ..... 101 ..... 1010111 @r_vm | |
558 | vfwmsac_vv 111110 . ..... ..... 001 ..... 1010111 @r_vm | |
559 | vfwmsac_vf 111110 . ..... ..... 101 ..... 1010111 @r_vm | |
560 | vfwnmsac_vv 111111 . ..... ..... 001 ..... 1010111 @r_vm | |
561 | vfwnmsac_vf 111111 . ..... ..... 101 ..... 1010111 @r_vm | |
d9e4ce72 | 562 | vfsqrt_v 100011 . ..... 00000 001 ..... 1010111 @r2_vm |
230b53dd LZ |
563 | vfmin_vv 000100 . ..... ..... 001 ..... 1010111 @r_vm |
564 | vfmin_vf 000100 . ..... ..... 101 ..... 1010111 @r_vm | |
565 | vfmax_vv 000110 . ..... ..... 001 ..... 1010111 @r_vm | |
566 | vfmax_vf 000110 . ..... ..... 101 ..... 1010111 @r_vm | |
1d426b81 LZ |
567 | vfsgnj_vv 001000 . ..... ..... 001 ..... 1010111 @r_vm |
568 | vfsgnj_vf 001000 . ..... ..... 101 ..... 1010111 @r_vm | |
569 | vfsgnjn_vv 001001 . ..... ..... 001 ..... 1010111 @r_vm | |
570 | vfsgnjn_vf 001001 . ..... ..... 101 ..... 1010111 @r_vm | |
571 | vfsgnjx_vv 001010 . ..... ..... 001 ..... 1010111 @r_vm | |
572 | vfsgnjx_vf 001010 . ..... ..... 101 ..... 1010111 @r_vm | |
2a68e9e5 LZ |
573 | vmfeq_vv 011000 . ..... ..... 001 ..... 1010111 @r_vm |
574 | vmfeq_vf 011000 . ..... ..... 101 ..... 1010111 @r_vm | |
575 | vmfne_vv 011100 . ..... ..... 001 ..... 1010111 @r_vm | |
576 | vmfne_vf 011100 . ..... ..... 101 ..... 1010111 @r_vm | |
577 | vmflt_vv 011011 . ..... ..... 001 ..... 1010111 @r_vm | |
578 | vmflt_vf 011011 . ..... ..... 101 ..... 1010111 @r_vm | |
579 | vmfle_vv 011001 . ..... ..... 001 ..... 1010111 @r_vm | |
580 | vmfle_vf 011001 . ..... ..... 101 ..... 1010111 @r_vm | |
581 | vmfgt_vf 011101 . ..... ..... 101 ..... 1010111 @r_vm | |
582 | vmfge_vf 011111 . ..... ..... 101 ..... 1010111 @r_vm | |
583 | vmford_vv 011010 . ..... ..... 001 ..... 1010111 @r_vm | |
584 | vmford_vf 011010 . ..... ..... 101 ..... 1010111 @r_vm | |
121ddbb3 | 585 | vfclass_v 100011 . ..... 10000 001 ..... 1010111 @r2_vm |
64ab5846 LZ |
586 | vfmerge_vfm 010111 0 ..... ..... 101 ..... 1010111 @r_vm_0 |
587 | vfmv_v_f 010111 1 00000 ..... 101 ..... 1010111 @r2 | |
92100973 LZ |
588 | vfcvt_xu_f_v 100010 . ..... 00000 001 ..... 1010111 @r2_vm |
589 | vfcvt_x_f_v 100010 . ..... 00001 001 ..... 1010111 @r2_vm | |
590 | vfcvt_f_xu_v 100010 . ..... 00010 001 ..... 1010111 @r2_vm | |
591 | vfcvt_f_x_v 100010 . ..... 00011 001 ..... 1010111 @r2_vm | |
4514b7b1 LZ |
592 | vfwcvt_xu_f_v 100010 . ..... 01000 001 ..... 1010111 @r2_vm |
593 | vfwcvt_x_f_v 100010 . ..... 01001 001 ..... 1010111 @r2_vm | |
594 | vfwcvt_f_xu_v 100010 . ..... 01010 001 ..... 1010111 @r2_vm | |
595 | vfwcvt_f_x_v 100010 . ..... 01011 001 ..... 1010111 @r2_vm | |
596 | vfwcvt_f_f_v 100010 . ..... 01100 001 ..... 1010111 @r2_vm | |
878d406e LZ |
597 | vfncvt_xu_f_v 100010 . ..... 10000 001 ..... 1010111 @r2_vm |
598 | vfncvt_x_f_v 100010 . ..... 10001 001 ..... 1010111 @r2_vm | |
599 | vfncvt_f_xu_v 100010 . ..... 10010 001 ..... 1010111 @r2_vm | |
600 | vfncvt_f_x_v 100010 . ..... 10011 001 ..... 1010111 @r2_vm | |
601 | vfncvt_f_f_v 100010 . ..... 10100 001 ..... 1010111 @r2_vm | |
fe5c9ab1 LZ |
602 | vredsum_vs 000000 . ..... ..... 010 ..... 1010111 @r_vm |
603 | vredand_vs 000001 . ..... ..... 010 ..... 1010111 @r_vm | |
604 | vredor_vs 000010 . ..... ..... 010 ..... 1010111 @r_vm | |
605 | vredxor_vs 000011 . ..... ..... 010 ..... 1010111 @r_vm | |
606 | vredminu_vs 000100 . ..... ..... 010 ..... 1010111 @r_vm | |
607 | vredmin_vs 000101 . ..... ..... 010 ..... 1010111 @r_vm | |
608 | vredmaxu_vs 000110 . ..... ..... 010 ..... 1010111 @r_vm | |
609 | vredmax_vs 000111 . ..... ..... 010 ..... 1010111 @r_vm | |
bba71820 LZ |
610 | vwredsumu_vs 110000 . ..... ..... 000 ..... 1010111 @r_vm |
611 | vwredsum_vs 110001 . ..... ..... 000 ..... 1010111 @r_vm | |
523547f1 LZ |
612 | # Vector ordered and unordered reduction sum |
613 | vfredsum_vs 0000-1 . ..... ..... 001 ..... 1010111 @r_vm | |
614 | vfredmin_vs 000101 . ..... ..... 001 ..... 1010111 @r_vm | |
615 | vfredmax_vs 000111 . ..... ..... 001 ..... 1010111 @r_vm | |
696b0c26 LZ |
616 | # Vector widening ordered and unordered float reduction sum |
617 | vfwredsum_vs 1100-1 . ..... ..... 001 ..... 1010111 @r_vm | |
c21f34ae LZ |
618 | vmand_mm 011001 - ..... ..... 010 ..... 1010111 @r |
619 | vmnand_mm 011101 - ..... ..... 010 ..... 1010111 @r | |
620 | vmandnot_mm 011000 - ..... ..... 010 ..... 1010111 @r | |
621 | vmxor_mm 011011 - ..... ..... 010 ..... 1010111 @r | |
622 | vmor_mm 011010 - ..... ..... 010 ..... 1010111 @r | |
623 | vmnor_mm 011110 - ..... ..... 010 ..... 1010111 @r | |
624 | vmornot_mm 011100 - ..... ..... 010 ..... 1010111 @r | |
625 | vmxnor_mm 011111 - ..... ..... 010 ..... 1010111 @r | |
2e88f551 | 626 | vmpopc_m 010100 . ..... ----- 010 ..... 1010111 @r2_vm |
0db67e1c | 627 | vmfirst_m 010101 . ..... ----- 010 ..... 1010111 @r2_vm |
81fbf7da LZ |
628 | vmsbf_m 010110 . ..... 00001 010 ..... 1010111 @r2_vm |
629 | vmsif_m 010110 . ..... 00011 010 ..... 1010111 @r2_vm | |
630 | vmsof_m 010110 . ..... 00010 010 ..... 1010111 @r2_vm | |
78d90cfe | 631 | viota_m 010110 . ..... 10000 010 ..... 1010111 @r2_vm |
126bec3f | 632 | vid_v 010110 . 00000 10001 010 ..... 1010111 @r1_vm |
90355f39 | 633 | vext_x_v 001100 1 ..... ..... 010 ..... 1010111 @r |
9fc08be6 | 634 | vmv_s_x 001101 1 00000 ..... 110 ..... 1010111 @r2 |
2843420a LZ |
635 | vfmv_f_s 001100 1 ..... 00000 001 ..... 1010111 @r2rd |
636 | vfmv_s_f 001101 1 00000 ..... 101 ..... 1010111 @r2 | |
ec17e036 LZ |
637 | vslideup_vx 001110 . ..... ..... 100 ..... 1010111 @r_vm |
638 | vslideup_vi 001110 . ..... ..... 011 ..... 1010111 @r_vm | |
639 | vslide1up_vx 001110 . ..... ..... 110 ..... 1010111 @r_vm | |
640 | vslidedown_vx 001111 . ..... ..... 100 ..... 1010111 @r_vm | |
641 | vslidedown_vi 001111 . ..... ..... 011 ..... 1010111 @r_vm | |
642 | vslide1down_vx 001111 . ..... ..... 110 ..... 1010111 @r_vm | |
e4b83d5c LZ |
643 | vrgather_vv 001100 . ..... ..... 000 ..... 1010111 @r_vm |
644 | vrgather_vx 001100 . ..... ..... 100 ..... 1010111 @r_vm | |
645 | vrgather_vi 001100 . ..... ..... 011 ..... 1010111 @r_vm | |
31bf42a2 | 646 | vcompress_vm 010111 - ..... ..... 010 ..... 1010111 @r |
43740e3a | 647 | |
2b7168fc LZ |
648 | vsetvli 0 ........... ..... 111 ..... 1010111 @r2_zimm |
649 | vsetvl 1000000 ..... ..... 111 ..... 1010111 @r | |
daf866b6 AF |
650 | |
651 | #*** Vector AMO operations (in addition to Zvamo) *** | |
652 | vamoswapd_v 00001 . . ..... ..... 111 ..... 0101111 @r_wdvm | |
653 | vamoaddd_v 00000 . . ..... ..... 111 ..... 0101111 @r_wdvm | |
654 | vamoxord_v 00100 . . ..... ..... 111 ..... 0101111 @r_wdvm | |
655 | vamoandd_v 01100 . . ..... ..... 111 ..... 0101111 @r_wdvm | |
656 | vamoord_v 01000 . . ..... ..... 111 ..... 0101111 @r_wdvm | |
657 | vamomind_v 10000 . . ..... ..... 111 ..... 0101111 @r_wdvm | |
658 | vamomaxd_v 10100 . . ..... ..... 111 ..... 0101111 @r_wdvm | |
659 | vamominud_v 11000 . . ..... ..... 111 ..... 0101111 @r_wdvm | |
660 | vamomaxud_v 11100 . . ..... ..... 111 ..... 0101111 @r_wdvm | |
43824018 KC |
661 | |
662 | # *** RV32B Standard Extension *** | |
663 | clz 011000 000000 ..... 001 ..... 0010011 @r2 | |
664 | ctz 011000 000001 ..... 001 ..... 0010011 @r2 | |
1e16310c | 665 | cpop 011000 000010 ..... 001 ..... 0010011 @r2 |
0bcdb686 KC |
666 | andn 0100000 .......... 111 ..... 0110011 @r |
667 | orn 0100000 .......... 110 ..... 0110011 @r | |
668 | xnor 0100000 .......... 100 ..... 0110011 @r | |
6ef58431 KC |
669 | pack 0000100 .......... 100 ..... 0110011 @r |
670 | packu 0100100 .......... 100 ..... 0110011 @r | |
671 | packh 0000100 .......... 111 ..... 0110011 @r | |
82655d81 KC |
672 | min 0000101 .......... 100 ..... 0110011 @r |
673 | minu 0000101 .......... 101 ..... 0110011 @r | |
674 | max 0000101 .......... 110 ..... 0110011 @r | |
675 | maxu 0000101 .......... 111 ..... 0110011 @r | |
43824018 KC |
676 | |
677 | # *** RV64B Standard Extension (in addition to RV32B) *** | |
678 | clzw 0110000 00000 ..... 001 ..... 0011011 @r2 | |
679 | ctzw 0110000 00001 ..... 001 ..... 0011011 @r2 | |
1e16310c | 680 | cpopw 0110000 00010 ..... 001 ..... 0011011 @r2 |
6ef58431 KC |
681 | |
682 | packw 0000100 .......... 100 ..... 0111011 @r | |
683 | packuw 0100100 .......... 100 ..... 0111011 @r |