asmkit/riscv/opcodes.rs
1#[derive(Clone, Copy)]
2pub struct Immediate {
3 position_in_opcode: (u32, u32),
4 position_in_immediate: (u32, u32),
5}
6
7pub const UIMM_LO: Immediate = Immediate {
8 position_in_opcode: (31, 12),
9 position_in_immediate: (31, 12),
10};
11
12pub const S_TYPE_HI: Immediate = Immediate {
13 position_in_immediate: (11, 5),
14 position_in_opcode: (31, 25),
15};
16
17pub const S_TYPE_LO: Immediate = Immediate {
18 position_in_immediate: (4, 0),
19 position_in_opcode: (11, 7),
20};
21
22// imm[20]: Highest bit of the 21-bit immediate
23pub const UJ_TYPE_IMM_20: Immediate = Immediate {
24 position_in_immediate: (20, 20),
25 position_in_opcode: (31, 31),
26};
27
28// imm[10:1]: Lower 10 bits of the immediate value
29pub const UJ_TYPE_IMM_10_1: Immediate = Immediate {
30 position_in_immediate: (10, 1),
31 position_in_opcode: (30, 21),
32};
33
34// imm[11]: The 11th bit of the immediate
35pub const UJ_TYPE_IMM_11: Immediate = Immediate {
36 position_in_immediate: (11, 11),
37 position_in_opcode: (20, 20),
38};
39
40// imm[19:12]: Upper 8 bits (bits 19 to 12)
41pub const UJ_TYPE_IMM_19_12: Immediate = Immediate {
42 position_in_immediate: (19, 12),
43 position_in_opcode: (19, 12),
44};
45
46pub const I_TYPE_11_0: Immediate = Immediate {
47 position_in_immediate: (11, 0),
48 position_in_opcode: (31, 20),
49};
50
51// imm[12]: Highest bit of the immediate
52pub const B_TYPE_IMM_12: Immediate = Immediate {
53 position_in_immediate: (12, 12),
54 position_in_opcode: (31, 31),
55};
56
57// imm[10:5]: Middle bits of the immediate
58pub const B_TYPE_IMM_10_5: Immediate = Immediate {
59 position_in_immediate: (10, 5),
60 position_in_opcode: (30, 25),
61};
62
63// imm[4:1]: Lower bits of the immediate
64pub const B_TYPE_IMM_4_1: Immediate = Immediate {
65 position_in_immediate: (4, 1),
66 position_in_opcode: (11, 8),
67};
68
69// imm[11]: 11th bit of the immediate
70pub const B_TYPE_IMM_11: Immediate = Immediate {
71 position_in_immediate: (11, 11),
72 position_in_opcode: (7, 7),
73};
74
75// imm[11]: The highest bit of the immediate
76pub const CJ_TYPE_IMM_11: Immediate = Immediate {
77 position_in_immediate: (11, 11),
78 position_in_opcode: (12, 12), // Bit 12 in the compressed instruction
79};
80
81// imm[4]: The 4th bit of the immediate
82pub const CJ_TYPE_IMM_4: Immediate = Immediate {
83 position_in_immediate: (4, 4),
84 position_in_opcode: (11, 11), // Bit 11 in the compressed instruction
85};
86
87// imm[9:8]: Bits 9 and 8 of the immediate
88pub const CJ_TYPE_IMM_9_8: Immediate = Immediate {
89 position_in_immediate: (9, 8),
90 position_in_opcode: (10, 9), // Bits 10 and 9
91};
92
93// imm[10]: The 10th bit of the immediate
94pub const CJ_TYPE_IMM_10: Immediate = Immediate {
95 position_in_immediate: (10, 10),
96 position_in_opcode: (8, 8), // Bit 8
97};
98
99// imm[6]: The 6th bit of the immediate
100pub const CJ_TYPE_IMM_6: Immediate = Immediate {
101 position_in_immediate: (6, 6),
102 position_in_opcode: (7, 7), // Bit 7
103};
104
105// imm[7]: The 7th bit of the immediate
106pub const CJ_TYPE_IMM_7: Immediate = Immediate {
107 position_in_immediate: (7, 7),
108 position_in_opcode: (6, 6), // Bit 6
109};
110
111// imm[3:1]: Bits 3 to 1 of the immediate
112pub const CJ_TYPE_IMM_3_1: Immediate = Immediate {
113 position_in_immediate: (3, 1),
114 position_in_opcode: (5, 3), // Bits 5 to 3
115};
116
117// imm[5]: The 5th bit of the immediate
118pub const CJ_TYPE_IMM_5: Immediate = Immediate {
119 position_in_immediate: (5, 5),
120 position_in_opcode: (2, 2), // Bit 2
121};
122
123pub const BIMM12LOHI: &[Immediate] = &[
124 B_TYPE_IMM_12,
125 B_TYPE_IMM_11,
126 B_TYPE_IMM_10_5,
127 B_TYPE_IMM_4_1,
128];
129pub const S_TYPE: &[Immediate] = &[S_TYPE_HI, S_TYPE_LO];
130pub const IMM20: &[Immediate] = &[UIMM_LO];
131pub const JIMM20: &[Immediate] = &[
132 UJ_TYPE_IMM_20,
133 UJ_TYPE_IMM_19_12,
134 UJ_TYPE_IMM_11,
135 UJ_TYPE_IMM_10_1,
136];
137pub const I_TYPE: &[Immediate] = &[I_TYPE_11_0];
138pub const SIMM5: &[Immediate] = &[Immediate {
139 position_in_immediate: (4, 0),
140 position_in_opcode: (19, 15),
141}];
142
143pub const IMM6: &[Immediate] = &[];
144pub const IMM12LOHI: &[Immediate] = &[
145 Immediate {
146 position_in_immediate: (11, 5),
147 position_in_opcode: (31, 25),
148 },
149 Immediate {
150 position_in_immediate: (4, 0),
151 position_in_opcode: (11, 7),
152 },
153];
154
155pub const IMM12: &[Immediate] = &[Immediate {
156 position_in_immediate: (11, 0),
157 position_in_opcode: (31, 20),
158}];
159
160pub const ZIMM: &[Immediate] = &[Immediate {
161 position_in_immediate: (4, 0),
162 position_in_opcode: (19, 15),
163}];
164
165pub const ZIMM6LOHI: &[Immediate] = &[
166 Immediate {
167 position_in_immediate: (5, 5),
168 position_in_opcode: (26, 26),
169 },
170 Immediate {
171 position_in_immediate: (4, 0),
172 position_in_opcode: (19, 15),
173 },
174];
175pub const ZIMM11: &[Immediate] = &[Immediate {
176 position_in_immediate: (10, 0),
177 position_in_opcode: (30, 20),
178}];
179
180pub const ZIMM10: &[Immediate] = &[Immediate {
181 position_in_immediate: (9, 0),
182 position_in_opcode: (29, 20),
183}];
184
185pub const ZIMM5: &[Immediate] = &[Immediate {
186 position_in_immediate: (4, 0),
187 position_in_opcode: (19, 15),
188}];
189
190pub const C_SPIMM: &[Immediate] = &[Immediate {
191 position_in_immediate: (5, 4),
192 position_in_opcode: (3, 2),
193}];
194
195pub const C_UIMM8SP_S: &[Immediate] = &[
196 Immediate {
197 position_in_immediate: (5, 2),
198 position_in_opcode: (12, 9),
199 },
200 Immediate {
201 position_in_immediate: (7, 6),
202 position_in_opcode: (6, 5),
203 },
204];
205
206pub const C_UIMM1: &[Immediate] = &[Immediate {
207 position_in_immediate: (1, 1),
208 position_in_opcode: (5, 5),
209}];
210
211pub const C_UIMM7LOHI: &[Immediate] = &[
212 Immediate {
213 position_in_immediate: (5, 3),
214 position_in_opcode: (12, 10),
215 },
216 Immediate {
217 position_in_immediate: (2, 2),
218 position_in_opcode: (6, 6),
219 },
220 Immediate {
221 position_in_immediate: (6, 6),
222 position_in_opcode: (5, 5),
223 },
224];
225
226pub const C_UIMM9_SPLOHI: &[Immediate] = &[
227 Immediate {
228 position_in_immediate: (5, 5),
229 position_in_opcode: (12, 12),
230 },
231 Immediate {
232 position_in_immediate: (4, 2),
233 position_in_opcode: (6, 4),
234 },
235 Immediate {
236 position_in_immediate: (7, 6),
237 position_in_opcode: (3, 2),
238 },
239];
240
241pub const C_UIMM9SP_S: &[Immediate] = &[
242 Immediate {
243 position_in_immediate: (5, 3),
244 position_in_opcode: (12, 9),
245 },
246 Immediate {
247 position_in_immediate: (8, 6),
248 position_in_opcode: (8, 6),
249 },
250];
251
252pub const C_UIMM2: &[Immediate] = &[
253 Immediate {
254 position_in_immediate: (0, 0),
255 position_in_opcode: (6, 6),
256 },
257 Immediate {
258 position_in_immediate: (1, 1),
259 position_in_opcode: (5, 5),
260 },
261];
262
263pub const C_NZUIMM10: &[Immediate] = &[
264 Immediate {
265 position_in_immediate: (5, 4),
266 position_in_opcode: (12, 11),
267 },
268 Immediate {
269 position_in_immediate: (9, 6),
270 position_in_opcode: (10, 7),
271 },
272 Immediate {
273 position_in_immediate: (2, 2),
274 position_in_opcode: (6, 6),
275 },
276 Immediate {
277 position_in_immediate: (3, 3),
278 position_in_opcode: (5, 5),
279 },
280];
281
282pub const C_NZIMM10LOHI: &[Immediate] = &[
283 Immediate {
284 position_in_immediate: (5, 5),
285 position_in_opcode: (12, 12),
286 },
287 Immediate {
288 position_in_immediate: (4, 0),
289 position_in_opcode: (6, 2),
290 },
291];
292
293/// UNUSED FOR NOW!!!
294pub const C_UIMM10SP_S: &[Immediate] = &[];
295/// UNUSED FOR NOW!!!
296pub const C_UIMM10SPLOHI: &[Immediate] = &[];
297/// UNUSED FOR NOW!!!
298pub const C_UIMM9LOHI: &[Immediate] = &[];
299/// UNUSED FOR NOW!!!
300pub const IMM5: &[Immediate] = &[];
301/// UNUSED FOR NOW!!!
302pub const IMM4: &[Immediate] = &[];
303/// UNUSED FOR NOW!!!
304pub const IMM3: &[Immediate] = &[];
305/// UNUSED FOR NOW!!!
306pub const IMM2: &[Immediate] = &[];
307
308pub const C_NZUIMM5: &[Immediate] = C_NZUIMM6LOHI;
309
310pub const C_NZIMM18LOHI: &[Immediate] = &[
311 Immediate {
312 position_in_immediate: (5, 5),
313 position_in_opcode: (12, 12),
314 },
315 Immediate {
316 position_in_immediate: (4, 0),
317 position_in_opcode: (6, 2),
318 },
319];
320
321// imm[17] | ... | imm[16:12]
322pub const C_NZUIMM18LOHI: &[Immediate] = &[
323 Immediate {
324 position_in_immediate: (5, 5),
325 position_in_opcode: (12, 12),
326 },
327 Immediate {
328 position_in_immediate: (4, 0),
329 position_in_opcode: (6, 2),
330 },
331];
332
333pub const C_NZUIMM6LOHI: &[Immediate] = &[
334 Immediate {
335 position_in_immediate: (5, 5),
336 position_in_opcode: (13, 13),
337 },
338 Immediate {
339 position_in_immediate: (4, 0),
340 position_in_opcode: (7, 2),
341 },
342];
343
344pub const C_UIMM6LOHI: &[Immediate] = &[
345 Immediate {
346 position_in_immediate: (5, 5),
347 position_in_opcode: (12, 12),
348 },
349 Immediate {
350 position_in_immediate: (4, 0),
351 position_in_opcode: (6, 2),
352 },
353];
354
355pub const C_UIMM8LOHI: &[Immediate] = &[
356 Immediate {
357 position_in_immediate: (5, 3),
358 position_in_opcode: (12, 10),
359 },
360 Immediate {
361 position_in_immediate: (7, 6),
362 position_in_opcode: (7, 6),
363 },
364];
365
366pub const C_UIMM9SPLOHI: &[Immediate] = &[
367 Immediate {
368 position_in_immediate: (5, 5),
369 position_in_opcode: (13, 13),
370 },
371 Immediate {
372 position_in_immediate: (4, 3),
373 position_in_opcode: (7, 5),
374 },
375 Immediate {
376 position_in_immediate: (8, 6),
377 position_in_opcode: (4, 3),
378 },
379];
380
381pub const C_NZIMM6LOHI: &[Immediate] = &[
382 Immediate {
383 position_in_immediate: (5, 5),
384 position_in_opcode: (12, 12),
385 },
386 Immediate {
387 position_in_immediate: (4, 0),
388 position_in_opcode: (6, 2),
389 },
390];
391
392pub const C_BIMM9LOHI: &[Immediate] = &[
393 Immediate {
394 position_in_immediate: (8, 8),
395 position_in_opcode: (12, 12),
396 },
397 Immediate {
398 position_in_immediate: (4, 3),
399 position_in_opcode: (11, 10),
400 },
401 Immediate {
402 position_in_immediate: (7, 6),
403 position_in_opcode: (6, 5),
404 },
405 Immediate {
406 position_in_immediate: (2, 1),
407 position_in_opcode: (4, 3),
408 },
409 Immediate {
410 position_in_immediate: (5, 5),
411 position_in_opcode: (2, 2),
412 },
413];
414
415pub const C_UIMM8SPLOHI: &[Immediate] = &[
416 Immediate {
417 position_in_immediate: (5, 5),
418 position_in_opcode: (12, 12),
419 },
420 Immediate {
421 position_in_immediate: (4, 2),
422 position_in_opcode: (6, 4),
423 },
424 Immediate {
425 position_in_immediate: (7, 6),
426 position_in_opcode: (3, 2),
427 },
428];
429
430pub const C_UIMM8SP_SLOHI: &[Immediate] = &[
431 Immediate {
432 position_in_immediate: (5, 2),
433 position_in_opcode: (12, 9),
434 },
435 Immediate {
436 position_in_immediate: (7, 6),
437 position_in_opcode: (8, 7),
438 },
439];
440
441pub const C_IMM6LOHI: &[Immediate] = &[
442 Immediate {
443 position_in_immediate: (5, 5),
444 position_in_opcode: (12, 12),
445 },
446 Immediate {
447 position_in_immediate: (4, 0),
448 position_in_opcode: (6, 2),
449 },
450];
451pub const C_IMM12: &[Immediate] = &[
452 Immediate {
453 position_in_immediate: (11, 11),
454 position_in_opcode: (12, 12),
455 },
456 Immediate {
457 position_in_immediate: (4, 4),
458 position_in_opcode: (11, 11),
459 },
460 Immediate {
461 position_in_immediate: (9, 8),
462 position_in_opcode: (10, 9),
463 },
464 Immediate {
465 position_in_immediate: (10, 10),
466 position_in_opcode: (8, 8),
467 },
468 Immediate {
469 position_in_immediate: (6, 6),
470 position_in_opcode: (7, 7),
471 },
472 Immediate {
473 position_in_immediate: (7, 7),
474 position_in_opcode: (6, 6),
475 },
476 Immediate {
477 position_in_immediate: (3, 1),
478 position_in_opcode: (5, 3),
479 },
480 Immediate {
481 position_in_immediate: (5, 5),
482 position_in_opcode: (2, 2),
483 },
484];
485
486pub const C_IMM12LOHI: &[Immediate] = &[
487 Immediate {
488 position_in_immediate: (11, 11),
489 position_in_opcode: (12, 12),
490 },
491 Immediate {
492 position_in_immediate: (4, 4),
493 position_in_opcode: (11, 11),
494 },
495 Immediate {
496 position_in_immediate: (9, 8),
497 position_in_opcode: (10, 9),
498 },
499 Immediate {
500 position_in_immediate: (10, 10),
501 position_in_opcode: (8, 8),
502 },
503 Immediate {
504 position_in_immediate: (6, 6),
505 position_in_opcode: (7, 7),
506 },
507 Immediate {
508 position_in_immediate: (7, 7),
509 position_in_opcode: (6, 6),
510 },
511 Immediate {
512 position_in_immediate: (3, 1),
513 position_in_opcode: (5, 3),
514 },
515 Immediate {
516 position_in_immediate: (5, 5),
517 position_in_opcode: (2, 2),
518 },
519];
520
521pub const fn encode_immediate(immediate: &[Immediate], imm: i32) -> u32 {
522 let mut res = 0;
523 let mut i = 0;
524 while i < immediate.len() {
525 res |= immediate[i].encode(imm);
526 i += 1;
527 }
528 res
529}
530
531pub const fn decode_immediate(immediate: &[Immediate], op: u32) -> i32 {
532 let mut res = 0i32;
533 let mut i = 0;
534 while i < immediate.len() {
535 res |= immediate[i].decode(op);
536 i += 1;
537 }
538 res as _
539}
540
541pub fn is_immediate_valid(immediate: &[Immediate], imm: i32) -> bool {
542 immediate.iter().all(|i| i.is_valid(imm))
543}
544
545impl Immediate {
546 pub const fn encode(&self, imm: i32) -> u32 {
547 let imm = imm as u32;
548 let bit_count = self.position_in_immediate.0 - self.position_in_immediate.1 + 1;
549 let mask = (1u32 << bit_count) - 1;
550
551 ((imm >> self.position_in_immediate.1) & mask) << self.position_in_opcode.1
552 }
553
554 pub const fn decode(&self, op: u32) -> i32 {
555 let bit_count = self.position_in_opcode.0 - self.position_in_opcode.1 + 1;
556 let mask = (1u32 << bit_count) - 1;
557 (((op >> self.position_in_opcode.1) & mask) << self.position_in_immediate.1) as _
558 }
559
560 pub const fn is_valid(&self, imm: i32) -> bool {
561 self.decode(self.encode(imm)) == imm
562 }
563}
564
565/* Automatically generated by parse_opcodes */
566/* Automatically generated by parse_opcodes (meta/riscv.py). Do not edit by hand.
567 * Derived from riscv-opcodes (BSD-3-Clause) and riscv-unified-db
568 * (BSD-3-Clause-Clear); see meta/README.md for the input pins. */
569
570pub const MATCH_ADD: u32 = 0x33;
571pub const MASK_ADD: u32 = 0xfe00707f;
572pub const MATCH_ADD_UW: u32 = 0x800003b;
573pub const MASK_ADD_UW: u32 = 0xfe00707f;
574pub const MATCH_ADDI: u32 = 0x13;
575pub const MASK_ADDI: u32 = 0x707f;
576pub const MATCH_ADDIW: u32 = 0x1b;
577pub const MASK_ADDIW: u32 = 0x707f;
578pub const MATCH_ADDW: u32 = 0x3b;
579pub const MASK_ADDW: u32 = 0xfe00707f;
580pub const MATCH_AES32DSI: u32 = 0x2a000033;
581pub const MASK_AES32DSI: u32 = 0x3e00707f;
582pub const MATCH_AES32DSMI: u32 = 0x2e000033;
583pub const MASK_AES32DSMI: u32 = 0x3e00707f;
584pub const MATCH_AES32ESI: u32 = 0x22000033;
585pub const MASK_AES32ESI: u32 = 0x3e00707f;
586pub const MATCH_AES32ESMI: u32 = 0x26000033;
587pub const MASK_AES32ESMI: u32 = 0x3e00707f;
588pub const MATCH_AES64DS: u32 = 0x3a000033;
589pub const MASK_AES64DS: u32 = 0xfe00707f;
590pub const MATCH_AES64DSM: u32 = 0x3e000033;
591pub const MASK_AES64DSM: u32 = 0xfe00707f;
592pub const MATCH_AES64ES: u32 = 0x32000033;
593pub const MASK_AES64ES: u32 = 0xfe00707f;
594pub const MATCH_AES64ESM: u32 = 0x36000033;
595pub const MASK_AES64ESM: u32 = 0xfe00707f;
596pub const MATCH_AES64IM: u32 = 0x30001013;
597pub const MASK_AES64IM: u32 = 0xfff0707f;
598pub const MATCH_AES64KS1I: u32 = 0x31001013;
599pub const MASK_AES64KS1I: u32 = 0xff00707f;
600pub const MATCH_AES64KS2: u32 = 0x7e000033;
601pub const MASK_AES64KS2: u32 = 0xfe00707f;
602pub const MATCH_AMOADD_B: u32 = 0x2f;
603pub const MASK_AMOADD_B: u32 = 0xf800707f;
604pub const MATCH_AMOADD_D: u32 = 0x302f;
605pub const MASK_AMOADD_D: u32 = 0xf800707f;
606pub const MATCH_AMOADD_H: u32 = 0x102f;
607pub const MASK_AMOADD_H: u32 = 0xf800707f;
608pub const MATCH_AMOADD_W: u32 = 0x202f;
609pub const MASK_AMOADD_W: u32 = 0xf800707f;
610pub const MATCH_AMOAND_B: u32 = 0x6000002f;
611pub const MASK_AMOAND_B: u32 = 0xf800707f;
612pub const MATCH_AMOAND_D: u32 = 0x6000302f;
613pub const MASK_AMOAND_D: u32 = 0xf800707f;
614pub const MATCH_AMOAND_H: u32 = 0x6000102f;
615pub const MASK_AMOAND_H: u32 = 0xf800707f;
616pub const MATCH_AMOAND_W: u32 = 0x6000202f;
617pub const MASK_AMOAND_W: u32 = 0xf800707f;
618pub const MATCH_AMOCAS_B: u32 = 0x2800002f;
619pub const MASK_AMOCAS_B: u32 = 0xf800707f;
620pub const MATCH_AMOCAS_D: u32 = 0x2800302f;
621pub const MASK_AMOCAS_D: u32 = 0xf800707f;
622pub const MATCH_AMOCAS_H: u32 = 0x2800102f;
623pub const MASK_AMOCAS_H: u32 = 0xf800707f;
624pub const MATCH_AMOCAS_Q: u32 = 0x2800402f;
625pub const MASK_AMOCAS_Q: u32 = 0xf800707f;
626pub const MATCH_AMOCAS_W: u32 = 0x2800202f;
627pub const MASK_AMOCAS_W: u32 = 0xf800707f;
628pub const MATCH_AMOMAX_B: u32 = 0xa000002f;
629pub const MASK_AMOMAX_B: u32 = 0xf800707f;
630pub const MATCH_AMOMAX_D: u32 = 0xa000302f;
631pub const MASK_AMOMAX_D: u32 = 0xf800707f;
632pub const MATCH_AMOMAX_H: u32 = 0xa000102f;
633pub const MASK_AMOMAX_H: u32 = 0xf800707f;
634pub const MATCH_AMOMAX_W: u32 = 0xa000202f;
635pub const MASK_AMOMAX_W: u32 = 0xf800707f;
636pub const MATCH_AMOMAXU_B: u32 = 0xe000002f;
637pub const MASK_AMOMAXU_B: u32 = 0xf800707f;
638pub const MATCH_AMOMAXU_D: u32 = 0xe000302f;
639pub const MASK_AMOMAXU_D: u32 = 0xf800707f;
640pub const MATCH_AMOMAXU_H: u32 = 0xe000102f;
641pub const MASK_AMOMAXU_H: u32 = 0xf800707f;
642pub const MATCH_AMOMAXU_W: u32 = 0xe000202f;
643pub const MASK_AMOMAXU_W: u32 = 0xf800707f;
644pub const MATCH_AMOMIN_B: u32 = 0x8000002f;
645pub const MASK_AMOMIN_B: u32 = 0xf800707f;
646pub const MATCH_AMOMIN_D: u32 = 0x8000302f;
647pub const MASK_AMOMIN_D: u32 = 0xf800707f;
648pub const MATCH_AMOMIN_H: u32 = 0x8000102f;
649pub const MASK_AMOMIN_H: u32 = 0xf800707f;
650pub const MATCH_AMOMIN_W: u32 = 0x8000202f;
651pub const MASK_AMOMIN_W: u32 = 0xf800707f;
652pub const MATCH_AMOMINU_B: u32 = 0xc000002f;
653pub const MASK_AMOMINU_B: u32 = 0xf800707f;
654pub const MATCH_AMOMINU_D: u32 = 0xc000302f;
655pub const MASK_AMOMINU_D: u32 = 0xf800707f;
656pub const MATCH_AMOMINU_H: u32 = 0xc000102f;
657pub const MASK_AMOMINU_H: u32 = 0xf800707f;
658pub const MATCH_AMOMINU_W: u32 = 0xc000202f;
659pub const MASK_AMOMINU_W: u32 = 0xf800707f;
660pub const MATCH_AMOOR_B: u32 = 0x4000002f;
661pub const MASK_AMOOR_B: u32 = 0xf800707f;
662pub const MATCH_AMOOR_D: u32 = 0x4000302f;
663pub const MASK_AMOOR_D: u32 = 0xf800707f;
664pub const MATCH_AMOOR_H: u32 = 0x4000102f;
665pub const MASK_AMOOR_H: u32 = 0xf800707f;
666pub const MATCH_AMOOR_W: u32 = 0x4000202f;
667pub const MASK_AMOOR_W: u32 = 0xf800707f;
668pub const MATCH_AMOSWAP_B: u32 = 0x800002f;
669pub const MASK_AMOSWAP_B: u32 = 0xf800707f;
670pub const MATCH_AMOSWAP_D: u32 = 0x800302f;
671pub const MASK_AMOSWAP_D: u32 = 0xf800707f;
672pub const MATCH_AMOSWAP_H: u32 = 0x800102f;
673pub const MASK_AMOSWAP_H: u32 = 0xf800707f;
674pub const MATCH_AMOSWAP_W: u32 = 0x800202f;
675pub const MASK_AMOSWAP_W: u32 = 0xf800707f;
676pub const MATCH_AMOXOR_B: u32 = 0x2000002f;
677pub const MASK_AMOXOR_B: u32 = 0xf800707f;
678pub const MATCH_AMOXOR_D: u32 = 0x2000302f;
679pub const MASK_AMOXOR_D: u32 = 0xf800707f;
680pub const MATCH_AMOXOR_H: u32 = 0x2000102f;
681pub const MASK_AMOXOR_H: u32 = 0xf800707f;
682pub const MATCH_AMOXOR_W: u32 = 0x2000202f;
683pub const MASK_AMOXOR_W: u32 = 0xf800707f;
684pub const MATCH_AND: u32 = 0x7033;
685pub const MASK_AND: u32 = 0xfe00707f;
686pub const MATCH_ANDI: u32 = 0x7013;
687pub const MASK_ANDI: u32 = 0x707f;
688pub const MATCH_ANDN: u32 = 0x40007033;
689pub const MASK_ANDN: u32 = 0xfe00707f;
690pub const MATCH_AUIPC: u32 = 0x17;
691pub const MASK_AUIPC: u32 = 0x7f;
692pub const MATCH_BCLR: u32 = 0x48001033;
693pub const MASK_BCLR: u32 = 0xfe00707f;
694pub const MATCH_BCLRI: u32 = 0x48001013;
695pub const MASK_BCLRI: u32 = 0xfc00707f;
696pub const MATCH_BCLRI_RV32: u32 = 0x48001013;
697pub const MASK_BCLRI_RV32: u32 = 0xfe00707f;
698pub const MATCH_BEQ: u32 = 0x63;
699pub const MASK_BEQ: u32 = 0x707f;
700pub const MATCH_BEQZ: u32 = 0x63;
701pub const MASK_BEQZ: u32 = 0x1f0707f;
702pub const MATCH_BEXT: u32 = 0x48005033;
703pub const MASK_BEXT: u32 = 0xfe00707f;
704pub const MATCH_BEXTI: u32 = 0x48005013;
705pub const MASK_BEXTI: u32 = 0xfc00707f;
706pub const MATCH_BEXTI_RV32: u32 = 0x48005013;
707pub const MASK_BEXTI_RV32: u32 = 0xfe00707f;
708pub const MATCH_BGE: u32 = 0x5063;
709pub const MASK_BGE: u32 = 0x707f;
710pub const MATCH_BGEU: u32 = 0x7063;
711pub const MASK_BGEU: u32 = 0x707f;
712pub const MATCH_BGEZ: u32 = 0x5063;
713pub const MASK_BGEZ: u32 = 0x1f0707f;
714pub const MATCH_BGT: u32 = 0x4063;
715pub const MASK_BGT: u32 = 0x707f;
716pub const MATCH_BGTU: u32 = 0x6063;
717pub const MASK_BGTU: u32 = 0x707f;
718pub const MATCH_BGTZ: u32 = 0x4063;
719pub const MASK_BGTZ: u32 = 0xff07f;
720pub const MATCH_BINV: u32 = 0x68001033;
721pub const MASK_BINV: u32 = 0xfe00707f;
722pub const MATCH_BINVI: u32 = 0x68001013;
723pub const MASK_BINVI: u32 = 0xfc00707f;
724pub const MATCH_BINVI_RV32: u32 = 0x68001013;
725pub const MASK_BINVI_RV32: u32 = 0xfe00707f;
726pub const MATCH_BLE: u32 = 0x5063;
727pub const MASK_BLE: u32 = 0x707f;
728pub const MATCH_BLEU: u32 = 0x7063;
729pub const MASK_BLEU: u32 = 0x707f;
730pub const MATCH_BLEZ: u32 = 0x5063;
731pub const MASK_BLEZ: u32 = 0xff07f;
732pub const MATCH_BLT: u32 = 0x4063;
733pub const MASK_BLT: u32 = 0x707f;
734pub const MATCH_BLTU: u32 = 0x6063;
735pub const MASK_BLTU: u32 = 0x707f;
736pub const MATCH_BLTZ: u32 = 0x4063;
737pub const MASK_BLTZ: u32 = 0x1f0707f;
738pub const MATCH_BNE: u32 = 0x1063;
739pub const MASK_BNE: u32 = 0x707f;
740pub const MATCH_BNEZ: u32 = 0x1063;
741pub const MASK_BNEZ: u32 = 0x1f0707f;
742pub const MATCH_BREV8: u32 = 0x68705013;
743pub const MASK_BREV8: u32 = 0xfff0707f;
744pub const MATCH_BSET: u32 = 0x28001033;
745pub const MASK_BSET: u32 = 0xfe00707f;
746pub const MATCH_BSETI: u32 = 0x28001013;
747pub const MASK_BSETI: u32 = 0xfc00707f;
748pub const MATCH_BSETI_RV32: u32 = 0x28001013;
749pub const MASK_BSETI_RV32: u32 = 0xfe00707f;
750pub const MATCH_C_ADD: u32 = 0x9002;
751pub const MASK_C_ADD: u32 = 0xf003;
752pub const MATCH_C_ADDI: u32 = 0x1;
753pub const MASK_C_ADDI: u32 = 0xe003;
754pub const MATCH_C_ADDI16SP: u32 = 0x6101;
755pub const MASK_C_ADDI16SP: u32 = 0xef83;
756pub const MATCH_C_ADDI4SPN: u32 = 0x0;
757pub const MASK_C_ADDI4SPN: u32 = 0xe003;
758pub const MATCH_C_ADDIW: u32 = 0x2001;
759pub const MASK_C_ADDIW: u32 = 0xe003;
760pub const MATCH_C_ADDW: u32 = 0x9c21;
761pub const MASK_C_ADDW: u32 = 0xfc63;
762pub const MATCH_C_AND: u32 = 0x8c61;
763pub const MASK_C_AND: u32 = 0xfc63;
764pub const MATCH_C_ANDI: u32 = 0x8801;
765pub const MASK_C_ANDI: u32 = 0xec03;
766pub const MATCH_C_BEQZ: u32 = 0xc001;
767pub const MASK_C_BEQZ: u32 = 0xe003;
768pub const MATCH_C_BNEZ: u32 = 0xe001;
769pub const MASK_C_BNEZ: u32 = 0xe003;
770pub const MATCH_C_EBREAK: u32 = 0x9002;
771pub const MASK_C_EBREAK: u32 = 0xffff;
772pub const MATCH_C_FLD: u32 = 0x2000;
773pub const MASK_C_FLD: u32 = 0xe003;
774pub const MATCH_C_FLDSP: u32 = 0x2002;
775pub const MASK_C_FLDSP: u32 = 0xe003;
776pub const MATCH_C_FLW: u32 = 0x6000;
777pub const MASK_C_FLW: u32 = 0xe003;
778pub const MATCH_C_FLWSP: u32 = 0x6002;
779pub const MASK_C_FLWSP: u32 = 0xe003;
780pub const MATCH_C_FSD: u32 = 0xa000;
781pub const MASK_C_FSD: u32 = 0xe003;
782pub const MATCH_C_FSDSP: u32 = 0xa002;
783pub const MASK_C_FSDSP: u32 = 0xe003;
784pub const MATCH_C_FSW: u32 = 0xe000;
785pub const MASK_C_FSW: u32 = 0xe003;
786pub const MATCH_C_FSWSP: u32 = 0xe002;
787pub const MASK_C_FSWSP: u32 = 0xe003;
788pub const MATCH_C_J: u32 = 0xa001;
789pub const MASK_C_J: u32 = 0xe003;
790pub const MATCH_C_JAL: u32 = 0x2001;
791pub const MASK_C_JAL: u32 = 0xe003;
792pub const MATCH_C_JALR: u32 = 0x9002;
793pub const MASK_C_JALR: u32 = 0xf07f;
794pub const MATCH_C_JR: u32 = 0x8002;
795pub const MASK_C_JR: u32 = 0xf07f;
796pub const MATCH_C_LBU: u32 = 0x8000;
797pub const MASK_C_LBU: u32 = 0xfc03;
798pub const MATCH_C_LD: u32 = 0x6000;
799pub const MASK_C_LD: u32 = 0xe003;
800pub const MATCH_C_LDSP: u32 = 0x6002;
801pub const MASK_C_LDSP: u32 = 0xe003;
802pub const MATCH_C_LH: u32 = 0x8440;
803pub const MASK_C_LH: u32 = 0xfc43;
804pub const MATCH_C_LHU: u32 = 0x8400;
805pub const MASK_C_LHU: u32 = 0xfc43;
806pub const MATCH_C_LI: u32 = 0x4001;
807pub const MASK_C_LI: u32 = 0xe003;
808pub const MATCH_C_LUI: u32 = 0x6001;
809pub const MASK_C_LUI: u32 = 0xe003;
810pub const MATCH_C_LW: u32 = 0x4000;
811pub const MASK_C_LW: u32 = 0xe003;
812pub const MATCH_C_LWSP: u32 = 0x4002;
813pub const MASK_C_LWSP: u32 = 0xe003;
814pub const MATCH_C_MOP_1: u32 = 0x6081;
815pub const MASK_C_MOP_1: u32 = 0xffff;
816pub const MATCH_C_MOP_11: u32 = 0x6581;
817pub const MASK_C_MOP_11: u32 = 0xffff;
818pub const MATCH_C_MOP_13: u32 = 0x6681;
819pub const MASK_C_MOP_13: u32 = 0xffff;
820pub const MATCH_C_MOP_15: u32 = 0x6781;
821pub const MASK_C_MOP_15: u32 = 0xffff;
822pub const MATCH_C_MOP_3: u32 = 0x6181;
823pub const MASK_C_MOP_3: u32 = 0xffff;
824pub const MATCH_C_MOP_5: u32 = 0x6281;
825pub const MASK_C_MOP_5: u32 = 0xffff;
826pub const MATCH_C_MOP_7: u32 = 0x6381;
827pub const MASK_C_MOP_7: u32 = 0xffff;
828pub const MATCH_C_MOP_9: u32 = 0x6481;
829pub const MASK_C_MOP_9: u32 = 0xffff;
830pub const MATCH_C_MOP_N: u32 = 0x6081;
831pub const MASK_C_MOP_N: u32 = 0xf8ff;
832pub const MATCH_C_MUL: u32 = 0x9c41;
833pub const MASK_C_MUL: u32 = 0xfc63;
834pub const MATCH_C_MV: u32 = 0x8002;
835pub const MASK_C_MV: u32 = 0xf003;
836pub const MATCH_C_NOP: u32 = 0x1;
837pub const MASK_C_NOP: u32 = 0xef83;
838pub const MATCH_C_NOT: u32 = 0x9c75;
839pub const MASK_C_NOT: u32 = 0xfc7f;
840pub const MATCH_C_NTL_ALL: u32 = 0x9016;
841pub const MASK_C_NTL_ALL: u32 = 0xffff;
842pub const MATCH_C_NTL_P1: u32 = 0x900a;
843pub const MASK_C_NTL_P1: u32 = 0xffff;
844pub const MATCH_C_NTL_PALL: u32 = 0x900e;
845pub const MASK_C_NTL_PALL: u32 = 0xffff;
846pub const MATCH_C_NTL_S1: u32 = 0x9012;
847pub const MASK_C_NTL_S1: u32 = 0xffff;
848pub const MATCH_C_OR: u32 = 0x8c41;
849pub const MASK_C_OR: u32 = 0xfc63;
850pub const MATCH_C_SB: u32 = 0x8800;
851pub const MASK_C_SB: u32 = 0xfc03;
852pub const MATCH_C_SD: u32 = 0xe000;
853pub const MASK_C_SD: u32 = 0xe003;
854pub const MATCH_C_SDSP: u32 = 0xe002;
855pub const MASK_C_SDSP: u32 = 0xe003;
856pub const MATCH_C_SEXT_B: u32 = 0x9c65;
857pub const MASK_C_SEXT_B: u32 = 0xfc7f;
858pub const MATCH_C_SEXT_H: u32 = 0x9c6d;
859pub const MASK_C_SEXT_H: u32 = 0xfc7f;
860pub const MATCH_C_SEXT_W: u32 = 0x2001;
861pub const MASK_C_SEXT_W: u32 = 0xf07f;
862pub const MATCH_C_SH: u32 = 0x8c00;
863pub const MASK_C_SH: u32 = 0xfc43;
864pub const MATCH_C_SLLI: u32 = 0x2;
865pub const MASK_C_SLLI: u32 = 0xe003;
866pub const MATCH_C_SLLI_RV32: u32 = 0x2;
867pub const MASK_C_SLLI_RV32: u32 = 0xf003;
868pub const MATCH_C_SRAI: u32 = 0x8401;
869pub const MASK_C_SRAI: u32 = 0xec03;
870pub const MATCH_C_SRAI_RV32: u32 = 0x8401;
871pub const MASK_C_SRAI_RV32: u32 = 0xfc03;
872pub const MATCH_C_SRLI: u32 = 0x8001;
873pub const MASK_C_SRLI: u32 = 0xec03;
874pub const MATCH_C_SRLI_RV32: u32 = 0x8001;
875pub const MASK_C_SRLI_RV32: u32 = 0xfc03;
876pub const MATCH_C_SSPOPCHK_X5: u32 = 0x6281;
877pub const MASK_C_SSPOPCHK_X5: u32 = 0xffff;
878pub const MATCH_C_SSPUSH_X1: u32 = 0x6081;
879pub const MASK_C_SSPUSH_X1: u32 = 0xffff;
880pub const MATCH_C_SUB: u32 = 0x8c01;
881pub const MASK_C_SUB: u32 = 0xfc63;
882pub const MATCH_C_SUBW: u32 = 0x9c01;
883pub const MASK_C_SUBW: u32 = 0xfc63;
884pub const MATCH_C_SW: u32 = 0xc000;
885pub const MASK_C_SW: u32 = 0xe003;
886pub const MATCH_C_SWSP: u32 = 0xc002;
887pub const MASK_C_SWSP: u32 = 0xe003;
888pub const MATCH_C_XOR: u32 = 0x8c21;
889pub const MASK_C_XOR: u32 = 0xfc63;
890pub const MATCH_C_ZEXT_B: u32 = 0x9c61;
891pub const MASK_C_ZEXT_B: u32 = 0xfc7f;
892pub const MATCH_C_ZEXT_H: u32 = 0x9c69;
893pub const MASK_C_ZEXT_H: u32 = 0xfc7f;
894pub const MATCH_C_ZEXT_W: u32 = 0x9c71;
895pub const MASK_C_ZEXT_W: u32 = 0xfc7f;
896pub const MATCH_CBO_CLEAN: u32 = 0x10200f;
897pub const MASK_CBO_CLEAN: u32 = 0xfff07fff;
898pub const MATCH_CBO_FLUSH: u32 = 0x20200f;
899pub const MASK_CBO_FLUSH: u32 = 0xfff07fff;
900pub const MATCH_CBO_INVAL: u32 = 0x200f;
901pub const MASK_CBO_INVAL: u32 = 0xfff07fff;
902pub const MATCH_CBO_ZERO: u32 = 0x40200f;
903pub const MASK_CBO_ZERO: u32 = 0xfff07fff;
904pub const MATCH_CLMUL: u32 = 0xa001033;
905pub const MASK_CLMUL: u32 = 0xfe00707f;
906pub const MATCH_CLMULH: u32 = 0xa003033;
907pub const MASK_CLMULH: u32 = 0xfe00707f;
908pub const MATCH_CLMULR: u32 = 0xa002033;
909pub const MASK_CLMULR: u32 = 0xfe00707f;
910pub const MATCH_CLZ: u32 = 0x60001013;
911pub const MASK_CLZ: u32 = 0xfff0707f;
912pub const MATCH_CLZW: u32 = 0x6000101b;
913pub const MASK_CLZW: u32 = 0xfff0707f;
914pub const MATCH_CM_JALT: u32 = 0xa002;
915pub const MASK_CM_JALT: u32 = 0xfc03;
916pub const MATCH_CM_MVA01S: u32 = 0xac62;
917pub const MASK_CM_MVA01S: u32 = 0xfc63;
918pub const MATCH_CM_MVSA01: u32 = 0xac22;
919pub const MASK_CM_MVSA01: u32 = 0xfc63;
920pub const MATCH_CM_POP: u32 = 0xba02;
921pub const MASK_CM_POP: u32 = 0xff03;
922pub const MATCH_CM_POPRET: u32 = 0xbe02;
923pub const MASK_CM_POPRET: u32 = 0xff03;
924pub const MATCH_CM_POPRETZ: u32 = 0xbc02;
925pub const MASK_CM_POPRETZ: u32 = 0xff03;
926pub const MATCH_CM_PUSH: u32 = 0xb802;
927pub const MASK_CM_PUSH: u32 = 0xff03;
928pub const MATCH_CPOP: u32 = 0x60201013;
929pub const MASK_CPOP: u32 = 0xfff0707f;
930pub const MATCH_CPOPW: u32 = 0x6020101b;
931pub const MASK_CPOPW: u32 = 0xfff0707f;
932pub const MATCH_CSRC: u32 = 0x3073;
933pub const MASK_CSRC: u32 = 0x7fff;
934pub const MATCH_CSRCI: u32 = 0x7073;
935pub const MASK_CSRCI: u32 = 0x7fff;
936pub const MATCH_CSRR: u32 = 0x2073;
937pub const MASK_CSRR: u32 = 0xff07f;
938pub const MATCH_CSRRC: u32 = 0x3073;
939pub const MASK_CSRRC: u32 = 0x707f;
940pub const MATCH_CSRRCI: u32 = 0x7073;
941pub const MASK_CSRRCI: u32 = 0x707f;
942pub const MATCH_CSRRS: u32 = 0x2073;
943pub const MASK_CSRRS: u32 = 0x707f;
944pub const MATCH_CSRRSI: u32 = 0x6073;
945pub const MASK_CSRRSI: u32 = 0x707f;
946pub const MATCH_CSRRW: u32 = 0x1073;
947pub const MASK_CSRRW: u32 = 0x707f;
948pub const MATCH_CSRRWI: u32 = 0x5073;
949pub const MASK_CSRRWI: u32 = 0x707f;
950pub const MATCH_CSRS: u32 = 0x2073;
951pub const MASK_CSRS: u32 = 0x7fff;
952pub const MATCH_CSRSI: u32 = 0x6073;
953pub const MASK_CSRSI: u32 = 0x7fff;
954pub const MATCH_CSRW: u32 = 0x1073;
955pub const MASK_CSRW: u32 = 0x7fff;
956pub const MATCH_CSRWI: u32 = 0x5073;
957pub const MASK_CSRWI: u32 = 0x7fff;
958pub const MATCH_CTZ: u32 = 0x60101013;
959pub const MASK_CTZ: u32 = 0xfff0707f;
960pub const MATCH_CTZW: u32 = 0x6010101b;
961pub const MASK_CTZW: u32 = 0xfff0707f;
962pub const MATCH_CZERO_EQZ: u32 = 0xe005033;
963pub const MASK_CZERO_EQZ: u32 = 0xfe00707f;
964pub const MATCH_CZERO_NEZ: u32 = 0xe007033;
965pub const MASK_CZERO_NEZ: u32 = 0xfe00707f;
966pub const MATCH_DIV: u32 = 0x2004033;
967pub const MASK_DIV: u32 = 0xfe00707f;
968pub const MATCH_DIVU: u32 = 0x2005033;
969pub const MASK_DIVU: u32 = 0xfe00707f;
970pub const MATCH_DIVUW: u32 = 0x200503b;
971pub const MASK_DIVUW: u32 = 0xfe00707f;
972pub const MATCH_DIVW: u32 = 0x200403b;
973pub const MASK_DIVW: u32 = 0xfe00707f;
974pub const MATCH_DRET: u32 = 0x7b200073;
975pub const MASK_DRET: u32 = 0xffffffff;
976pub const MATCH_EBREAK: u32 = 0x100073;
977pub const MASK_EBREAK: u32 = 0xffffffff;
978pub const MATCH_ECALL: u32 = 0x73;
979pub const MASK_ECALL: u32 = 0xffffffff;
980pub const MATCH_FABS_D: u32 = 0x22002053;
981pub const MASK_FABS_D: u32 = 0xfe00707f;
982pub const MATCH_FABS_H: u32 = 0x24002053;
983pub const MASK_FABS_H: u32 = 0xfe00707f;
984pub const MATCH_FABS_Q: u32 = 0x26002053;
985pub const MASK_FABS_Q: u32 = 0xfe00707f;
986pub const MATCH_FABS_S: u32 = 0x20002053;
987pub const MASK_FABS_S: u32 = 0xfe00707f;
988pub const MATCH_FADD_D: u32 = 0x2000053;
989pub const MASK_FADD_D: u32 = 0xfe00007f;
990pub const MATCH_FADD_H: u32 = 0x4000053;
991pub const MASK_FADD_H: u32 = 0xfe00007f;
992pub const MATCH_FADD_Q: u32 = 0x6000053;
993pub const MASK_FADD_Q: u32 = 0xfe00007f;
994pub const MATCH_FADD_S: u32 = 0x53;
995pub const MASK_FADD_S: u32 = 0xfe00007f;
996pub const MATCH_FCLASS_D: u32 = 0xe2001053;
997pub const MASK_FCLASS_D: u32 = 0xfff0707f;
998pub const MATCH_FCLASS_H: u32 = 0xe4001053;
999pub const MASK_FCLASS_H: u32 = 0xfff0707f;
1000pub const MATCH_FCLASS_Q: u32 = 0xe6001053;
1001pub const MASK_FCLASS_Q: u32 = 0xfff0707f;
1002pub const MATCH_FCLASS_S: u32 = 0xe0001053;
1003pub const MASK_FCLASS_S: u32 = 0xfff0707f;
1004pub const MATCH_FCVT_BF16_S: u32 = 0x44800053;
1005pub const MASK_FCVT_BF16_S: u32 = 0xfff0007f;
1006pub const MATCH_FCVT_D_H: u32 = 0x42200053;
1007pub const MASK_FCVT_D_H: u32 = 0xfff0007f;
1008pub const MATCH_FCVT_D_L: u32 = 0xd2200053;
1009pub const MASK_FCVT_D_L: u32 = 0xfff0007f;
1010pub const MATCH_FCVT_D_LU: u32 = 0xd2300053;
1011pub const MASK_FCVT_D_LU: u32 = 0xfff0007f;
1012pub const MATCH_FCVT_D_Q: u32 = 0x42300053;
1013pub const MASK_FCVT_D_Q: u32 = 0xfff0007f;
1014pub const MATCH_FCVT_D_S: u32 = 0x42000053;
1015pub const MASK_FCVT_D_S: u32 = 0xfff0007f;
1016pub const MATCH_FCVT_D_W: u32 = 0xd2000053;
1017pub const MASK_FCVT_D_W: u32 = 0xfff0007f;
1018pub const MATCH_FCVT_D_WU: u32 = 0xd2100053;
1019pub const MASK_FCVT_D_WU: u32 = 0xfff0007f;
1020pub const MATCH_FCVT_H_D: u32 = 0x44100053;
1021pub const MASK_FCVT_H_D: u32 = 0xfff0007f;
1022pub const MATCH_FCVT_H_L: u32 = 0xd4200053;
1023pub const MASK_FCVT_H_L: u32 = 0xfff0007f;
1024pub const MATCH_FCVT_H_LU: u32 = 0xd4300053;
1025pub const MASK_FCVT_H_LU: u32 = 0xfff0007f;
1026pub const MATCH_FCVT_H_Q: u32 = 0x44300053;
1027pub const MASK_FCVT_H_Q: u32 = 0xfff0007f;
1028pub const MATCH_FCVT_H_S: u32 = 0x44000053;
1029pub const MASK_FCVT_H_S: u32 = 0xfff0007f;
1030pub const MATCH_FCVT_H_W: u32 = 0xd4000053;
1031pub const MASK_FCVT_H_W: u32 = 0xfff0007f;
1032pub const MATCH_FCVT_H_WU: u32 = 0xd4100053;
1033pub const MASK_FCVT_H_WU: u32 = 0xfff0007f;
1034pub const MATCH_FCVT_L_D: u32 = 0xc2200053;
1035pub const MASK_FCVT_L_D: u32 = 0xfff0007f;
1036pub const MATCH_FCVT_L_H: u32 = 0xc4200053;
1037pub const MASK_FCVT_L_H: u32 = 0xfff0007f;
1038pub const MATCH_FCVT_L_Q: u32 = 0xc6200053;
1039pub const MASK_FCVT_L_Q: u32 = 0xfff0007f;
1040pub const MATCH_FCVT_L_S: u32 = 0xc0200053;
1041pub const MASK_FCVT_L_S: u32 = 0xfff0007f;
1042pub const MATCH_FCVT_LU_D: u32 = 0xc2300053;
1043pub const MASK_FCVT_LU_D: u32 = 0xfff0007f;
1044pub const MATCH_FCVT_LU_H: u32 = 0xc4300053;
1045pub const MASK_FCVT_LU_H: u32 = 0xfff0007f;
1046pub const MATCH_FCVT_LU_Q: u32 = 0xc6300053;
1047pub const MASK_FCVT_LU_Q: u32 = 0xfff0007f;
1048pub const MATCH_FCVT_LU_S: u32 = 0xc0300053;
1049pub const MASK_FCVT_LU_S: u32 = 0xfff0007f;
1050pub const MATCH_FCVT_Q_D: u32 = 0x46100053;
1051pub const MASK_FCVT_Q_D: u32 = 0xfff0007f;
1052pub const MATCH_FCVT_Q_H: u32 = 0x46200053;
1053pub const MASK_FCVT_Q_H: u32 = 0xfff0007f;
1054pub const MATCH_FCVT_Q_L: u32 = 0xd6200053;
1055pub const MASK_FCVT_Q_L: u32 = 0xfff0007f;
1056pub const MATCH_FCVT_Q_LU: u32 = 0xd6300053;
1057pub const MASK_FCVT_Q_LU: u32 = 0xfff0007f;
1058pub const MATCH_FCVT_Q_S: u32 = 0x46000053;
1059pub const MASK_FCVT_Q_S: u32 = 0xfff0007f;
1060pub const MATCH_FCVT_Q_W: u32 = 0xd6000053;
1061pub const MASK_FCVT_Q_W: u32 = 0xfff0007f;
1062pub const MATCH_FCVT_Q_WU: u32 = 0xd6100053;
1063pub const MASK_FCVT_Q_WU: u32 = 0xfff0007f;
1064pub const MATCH_FCVT_S_BF16: u32 = 0x40600053;
1065pub const MASK_FCVT_S_BF16: u32 = 0xfff0007f;
1066pub const MATCH_FCVT_S_D: u32 = 0x40100053;
1067pub const MASK_FCVT_S_D: u32 = 0xfff0007f;
1068pub const MATCH_FCVT_S_H: u32 = 0x40200053;
1069pub const MASK_FCVT_S_H: u32 = 0xfff0007f;
1070pub const MATCH_FCVT_S_L: u32 = 0xd0200053;
1071pub const MASK_FCVT_S_L: u32 = 0xfff0007f;
1072pub const MATCH_FCVT_S_LU: u32 = 0xd0300053;
1073pub const MASK_FCVT_S_LU: u32 = 0xfff0007f;
1074pub const MATCH_FCVT_S_Q: u32 = 0x40300053;
1075pub const MASK_FCVT_S_Q: u32 = 0xfff0007f;
1076pub const MATCH_FCVT_S_W: u32 = 0xd0000053;
1077pub const MASK_FCVT_S_W: u32 = 0xfff0007f;
1078pub const MATCH_FCVT_S_WU: u32 = 0xd0100053;
1079pub const MASK_FCVT_S_WU: u32 = 0xfff0007f;
1080pub const MATCH_FCVT_W_D: u32 = 0xc2000053;
1081pub const MASK_FCVT_W_D: u32 = 0xfff0007f;
1082pub const MATCH_FCVT_W_H: u32 = 0xc4000053;
1083pub const MASK_FCVT_W_H: u32 = 0xfff0007f;
1084pub const MATCH_FCVT_W_Q: u32 = 0xc6000053;
1085pub const MASK_FCVT_W_Q: u32 = 0xfff0007f;
1086pub const MATCH_FCVT_W_S: u32 = 0xc0000053;
1087pub const MASK_FCVT_W_S: u32 = 0xfff0007f;
1088pub const MATCH_FCVT_WU_D: u32 = 0xc2100053;
1089pub const MASK_FCVT_WU_D: u32 = 0xfff0007f;
1090pub const MATCH_FCVT_WU_H: u32 = 0xc4100053;
1091pub const MASK_FCVT_WU_H: u32 = 0xfff0007f;
1092pub const MATCH_FCVT_WU_Q: u32 = 0xc6100053;
1093pub const MASK_FCVT_WU_Q: u32 = 0xfff0007f;
1094pub const MATCH_FCVT_WU_S: u32 = 0xc0100053;
1095pub const MASK_FCVT_WU_S: u32 = 0xfff0007f;
1096pub const MATCH_FCVTMOD_W_D: u32 = 0xc2801053;
1097pub const MASK_FCVTMOD_W_D: u32 = 0xfff0707f;
1098pub const MATCH_FDIV_D: u32 = 0x1a000053;
1099pub const MASK_FDIV_D: u32 = 0xfe00007f;
1100pub const MATCH_FDIV_H: u32 = 0x1c000053;
1101pub const MASK_FDIV_H: u32 = 0xfe00007f;
1102pub const MATCH_FDIV_Q: u32 = 0x1e000053;
1103pub const MASK_FDIV_Q: u32 = 0xfe00007f;
1104pub const MATCH_FDIV_S: u32 = 0x18000053;
1105pub const MASK_FDIV_S: u32 = 0xfe00007f;
1106pub const MATCH_FENCE: u32 = 0xf;
1107pub const MASK_FENCE: u32 = 0x707f;
1108pub const MATCH_FENCE_I: u32 = 0x100f;
1109pub const MASK_FENCE_I: u32 = 0x707f;
1110pub const MATCH_FENCE_TSO: u32 = 0x8330000f;
1111pub const MASK_FENCE_TSO: u32 = 0xfff0707f;
1112pub const MATCH_FEQ_D: u32 = 0xa2002053;
1113pub const MASK_FEQ_D: u32 = 0xfe00707f;
1114pub const MATCH_FEQ_H: u32 = 0xa4002053;
1115pub const MASK_FEQ_H: u32 = 0xfe00707f;
1116pub const MATCH_FEQ_Q: u32 = 0xa6002053;
1117pub const MASK_FEQ_Q: u32 = 0xfe00707f;
1118pub const MATCH_FEQ_S: u32 = 0xa0002053;
1119pub const MASK_FEQ_S: u32 = 0xfe00707f;
1120pub const MATCH_FLD: u32 = 0x3007;
1121pub const MASK_FLD: u32 = 0x707f;
1122pub const MATCH_FLE_D: u32 = 0xa2000053;
1123pub const MASK_FLE_D: u32 = 0xfe00707f;
1124pub const MATCH_FLE_H: u32 = 0xa4000053;
1125pub const MASK_FLE_H: u32 = 0xfe00707f;
1126pub const MATCH_FLE_Q: u32 = 0xa6000053;
1127pub const MASK_FLE_Q: u32 = 0xfe00707f;
1128pub const MATCH_FLE_S: u32 = 0xa0000053;
1129pub const MASK_FLE_S: u32 = 0xfe00707f;
1130pub const MATCH_FLEQ_D: u32 = 0xa2004053;
1131pub const MASK_FLEQ_D: u32 = 0xfe00707f;
1132pub const MATCH_FLEQ_H: u32 = 0xa4004053;
1133pub const MASK_FLEQ_H: u32 = 0xfe00707f;
1134pub const MATCH_FLEQ_Q: u32 = 0xa6004053;
1135pub const MASK_FLEQ_Q: u32 = 0xfe00707f;
1136pub const MATCH_FLEQ_S: u32 = 0xa0004053;
1137pub const MASK_FLEQ_S: u32 = 0xfe00707f;
1138pub const MATCH_FLH: u32 = 0x1007;
1139pub const MASK_FLH: u32 = 0x707f;
1140pub const MATCH_FLI_D: u32 = 0xf2100053;
1141pub const MASK_FLI_D: u32 = 0xfff0707f;
1142pub const MATCH_FLI_H: u32 = 0xf4100053;
1143pub const MASK_FLI_H: u32 = 0xfff0707f;
1144pub const MATCH_FLI_Q: u32 = 0xf6100053;
1145pub const MASK_FLI_Q: u32 = 0xfff0707f;
1146pub const MATCH_FLI_S: u32 = 0xf0100053;
1147pub const MASK_FLI_S: u32 = 0xfff0707f;
1148pub const MATCH_FLQ: u32 = 0x4007;
1149pub const MASK_FLQ: u32 = 0x707f;
1150pub const MATCH_FLT_D: u32 = 0xa2001053;
1151pub const MASK_FLT_D: u32 = 0xfe00707f;
1152pub const MATCH_FLT_H: u32 = 0xa4001053;
1153pub const MASK_FLT_H: u32 = 0xfe00707f;
1154pub const MATCH_FLT_Q: u32 = 0xa6001053;
1155pub const MASK_FLT_Q: u32 = 0xfe00707f;
1156pub const MATCH_FLT_S: u32 = 0xa0001053;
1157pub const MASK_FLT_S: u32 = 0xfe00707f;
1158pub const MATCH_FLTQ_D: u32 = 0xa2005053;
1159pub const MASK_FLTQ_D: u32 = 0xfe00707f;
1160pub const MATCH_FLTQ_H: u32 = 0xa4005053;
1161pub const MASK_FLTQ_H: u32 = 0xfe00707f;
1162pub const MATCH_FLTQ_Q: u32 = 0xa6005053;
1163pub const MASK_FLTQ_Q: u32 = 0xfe00707f;
1164pub const MATCH_FLTQ_S: u32 = 0xa0005053;
1165pub const MASK_FLTQ_S: u32 = 0xfe00707f;
1166pub const MATCH_FLW: u32 = 0x2007;
1167pub const MASK_FLW: u32 = 0x707f;
1168pub const MATCH_FMADD_D: u32 = 0x2000043;
1169pub const MASK_FMADD_D: u32 = 0x600007f;
1170pub const MATCH_FMADD_H: u32 = 0x4000043;
1171pub const MASK_FMADD_H: u32 = 0x600007f;
1172pub const MATCH_FMADD_Q: u32 = 0x6000043;
1173pub const MASK_FMADD_Q: u32 = 0x600007f;
1174pub const MATCH_FMADD_S: u32 = 0x43;
1175pub const MASK_FMADD_S: u32 = 0x600007f;
1176pub const MATCH_FMAX_D: u32 = 0x2a001053;
1177pub const MASK_FMAX_D: u32 = 0xfe00707f;
1178pub const MATCH_FMAX_H: u32 = 0x2c001053;
1179pub const MASK_FMAX_H: u32 = 0xfe00707f;
1180pub const MATCH_FMAX_Q: u32 = 0x2e001053;
1181pub const MASK_FMAX_Q: u32 = 0xfe00707f;
1182pub const MATCH_FMAX_S: u32 = 0x28001053;
1183pub const MASK_FMAX_S: u32 = 0xfe00707f;
1184pub const MATCH_FMAXM_D: u32 = 0x2a003053;
1185pub const MASK_FMAXM_D: u32 = 0xfe00707f;
1186pub const MATCH_FMAXM_H: u32 = 0x2c003053;
1187pub const MASK_FMAXM_H: u32 = 0xfe00707f;
1188pub const MATCH_FMAXM_Q: u32 = 0x2e003053;
1189pub const MASK_FMAXM_Q: u32 = 0xfe00707f;
1190pub const MATCH_FMAXM_S: u32 = 0x28003053;
1191pub const MASK_FMAXM_S: u32 = 0xfe00707f;
1192pub const MATCH_FMIN_D: u32 = 0x2a000053;
1193pub const MASK_FMIN_D: u32 = 0xfe00707f;
1194pub const MATCH_FMIN_H: u32 = 0x2c000053;
1195pub const MASK_FMIN_H: u32 = 0xfe00707f;
1196pub const MATCH_FMIN_Q: u32 = 0x2e000053;
1197pub const MASK_FMIN_Q: u32 = 0xfe00707f;
1198pub const MATCH_FMIN_S: u32 = 0x28000053;
1199pub const MASK_FMIN_S: u32 = 0xfe00707f;
1200pub const MATCH_FMINM_D: u32 = 0x2a002053;
1201pub const MASK_FMINM_D: u32 = 0xfe00707f;
1202pub const MATCH_FMINM_H: u32 = 0x2c002053;
1203pub const MASK_FMINM_H: u32 = 0xfe00707f;
1204pub const MATCH_FMINM_Q: u32 = 0x2e002053;
1205pub const MASK_FMINM_Q: u32 = 0xfe00707f;
1206pub const MATCH_FMINM_S: u32 = 0x28002053;
1207pub const MASK_FMINM_S: u32 = 0xfe00707f;
1208pub const MATCH_FMSUB_D: u32 = 0x2000047;
1209pub const MASK_FMSUB_D: u32 = 0x600007f;
1210pub const MATCH_FMSUB_H: u32 = 0x4000047;
1211pub const MASK_FMSUB_H: u32 = 0x600007f;
1212pub const MATCH_FMSUB_Q: u32 = 0x6000047;
1213pub const MASK_FMSUB_Q: u32 = 0x600007f;
1214pub const MATCH_FMSUB_S: u32 = 0x47;
1215pub const MASK_FMSUB_S: u32 = 0x600007f;
1216pub const MATCH_FMUL_D: u32 = 0x12000053;
1217pub const MASK_FMUL_D: u32 = 0xfe00007f;
1218pub const MATCH_FMUL_H: u32 = 0x14000053;
1219pub const MASK_FMUL_H: u32 = 0xfe00007f;
1220pub const MATCH_FMUL_Q: u32 = 0x16000053;
1221pub const MASK_FMUL_Q: u32 = 0xfe00007f;
1222pub const MATCH_FMUL_S: u32 = 0x10000053;
1223pub const MASK_FMUL_S: u32 = 0xfe00007f;
1224pub const MATCH_FMV_D: u32 = 0x22000053;
1225pub const MASK_FMV_D: u32 = 0xfe00707f;
1226pub const MATCH_FMV_D_X: u32 = 0xf2000053;
1227pub const MASK_FMV_D_X: u32 = 0xfff0707f;
1228pub const MATCH_FMV_H: u32 = 0x24000053;
1229pub const MASK_FMV_H: u32 = 0xfe00707f;
1230pub const MATCH_FMV_H_X: u32 = 0xf4000053;
1231pub const MASK_FMV_H_X: u32 = 0xfff0707f;
1232pub const MATCH_FMV_Q: u32 = 0x26000053;
1233pub const MASK_FMV_Q: u32 = 0xfe00707f;
1234pub const MATCH_FMV_S: u32 = 0x20000053;
1235pub const MASK_FMV_S: u32 = 0xfe00707f;
1236pub const MATCH_FMV_S_X: u32 = 0xf0000053;
1237pub const MASK_FMV_S_X: u32 = 0xfff0707f;
1238pub const MATCH_FMV_W_X: u32 = 0xf0000053;
1239pub const MASK_FMV_W_X: u32 = 0xfff0707f;
1240pub const MATCH_FMV_X_D: u32 = 0xe2000053;
1241pub const MASK_FMV_X_D: u32 = 0xfff0707f;
1242pub const MATCH_FMV_X_H: u32 = 0xe4000053;
1243pub const MASK_FMV_X_H: u32 = 0xfff0707f;
1244pub const MATCH_FMV_X_S: u32 = 0xe0000053;
1245pub const MASK_FMV_X_S: u32 = 0xfff0707f;
1246pub const MATCH_FMV_X_W: u32 = 0xe0000053;
1247pub const MASK_FMV_X_W: u32 = 0xfff0707f;
1248pub const MATCH_FMVH_X_D: u32 = 0xe2100053;
1249pub const MASK_FMVH_X_D: u32 = 0xfff0707f;
1250pub const MATCH_FMVH_X_Q: u32 = 0xe6100053;
1251pub const MASK_FMVH_X_Q: u32 = 0xfff0707f;
1252pub const MATCH_FMVP_D_X: u32 = 0xb2000053;
1253pub const MASK_FMVP_D_X: u32 = 0xfe00707f;
1254pub const MATCH_FMVP_Q_X: u32 = 0xb6000053;
1255pub const MASK_FMVP_Q_X: u32 = 0xfe00707f;
1256pub const MATCH_FNEG_D: u32 = 0x22001053;
1257pub const MASK_FNEG_D: u32 = 0xfe00707f;
1258pub const MATCH_FNEG_H: u32 = 0x24001053;
1259pub const MASK_FNEG_H: u32 = 0xfe00707f;
1260pub const MATCH_FNEG_Q: u32 = 0x26001053;
1261pub const MASK_FNEG_Q: u32 = 0xfe00707f;
1262pub const MATCH_FNEG_S: u32 = 0x20001053;
1263pub const MASK_FNEG_S: u32 = 0xfe00707f;
1264pub const MATCH_FNMADD_D: u32 = 0x200004f;
1265pub const MASK_FNMADD_D: u32 = 0x600007f;
1266pub const MATCH_FNMADD_H: u32 = 0x400004f;
1267pub const MASK_FNMADD_H: u32 = 0x600007f;
1268pub const MATCH_FNMADD_Q: u32 = 0x600004f;
1269pub const MASK_FNMADD_Q: u32 = 0x600007f;
1270pub const MATCH_FNMADD_S: u32 = 0x4f;
1271pub const MASK_FNMADD_S: u32 = 0x600007f;
1272pub const MATCH_FNMSUB_D: u32 = 0x200004b;
1273pub const MASK_FNMSUB_D: u32 = 0x600007f;
1274pub const MATCH_FNMSUB_H: u32 = 0x400004b;
1275pub const MASK_FNMSUB_H: u32 = 0x600007f;
1276pub const MATCH_FNMSUB_Q: u32 = 0x600004b;
1277pub const MASK_FNMSUB_Q: u32 = 0x600007f;
1278pub const MATCH_FNMSUB_S: u32 = 0x4b;
1279pub const MASK_FNMSUB_S: u32 = 0x600007f;
1280pub const MATCH_FRCSR: u32 = 0x302073;
1281pub const MASK_FRCSR: u32 = 0xfffff07f;
1282pub const MATCH_FRFLAGS: u32 = 0x102073;
1283pub const MASK_FRFLAGS: u32 = 0xfffff07f;
1284pub const MATCH_FROUND_D: u32 = 0x42400053;
1285pub const MASK_FROUND_D: u32 = 0xfff0007f;
1286pub const MATCH_FROUND_H: u32 = 0x44400053;
1287pub const MASK_FROUND_H: u32 = 0xfff0007f;
1288pub const MATCH_FROUND_Q: u32 = 0x46400053;
1289pub const MASK_FROUND_Q: u32 = 0xfff0007f;
1290pub const MATCH_FROUND_S: u32 = 0x40400053;
1291pub const MASK_FROUND_S: u32 = 0xfff0007f;
1292pub const MATCH_FROUNDNX_D: u32 = 0x42500053;
1293pub const MASK_FROUNDNX_D: u32 = 0xfff0007f;
1294pub const MATCH_FROUNDNX_H: u32 = 0x44500053;
1295pub const MASK_FROUNDNX_H: u32 = 0xfff0007f;
1296pub const MATCH_FROUNDNX_Q: u32 = 0x46500053;
1297pub const MASK_FROUNDNX_Q: u32 = 0xfff0007f;
1298pub const MATCH_FROUNDNX_S: u32 = 0x40500053;
1299pub const MASK_FROUNDNX_S: u32 = 0xfff0007f;
1300pub const MATCH_FRRM: u32 = 0x202073;
1301pub const MASK_FRRM: u32 = 0xfffff07f;
1302pub const MATCH_FSCSR: u32 = 0x301073;
1303pub const MASK_FSCSR: u32 = 0xfff0707f;
1304pub const MATCH_FSD: u32 = 0x3027;
1305pub const MASK_FSD: u32 = 0x707f;
1306pub const MATCH_FSFLAGS: u32 = 0x101073;
1307pub const MASK_FSFLAGS: u32 = 0xfff0707f;
1308pub const MATCH_FSFLAGSI: u32 = 0x105073;
1309pub const MASK_FSFLAGSI: u32 = 0xfff0707f;
1310pub const MATCH_FSGNJ_D: u32 = 0x22000053;
1311pub const MASK_FSGNJ_D: u32 = 0xfe00707f;
1312pub const MATCH_FSGNJ_H: u32 = 0x24000053;
1313pub const MASK_FSGNJ_H: u32 = 0xfe00707f;
1314pub const MATCH_FSGNJ_Q: u32 = 0x26000053;
1315pub const MASK_FSGNJ_Q: u32 = 0xfe00707f;
1316pub const MATCH_FSGNJ_S: u32 = 0x20000053;
1317pub const MASK_FSGNJ_S: u32 = 0xfe00707f;
1318pub const MATCH_FSGNJN_D: u32 = 0x22001053;
1319pub const MASK_FSGNJN_D: u32 = 0xfe00707f;
1320pub const MATCH_FSGNJN_H: u32 = 0x24001053;
1321pub const MASK_FSGNJN_H: u32 = 0xfe00707f;
1322pub const MATCH_FSGNJN_Q: u32 = 0x26001053;
1323pub const MASK_FSGNJN_Q: u32 = 0xfe00707f;
1324pub const MATCH_FSGNJN_S: u32 = 0x20001053;
1325pub const MASK_FSGNJN_S: u32 = 0xfe00707f;
1326pub const MATCH_FSGNJX_D: u32 = 0x22002053;
1327pub const MASK_FSGNJX_D: u32 = 0xfe00707f;
1328pub const MATCH_FSGNJX_H: u32 = 0x24002053;
1329pub const MASK_FSGNJX_H: u32 = 0xfe00707f;
1330pub const MATCH_FSGNJX_Q: u32 = 0x26002053;
1331pub const MASK_FSGNJX_Q: u32 = 0xfe00707f;
1332pub const MATCH_FSGNJX_S: u32 = 0x20002053;
1333pub const MASK_FSGNJX_S: u32 = 0xfe00707f;
1334pub const MATCH_FSH: u32 = 0x1027;
1335pub const MASK_FSH: u32 = 0x707f;
1336pub const MATCH_FSQ: u32 = 0x4027;
1337pub const MASK_FSQ: u32 = 0x707f;
1338pub const MATCH_FSQRT_D: u32 = 0x5a000053;
1339pub const MASK_FSQRT_D: u32 = 0xfff0007f;
1340pub const MATCH_FSQRT_H: u32 = 0x5c000053;
1341pub const MASK_FSQRT_H: u32 = 0xfff0007f;
1342pub const MATCH_FSQRT_Q: u32 = 0x5e000053;
1343pub const MASK_FSQRT_Q: u32 = 0xfff0007f;
1344pub const MATCH_FSQRT_S: u32 = 0x58000053;
1345pub const MASK_FSQRT_S: u32 = 0xfff0007f;
1346pub const MATCH_FSRM: u32 = 0x201073;
1347pub const MASK_FSRM: u32 = 0xfff0707f;
1348pub const MATCH_FSRMI: u32 = 0x205073;
1349pub const MASK_FSRMI: u32 = 0xfff0707f;
1350pub const MATCH_FSUB_D: u32 = 0xa000053;
1351pub const MASK_FSUB_D: u32 = 0xfe00007f;
1352pub const MATCH_FSUB_H: u32 = 0xc000053;
1353pub const MASK_FSUB_H: u32 = 0xfe00007f;
1354pub const MATCH_FSUB_Q: u32 = 0xe000053;
1355pub const MASK_FSUB_Q: u32 = 0xfe00007f;
1356pub const MATCH_FSUB_S: u32 = 0x8000053;
1357pub const MASK_FSUB_S: u32 = 0xfe00007f;
1358pub const MATCH_FSW: u32 = 0x2027;
1359pub const MASK_FSW: u32 = 0x707f;
1360pub const MATCH_HFENCE_GVMA: u32 = 0x62000073;
1361pub const MASK_HFENCE_GVMA: u32 = 0xfe007fff;
1362pub const MATCH_HFENCE_VVMA: u32 = 0x22000073;
1363pub const MASK_HFENCE_VVMA: u32 = 0xfe007fff;
1364pub const MATCH_HINVAL_GVMA: u32 = 0x66000073;
1365pub const MASK_HINVAL_GVMA: u32 = 0xfe007fff;
1366pub const MATCH_HINVAL_VVMA: u32 = 0x26000073;
1367pub const MASK_HINVAL_VVMA: u32 = 0xfe007fff;
1368pub const MATCH_HLV_B: u32 = 0x60004073;
1369pub const MASK_HLV_B: u32 = 0xfff0707f;
1370pub const MATCH_HLV_BU: u32 = 0x60104073;
1371pub const MASK_HLV_BU: u32 = 0xfff0707f;
1372pub const MATCH_HLV_D: u32 = 0x6c004073;
1373pub const MASK_HLV_D: u32 = 0xfff0707f;
1374pub const MATCH_HLV_H: u32 = 0x64004073;
1375pub const MASK_HLV_H: u32 = 0xfff0707f;
1376pub const MATCH_HLV_HU: u32 = 0x64104073;
1377pub const MASK_HLV_HU: u32 = 0xfff0707f;
1378pub const MATCH_HLV_W: u32 = 0x68004073;
1379pub const MASK_HLV_W: u32 = 0xfff0707f;
1380pub const MATCH_HLV_WU: u32 = 0x68104073;
1381pub const MASK_HLV_WU: u32 = 0xfff0707f;
1382pub const MATCH_HLVX_HU: u32 = 0x64304073;
1383pub const MASK_HLVX_HU: u32 = 0xfff0707f;
1384pub const MATCH_HLVX_WU: u32 = 0x68304073;
1385pub const MASK_HLVX_WU: u32 = 0xfff0707f;
1386pub const MATCH_HSV_B: u32 = 0x62004073;
1387pub const MASK_HSV_B: u32 = 0xfe007fff;
1388pub const MATCH_HSV_D: u32 = 0x6e004073;
1389pub const MASK_HSV_D: u32 = 0xfe007fff;
1390pub const MATCH_HSV_H: u32 = 0x66004073;
1391pub const MASK_HSV_H: u32 = 0xfe007fff;
1392pub const MATCH_HSV_W: u32 = 0x6a004073;
1393pub const MASK_HSV_W: u32 = 0xfe007fff;
1394pub const MATCH_J: u32 = 0x6f;
1395pub const MASK_J: u32 = 0xfff;
1396pub const MATCH_JAL: u32 = 0x6f;
1397pub const MASK_JAL: u32 = 0x7f;
1398pub const MATCH_JAL_PSEUDO: u32 = 0xef;
1399pub const MASK_JAL_PSEUDO: u32 = 0xfff;
1400pub const MATCH_JALR: u32 = 0x67;
1401pub const MASK_JALR: u32 = 0x707f;
1402pub const MATCH_JALR_PSEUDO: u32 = 0xe7;
1403pub const MASK_JALR_PSEUDO: u32 = 0xfff07fff;
1404pub const MATCH_JR: u32 = 0x67;
1405pub const MASK_JR: u32 = 0xfff07fff;
1406pub const MATCH_LB: u32 = 0x3;
1407pub const MASK_LB: u32 = 0x707f;
1408pub const MATCH_LBU: u32 = 0x4003;
1409pub const MASK_LBU: u32 = 0x707f;
1410pub const MATCH_LD: u32 = 0x3003;
1411pub const MASK_LD: u32 = 0x707f;
1412pub const MATCH_LH: u32 = 0x1003;
1413pub const MASK_LH: u32 = 0x707f;
1414pub const MATCH_LHU: u32 = 0x5003;
1415pub const MASK_LHU: u32 = 0x707f;
1416pub const MATCH_LPAD: u32 = 0x17;
1417pub const MASK_LPAD: u32 = 0xfff;
1418pub const MATCH_LR_D: u32 = 0x1000302f;
1419pub const MASK_LR_D: u32 = 0xf9f0707f;
1420pub const MATCH_LR_W: u32 = 0x1000202f;
1421pub const MASK_LR_W: u32 = 0xf9f0707f;
1422pub const MATCH_LUI: u32 = 0x37;
1423pub const MASK_LUI: u32 = 0x7f;
1424pub const MATCH_LW: u32 = 0x2003;
1425pub const MASK_LW: u32 = 0x707f;
1426pub const MATCH_LWU: u32 = 0x6003;
1427pub const MASK_LWU: u32 = 0x707f;
1428pub const MATCH_MAX: u32 = 0xa006033;
1429pub const MASK_MAX: u32 = 0xfe00707f;
1430pub const MATCH_MAXU: u32 = 0xa007033;
1431pub const MASK_MAXU: u32 = 0xfe00707f;
1432pub const MATCH_MIN: u32 = 0xa004033;
1433pub const MASK_MIN: u32 = 0xfe00707f;
1434pub const MATCH_MINU: u32 = 0xa005033;
1435pub const MASK_MINU: u32 = 0xfe00707f;
1436pub const MATCH_MNRET: u32 = 0x70200073;
1437pub const MASK_MNRET: u32 = 0xffffffff;
1438pub const MATCH_MOP_R_0: u32 = 0x81c04073;
1439pub const MASK_MOP_R_0: u32 = 0xfff0707f;
1440pub const MATCH_MOP_R_1: u32 = 0x81d04073;
1441pub const MASK_MOP_R_1: u32 = 0xfff0707f;
1442pub const MATCH_MOP_R_10: u32 = 0x89e04073;
1443pub const MASK_MOP_R_10: u32 = 0xfff0707f;
1444pub const MATCH_MOP_R_11: u32 = 0x89f04073;
1445pub const MASK_MOP_R_11: u32 = 0xfff0707f;
1446pub const MATCH_MOP_R_12: u32 = 0x8dc04073;
1447pub const MASK_MOP_R_12: u32 = 0xfff0707f;
1448pub const MATCH_MOP_R_13: u32 = 0x8dd04073;
1449pub const MASK_MOP_R_13: u32 = 0xfff0707f;
1450pub const MATCH_MOP_R_14: u32 = 0x8de04073;
1451pub const MASK_MOP_R_14: u32 = 0xfff0707f;
1452pub const MATCH_MOP_R_15: u32 = 0x8df04073;
1453pub const MASK_MOP_R_15: u32 = 0xfff0707f;
1454pub const MATCH_MOP_R_16: u32 = 0xc1c04073;
1455pub const MASK_MOP_R_16: u32 = 0xfff0707f;
1456pub const MATCH_MOP_R_17: u32 = 0xc1d04073;
1457pub const MASK_MOP_R_17: u32 = 0xfff0707f;
1458pub const MATCH_MOP_R_18: u32 = 0xc1e04073;
1459pub const MASK_MOP_R_18: u32 = 0xfff0707f;
1460pub const MATCH_MOP_R_19: u32 = 0xc1f04073;
1461pub const MASK_MOP_R_19: u32 = 0xfff0707f;
1462pub const MATCH_MOP_R_2: u32 = 0x81e04073;
1463pub const MASK_MOP_R_2: u32 = 0xfff0707f;
1464pub const MATCH_MOP_R_20: u32 = 0xc5c04073;
1465pub const MASK_MOP_R_20: u32 = 0xfff0707f;
1466pub const MATCH_MOP_R_21: u32 = 0xc5d04073;
1467pub const MASK_MOP_R_21: u32 = 0xfff0707f;
1468pub const MATCH_MOP_R_22: u32 = 0xc5e04073;
1469pub const MASK_MOP_R_22: u32 = 0xfff0707f;
1470pub const MATCH_MOP_R_23: u32 = 0xc5f04073;
1471pub const MASK_MOP_R_23: u32 = 0xfff0707f;
1472pub const MATCH_MOP_R_24: u32 = 0xc9c04073;
1473pub const MASK_MOP_R_24: u32 = 0xfff0707f;
1474pub const MATCH_MOP_R_25: u32 = 0xc9d04073;
1475pub const MASK_MOP_R_25: u32 = 0xfff0707f;
1476pub const MATCH_MOP_R_26: u32 = 0xc9e04073;
1477pub const MASK_MOP_R_26: u32 = 0xfff0707f;
1478pub const MATCH_MOP_R_27: u32 = 0xc9f04073;
1479pub const MASK_MOP_R_27: u32 = 0xfff0707f;
1480pub const MATCH_MOP_R_28: u32 = 0xcdc04073;
1481pub const MASK_MOP_R_28: u32 = 0xfff0707f;
1482pub const MATCH_MOP_R_29: u32 = 0xcdd04073;
1483pub const MASK_MOP_R_29: u32 = 0xfff0707f;
1484pub const MATCH_MOP_R_3: u32 = 0x81f04073;
1485pub const MASK_MOP_R_3: u32 = 0xfff0707f;
1486pub const MATCH_MOP_R_30: u32 = 0xcde04073;
1487pub const MASK_MOP_R_30: u32 = 0xfff0707f;
1488pub const MATCH_MOP_R_31: u32 = 0xcdf04073;
1489pub const MASK_MOP_R_31: u32 = 0xfff0707f;
1490pub const MATCH_MOP_R_4: u32 = 0x85c04073;
1491pub const MASK_MOP_R_4: u32 = 0xfff0707f;
1492pub const MATCH_MOP_R_5: u32 = 0x85d04073;
1493pub const MASK_MOP_R_5: u32 = 0xfff0707f;
1494pub const MATCH_MOP_R_6: u32 = 0x85e04073;
1495pub const MASK_MOP_R_6: u32 = 0xfff0707f;
1496pub const MATCH_MOP_R_7: u32 = 0x85f04073;
1497pub const MASK_MOP_R_7: u32 = 0xfff0707f;
1498pub const MATCH_MOP_R_8: u32 = 0x89c04073;
1499pub const MASK_MOP_R_8: u32 = 0xfff0707f;
1500pub const MATCH_MOP_R_9: u32 = 0x89d04073;
1501pub const MASK_MOP_R_9: u32 = 0xfff0707f;
1502pub const MATCH_MOP_R_N: u32 = 0x81c04073;
1503pub const MASK_MOP_R_N: u32 = 0xb3c0707f;
1504pub const MATCH_MOP_RR_0: u32 = 0x82004073;
1505pub const MASK_MOP_RR_0: u32 = 0xfe00707f;
1506pub const MATCH_MOP_RR_1: u32 = 0x86004073;
1507pub const MASK_MOP_RR_1: u32 = 0xfe00707f;
1508pub const MATCH_MOP_RR_2: u32 = 0x8a004073;
1509pub const MASK_MOP_RR_2: u32 = 0xfe00707f;
1510pub const MATCH_MOP_RR_3: u32 = 0x8e004073;
1511pub const MASK_MOP_RR_3: u32 = 0xfe00707f;
1512pub const MATCH_MOP_RR_4: u32 = 0xc2004073;
1513pub const MASK_MOP_RR_4: u32 = 0xfe00707f;
1514pub const MATCH_MOP_RR_5: u32 = 0xc6004073;
1515pub const MASK_MOP_RR_5: u32 = 0xfe00707f;
1516pub const MATCH_MOP_RR_6: u32 = 0xca004073;
1517pub const MASK_MOP_RR_6: u32 = 0xfe00707f;
1518pub const MATCH_MOP_RR_7: u32 = 0xce004073;
1519pub const MASK_MOP_RR_7: u32 = 0xfe00707f;
1520pub const MATCH_MOP_RR_N: u32 = 0x82004073;
1521pub const MASK_MOP_RR_N: u32 = 0xb200707f;
1522pub const MATCH_MRET: u32 = 0x30200073;
1523pub const MASK_MRET: u32 = 0xffffffff;
1524pub const MATCH_MUL: u32 = 0x2000033;
1525pub const MASK_MUL: u32 = 0xfe00707f;
1526pub const MATCH_MULH: u32 = 0x2001033;
1527pub const MASK_MULH: u32 = 0xfe00707f;
1528pub const MATCH_MULHSU: u32 = 0x2002033;
1529pub const MASK_MULHSU: u32 = 0xfe00707f;
1530pub const MATCH_MULHU: u32 = 0x2003033;
1531pub const MASK_MULHU: u32 = 0xfe00707f;
1532pub const MATCH_MULW: u32 = 0x200003b;
1533pub const MASK_MULW: u32 = 0xfe00707f;
1534pub const MATCH_MV: u32 = 0x13;
1535pub const MASK_MV: u32 = 0xfff0707f;
1536pub const MATCH_NEG: u32 = 0x40000033;
1537pub const MASK_NEG: u32 = 0xfff0707f;
1538pub const MATCH_NOP: u32 = 0x13;
1539pub const MASK_NOP: u32 = 0xffffffff;
1540pub const MATCH_NTL_ALL: u32 = 0x500033;
1541pub const MASK_NTL_ALL: u32 = 0xffffffff;
1542pub const MATCH_NTL_P1: u32 = 0x200033;
1543pub const MASK_NTL_P1: u32 = 0xffffffff;
1544pub const MATCH_NTL_PALL: u32 = 0x300033;
1545pub const MASK_NTL_PALL: u32 = 0xffffffff;
1546pub const MATCH_NTL_S1: u32 = 0x400033;
1547pub const MASK_NTL_S1: u32 = 0xffffffff;
1548pub const MATCH_OR: u32 = 0x6033;
1549pub const MASK_OR: u32 = 0xfe00707f;
1550pub const MATCH_ORC_B: u32 = 0x28705013;
1551pub const MASK_ORC_B: u32 = 0xfff0707f;
1552pub const MATCH_ORI: u32 = 0x6013;
1553pub const MASK_ORI: u32 = 0x707f;
1554pub const MATCH_ORN: u32 = 0x40006033;
1555pub const MASK_ORN: u32 = 0xfe00707f;
1556pub const MATCH_PACK: u32 = 0x8004033;
1557pub const MASK_PACK: u32 = 0xfe00707f;
1558pub const MATCH_PACKH: u32 = 0x8007033;
1559pub const MASK_PACKH: u32 = 0xfe00707f;
1560pub const MATCH_PACKW: u32 = 0x800403b;
1561pub const MASK_PACKW: u32 = 0xfe00707f;
1562pub const MATCH_PAUSE: u32 = 0x100000f;
1563pub const MASK_PAUSE: u32 = 0xffffffff;
1564pub const MATCH_PREFETCH_I: u32 = 0x6013;
1565pub const MASK_PREFETCH_I: u32 = 0x1f07fff;
1566pub const MATCH_PREFETCH_R: u32 = 0x106013;
1567pub const MASK_PREFETCH_R: u32 = 0x1f07fff;
1568pub const MATCH_PREFETCH_W: u32 = 0x306013;
1569pub const MASK_PREFETCH_W: u32 = 0x1f07fff;
1570pub const MATCH_RDCYCLE: u32 = 0xc0002073;
1571pub const MASK_RDCYCLE: u32 = 0xfffff07f;
1572pub const MATCH_RDCYCLEH: u32 = 0xc8002073;
1573pub const MASK_RDCYCLEH: u32 = 0xfffff07f;
1574pub const MATCH_RDINSTRET: u32 = 0xc0202073;
1575pub const MASK_RDINSTRET: u32 = 0xfffff07f;
1576pub const MATCH_RDINSTRETH: u32 = 0xc8202073;
1577pub const MASK_RDINSTRETH: u32 = 0xfffff07f;
1578pub const MATCH_RDTIME: u32 = 0xc0102073;
1579pub const MASK_RDTIME: u32 = 0xfffff07f;
1580pub const MATCH_RDTIMEH: u32 = 0xc8102073;
1581pub const MASK_RDTIMEH: u32 = 0xfffff07f;
1582pub const MATCH_REM: u32 = 0x2006033;
1583pub const MASK_REM: u32 = 0xfe00707f;
1584pub const MATCH_REMU: u32 = 0x2007033;
1585pub const MASK_REMU: u32 = 0xfe00707f;
1586pub const MATCH_REMUW: u32 = 0x200703b;
1587pub const MASK_REMUW: u32 = 0xfe00707f;
1588pub const MATCH_REMW: u32 = 0x200603b;
1589pub const MASK_REMW: u32 = 0xfe00707f;
1590pub const MATCH_RET: u32 = 0x8067;
1591pub const MASK_RET: u32 = 0xffffffff;
1592pub const MATCH_REV8: u32 = 0x6b805013;
1593pub const MASK_REV8: u32 = 0xfff0707f;
1594pub const MATCH_REV8_RV32: u32 = 0x69805013;
1595pub const MASK_REV8_RV32: u32 = 0xfff0707f;
1596pub const MATCH_ROL: u32 = 0x60001033;
1597pub const MASK_ROL: u32 = 0xfe00707f;
1598pub const MATCH_ROLW: u32 = 0x6000103b;
1599pub const MASK_ROLW: u32 = 0xfe00707f;
1600pub const MATCH_ROR: u32 = 0x60005033;
1601pub const MASK_ROR: u32 = 0xfe00707f;
1602pub const MATCH_RORI: u32 = 0x60005013;
1603pub const MASK_RORI: u32 = 0xfc00707f;
1604pub const MATCH_RORI_RV32: u32 = 0x60005013;
1605pub const MASK_RORI_RV32: u32 = 0xfe00707f;
1606pub const MATCH_RORIW: u32 = 0x6000501b;
1607pub const MASK_RORIW: u32 = 0xfe00707f;
1608pub const MATCH_RORW: u32 = 0x6000503b;
1609pub const MASK_RORW: u32 = 0xfe00707f;
1610pub const MATCH_SB: u32 = 0x23;
1611pub const MASK_SB: u32 = 0x707f;
1612pub const MATCH_SBREAK: u32 = 0x100073;
1613pub const MASK_SBREAK: u32 = 0xffffffff;
1614pub const MATCH_SC_D: u32 = 0x1800302f;
1615pub const MASK_SC_D: u32 = 0xf800707f;
1616pub const MATCH_SC_W: u32 = 0x1800202f;
1617pub const MASK_SC_W: u32 = 0xf800707f;
1618pub const MATCH_SCALL: u32 = 0x73;
1619pub const MASK_SCALL: u32 = 0xffffffff;
1620pub const MATCH_SCTRCLR: u32 = 0x10400073;
1621pub const MASK_SCTRCLR: u32 = 0xffffffff;
1622pub const MATCH_SD: u32 = 0x3023;
1623pub const MASK_SD: u32 = 0x707f;
1624pub const MATCH_SEQZ: u32 = 0x103013;
1625pub const MASK_SEQZ: u32 = 0xfff0707f;
1626pub const MATCH_SEXT_B: u32 = 0x60401013;
1627pub const MASK_SEXT_B: u32 = 0xfff0707f;
1628pub const MATCH_SEXT_H: u32 = 0x60501013;
1629pub const MASK_SEXT_H: u32 = 0xfff0707f;
1630pub const MATCH_SEXT_W: u32 = 0x1b;
1631pub const MASK_SEXT_W: u32 = 0xfff0707f;
1632pub const MATCH_SFENCE_INVAL_IR: u32 = 0x18100073;
1633pub const MASK_SFENCE_INVAL_IR: u32 = 0xffffffff;
1634pub const MATCH_SFENCE_VMA: u32 = 0x12000073;
1635pub const MASK_SFENCE_VMA: u32 = 0xfe007fff;
1636pub const MATCH_SFENCE_W_INVAL: u32 = 0x18000073;
1637pub const MASK_SFENCE_W_INVAL: u32 = 0xffffffff;
1638pub const MATCH_SGTZ: u32 = 0x2033;
1639pub const MASK_SGTZ: u32 = 0xfe0ff07f;
1640pub const MATCH_SH: u32 = 0x1023;
1641pub const MASK_SH: u32 = 0x707f;
1642pub const MATCH_SH1ADD: u32 = 0x20002033;
1643pub const MASK_SH1ADD: u32 = 0xfe00707f;
1644pub const MATCH_SH1ADD_UW: u32 = 0x2000203b;
1645pub const MASK_SH1ADD_UW: u32 = 0xfe00707f;
1646pub const MATCH_SH2ADD: u32 = 0x20004033;
1647pub const MASK_SH2ADD: u32 = 0xfe00707f;
1648pub const MATCH_SH2ADD_UW: u32 = 0x2000403b;
1649pub const MASK_SH2ADD_UW: u32 = 0xfe00707f;
1650pub const MATCH_SH3ADD: u32 = 0x20006033;
1651pub const MASK_SH3ADD: u32 = 0xfe00707f;
1652pub const MATCH_SH3ADD_UW: u32 = 0x2000603b;
1653pub const MASK_SH3ADD_UW: u32 = 0xfe00707f;
1654pub const MATCH_SHA256SIG0: u32 = 0x10201013;
1655pub const MASK_SHA256SIG0: u32 = 0xfff0707f;
1656pub const MATCH_SHA256SIG1: u32 = 0x10301013;
1657pub const MASK_SHA256SIG1: u32 = 0xfff0707f;
1658pub const MATCH_SHA256SUM0: u32 = 0x10001013;
1659pub const MASK_SHA256SUM0: u32 = 0xfff0707f;
1660pub const MATCH_SHA256SUM1: u32 = 0x10101013;
1661pub const MASK_SHA256SUM1: u32 = 0xfff0707f;
1662pub const MATCH_SHA512SIG0: u32 = 0x10601013;
1663pub const MASK_SHA512SIG0: u32 = 0xfff0707f;
1664pub const MATCH_SHA512SIG0H: u32 = 0x5c000033;
1665pub const MASK_SHA512SIG0H: u32 = 0xfe00707f;
1666pub const MATCH_SHA512SIG0L: u32 = 0x54000033;
1667pub const MASK_SHA512SIG0L: u32 = 0xfe00707f;
1668pub const MATCH_SHA512SIG1: u32 = 0x10701013;
1669pub const MASK_SHA512SIG1: u32 = 0xfff0707f;
1670pub const MATCH_SHA512SIG1H: u32 = 0x5e000033;
1671pub const MASK_SHA512SIG1H: u32 = 0xfe00707f;
1672pub const MATCH_SHA512SIG1L: u32 = 0x56000033;
1673pub const MASK_SHA512SIG1L: u32 = 0xfe00707f;
1674pub const MATCH_SHA512SUM0: u32 = 0x10401013;
1675pub const MASK_SHA512SUM0: u32 = 0xfff0707f;
1676pub const MATCH_SHA512SUM0R: u32 = 0x50000033;
1677pub const MASK_SHA512SUM0R: u32 = 0xfe00707f;
1678pub const MATCH_SHA512SUM1: u32 = 0x10501013;
1679pub const MASK_SHA512SUM1: u32 = 0xfff0707f;
1680pub const MATCH_SHA512SUM1R: u32 = 0x52000033;
1681pub const MASK_SHA512SUM1R: u32 = 0xfe00707f;
1682pub const MATCH_SINVAL_VMA: u32 = 0x16000073;
1683pub const MASK_SINVAL_VMA: u32 = 0xfe007fff;
1684pub const MATCH_SLL: u32 = 0x1033;
1685pub const MASK_SLL: u32 = 0xfe00707f;
1686pub const MATCH_SLLI: u32 = 0x1013;
1687pub const MASK_SLLI: u32 = 0xfc00707f;
1688pub const MATCH_SLLI_RV32: u32 = 0x1013;
1689pub const MASK_SLLI_RV32: u32 = 0xfe00707f;
1690pub const MATCH_SLLI_UW: u32 = 0x800101b;
1691pub const MASK_SLLI_UW: u32 = 0xfc00707f;
1692pub const MATCH_SLLIW: u32 = 0x101b;
1693pub const MASK_SLLIW: u32 = 0xfe00707f;
1694pub const MATCH_SLLW: u32 = 0x103b;
1695pub const MASK_SLLW: u32 = 0xfe00707f;
1696pub const MATCH_SLT: u32 = 0x2033;
1697pub const MASK_SLT: u32 = 0xfe00707f;
1698pub const MATCH_SLTI: u32 = 0x2013;
1699pub const MASK_SLTI: u32 = 0x707f;
1700pub const MATCH_SLTIU: u32 = 0x3013;
1701pub const MASK_SLTIU: u32 = 0x707f;
1702pub const MATCH_SLTU: u32 = 0x3033;
1703pub const MASK_SLTU: u32 = 0xfe00707f;
1704pub const MATCH_SLTZ: u32 = 0x2033;
1705pub const MASK_SLTZ: u32 = 0xfff0707f;
1706pub const MATCH_SM3P0: u32 = 0x10801013;
1707pub const MASK_SM3P0: u32 = 0xfff0707f;
1708pub const MATCH_SM3P1: u32 = 0x10901013;
1709pub const MASK_SM3P1: u32 = 0xfff0707f;
1710pub const MATCH_SM4ED: u32 = 0x30000033;
1711pub const MASK_SM4ED: u32 = 0x3e00707f;
1712pub const MATCH_SM4KS: u32 = 0x34000033;
1713pub const MASK_SM4KS: u32 = 0x3e00707f;
1714pub const MATCH_SNEZ: u32 = 0x3033;
1715pub const MASK_SNEZ: u32 = 0xfe0ff07f;
1716pub const MATCH_SRA: u32 = 0x40005033;
1717pub const MASK_SRA: u32 = 0xfe00707f;
1718pub const MATCH_SRAI: u32 = 0x40005013;
1719pub const MASK_SRAI: u32 = 0xfc00707f;
1720pub const MATCH_SRAI_RV32: u32 = 0x40005013;
1721pub const MASK_SRAI_RV32: u32 = 0xfe00707f;
1722pub const MATCH_SRAIW: u32 = 0x4000501b;
1723pub const MASK_SRAIW: u32 = 0xfe00707f;
1724pub const MATCH_SRAW: u32 = 0x4000503b;
1725pub const MASK_SRAW: u32 = 0xfe00707f;
1726pub const MATCH_SRET: u32 = 0x10200073;
1727pub const MASK_SRET: u32 = 0xffffffff;
1728pub const MATCH_SRL: u32 = 0x5033;
1729pub const MASK_SRL: u32 = 0xfe00707f;
1730pub const MATCH_SRLI: u32 = 0x5013;
1731pub const MASK_SRLI: u32 = 0xfc00707f;
1732pub const MATCH_SRLI_RV32: u32 = 0x5013;
1733pub const MASK_SRLI_RV32: u32 = 0xfe00707f;
1734pub const MATCH_SRLIW: u32 = 0x501b;
1735pub const MASK_SRLIW: u32 = 0xfe00707f;
1736pub const MATCH_SRLW: u32 = 0x503b;
1737pub const MASK_SRLW: u32 = 0xfe00707f;
1738pub const MATCH_SSAMOSWAP_D: u32 = 0x4800302f;
1739pub const MASK_SSAMOSWAP_D: u32 = 0xf800707f;
1740pub const MATCH_SSAMOSWAP_W: u32 = 0x4800202f;
1741pub const MASK_SSAMOSWAP_W: u32 = 0xf800707f;
1742pub const MATCH_SSPOPCHK_X1: u32 = 0xcdc0c073;
1743pub const MASK_SSPOPCHK_X1: u32 = 0xffffffff;
1744pub const MATCH_SSPOPCHK_X5: u32 = 0xcdc2c073;
1745pub const MASK_SSPOPCHK_X5: u32 = 0xffffffff;
1746pub const MATCH_SSPUSH_X1: u32 = 0xce104073;
1747pub const MASK_SSPUSH_X1: u32 = 0xffffffff;
1748pub const MATCH_SSPUSH_X5: u32 = 0xce504073;
1749pub const MASK_SSPUSH_X5: u32 = 0xffffffff;
1750pub const MATCH_SSRDP: u32 = 0xcdc04073;
1751pub const MASK_SSRDP: u32 = 0xfffff07f;
1752pub const MATCH_SUB: u32 = 0x40000033;
1753pub const MASK_SUB: u32 = 0xfe00707f;
1754pub const MATCH_SUBW: u32 = 0x4000003b;
1755pub const MASK_SUBW: u32 = 0xfe00707f;
1756pub const MATCH_SW: u32 = 0x2023;
1757pub const MASK_SW: u32 = 0x707f;
1758pub const MATCH_UNZIP: u32 = 0x8f05013;
1759pub const MASK_UNZIP: u32 = 0xfff0707f;
1760pub const MATCH_VAADD_VV: u32 = 0x24002057;
1761pub const MASK_VAADD_VV: u32 = 0xfc00707f;
1762pub const MATCH_VAADD_VX: u32 = 0x24006057;
1763pub const MASK_VAADD_VX: u32 = 0xfc00707f;
1764pub const MATCH_VAADDU_VV: u32 = 0x20002057;
1765pub const MASK_VAADDU_VV: u32 = 0xfc00707f;
1766pub const MATCH_VAADDU_VX: u32 = 0x20006057;
1767pub const MASK_VAADDU_VX: u32 = 0xfc00707f;
1768pub const MATCH_VADC_VIM: u32 = 0x40003057;
1769pub const MASK_VADC_VIM: u32 = 0xfe00707f;
1770pub const MATCH_VADC_VVM: u32 = 0x40000057;
1771pub const MASK_VADC_VVM: u32 = 0xfe00707f;
1772pub const MATCH_VADC_VXM: u32 = 0x40004057;
1773pub const MASK_VADC_VXM: u32 = 0xfe00707f;
1774pub const MATCH_VADD_VI: u32 = 0x3057;
1775pub const MASK_VADD_VI: u32 = 0xfc00707f;
1776pub const MATCH_VADD_VV: u32 = 0x57;
1777pub const MASK_VADD_VV: u32 = 0xfc00707f;
1778pub const MATCH_VADD_VX: u32 = 0x4057;
1779pub const MASK_VADD_VX: u32 = 0xfc00707f;
1780pub const MATCH_VAESDF_VS: u32 = 0xa600a077;
1781pub const MASK_VAESDF_VS: u32 = 0xfe0ff07f;
1782pub const MATCH_VAESDF_VV: u32 = 0xa200a077;
1783pub const MASK_VAESDF_VV: u32 = 0xfe0ff07f;
1784pub const MATCH_VAESDM_VS: u32 = 0xa6002077;
1785pub const MASK_VAESDM_VS: u32 = 0xfe0ff07f;
1786pub const MATCH_VAESDM_VV: u32 = 0xa2002077;
1787pub const MASK_VAESDM_VV: u32 = 0xfe0ff07f;
1788pub const MATCH_VAESEF_VS: u32 = 0xa601a077;
1789pub const MASK_VAESEF_VS: u32 = 0xfe0ff07f;
1790pub const MATCH_VAESEF_VV: u32 = 0xa201a077;
1791pub const MASK_VAESEF_VV: u32 = 0xfe0ff07f;
1792pub const MATCH_VAESEM_VS: u32 = 0xa6012077;
1793pub const MASK_VAESEM_VS: u32 = 0xfe0ff07f;
1794pub const MATCH_VAESEM_VV: u32 = 0xa2012077;
1795pub const MASK_VAESEM_VV: u32 = 0xfe0ff07f;
1796pub const MATCH_VAESKF1_VI: u32 = 0x8a002077;
1797pub const MASK_VAESKF1_VI: u32 = 0xfe00707f;
1798pub const MATCH_VAESKF2_VI: u32 = 0xaa002077;
1799pub const MASK_VAESKF2_VI: u32 = 0xfe00707f;
1800pub const MATCH_VAESZ_VS: u32 = 0xa603a077;
1801pub const MASK_VAESZ_VS: u32 = 0xfe0ff07f;
1802pub const MATCH_VAND_VI: u32 = 0x24003057;
1803pub const MASK_VAND_VI: u32 = 0xfc00707f;
1804pub const MATCH_VAND_VV: u32 = 0x24000057;
1805pub const MASK_VAND_VV: u32 = 0xfc00707f;
1806pub const MATCH_VAND_VX: u32 = 0x24004057;
1807pub const MASK_VAND_VX: u32 = 0xfc00707f;
1808pub const MATCH_VANDN_VV: u32 = 0x4000057;
1809pub const MASK_VANDN_VV: u32 = 0xfc00707f;
1810pub const MATCH_VANDN_VX: u32 = 0x4004057;
1811pub const MASK_VANDN_VX: u32 = 0xfc00707f;
1812pub const MATCH_VASUB_VV: u32 = 0x2c002057;
1813pub const MASK_VASUB_VV: u32 = 0xfc00707f;
1814pub const MATCH_VASUB_VX: u32 = 0x2c006057;
1815pub const MASK_VASUB_VX: u32 = 0xfc00707f;
1816pub const MATCH_VASUBU_VV: u32 = 0x28002057;
1817pub const MASK_VASUBU_VV: u32 = 0xfc00707f;
1818pub const MATCH_VASUBU_VX: u32 = 0x28006057;
1819pub const MASK_VASUBU_VX: u32 = 0xfc00707f;
1820pub const MATCH_VBREV8_V: u32 = 0x48042057;
1821pub const MASK_VBREV8_V: u32 = 0xfc0ff07f;
1822pub const MATCH_VBREV_V: u32 = 0x48052057;
1823pub const MASK_VBREV_V: u32 = 0xfc0ff07f;
1824pub const MATCH_VCLMUL_VV: u32 = 0x30002057;
1825pub const MASK_VCLMUL_VV: u32 = 0xfc00707f;
1826pub const MATCH_VCLMUL_VX: u32 = 0x30006057;
1827pub const MASK_VCLMUL_VX: u32 = 0xfc00707f;
1828pub const MATCH_VCLMULH_VV: u32 = 0x34002057;
1829pub const MASK_VCLMULH_VV: u32 = 0xfc00707f;
1830pub const MATCH_VCLMULH_VX: u32 = 0x34006057;
1831pub const MASK_VCLMULH_VX: u32 = 0xfc00707f;
1832pub const MATCH_VCLZ_V: u32 = 0x48062057;
1833pub const MASK_VCLZ_V: u32 = 0xfc0ff07f;
1834pub const MATCH_VCOMPRESS_VM: u32 = 0x5e002057;
1835pub const MASK_VCOMPRESS_VM: u32 = 0xfe00707f;
1836pub const MATCH_VCPOP_M: u32 = 0x40082057;
1837pub const MASK_VCPOP_M: u32 = 0xfc0ff07f;
1838pub const MATCH_VCPOP_V: u32 = 0x48072057;
1839pub const MASK_VCPOP_V: u32 = 0xfc0ff07f;
1840pub const MATCH_VCTZ_V: u32 = 0x4806a057;
1841pub const MASK_VCTZ_V: u32 = 0xfc0ff07f;
1842pub const MATCH_VDIV_VV: u32 = 0x84002057;
1843pub const MASK_VDIV_VV: u32 = 0xfc00707f;
1844pub const MATCH_VDIV_VX: u32 = 0x84006057;
1845pub const MASK_VDIV_VX: u32 = 0xfc00707f;
1846pub const MATCH_VDIVU_VV: u32 = 0x80002057;
1847pub const MASK_VDIVU_VV: u32 = 0xfc00707f;
1848pub const MATCH_VDIVU_VX: u32 = 0x80006057;
1849pub const MASK_VDIVU_VX: u32 = 0xfc00707f;
1850pub const MATCH_VFADD_VF: u32 = 0x5057;
1851pub const MASK_VFADD_VF: u32 = 0xfc00707f;
1852pub const MATCH_VFADD_VV: u32 = 0x1057;
1853pub const MASK_VFADD_VV: u32 = 0xfc00707f;
1854pub const MATCH_VFCLASS_V: u32 = 0x4c081057;
1855pub const MASK_VFCLASS_V: u32 = 0xfc0ff07f;
1856pub const MATCH_VFCVT_F_X_V: u32 = 0x48019057;
1857pub const MASK_VFCVT_F_X_V: u32 = 0xfc0ff07f;
1858pub const MATCH_VFCVT_F_XU_V: u32 = 0x48011057;
1859pub const MASK_VFCVT_F_XU_V: u32 = 0xfc0ff07f;
1860pub const MATCH_VFCVT_RTZ_X_F_V: u32 = 0x48039057;
1861pub const MASK_VFCVT_RTZ_X_F_V: u32 = 0xfc0ff07f;
1862pub const MATCH_VFCVT_RTZ_XU_F_V: u32 = 0x48031057;
1863pub const MASK_VFCVT_RTZ_XU_F_V: u32 = 0xfc0ff07f;
1864pub const MATCH_VFCVT_X_F_V: u32 = 0x48009057;
1865pub const MASK_VFCVT_X_F_V: u32 = 0xfc0ff07f;
1866pub const MATCH_VFCVT_XU_F_V: u32 = 0x48001057;
1867pub const MASK_VFCVT_XU_F_V: u32 = 0xfc0ff07f;
1868pub const MATCH_VFDIV_VF: u32 = 0x80005057;
1869pub const MASK_VFDIV_VF: u32 = 0xfc00707f;
1870pub const MATCH_VFDIV_VV: u32 = 0x80001057;
1871pub const MASK_VFDIV_VV: u32 = 0xfc00707f;
1872pub const MATCH_VFIRST_M: u32 = 0x4008a057;
1873pub const MASK_VFIRST_M: u32 = 0xfc0ff07f;
1874pub const MATCH_VFMACC_VF: u32 = 0xb0005057;
1875pub const MASK_VFMACC_VF: u32 = 0xfc00707f;
1876pub const MATCH_VFMACC_VV: u32 = 0xb0001057;
1877pub const MASK_VFMACC_VV: u32 = 0xfc00707f;
1878pub const MATCH_VFMADD_VF: u32 = 0xa0005057;
1879pub const MASK_VFMADD_VF: u32 = 0xfc00707f;
1880pub const MATCH_VFMADD_VV: u32 = 0xa0001057;
1881pub const MASK_VFMADD_VV: u32 = 0xfc00707f;
1882pub const MATCH_VFMAX_VF: u32 = 0x18005057;
1883pub const MASK_VFMAX_VF: u32 = 0xfc00707f;
1884pub const MATCH_VFMAX_VV: u32 = 0x18001057;
1885pub const MASK_VFMAX_VV: u32 = 0xfc00707f;
1886pub const MATCH_VFMERGE_VFM: u32 = 0x5c005057;
1887pub const MASK_VFMERGE_VFM: u32 = 0xfe00707f;
1888pub const MATCH_VFMIN_VF: u32 = 0x10005057;
1889pub const MASK_VFMIN_VF: u32 = 0xfc00707f;
1890pub const MATCH_VFMIN_VV: u32 = 0x10001057;
1891pub const MASK_VFMIN_VV: u32 = 0xfc00707f;
1892pub const MATCH_VFMSAC_VF: u32 = 0xb8005057;
1893pub const MASK_VFMSAC_VF: u32 = 0xfc00707f;
1894pub const MATCH_VFMSAC_VV: u32 = 0xb8001057;
1895pub const MASK_VFMSAC_VV: u32 = 0xfc00707f;
1896pub const MATCH_VFMSUB_VF: u32 = 0xa8005057;
1897pub const MASK_VFMSUB_VF: u32 = 0xfc00707f;
1898pub const MATCH_VFMSUB_VV: u32 = 0xa8001057;
1899pub const MASK_VFMSUB_VV: u32 = 0xfc00707f;
1900pub const MATCH_VFMUL_VF: u32 = 0x90005057;
1901pub const MASK_VFMUL_VF: u32 = 0xfc00707f;
1902pub const MATCH_VFMUL_VV: u32 = 0x90001057;
1903pub const MASK_VFMUL_VV: u32 = 0xfc00707f;
1904pub const MATCH_VFMV_F_S: u32 = 0x42001057;
1905pub const MASK_VFMV_F_S: u32 = 0xfe0ff07f;
1906pub const MATCH_VFMV_S_F: u32 = 0x42005057;
1907pub const MASK_VFMV_S_F: u32 = 0xfff0707f;
1908pub const MATCH_VFMV_V_F: u32 = 0x5e005057;
1909pub const MASK_VFMV_V_F: u32 = 0xfff0707f;
1910pub const MATCH_VFNCVT_F_F_W: u32 = 0x480a1057;
1911pub const MASK_VFNCVT_F_F_W: u32 = 0xfc0ff07f;
1912pub const MATCH_VFNCVT_F_X_W: u32 = 0x48099057;
1913pub const MASK_VFNCVT_F_X_W: u32 = 0xfc0ff07f;
1914pub const MATCH_VFNCVT_F_XU_W: u32 = 0x48091057;
1915pub const MASK_VFNCVT_F_XU_W: u32 = 0xfc0ff07f;
1916pub const MATCH_VFNCVT_ROD_F_F_W: u32 = 0x480a9057;
1917pub const MASK_VFNCVT_ROD_F_F_W: u32 = 0xfc0ff07f;
1918pub const MATCH_VFNCVT_RTZ_X_F_W: u32 = 0x480b9057;
1919pub const MASK_VFNCVT_RTZ_X_F_W: u32 = 0xfc0ff07f;
1920pub const MATCH_VFNCVT_RTZ_XU_F_W: u32 = 0x480b1057;
1921pub const MASK_VFNCVT_RTZ_XU_F_W: u32 = 0xfc0ff07f;
1922pub const MATCH_VFNCVT_X_F_W: u32 = 0x48089057;
1923pub const MASK_VFNCVT_X_F_W: u32 = 0xfc0ff07f;
1924pub const MATCH_VFNCVT_XU_F_W: u32 = 0x48081057;
1925pub const MASK_VFNCVT_XU_F_W: u32 = 0xfc0ff07f;
1926pub const MATCH_VFNCVTBF16_F_F_W: u32 = 0x480e9057;
1927pub const MASK_VFNCVTBF16_F_F_W: u32 = 0xfc0ff07f;
1928pub const MATCH_VFNMACC_VF: u32 = 0xb4005057;
1929pub const MASK_VFNMACC_VF: u32 = 0xfc00707f;
1930pub const MATCH_VFNMACC_VV: u32 = 0xb4001057;
1931pub const MASK_VFNMACC_VV: u32 = 0xfc00707f;
1932pub const MATCH_VFNMADD_VF: u32 = 0xa4005057;
1933pub const MASK_VFNMADD_VF: u32 = 0xfc00707f;
1934pub const MATCH_VFNMADD_VV: u32 = 0xa4001057;
1935pub const MASK_VFNMADD_VV: u32 = 0xfc00707f;
1936pub const MATCH_VFNMSAC_VF: u32 = 0xbc005057;
1937pub const MASK_VFNMSAC_VF: u32 = 0xfc00707f;
1938pub const MATCH_VFNMSAC_VV: u32 = 0xbc001057;
1939pub const MASK_VFNMSAC_VV: u32 = 0xfc00707f;
1940pub const MATCH_VFNMSUB_VF: u32 = 0xac005057;
1941pub const MASK_VFNMSUB_VF: u32 = 0xfc00707f;
1942pub const MATCH_VFNMSUB_VV: u32 = 0xac001057;
1943pub const MASK_VFNMSUB_VV: u32 = 0xfc00707f;
1944pub const MATCH_VFRDIV_VF: u32 = 0x84005057;
1945pub const MASK_VFRDIV_VF: u32 = 0xfc00707f;
1946pub const MATCH_VFREC7_V: u32 = 0x4c029057;
1947pub const MASK_VFREC7_V: u32 = 0xfc0ff07f;
1948pub const MATCH_VFREDMAX_VS: u32 = 0x1c001057;
1949pub const MASK_VFREDMAX_VS: u32 = 0xfc00707f;
1950pub const MATCH_VFREDMIN_VS: u32 = 0x14001057;
1951pub const MASK_VFREDMIN_VS: u32 = 0xfc00707f;
1952pub const MATCH_VFREDOSUM_VS: u32 = 0xc001057;
1953pub const MASK_VFREDOSUM_VS: u32 = 0xfc00707f;
1954pub const MATCH_VFREDSUM_VS: u32 = 0x4001057;
1955pub const MASK_VFREDSUM_VS: u32 = 0xfc00707f;
1956pub const MATCH_VFREDUSUM_VS: u32 = 0x4001057;
1957pub const MASK_VFREDUSUM_VS: u32 = 0xfc00707f;
1958pub const MATCH_VFRSQRT7_V: u32 = 0x4c021057;
1959pub const MASK_VFRSQRT7_V: u32 = 0xfc0ff07f;
1960pub const MATCH_VFRSUB_VF: u32 = 0x9c005057;
1961pub const MASK_VFRSUB_VF: u32 = 0xfc00707f;
1962pub const MATCH_VFSGNJ_VF: u32 = 0x20005057;
1963pub const MASK_VFSGNJ_VF: u32 = 0xfc00707f;
1964pub const MATCH_VFSGNJ_VV: u32 = 0x20001057;
1965pub const MASK_VFSGNJ_VV: u32 = 0xfc00707f;
1966pub const MATCH_VFSGNJN_VF: u32 = 0x24005057;
1967pub const MASK_VFSGNJN_VF: u32 = 0xfc00707f;
1968pub const MATCH_VFSGNJN_VV: u32 = 0x24001057;
1969pub const MASK_VFSGNJN_VV: u32 = 0xfc00707f;
1970pub const MATCH_VFSGNJX_VF: u32 = 0x28005057;
1971pub const MASK_VFSGNJX_VF: u32 = 0xfc00707f;
1972pub const MATCH_VFSGNJX_VV: u32 = 0x28001057;
1973pub const MASK_VFSGNJX_VV: u32 = 0xfc00707f;
1974pub const MATCH_VFSLIDE1DOWN_VF: u32 = 0x3c005057;
1975pub const MASK_VFSLIDE1DOWN_VF: u32 = 0xfc00707f;
1976pub const MATCH_VFSLIDE1UP_VF: u32 = 0x38005057;
1977pub const MASK_VFSLIDE1UP_VF: u32 = 0xfc00707f;
1978pub const MATCH_VFSQRT_V: u32 = 0x4c001057;
1979pub const MASK_VFSQRT_V: u32 = 0xfc0ff07f;
1980pub const MATCH_VFSUB_VF: u32 = 0x8005057;
1981pub const MASK_VFSUB_VF: u32 = 0xfc00707f;
1982pub const MATCH_VFSUB_VV: u32 = 0x8001057;
1983pub const MASK_VFSUB_VV: u32 = 0xfc00707f;
1984pub const MATCH_VFWADD_VF: u32 = 0xc0005057;
1985pub const MASK_VFWADD_VF: u32 = 0xfc00707f;
1986pub const MATCH_VFWADD_VV: u32 = 0xc0001057;
1987pub const MASK_VFWADD_VV: u32 = 0xfc00707f;
1988pub const MATCH_VFWADD_WF: u32 = 0xd0005057;
1989pub const MASK_VFWADD_WF: u32 = 0xfc00707f;
1990pub const MATCH_VFWADD_WV: u32 = 0xd0001057;
1991pub const MASK_VFWADD_WV: u32 = 0xfc00707f;
1992pub const MATCH_VFWCVT_F_F_V: u32 = 0x48061057;
1993pub const MASK_VFWCVT_F_F_V: u32 = 0xfc0ff07f;
1994pub const MATCH_VFWCVT_F_X_V: u32 = 0x48059057;
1995pub const MASK_VFWCVT_F_X_V: u32 = 0xfc0ff07f;
1996pub const MATCH_VFWCVT_F_XU_V: u32 = 0x48051057;
1997pub const MASK_VFWCVT_F_XU_V: u32 = 0xfc0ff07f;
1998pub const MATCH_VFWCVT_RTZ_X_F_V: u32 = 0x48079057;
1999pub const MASK_VFWCVT_RTZ_X_F_V: u32 = 0xfc0ff07f;
2000pub const MATCH_VFWCVT_RTZ_XU_F_V: u32 = 0x48071057;
2001pub const MASK_VFWCVT_RTZ_XU_F_V: u32 = 0xfc0ff07f;
2002pub const MATCH_VFWCVT_X_F_V: u32 = 0x48049057;
2003pub const MASK_VFWCVT_X_F_V: u32 = 0xfc0ff07f;
2004pub const MATCH_VFWCVT_XU_F_V: u32 = 0x48041057;
2005pub const MASK_VFWCVT_XU_F_V: u32 = 0xfc0ff07f;
2006pub const MATCH_VFWCVTBF16_F_F_V: u32 = 0x48069057;
2007pub const MASK_VFWCVTBF16_F_F_V: u32 = 0xfc0ff07f;
2008pub const MATCH_VFWMACC_VF: u32 = 0xf0005057;
2009pub const MASK_VFWMACC_VF: u32 = 0xfc00707f;
2010pub const MATCH_VFWMACC_VV: u32 = 0xf0001057;
2011pub const MASK_VFWMACC_VV: u32 = 0xfc00707f;
2012pub const MATCH_VFWMACCBF16_VF: u32 = 0xec005057;
2013pub const MASK_VFWMACCBF16_VF: u32 = 0xfc00707f;
2014pub const MATCH_VFWMACCBF16_VV: u32 = 0xec001057;
2015pub const MASK_VFWMACCBF16_VV: u32 = 0xfc00707f;
2016pub const MATCH_VFWMSAC_VF: u32 = 0xf8005057;
2017pub const MASK_VFWMSAC_VF: u32 = 0xfc00707f;
2018pub const MATCH_VFWMSAC_VV: u32 = 0xf8001057;
2019pub const MASK_VFWMSAC_VV: u32 = 0xfc00707f;
2020pub const MATCH_VFWMUL_VF: u32 = 0xe0005057;
2021pub const MASK_VFWMUL_VF: u32 = 0xfc00707f;
2022pub const MATCH_VFWMUL_VV: u32 = 0xe0001057;
2023pub const MASK_VFWMUL_VV: u32 = 0xfc00707f;
2024pub const MATCH_VFWNMACC_VF: u32 = 0xf4005057;
2025pub const MASK_VFWNMACC_VF: u32 = 0xfc00707f;
2026pub const MATCH_VFWNMACC_VV: u32 = 0xf4001057;
2027pub const MASK_VFWNMACC_VV: u32 = 0xfc00707f;
2028pub const MATCH_VFWNMSAC_VF: u32 = 0xfc005057;
2029pub const MASK_VFWNMSAC_VF: u32 = 0xfc00707f;
2030pub const MATCH_VFWNMSAC_VV: u32 = 0xfc001057;
2031pub const MASK_VFWNMSAC_VV: u32 = 0xfc00707f;
2032pub const MATCH_VFWREDOSUM_VS: u32 = 0xcc001057;
2033pub const MASK_VFWREDOSUM_VS: u32 = 0xfc00707f;
2034pub const MATCH_VFWREDSUM_VS: u32 = 0xc4001057;
2035pub const MASK_VFWREDSUM_VS: u32 = 0xfc00707f;
2036pub const MATCH_VFWREDUSUM_VS: u32 = 0xc4001057;
2037pub const MASK_VFWREDUSUM_VS: u32 = 0xfc00707f;
2038pub const MATCH_VFWSUB_VF: u32 = 0xc8005057;
2039pub const MASK_VFWSUB_VF: u32 = 0xfc00707f;
2040pub const MATCH_VFWSUB_VV: u32 = 0xc8001057;
2041pub const MASK_VFWSUB_VV: u32 = 0xfc00707f;
2042pub const MATCH_VFWSUB_WF: u32 = 0xd8005057;
2043pub const MASK_VFWSUB_WF: u32 = 0xfc00707f;
2044pub const MATCH_VFWSUB_WV: u32 = 0xd8001057;
2045pub const MASK_VFWSUB_WV: u32 = 0xfc00707f;
2046pub const MATCH_VGHSH_VV: u32 = 0xb2002077;
2047pub const MASK_VGHSH_VV: u32 = 0xfe00707f;
2048pub const MATCH_VGMUL_VV: u32 = 0xa208a077;
2049pub const MASK_VGMUL_VV: u32 = 0xfe0ff07f;
2050pub const MATCH_VID_V: u32 = 0x5008a057;
2051pub const MASK_VID_V: u32 = 0xfdfff07f;
2052pub const MATCH_VIOTA_M: u32 = 0x50082057;
2053pub const MASK_VIOTA_M: u32 = 0xfc0ff07f;
2054pub const MATCH_VL1R_V: u32 = 0x2800007;
2055pub const MASK_VL1R_V: u32 = 0xfff0707f;
2056pub const MATCH_VL1RE16_V: u32 = 0x2805007;
2057pub const MASK_VL1RE16_V: u32 = 0xfff0707f;
2058pub const MATCH_VL1RE32_V: u32 = 0x2806007;
2059pub const MASK_VL1RE32_V: u32 = 0xfff0707f;
2060pub const MATCH_VL1RE64_V: u32 = 0x2807007;
2061pub const MASK_VL1RE64_V: u32 = 0xfff0707f;
2062pub const MATCH_VL1RE8_V: u32 = 0x2800007;
2063pub const MASK_VL1RE8_V: u32 = 0xfff0707f;
2064pub const MATCH_VL2R_V: u32 = 0x22800007;
2065pub const MASK_VL2R_V: u32 = 0xfff0707f;
2066pub const MATCH_VL2RE16_V: u32 = 0x22805007;
2067pub const MASK_VL2RE16_V: u32 = 0xfff0707f;
2068pub const MATCH_VL2RE32_V: u32 = 0x22806007;
2069pub const MASK_VL2RE32_V: u32 = 0xfff0707f;
2070pub const MATCH_VL2RE64_V: u32 = 0x22807007;
2071pub const MASK_VL2RE64_V: u32 = 0xfff0707f;
2072pub const MATCH_VL2RE8_V: u32 = 0x22800007;
2073pub const MASK_VL2RE8_V: u32 = 0xfff0707f;
2074pub const MATCH_VL4R_V: u32 = 0x62800007;
2075pub const MASK_VL4R_V: u32 = 0xfff0707f;
2076pub const MATCH_VL4RE16_V: u32 = 0x62805007;
2077pub const MASK_VL4RE16_V: u32 = 0xfff0707f;
2078pub const MATCH_VL4RE32_V: u32 = 0x62806007;
2079pub const MASK_VL4RE32_V: u32 = 0xfff0707f;
2080pub const MATCH_VL4RE64_V: u32 = 0x62807007;
2081pub const MASK_VL4RE64_V: u32 = 0xfff0707f;
2082pub const MATCH_VL4RE8_V: u32 = 0x62800007;
2083pub const MASK_VL4RE8_V: u32 = 0xfff0707f;
2084pub const MATCH_VL8R_V: u32 = 0xe2800007;
2085pub const MASK_VL8R_V: u32 = 0xfff0707f;
2086pub const MATCH_VL8RE16_V: u32 = 0xe2805007;
2087pub const MASK_VL8RE16_V: u32 = 0xfff0707f;
2088pub const MATCH_VL8RE32_V: u32 = 0xe2806007;
2089pub const MASK_VL8RE32_V: u32 = 0xfff0707f;
2090pub const MATCH_VL8RE64_V: u32 = 0xe2807007;
2091pub const MASK_VL8RE64_V: u32 = 0xfff0707f;
2092pub const MATCH_VL8RE8_V: u32 = 0xe2800007;
2093pub const MASK_VL8RE8_V: u32 = 0xfff0707f;
2094pub const MATCH_VLE16_V: u32 = 0x5007;
2095pub const MASK_VLE16_V: u32 = 0x1df0707f;
2096pub const MATCH_VLE16FF_V: u32 = 0x1005007;
2097pub const MASK_VLE16FF_V: u32 = 0x1df0707f;
2098pub const MATCH_VLE1_V: u32 = 0x2b00007;
2099pub const MASK_VLE1_V: u32 = 0xfff0707f;
2100pub const MATCH_VLE32_V: u32 = 0x6007;
2101pub const MASK_VLE32_V: u32 = 0x1df0707f;
2102pub const MATCH_VLE32FF_V: u32 = 0x1006007;
2103pub const MASK_VLE32FF_V: u32 = 0x1df0707f;
2104pub const MATCH_VLE64_V: u32 = 0x7007;
2105pub const MASK_VLE64_V: u32 = 0x1df0707f;
2106pub const MATCH_VLE64FF_V: u32 = 0x1007007;
2107pub const MASK_VLE64FF_V: u32 = 0x1df0707f;
2108pub const MATCH_VLE8_V: u32 = 0x7;
2109pub const MASK_VLE8_V: u32 = 0x1df0707f;
2110pub const MATCH_VLE8FF_V: u32 = 0x1000007;
2111pub const MASK_VLE8FF_V: u32 = 0x1df0707f;
2112pub const MATCH_VLM_V: u32 = 0x2b00007;
2113pub const MASK_VLM_V: u32 = 0xfff0707f;
2114pub const MATCH_VLOXEI16_V: u32 = 0xc005007;
2115pub const MASK_VLOXEI16_V: u32 = 0x1c00707f;
2116pub const MATCH_VLOXEI32_V: u32 = 0xc006007;
2117pub const MASK_VLOXEI32_V: u32 = 0x1c00707f;
2118pub const MATCH_VLOXEI64_V: u32 = 0xc007007;
2119pub const MASK_VLOXEI64_V: u32 = 0x1c00707f;
2120pub const MATCH_VLOXEI8_V: u32 = 0xc000007;
2121pub const MASK_VLOXEI8_V: u32 = 0x1c00707f;
2122pub const MATCH_VLSE16_V: u32 = 0x8005007;
2123pub const MASK_VLSE16_V: u32 = 0x1c00707f;
2124pub const MATCH_VLSE32_V: u32 = 0x8006007;
2125pub const MASK_VLSE32_V: u32 = 0x1c00707f;
2126pub const MATCH_VLSE64_V: u32 = 0x8007007;
2127pub const MASK_VLSE64_V: u32 = 0x1c00707f;
2128pub const MATCH_VLSE8_V: u32 = 0x8000007;
2129pub const MASK_VLSE8_V: u32 = 0x1c00707f;
2130pub const MATCH_VLUXEI16_V: u32 = 0x4005007;
2131pub const MASK_VLUXEI16_V: u32 = 0x1c00707f;
2132pub const MATCH_VLUXEI32_V: u32 = 0x4006007;
2133pub const MASK_VLUXEI32_V: u32 = 0x1c00707f;
2134pub const MATCH_VLUXEI64_V: u32 = 0x4007007;
2135pub const MASK_VLUXEI64_V: u32 = 0x1c00707f;
2136pub const MATCH_VLUXEI8_V: u32 = 0x4000007;
2137pub const MASK_VLUXEI8_V: u32 = 0x1c00707f;
2138pub const MATCH_VMACC_VV: u32 = 0xb4002057;
2139pub const MASK_VMACC_VV: u32 = 0xfc00707f;
2140pub const MATCH_VMACC_VX: u32 = 0xb4006057;
2141pub const MASK_VMACC_VX: u32 = 0xfc00707f;
2142pub const MATCH_VMADC_VI: u32 = 0x46003057;
2143pub const MASK_VMADC_VI: u32 = 0xfe00707f;
2144pub const MATCH_VMADC_VIM: u32 = 0x44003057;
2145pub const MASK_VMADC_VIM: u32 = 0xfe00707f;
2146pub const MATCH_VMADC_VV: u32 = 0x46000057;
2147pub const MASK_VMADC_VV: u32 = 0xfe00707f;
2148pub const MATCH_VMADC_VVM: u32 = 0x44000057;
2149pub const MASK_VMADC_VVM: u32 = 0xfe00707f;
2150pub const MATCH_VMADC_VX: u32 = 0x46004057;
2151pub const MASK_VMADC_VX: u32 = 0xfe00707f;
2152pub const MATCH_VMADC_VXM: u32 = 0x44004057;
2153pub const MASK_VMADC_VXM: u32 = 0xfe00707f;
2154pub const MATCH_VMADD_VV: u32 = 0xa4002057;
2155pub const MASK_VMADD_VV: u32 = 0xfc00707f;
2156pub const MATCH_VMADD_VX: u32 = 0xa4006057;
2157pub const MASK_VMADD_VX: u32 = 0xfc00707f;
2158pub const MATCH_VMAND_MM: u32 = 0x66002057;
2159pub const MASK_VMAND_MM: u32 = 0xfe00707f;
2160pub const MATCH_VMANDN_MM: u32 = 0x62002057;
2161pub const MASK_VMANDN_MM: u32 = 0xfe00707f;
2162pub const MATCH_VMANDNOT_MM: u32 = 0x60002057;
2163pub const MASK_VMANDNOT_MM: u32 = 0xfc00707f;
2164pub const MATCH_VMAX_VV: u32 = 0x1c000057;
2165pub const MASK_VMAX_VV: u32 = 0xfc00707f;
2166pub const MATCH_VMAX_VX: u32 = 0x1c004057;
2167pub const MASK_VMAX_VX: u32 = 0xfc00707f;
2168pub const MATCH_VMAXU_VV: u32 = 0x18000057;
2169pub const MASK_VMAXU_VV: u32 = 0xfc00707f;
2170pub const MATCH_VMAXU_VX: u32 = 0x18004057;
2171pub const MASK_VMAXU_VX: u32 = 0xfc00707f;
2172pub const MATCH_VMERGE_VIM: u32 = 0x5c003057;
2173pub const MASK_VMERGE_VIM: u32 = 0xfe00707f;
2174pub const MATCH_VMERGE_VVM: u32 = 0x5c000057;
2175pub const MASK_VMERGE_VVM: u32 = 0xfe00707f;
2176pub const MATCH_VMERGE_VXM: u32 = 0x5c004057;
2177pub const MASK_VMERGE_VXM: u32 = 0xfe00707f;
2178pub const MATCH_VMFEQ_VF: u32 = 0x60005057;
2179pub const MASK_VMFEQ_VF: u32 = 0xfc00707f;
2180pub const MATCH_VMFEQ_VV: u32 = 0x60001057;
2181pub const MASK_VMFEQ_VV: u32 = 0xfc00707f;
2182pub const MATCH_VMFGE_VF: u32 = 0x7c005057;
2183pub const MASK_VMFGE_VF: u32 = 0xfc00707f;
2184pub const MATCH_VMFGT_VF: u32 = 0x74005057;
2185pub const MASK_VMFGT_VF: u32 = 0xfc00707f;
2186pub const MATCH_VMFLE_VF: u32 = 0x64005057;
2187pub const MASK_VMFLE_VF: u32 = 0xfc00707f;
2188pub const MATCH_VMFLE_VV: u32 = 0x64001057;
2189pub const MASK_VMFLE_VV: u32 = 0xfc00707f;
2190pub const MATCH_VMFLT_VF: u32 = 0x6c005057;
2191pub const MASK_VMFLT_VF: u32 = 0xfc00707f;
2192pub const MATCH_VMFLT_VV: u32 = 0x6c001057;
2193pub const MASK_VMFLT_VV: u32 = 0xfc00707f;
2194pub const MATCH_VMFNE_VF: u32 = 0x70005057;
2195pub const MASK_VMFNE_VF: u32 = 0xfc00707f;
2196pub const MATCH_VMFNE_VV: u32 = 0x70001057;
2197pub const MASK_VMFNE_VV: u32 = 0xfc00707f;
2198pub const MATCH_VMIN_VV: u32 = 0x14000057;
2199pub const MASK_VMIN_VV: u32 = 0xfc00707f;
2200pub const MATCH_VMIN_VX: u32 = 0x14004057;
2201pub const MASK_VMIN_VX: u32 = 0xfc00707f;
2202pub const MATCH_VMINU_VV: u32 = 0x10000057;
2203pub const MASK_VMINU_VV: u32 = 0xfc00707f;
2204pub const MATCH_VMINU_VX: u32 = 0x10004057;
2205pub const MASK_VMINU_VX: u32 = 0xfc00707f;
2206pub const MATCH_VMNAND_MM: u32 = 0x76002057;
2207pub const MASK_VMNAND_MM: u32 = 0xfe00707f;
2208pub const MATCH_VMNOR_MM: u32 = 0x7a002057;
2209pub const MASK_VMNOR_MM: u32 = 0xfe00707f;
2210pub const MATCH_VMOR_MM: u32 = 0x6a002057;
2211pub const MASK_VMOR_MM: u32 = 0xfe00707f;
2212pub const MATCH_VMORN_MM: u32 = 0x72002057;
2213pub const MASK_VMORN_MM: u32 = 0xfe00707f;
2214pub const MATCH_VMORNOT_MM: u32 = 0x70002057;
2215pub const MASK_VMORNOT_MM: u32 = 0xfc00707f;
2216pub const MATCH_VMSBC_VV: u32 = 0x4e000057;
2217pub const MASK_VMSBC_VV: u32 = 0xfe00707f;
2218pub const MATCH_VMSBC_VVM: u32 = 0x4c000057;
2219pub const MASK_VMSBC_VVM: u32 = 0xfe00707f;
2220pub const MATCH_VMSBC_VX: u32 = 0x4e004057;
2221pub const MASK_VMSBC_VX: u32 = 0xfe00707f;
2222pub const MATCH_VMSBC_VXM: u32 = 0x4c004057;
2223pub const MASK_VMSBC_VXM: u32 = 0xfe00707f;
2224pub const MATCH_VMSBF_M: u32 = 0x5000a057;
2225pub const MASK_VMSBF_M: u32 = 0xfc0ff07f;
2226pub const MATCH_VMSEQ_VI: u32 = 0x60003057;
2227pub const MASK_VMSEQ_VI: u32 = 0xfc00707f;
2228pub const MATCH_VMSEQ_VV: u32 = 0x60000057;
2229pub const MASK_VMSEQ_VV: u32 = 0xfc00707f;
2230pub const MATCH_VMSEQ_VX: u32 = 0x60004057;
2231pub const MASK_VMSEQ_VX: u32 = 0xfc00707f;
2232pub const MATCH_VMSGT_VI: u32 = 0x7c003057;
2233pub const MASK_VMSGT_VI: u32 = 0xfc00707f;
2234pub const MATCH_VMSGT_VX: u32 = 0x7c004057;
2235pub const MASK_VMSGT_VX: u32 = 0xfc00707f;
2236pub const MATCH_VMSGTU_VI: u32 = 0x78003057;
2237pub const MASK_VMSGTU_VI: u32 = 0xfc00707f;
2238pub const MATCH_VMSGTU_VX: u32 = 0x78004057;
2239pub const MASK_VMSGTU_VX: u32 = 0xfc00707f;
2240pub const MATCH_VMSIF_M: u32 = 0x5001a057;
2241pub const MASK_VMSIF_M: u32 = 0xfc0ff07f;
2242pub const MATCH_VMSLE_VI: u32 = 0x74003057;
2243pub const MASK_VMSLE_VI: u32 = 0xfc00707f;
2244pub const MATCH_VMSLE_VV: u32 = 0x74000057;
2245pub const MASK_VMSLE_VV: u32 = 0xfc00707f;
2246pub const MATCH_VMSLE_VX: u32 = 0x74004057;
2247pub const MASK_VMSLE_VX: u32 = 0xfc00707f;
2248pub const MATCH_VMSLEU_VI: u32 = 0x70003057;
2249pub const MASK_VMSLEU_VI: u32 = 0xfc00707f;
2250pub const MATCH_VMSLEU_VV: u32 = 0x70000057;
2251pub const MASK_VMSLEU_VV: u32 = 0xfc00707f;
2252pub const MATCH_VMSLEU_VX: u32 = 0x70004057;
2253pub const MASK_VMSLEU_VX: u32 = 0xfc00707f;
2254pub const MATCH_VMSLT_VV: u32 = 0x6c000057;
2255pub const MASK_VMSLT_VV: u32 = 0xfc00707f;
2256pub const MATCH_VMSLT_VX: u32 = 0x6c004057;
2257pub const MASK_VMSLT_VX: u32 = 0xfc00707f;
2258pub const MATCH_VMSLTU_VV: u32 = 0x68000057;
2259pub const MASK_VMSLTU_VV: u32 = 0xfc00707f;
2260pub const MATCH_VMSLTU_VX: u32 = 0x68004057;
2261pub const MASK_VMSLTU_VX: u32 = 0xfc00707f;
2262pub const MATCH_VMSNE_VI: u32 = 0x64003057;
2263pub const MASK_VMSNE_VI: u32 = 0xfc00707f;
2264pub const MATCH_VMSNE_VV: u32 = 0x64000057;
2265pub const MASK_VMSNE_VV: u32 = 0xfc00707f;
2266pub const MATCH_VMSNE_VX: u32 = 0x64004057;
2267pub const MASK_VMSNE_VX: u32 = 0xfc00707f;
2268pub const MATCH_VMSOF_M: u32 = 0x50012057;
2269pub const MASK_VMSOF_M: u32 = 0xfc0ff07f;
2270pub const MATCH_VMUL_VV: u32 = 0x94002057;
2271pub const MASK_VMUL_VV: u32 = 0xfc00707f;
2272pub const MATCH_VMUL_VX: u32 = 0x94006057;
2273pub const MASK_VMUL_VX: u32 = 0xfc00707f;
2274pub const MATCH_VMULH_VV: u32 = 0x9c002057;
2275pub const MASK_VMULH_VV: u32 = 0xfc00707f;
2276pub const MATCH_VMULH_VX: u32 = 0x9c006057;
2277pub const MASK_VMULH_VX: u32 = 0xfc00707f;
2278pub const MATCH_VMULHSU_VV: u32 = 0x98002057;
2279pub const MASK_VMULHSU_VV: u32 = 0xfc00707f;
2280pub const MATCH_VMULHSU_VX: u32 = 0x98006057;
2281pub const MASK_VMULHSU_VX: u32 = 0xfc00707f;
2282pub const MATCH_VMULHU_VV: u32 = 0x90002057;
2283pub const MASK_VMULHU_VV: u32 = 0xfc00707f;
2284pub const MATCH_VMULHU_VX: u32 = 0x90006057;
2285pub const MASK_VMULHU_VX: u32 = 0xfc00707f;
2286pub const MATCH_VMV1R_V: u32 = 0x9e003057;
2287pub const MASK_VMV1R_V: u32 = 0xfe0ff07f;
2288pub const MATCH_VMV2R_V: u32 = 0x9e00b057;
2289pub const MASK_VMV2R_V: u32 = 0xfe0ff07f;
2290pub const MATCH_VMV4R_V: u32 = 0x9e01b057;
2291pub const MASK_VMV4R_V: u32 = 0xfe0ff07f;
2292pub const MATCH_VMV8R_V: u32 = 0x9e03b057;
2293pub const MASK_VMV8R_V: u32 = 0xfe0ff07f;
2294pub const MATCH_VMV_S_X: u32 = 0x42006057;
2295pub const MASK_VMV_S_X: u32 = 0xfff0707f;
2296pub const MATCH_VMV_V_I: u32 = 0x5e003057;
2297pub const MASK_VMV_V_I: u32 = 0xfff0707f;
2298pub const MATCH_VMV_V_V: u32 = 0x5e000057;
2299pub const MASK_VMV_V_V: u32 = 0xfff0707f;
2300pub const MATCH_VMV_V_X: u32 = 0x5e004057;
2301pub const MASK_VMV_V_X: u32 = 0xfff0707f;
2302pub const MATCH_VMV_X_S: u32 = 0x42002057;
2303pub const MASK_VMV_X_S: u32 = 0xfe0ff07f;
2304pub const MATCH_VMXNOR_MM: u32 = 0x7e002057;
2305pub const MASK_VMXNOR_MM: u32 = 0xfe00707f;
2306pub const MATCH_VMXOR_MM: u32 = 0x6e002057;
2307pub const MASK_VMXOR_MM: u32 = 0xfe00707f;
2308pub const MATCH_VNCLIP_WI: u32 = 0xbc003057;
2309pub const MASK_VNCLIP_WI: u32 = 0xfc00707f;
2310pub const MATCH_VNCLIP_WV: u32 = 0xbc000057;
2311pub const MASK_VNCLIP_WV: u32 = 0xfc00707f;
2312pub const MATCH_VNCLIP_WX: u32 = 0xbc004057;
2313pub const MASK_VNCLIP_WX: u32 = 0xfc00707f;
2314pub const MATCH_VNCLIPU_WI: u32 = 0xb8003057;
2315pub const MASK_VNCLIPU_WI: u32 = 0xfc00707f;
2316pub const MATCH_VNCLIPU_WV: u32 = 0xb8000057;
2317pub const MASK_VNCLIPU_WV: u32 = 0xfc00707f;
2318pub const MATCH_VNCLIPU_WX: u32 = 0xb8004057;
2319pub const MASK_VNCLIPU_WX: u32 = 0xfc00707f;
2320pub const MATCH_VNMSAC_VV: u32 = 0xbc002057;
2321pub const MASK_VNMSAC_VV: u32 = 0xfc00707f;
2322pub const MATCH_VNMSAC_VX: u32 = 0xbc006057;
2323pub const MASK_VNMSAC_VX: u32 = 0xfc00707f;
2324pub const MATCH_VNMSUB_VV: u32 = 0xac002057;
2325pub const MASK_VNMSUB_VV: u32 = 0xfc00707f;
2326pub const MATCH_VNMSUB_VX: u32 = 0xac006057;
2327pub const MASK_VNMSUB_VX: u32 = 0xfc00707f;
2328pub const MATCH_VNSRA_WI: u32 = 0xb4003057;
2329pub const MASK_VNSRA_WI: u32 = 0xfc00707f;
2330pub const MATCH_VNSRA_WV: u32 = 0xb4000057;
2331pub const MASK_VNSRA_WV: u32 = 0xfc00707f;
2332pub const MATCH_VNSRA_WX: u32 = 0xb4004057;
2333pub const MASK_VNSRA_WX: u32 = 0xfc00707f;
2334pub const MATCH_VNSRL_WI: u32 = 0xb0003057;
2335pub const MASK_VNSRL_WI: u32 = 0xfc00707f;
2336pub const MATCH_VNSRL_WV: u32 = 0xb0000057;
2337pub const MASK_VNSRL_WV: u32 = 0xfc00707f;
2338pub const MATCH_VNSRL_WX: u32 = 0xb0004057;
2339pub const MASK_VNSRL_WX: u32 = 0xfc00707f;
2340pub const MATCH_VOR_VI: u32 = 0x28003057;
2341pub const MASK_VOR_VI: u32 = 0xfc00707f;
2342pub const MATCH_VOR_VV: u32 = 0x28000057;
2343pub const MASK_VOR_VV: u32 = 0xfc00707f;
2344pub const MATCH_VOR_VX: u32 = 0x28004057;
2345pub const MASK_VOR_VX: u32 = 0xfc00707f;
2346pub const MATCH_VPOPC_M: u32 = 0x40082057;
2347pub const MASK_VPOPC_M: u32 = 0xfc0ff07f;
2348pub const MATCH_VREDAND_VS: u32 = 0x4002057;
2349pub const MASK_VREDAND_VS: u32 = 0xfc00707f;
2350pub const MATCH_VREDMAX_VS: u32 = 0x1c002057;
2351pub const MASK_VREDMAX_VS: u32 = 0xfc00707f;
2352pub const MATCH_VREDMAXU_VS: u32 = 0x18002057;
2353pub const MASK_VREDMAXU_VS: u32 = 0xfc00707f;
2354pub const MATCH_VREDMIN_VS: u32 = 0x14002057;
2355pub const MASK_VREDMIN_VS: u32 = 0xfc00707f;
2356pub const MATCH_VREDMINU_VS: u32 = 0x10002057;
2357pub const MASK_VREDMINU_VS: u32 = 0xfc00707f;
2358pub const MATCH_VREDOR_VS: u32 = 0x8002057;
2359pub const MASK_VREDOR_VS: u32 = 0xfc00707f;
2360pub const MATCH_VREDSUM_VS: u32 = 0x2057;
2361pub const MASK_VREDSUM_VS: u32 = 0xfc00707f;
2362pub const MATCH_VREDXOR_VS: u32 = 0xc002057;
2363pub const MASK_VREDXOR_VS: u32 = 0xfc00707f;
2364pub const MATCH_VREM_VV: u32 = 0x8c002057;
2365pub const MASK_VREM_VV: u32 = 0xfc00707f;
2366pub const MATCH_VREM_VX: u32 = 0x8c006057;
2367pub const MASK_VREM_VX: u32 = 0xfc00707f;
2368pub const MATCH_VREMU_VV: u32 = 0x88002057;
2369pub const MASK_VREMU_VV: u32 = 0xfc00707f;
2370pub const MATCH_VREMU_VX: u32 = 0x88006057;
2371pub const MASK_VREMU_VX: u32 = 0xfc00707f;
2372pub const MATCH_VREV8_V: u32 = 0x4804a057;
2373pub const MASK_VREV8_V: u32 = 0xfc0ff07f;
2374pub const MATCH_VRGATHER_VI: u32 = 0x30003057;
2375pub const MASK_VRGATHER_VI: u32 = 0xfc00707f;
2376pub const MATCH_VRGATHER_VV: u32 = 0x30000057;
2377pub const MASK_VRGATHER_VV: u32 = 0xfc00707f;
2378pub const MATCH_VRGATHER_VX: u32 = 0x30004057;
2379pub const MASK_VRGATHER_VX: u32 = 0xfc00707f;
2380pub const MATCH_VRGATHEREI16_VV: u32 = 0x38000057;
2381pub const MASK_VRGATHEREI16_VV: u32 = 0xfc00707f;
2382pub const MATCH_VROL_VV: u32 = 0x54000057;
2383pub const MASK_VROL_VV: u32 = 0xfc00707f;
2384pub const MATCH_VROL_VX: u32 = 0x54004057;
2385pub const MASK_VROL_VX: u32 = 0xfc00707f;
2386pub const MATCH_VROR_VI: u32 = 0x50003057;
2387pub const MASK_VROR_VI: u32 = 0xf800707f;
2388pub const MATCH_VROR_VV: u32 = 0x50000057;
2389pub const MASK_VROR_VV: u32 = 0xfc00707f;
2390pub const MATCH_VROR_VX: u32 = 0x50004057;
2391pub const MASK_VROR_VX: u32 = 0xfc00707f;
2392pub const MATCH_VRSUB_VI: u32 = 0xc003057;
2393pub const MASK_VRSUB_VI: u32 = 0xfc00707f;
2394pub const MATCH_VRSUB_VX: u32 = 0xc004057;
2395pub const MASK_VRSUB_VX: u32 = 0xfc00707f;
2396pub const MATCH_VS1R_V: u32 = 0x2800027;
2397pub const MASK_VS1R_V: u32 = 0xfff0707f;
2398pub const MATCH_VS2R_V: u32 = 0x22800027;
2399pub const MASK_VS2R_V: u32 = 0xfff0707f;
2400pub const MATCH_VS4R_V: u32 = 0x62800027;
2401pub const MASK_VS4R_V: u32 = 0xfff0707f;
2402pub const MATCH_VS8R_V: u32 = 0xe2800027;
2403pub const MASK_VS8R_V: u32 = 0xfff0707f;
2404pub const MATCH_VSADD_VI: u32 = 0x84003057;
2405pub const MASK_VSADD_VI: u32 = 0xfc00707f;
2406pub const MATCH_VSADD_VV: u32 = 0x84000057;
2407pub const MASK_VSADD_VV: u32 = 0xfc00707f;
2408pub const MATCH_VSADD_VX: u32 = 0x84004057;
2409pub const MASK_VSADD_VX: u32 = 0xfc00707f;
2410pub const MATCH_VSADDU_VI: u32 = 0x80003057;
2411pub const MASK_VSADDU_VI: u32 = 0xfc00707f;
2412pub const MATCH_VSADDU_VV: u32 = 0x80000057;
2413pub const MASK_VSADDU_VV: u32 = 0xfc00707f;
2414pub const MATCH_VSADDU_VX: u32 = 0x80004057;
2415pub const MASK_VSADDU_VX: u32 = 0xfc00707f;
2416pub const MATCH_VSBC_VVM: u32 = 0x48000057;
2417pub const MASK_VSBC_VVM: u32 = 0xfe00707f;
2418pub const MATCH_VSBC_VXM: u32 = 0x48004057;
2419pub const MASK_VSBC_VXM: u32 = 0xfe00707f;
2420pub const MATCH_VSE16_V: u32 = 0x5027;
2421pub const MASK_VSE16_V: u32 = 0x1df0707f;
2422pub const MATCH_VSE1_V: u32 = 0x2b00027;
2423pub const MASK_VSE1_V: u32 = 0xfff0707f;
2424pub const MATCH_VSE32_V: u32 = 0x6027;
2425pub const MASK_VSE32_V: u32 = 0x1df0707f;
2426pub const MATCH_VSE64_V: u32 = 0x7027;
2427pub const MASK_VSE64_V: u32 = 0x1df0707f;
2428pub const MATCH_VSE8_V: u32 = 0x27;
2429pub const MASK_VSE8_V: u32 = 0x1df0707f;
2430pub const MATCH_VSETIVLI: u32 = 0xc0007057;
2431pub const MASK_VSETIVLI: u32 = 0xc000707f;
2432pub const MATCH_VSETVL: u32 = 0x80007057;
2433pub const MASK_VSETVL: u32 = 0xfe00707f;
2434pub const MATCH_VSETVLI: u32 = 0x7057;
2435pub const MASK_VSETVLI: u32 = 0x8000707f;
2436pub const MATCH_VSEXT_VF2: u32 = 0x4803a057;
2437pub const MASK_VSEXT_VF2: u32 = 0xfc0ff07f;
2438pub const MATCH_VSEXT_VF4: u32 = 0x4802a057;
2439pub const MASK_VSEXT_VF4: u32 = 0xfc0ff07f;
2440pub const MATCH_VSEXT_VF8: u32 = 0x4801a057;
2441pub const MASK_VSEXT_VF8: u32 = 0xfc0ff07f;
2442pub const MATCH_VSHA2CH_VV: u32 = 0xba002077;
2443pub const MASK_VSHA2CH_VV: u32 = 0xfe00707f;
2444pub const MATCH_VSHA2CL_VV: u32 = 0xbe002077;
2445pub const MASK_VSHA2CL_VV: u32 = 0xfe00707f;
2446pub const MATCH_VSHA2MS_VV: u32 = 0xb6002077;
2447pub const MASK_VSHA2MS_VV: u32 = 0xfe00707f;
2448pub const MATCH_VSLIDE1DOWN_VX: u32 = 0x3c006057;
2449pub const MASK_VSLIDE1DOWN_VX: u32 = 0xfc00707f;
2450pub const MATCH_VSLIDE1UP_VX: u32 = 0x38006057;
2451pub const MASK_VSLIDE1UP_VX: u32 = 0xfc00707f;
2452pub const MATCH_VSLIDEDOWN_VI: u32 = 0x3c003057;
2453pub const MASK_VSLIDEDOWN_VI: u32 = 0xfc00707f;
2454pub const MATCH_VSLIDEDOWN_VX: u32 = 0x3c004057;
2455pub const MASK_VSLIDEDOWN_VX: u32 = 0xfc00707f;
2456pub const MATCH_VSLIDEUP_VI: u32 = 0x38003057;
2457pub const MASK_VSLIDEUP_VI: u32 = 0xfc00707f;
2458pub const MATCH_VSLIDEUP_VX: u32 = 0x38004057;
2459pub const MASK_VSLIDEUP_VX: u32 = 0xfc00707f;
2460pub const MATCH_VSLL_VI: u32 = 0x94003057;
2461pub const MASK_VSLL_VI: u32 = 0xfc00707f;
2462pub const MATCH_VSLL_VV: u32 = 0x94000057;
2463pub const MASK_VSLL_VV: u32 = 0xfc00707f;
2464pub const MATCH_VSLL_VX: u32 = 0x94004057;
2465pub const MASK_VSLL_VX: u32 = 0xfc00707f;
2466pub const MATCH_VSM3C_VI: u32 = 0xae002077;
2467pub const MASK_VSM3C_VI: u32 = 0xfe00707f;
2468pub const MATCH_VSM3ME_VV: u32 = 0x82002077;
2469pub const MASK_VSM3ME_VV: u32 = 0xfe00707f;
2470pub const MATCH_VSM4K_VI: u32 = 0x86002077;
2471pub const MASK_VSM4K_VI: u32 = 0xfe00707f;
2472pub const MATCH_VSM4R_VS: u32 = 0xa6082077;
2473pub const MASK_VSM4R_VS: u32 = 0xfe0ff07f;
2474pub const MATCH_VSM4R_VV: u32 = 0xa2082077;
2475pub const MASK_VSM4R_VV: u32 = 0xfe0ff07f;
2476pub const MATCH_VSM_V: u32 = 0x2b00027;
2477pub const MASK_VSM_V: u32 = 0xfff0707f;
2478pub const MATCH_VSMUL_VV: u32 = 0x9c000057;
2479pub const MASK_VSMUL_VV: u32 = 0xfc00707f;
2480pub const MATCH_VSMUL_VX: u32 = 0x9c004057;
2481pub const MASK_VSMUL_VX: u32 = 0xfc00707f;
2482pub const MATCH_VSOXEI16_V: u32 = 0xc005027;
2483pub const MASK_VSOXEI16_V: u32 = 0x1c00707f;
2484pub const MATCH_VSOXEI32_V: u32 = 0xc006027;
2485pub const MASK_VSOXEI32_V: u32 = 0x1c00707f;
2486pub const MATCH_VSOXEI64_V: u32 = 0xc007027;
2487pub const MASK_VSOXEI64_V: u32 = 0x1c00707f;
2488pub const MATCH_VSOXEI8_V: u32 = 0xc000027;
2489pub const MASK_VSOXEI8_V: u32 = 0x1c00707f;
2490pub const MATCH_VSRA_VI: u32 = 0xa4003057;
2491pub const MASK_VSRA_VI: u32 = 0xfc00707f;
2492pub const MATCH_VSRA_VV: u32 = 0xa4000057;
2493pub const MASK_VSRA_VV: u32 = 0xfc00707f;
2494pub const MATCH_VSRA_VX: u32 = 0xa4004057;
2495pub const MASK_VSRA_VX: u32 = 0xfc00707f;
2496pub const MATCH_VSRL_VI: u32 = 0xa0003057;
2497pub const MASK_VSRL_VI: u32 = 0xfc00707f;
2498pub const MATCH_VSRL_VV: u32 = 0xa0000057;
2499pub const MASK_VSRL_VV: u32 = 0xfc00707f;
2500pub const MATCH_VSRL_VX: u32 = 0xa0004057;
2501pub const MASK_VSRL_VX: u32 = 0xfc00707f;
2502pub const MATCH_VSSE16_V: u32 = 0x8005027;
2503pub const MASK_VSSE16_V: u32 = 0x1c00707f;
2504pub const MATCH_VSSE32_V: u32 = 0x8006027;
2505pub const MASK_VSSE32_V: u32 = 0x1c00707f;
2506pub const MATCH_VSSE64_V: u32 = 0x8007027;
2507pub const MASK_VSSE64_V: u32 = 0x1c00707f;
2508pub const MATCH_VSSE8_V: u32 = 0x8000027;
2509pub const MASK_VSSE8_V: u32 = 0x1c00707f;
2510pub const MATCH_VSSRA_VI: u32 = 0xac003057;
2511pub const MASK_VSSRA_VI: u32 = 0xfc00707f;
2512pub const MATCH_VSSRA_VV: u32 = 0xac000057;
2513pub const MASK_VSSRA_VV: u32 = 0xfc00707f;
2514pub const MATCH_VSSRA_VX: u32 = 0xac004057;
2515pub const MASK_VSSRA_VX: u32 = 0xfc00707f;
2516pub const MATCH_VSSRL_VI: u32 = 0xa8003057;
2517pub const MASK_VSSRL_VI: u32 = 0xfc00707f;
2518pub const MATCH_VSSRL_VV: u32 = 0xa8000057;
2519pub const MASK_VSSRL_VV: u32 = 0xfc00707f;
2520pub const MATCH_VSSRL_VX: u32 = 0xa8004057;
2521pub const MASK_VSSRL_VX: u32 = 0xfc00707f;
2522pub const MATCH_VSSUB_VV: u32 = 0x8c000057;
2523pub const MASK_VSSUB_VV: u32 = 0xfc00707f;
2524pub const MATCH_VSSUB_VX: u32 = 0x8c004057;
2525pub const MASK_VSSUB_VX: u32 = 0xfc00707f;
2526pub const MATCH_VSSUBU_VV: u32 = 0x88000057;
2527pub const MASK_VSSUBU_VV: u32 = 0xfc00707f;
2528pub const MATCH_VSSUBU_VX: u32 = 0x88004057;
2529pub const MASK_VSSUBU_VX: u32 = 0xfc00707f;
2530pub const MATCH_VSUB_VV: u32 = 0x8000057;
2531pub const MASK_VSUB_VV: u32 = 0xfc00707f;
2532pub const MATCH_VSUB_VX: u32 = 0x8004057;
2533pub const MASK_VSUB_VX: u32 = 0xfc00707f;
2534pub const MATCH_VSUXEI16_V: u32 = 0x4005027;
2535pub const MASK_VSUXEI16_V: u32 = 0x1c00707f;
2536pub const MATCH_VSUXEI32_V: u32 = 0x4006027;
2537pub const MASK_VSUXEI32_V: u32 = 0x1c00707f;
2538pub const MATCH_VSUXEI64_V: u32 = 0x4007027;
2539pub const MASK_VSUXEI64_V: u32 = 0x1c00707f;
2540pub const MATCH_VSUXEI8_V: u32 = 0x4000027;
2541pub const MASK_VSUXEI8_V: u32 = 0x1c00707f;
2542pub const MATCH_VWADD_VV: u32 = 0xc4002057;
2543pub const MASK_VWADD_VV: u32 = 0xfc00707f;
2544pub const MATCH_VWADD_VX: u32 = 0xc4006057;
2545pub const MASK_VWADD_VX: u32 = 0xfc00707f;
2546pub const MATCH_VWADD_WV: u32 = 0xd4002057;
2547pub const MASK_VWADD_WV: u32 = 0xfc00707f;
2548pub const MATCH_VWADD_WX: u32 = 0xd4006057;
2549pub const MASK_VWADD_WX: u32 = 0xfc00707f;
2550pub const MATCH_VWADDU_VV: u32 = 0xc0002057;
2551pub const MASK_VWADDU_VV: u32 = 0xfc00707f;
2552pub const MATCH_VWADDU_VX: u32 = 0xc0006057;
2553pub const MASK_VWADDU_VX: u32 = 0xfc00707f;
2554pub const MATCH_VWADDU_WV: u32 = 0xd0002057;
2555pub const MASK_VWADDU_WV: u32 = 0xfc00707f;
2556pub const MATCH_VWADDU_WX: u32 = 0xd0006057;
2557pub const MASK_VWADDU_WX: u32 = 0xfc00707f;
2558pub const MATCH_VWMACC_VV: u32 = 0xf4002057;
2559pub const MASK_VWMACC_VV: u32 = 0xfc00707f;
2560pub const MATCH_VWMACC_VX: u32 = 0xf4006057;
2561pub const MASK_VWMACC_VX: u32 = 0xfc00707f;
2562pub const MATCH_VWMACCSU_VV: u32 = 0xfc002057;
2563pub const MASK_VWMACCSU_VV: u32 = 0xfc00707f;
2564pub const MATCH_VWMACCSU_VX: u32 = 0xfc006057;
2565pub const MASK_VWMACCSU_VX: u32 = 0xfc00707f;
2566pub const MATCH_VWMACCU_VV: u32 = 0xf0002057;
2567pub const MASK_VWMACCU_VV: u32 = 0xfc00707f;
2568pub const MATCH_VWMACCU_VX: u32 = 0xf0006057;
2569pub const MASK_VWMACCU_VX: u32 = 0xfc00707f;
2570pub const MATCH_VWMACCUS_VX: u32 = 0xf8006057;
2571pub const MASK_VWMACCUS_VX: u32 = 0xfc00707f;
2572pub const MATCH_VWMUL_VV: u32 = 0xec002057;
2573pub const MASK_VWMUL_VV: u32 = 0xfc00707f;
2574pub const MATCH_VWMUL_VX: u32 = 0xec006057;
2575pub const MASK_VWMUL_VX: u32 = 0xfc00707f;
2576pub const MATCH_VWMULSU_VV: u32 = 0xe8002057;
2577pub const MASK_VWMULSU_VV: u32 = 0xfc00707f;
2578pub const MATCH_VWMULSU_VX: u32 = 0xe8006057;
2579pub const MASK_VWMULSU_VX: u32 = 0xfc00707f;
2580pub const MATCH_VWMULU_VV: u32 = 0xe0002057;
2581pub const MASK_VWMULU_VV: u32 = 0xfc00707f;
2582pub const MATCH_VWMULU_VX: u32 = 0xe0006057;
2583pub const MASK_VWMULU_VX: u32 = 0xfc00707f;
2584pub const MATCH_VWREDSUM_VS: u32 = 0xc4000057;
2585pub const MASK_VWREDSUM_VS: u32 = 0xfc00707f;
2586pub const MATCH_VWREDSUMU_VS: u32 = 0xc0000057;
2587pub const MASK_VWREDSUMU_VS: u32 = 0xfc00707f;
2588pub const MATCH_VWSLL_VI: u32 = 0xd4003057;
2589pub const MASK_VWSLL_VI: u32 = 0xfc00707f;
2590pub const MATCH_VWSLL_VV: u32 = 0xd4000057;
2591pub const MASK_VWSLL_VV: u32 = 0xfc00707f;
2592pub const MATCH_VWSLL_VX: u32 = 0xd4004057;
2593pub const MASK_VWSLL_VX: u32 = 0xfc00707f;
2594pub const MATCH_VWSUB_VV: u32 = 0xcc002057;
2595pub const MASK_VWSUB_VV: u32 = 0xfc00707f;
2596pub const MATCH_VWSUB_VX: u32 = 0xcc006057;
2597pub const MASK_VWSUB_VX: u32 = 0xfc00707f;
2598pub const MATCH_VWSUB_WV: u32 = 0xdc002057;
2599pub const MASK_VWSUB_WV: u32 = 0xfc00707f;
2600pub const MATCH_VWSUB_WX: u32 = 0xdc006057;
2601pub const MASK_VWSUB_WX: u32 = 0xfc00707f;
2602pub const MATCH_VWSUBU_VV: u32 = 0xc8002057;
2603pub const MASK_VWSUBU_VV: u32 = 0xfc00707f;
2604pub const MATCH_VWSUBU_VX: u32 = 0xc8006057;
2605pub const MASK_VWSUBU_VX: u32 = 0xfc00707f;
2606pub const MATCH_VWSUBU_WV: u32 = 0xd8002057;
2607pub const MASK_VWSUBU_WV: u32 = 0xfc00707f;
2608pub const MATCH_VWSUBU_WX: u32 = 0xd8006057;
2609pub const MASK_VWSUBU_WX: u32 = 0xfc00707f;
2610pub const MATCH_VXOR_VI: u32 = 0x2c003057;
2611pub const MASK_VXOR_VI: u32 = 0xfc00707f;
2612pub const MATCH_VXOR_VV: u32 = 0x2c000057;
2613pub const MASK_VXOR_VV: u32 = 0xfc00707f;
2614pub const MATCH_VXOR_VX: u32 = 0x2c004057;
2615pub const MASK_VXOR_VX: u32 = 0xfc00707f;
2616pub const MATCH_VZEXT_VF2: u32 = 0x48032057;
2617pub const MASK_VZEXT_VF2: u32 = 0xfc0ff07f;
2618pub const MATCH_VZEXT_VF4: u32 = 0x48022057;
2619pub const MASK_VZEXT_VF4: u32 = 0xfc0ff07f;
2620pub const MATCH_VZEXT_VF8: u32 = 0x48012057;
2621pub const MASK_VZEXT_VF8: u32 = 0xfc0ff07f;
2622pub const MATCH_WFI: u32 = 0x10500073;
2623pub const MASK_WFI: u32 = 0xffffffff;
2624pub const MATCH_WRS_NTO: u32 = 0xd00073;
2625pub const MASK_WRS_NTO: u32 = 0xffffffff;
2626pub const MATCH_WRS_STO: u32 = 0x1d00073;
2627pub const MASK_WRS_STO: u32 = 0xffffffff;
2628pub const MATCH_XNOR: u32 = 0x40004033;
2629pub const MASK_XNOR: u32 = 0xfe00707f;
2630pub const MATCH_XOR: u32 = 0x4033;
2631pub const MASK_XOR: u32 = 0xfe00707f;
2632pub const MATCH_XORI: u32 = 0x4013;
2633pub const MASK_XORI: u32 = 0x707f;
2634pub const MATCH_XPERM4: u32 = 0x28002033;
2635pub const MASK_XPERM4: u32 = 0xfe00707f;
2636pub const MATCH_XPERM8: u32 = 0x28004033;
2637pub const MASK_XPERM8: u32 = 0xfe00707f;
2638pub const MATCH_ZEXT_B: u32 = 0xff07013;
2639pub const MASK_ZEXT_B: u32 = 0xfff0707f;
2640pub const MATCH_ZEXT_H: u32 = 0x800403b;
2641pub const MASK_ZEXT_H: u32 = 0xfff0707f;
2642pub const MATCH_ZEXT_H_RV32: u32 = 0x8004033;
2643pub const MASK_ZEXT_H_RV32: u32 = 0xfff0707f;
2644pub const MATCH_ZEXT_W: u32 = 0x800003b;
2645pub const MASK_ZEXT_W: u32 = 0xfff0707f;
2646pub const MATCH_ZIP: u32 = 0x8f01013;
2647pub const MASK_ZIP: u32 = 0xfff0707f;
2648pub const CSR_FFLAGS: u16 = 0x1;
2649pub const CSR_FRM: u16 = 0x2;
2650pub const CSR_FCSR: u16 = 0x3;
2651pub const CSR_VSTART: u16 = 0x8;
2652pub const CSR_VXSAT: u16 = 0x9;
2653pub const CSR_VXRM: u16 = 0xa;
2654pub const CSR_VCSR: u16 = 0xf;
2655pub const CSR_SSP: u16 = 0x11;
2656pub const CSR_SEED: u16 = 0x15;
2657pub const CSR_JVT: u16 = 0x17;
2658pub const CSR_CYCLE: u16 = 0xc00;
2659pub const CSR_TIME: u16 = 0xc01;
2660pub const CSR_INSTRET: u16 = 0xc02;
2661pub const CSR_HPMCOUNTER3: u16 = 0xc03;
2662pub const CSR_HPMCOUNTER4: u16 = 0xc04;
2663pub const CSR_HPMCOUNTER5: u16 = 0xc05;
2664pub const CSR_HPMCOUNTER6: u16 = 0xc06;
2665pub const CSR_HPMCOUNTER7: u16 = 0xc07;
2666pub const CSR_HPMCOUNTER8: u16 = 0xc08;
2667pub const CSR_HPMCOUNTER9: u16 = 0xc09;
2668pub const CSR_HPMCOUNTER10: u16 = 0xc0a;
2669pub const CSR_HPMCOUNTER11: u16 = 0xc0b;
2670pub const CSR_HPMCOUNTER12: u16 = 0xc0c;
2671pub const CSR_HPMCOUNTER13: u16 = 0xc0d;
2672pub const CSR_HPMCOUNTER14: u16 = 0xc0e;
2673pub const CSR_HPMCOUNTER15: u16 = 0xc0f;
2674pub const CSR_HPMCOUNTER16: u16 = 0xc10;
2675pub const CSR_HPMCOUNTER17: u16 = 0xc11;
2676pub const CSR_HPMCOUNTER18: u16 = 0xc12;
2677pub const CSR_HPMCOUNTER19: u16 = 0xc13;
2678pub const CSR_HPMCOUNTER20: u16 = 0xc14;
2679pub const CSR_HPMCOUNTER21: u16 = 0xc15;
2680pub const CSR_HPMCOUNTER22: u16 = 0xc16;
2681pub const CSR_HPMCOUNTER23: u16 = 0xc17;
2682pub const CSR_HPMCOUNTER24: u16 = 0xc18;
2683pub const CSR_HPMCOUNTER25: u16 = 0xc19;
2684pub const CSR_HPMCOUNTER26: u16 = 0xc1a;
2685pub const CSR_HPMCOUNTER27: u16 = 0xc1b;
2686pub const CSR_HPMCOUNTER28: u16 = 0xc1c;
2687pub const CSR_HPMCOUNTER29: u16 = 0xc1d;
2688pub const CSR_HPMCOUNTER30: u16 = 0xc1e;
2689pub const CSR_HPMCOUNTER31: u16 = 0xc1f;
2690pub const CSR_VL: u16 = 0xc20;
2691pub const CSR_VTYPE: u16 = 0xc21;
2692pub const CSR_VLENB: u16 = 0xc22;
2693pub const CSR_SSTATUS: u16 = 0x100;
2694pub const CSR_SIE: u16 = 0x104;
2695pub const CSR_STVEC: u16 = 0x105;
2696pub const CSR_SCOUNTEREN: u16 = 0x106;
2697pub const CSR_SENVCFG: u16 = 0x10a;
2698pub const CSR_SSTATEEN0: u16 = 0x10c;
2699pub const CSR_SSTATEEN1: u16 = 0x10d;
2700pub const CSR_SSTATEEN2: u16 = 0x10e;
2701pub const CSR_SSTATEEN3: u16 = 0x10f;
2702pub const CSR_SCOUNTINHIBIT: u16 = 0x120;
2703pub const CSR_SSCRATCH: u16 = 0x140;
2704pub const CSR_SEPC: u16 = 0x141;
2705pub const CSR_SCAUSE: u16 = 0x142;
2706pub const CSR_STVAL: u16 = 0x143;
2707pub const CSR_SIP: u16 = 0x144;
2708pub const CSR_STIMECMP: u16 = 0x14d;
2709pub const CSR_SCTRCTL: u16 = 0x14e;
2710pub const CSR_SCTRSTATUS: u16 = 0x14f;
2711pub const CSR_SISELECT: u16 = 0x150;
2712pub const CSR_SIREG: u16 = 0x151;
2713pub const CSR_SIREG2: u16 = 0x152;
2714pub const CSR_SIREG3: u16 = 0x153;
2715pub const CSR_SIREG4: u16 = 0x155;
2716pub const CSR_SIREG5: u16 = 0x156;
2717pub const CSR_SIREG6: u16 = 0x157;
2718pub const CSR_STOPEI: u16 = 0x15c;
2719pub const CSR_SCTRDEPTH: u16 = 0x15f;
2720pub const CSR_SATP: u16 = 0x180;
2721pub const CSR_SRMCFG: u16 = 0x181;
2722pub const CSR_SPMPEN: u16 = 0x183;
2723pub const CSR_SCONTEXT: u16 = 0x5a8;
2724pub const CSR_VSSTATUS: u16 = 0x200;
2725pub const CSR_VSIE: u16 = 0x204;
2726pub const CSR_VSTVEC: u16 = 0x205;
2727pub const CSR_VSSCRATCH: u16 = 0x240;
2728pub const CSR_VSEPC: u16 = 0x241;
2729pub const CSR_VSCAUSE: u16 = 0x242;
2730pub const CSR_VSTVAL: u16 = 0x243;
2731pub const CSR_VSIP: u16 = 0x244;
2732pub const CSR_VSTIMECMP: u16 = 0x24d;
2733pub const CSR_VSCTRCTL: u16 = 0x24e;
2734pub const CSR_VSISELECT: u16 = 0x250;
2735pub const CSR_VSIREG: u16 = 0x251;
2736pub const CSR_VSIREG2: u16 = 0x252;
2737pub const CSR_VSIREG3: u16 = 0x253;
2738pub const CSR_VSIREG4: u16 = 0x255;
2739pub const CSR_VSIREG5: u16 = 0x256;
2740pub const CSR_VSIREG6: u16 = 0x257;
2741pub const CSR_VSTOPEI: u16 = 0x25c;
2742pub const CSR_VSATP: u16 = 0x280;
2743pub const CSR_HSTATUS: u16 = 0x600;
2744pub const CSR_HEDELEG: u16 = 0x602;
2745pub const CSR_HIDELEG: u16 = 0x603;
2746pub const CSR_HIE: u16 = 0x604;
2747pub const CSR_HTIMEDELTA: u16 = 0x605;
2748pub const CSR_HCOUNTEREN: u16 = 0x606;
2749pub const CSR_HGEIE: u16 = 0x607;
2750pub const CSR_HVIEN: u16 = 0x608;
2751pub const CSR_HVICTL: u16 = 0x609;
2752pub const CSR_HENVCFG: u16 = 0x60a;
2753pub const CSR_HSTATEEN0: u16 = 0x60c;
2754pub const CSR_HSTATEEN1: u16 = 0x60d;
2755pub const CSR_HSTATEEN2: u16 = 0x60e;
2756pub const CSR_HSTATEEN3: u16 = 0x60f;
2757pub const CSR_HTVAL: u16 = 0x643;
2758pub const CSR_HIP: u16 = 0x644;
2759pub const CSR_HVIP: u16 = 0x645;
2760pub const CSR_HVIPRIO1: u16 = 0x646;
2761pub const CSR_HVIPRIO2: u16 = 0x647;
2762pub const CSR_HTINST: u16 = 0x64a;
2763pub const CSR_HGATP: u16 = 0x680;
2764pub const CSR_HCONTEXT: u16 = 0x6a8;
2765pub const CSR_HGEIP: u16 = 0xe12;
2766pub const CSR_VSTOPI: u16 = 0xeb0;
2767pub const CSR_SCOUNTOVF: u16 = 0xda0;
2768pub const CSR_STOPI: u16 = 0xdb0;
2769pub const CSR_UTVT: u16 = 0x7;
2770pub const CSR_UNXTI: u16 = 0x45;
2771pub const CSR_UINTSTATUS: u16 = 0x46;
2772pub const CSR_USCRATCHCSW: u16 = 0x48;
2773pub const CSR_USCRATCHCSWL: u16 = 0x49;
2774pub const CSR_STVT: u16 = 0x107;
2775pub const CSR_SNXTI: u16 = 0x145;
2776pub const CSR_SINTSTATUS: u16 = 0x146;
2777pub const CSR_SSCRATCHCSW: u16 = 0x148;
2778pub const CSR_SSCRATCHCSWL: u16 = 0x149;
2779pub const CSR_MTVT: u16 = 0x307;
2780pub const CSR_MPMPDELEG: u16 = 0x316;
2781pub const CSR_MNXTI: u16 = 0x345;
2782pub const CSR_MINTSTATUS: u16 = 0x346;
2783pub const CSR_MSCRATCHCSW: u16 = 0x348;
2784pub const CSR_MSCRATCHCSWL: u16 = 0x349;
2785pub const CSR_MSTATUS: u16 = 0x300;
2786pub const CSR_MISA: u16 = 0x301;
2787pub const CSR_MEDELEG: u16 = 0x302;
2788pub const CSR_MIDELEG: u16 = 0x303;
2789pub const CSR_MIE: u16 = 0x304;
2790pub const CSR_MTVEC: u16 = 0x305;
2791pub const CSR_MCOUNTEREN: u16 = 0x306;
2792pub const CSR_MVIEN: u16 = 0x308;
2793pub const CSR_MVIP: u16 = 0x309;
2794pub const CSR_MENVCFG: u16 = 0x30a;
2795pub const CSR_MSTATEEN0: u16 = 0x30c;
2796pub const CSR_MSTATEEN1: u16 = 0x30d;
2797pub const CSR_MSTATEEN2: u16 = 0x30e;
2798pub const CSR_MSTATEEN3: u16 = 0x30f;
2799pub const CSR_MCOUNTINHIBIT: u16 = 0x320;
2800pub const CSR_MSCRATCH: u16 = 0x340;
2801pub const CSR_MEPC: u16 = 0x341;
2802pub const CSR_MCAUSE: u16 = 0x342;
2803pub const CSR_MTVAL: u16 = 0x343;
2804pub const CSR_MIP: u16 = 0x344;
2805pub const CSR_MTINST: u16 = 0x34a;
2806pub const CSR_MTVAL2: u16 = 0x34b;
2807pub const CSR_MCTRCTL: u16 = 0x34e;
2808pub const CSR_MISELECT: u16 = 0x350;
2809pub const CSR_MIREG: u16 = 0x351;
2810pub const CSR_MIREG2: u16 = 0x352;
2811pub const CSR_MIREG3: u16 = 0x353;
2812pub const CSR_MIREG4: u16 = 0x355;
2813pub const CSR_MIREG5: u16 = 0x356;
2814pub const CSR_MIREG6: u16 = 0x357;
2815pub const CSR_MTOPEI: u16 = 0x35c;
2816pub const CSR_PMPCFG0: u16 = 0x3a0;
2817pub const CSR_PMPCFG1: u16 = 0x3a1;
2818pub const CSR_PMPCFG2: u16 = 0x3a2;
2819pub const CSR_PMPCFG3: u16 = 0x3a3;
2820pub const CSR_PMPCFG4: u16 = 0x3a4;
2821pub const CSR_PMPCFG5: u16 = 0x3a5;
2822pub const CSR_PMPCFG6: u16 = 0x3a6;
2823pub const CSR_PMPCFG7: u16 = 0x3a7;
2824pub const CSR_PMPCFG8: u16 = 0x3a8;
2825pub const CSR_PMPCFG9: u16 = 0x3a9;
2826pub const CSR_PMPCFG10: u16 = 0x3aa;
2827pub const CSR_PMPCFG11: u16 = 0x3ab;
2828pub const CSR_PMPCFG12: u16 = 0x3ac;
2829pub const CSR_PMPCFG13: u16 = 0x3ad;
2830pub const CSR_PMPCFG14: u16 = 0x3ae;
2831pub const CSR_PMPCFG15: u16 = 0x3af;
2832pub const CSR_PMPADDR0: u16 = 0x3b0;
2833pub const CSR_PMPADDR1: u16 = 0x3b1;
2834pub const CSR_PMPADDR2: u16 = 0x3b2;
2835pub const CSR_PMPADDR3: u16 = 0x3b3;
2836pub const CSR_PMPADDR4: u16 = 0x3b4;
2837pub const CSR_PMPADDR5: u16 = 0x3b5;
2838pub const CSR_PMPADDR6: u16 = 0x3b6;
2839pub const CSR_PMPADDR7: u16 = 0x3b7;
2840pub const CSR_PMPADDR8: u16 = 0x3b8;
2841pub const CSR_PMPADDR9: u16 = 0x3b9;
2842pub const CSR_PMPADDR10: u16 = 0x3ba;
2843pub const CSR_PMPADDR11: u16 = 0x3bb;
2844pub const CSR_PMPADDR12: u16 = 0x3bc;
2845pub const CSR_PMPADDR13: u16 = 0x3bd;
2846pub const CSR_PMPADDR14: u16 = 0x3be;
2847pub const CSR_PMPADDR15: u16 = 0x3bf;
2848pub const CSR_PMPADDR16: u16 = 0x3c0;
2849pub const CSR_PMPADDR17: u16 = 0x3c1;
2850pub const CSR_PMPADDR18: u16 = 0x3c2;
2851pub const CSR_PMPADDR19: u16 = 0x3c3;
2852pub const CSR_PMPADDR20: u16 = 0x3c4;
2853pub const CSR_PMPADDR21: u16 = 0x3c5;
2854pub const CSR_PMPADDR22: u16 = 0x3c6;
2855pub const CSR_PMPADDR23: u16 = 0x3c7;
2856pub const CSR_PMPADDR24: u16 = 0x3c8;
2857pub const CSR_PMPADDR25: u16 = 0x3c9;
2858pub const CSR_PMPADDR26: u16 = 0x3ca;
2859pub const CSR_PMPADDR27: u16 = 0x3cb;
2860pub const CSR_PMPADDR28: u16 = 0x3cc;
2861pub const CSR_PMPADDR29: u16 = 0x3cd;
2862pub const CSR_PMPADDR30: u16 = 0x3ce;
2863pub const CSR_PMPADDR31: u16 = 0x3cf;
2864pub const CSR_PMPADDR32: u16 = 0x3d0;
2865pub const CSR_PMPADDR33: u16 = 0x3d1;
2866pub const CSR_PMPADDR34: u16 = 0x3d2;
2867pub const CSR_PMPADDR35: u16 = 0x3d3;
2868pub const CSR_PMPADDR36: u16 = 0x3d4;
2869pub const CSR_PMPADDR37: u16 = 0x3d5;
2870pub const CSR_PMPADDR38: u16 = 0x3d6;
2871pub const CSR_PMPADDR39: u16 = 0x3d7;
2872pub const CSR_PMPADDR40: u16 = 0x3d8;
2873pub const CSR_PMPADDR41: u16 = 0x3d9;
2874pub const CSR_PMPADDR42: u16 = 0x3da;
2875pub const CSR_PMPADDR43: u16 = 0x3db;
2876pub const CSR_PMPADDR44: u16 = 0x3dc;
2877pub const CSR_PMPADDR45: u16 = 0x3dd;
2878pub const CSR_PMPADDR46: u16 = 0x3de;
2879pub const CSR_PMPADDR47: u16 = 0x3df;
2880pub const CSR_PMPADDR48: u16 = 0x3e0;
2881pub const CSR_PMPADDR49: u16 = 0x3e1;
2882pub const CSR_PMPADDR50: u16 = 0x3e2;
2883pub const CSR_PMPADDR51: u16 = 0x3e3;
2884pub const CSR_PMPADDR52: u16 = 0x3e4;
2885pub const CSR_PMPADDR53: u16 = 0x3e5;
2886pub const CSR_PMPADDR54: u16 = 0x3e6;
2887pub const CSR_PMPADDR55: u16 = 0x3e7;
2888pub const CSR_PMPADDR56: u16 = 0x3e8;
2889pub const CSR_PMPADDR57: u16 = 0x3e9;
2890pub const CSR_PMPADDR58: u16 = 0x3ea;
2891pub const CSR_PMPADDR59: u16 = 0x3eb;
2892pub const CSR_PMPADDR60: u16 = 0x3ec;
2893pub const CSR_PMPADDR61: u16 = 0x3ed;
2894pub const CSR_PMPADDR62: u16 = 0x3ee;
2895pub const CSR_PMPADDR63: u16 = 0x3ef;
2896pub const CSR_MSECCFG: u16 = 0x747;
2897pub const CSR_TSELECT: u16 = 0x7a0;
2898pub const CSR_TDATA1: u16 = 0x7a1;
2899pub const CSR_TDATA2: u16 = 0x7a2;
2900pub const CSR_TDATA3: u16 = 0x7a3;
2901pub const CSR_TINFO: u16 = 0x7a4;
2902pub const CSR_TCONTROL: u16 = 0x7a5;
2903pub const CSR_MCONTEXT: u16 = 0x7a8;
2904pub const CSR_MSCONTEXT: u16 = 0x7aa;
2905pub const CSR_DCSR: u16 = 0x7b0;
2906pub const CSR_DPC: u16 = 0x7b1;
2907pub const CSR_DSCRATCH0: u16 = 0x7b2;
2908pub const CSR_DSCRATCH1: u16 = 0x7b3;
2909pub const CSR_MCYCLE: u16 = 0xb00;
2910pub const CSR_MINSTRET: u16 = 0xb02;
2911pub const CSR_MHPMCOUNTER3: u16 = 0xb03;
2912pub const CSR_MHPMCOUNTER4: u16 = 0xb04;
2913pub const CSR_MHPMCOUNTER5: u16 = 0xb05;
2914pub const CSR_MHPMCOUNTER6: u16 = 0xb06;
2915pub const CSR_MHPMCOUNTER7: u16 = 0xb07;
2916pub const CSR_MHPMCOUNTER8: u16 = 0xb08;
2917pub const CSR_MHPMCOUNTER9: u16 = 0xb09;
2918pub const CSR_MHPMCOUNTER10: u16 = 0xb0a;
2919pub const CSR_MHPMCOUNTER11: u16 = 0xb0b;
2920pub const CSR_MHPMCOUNTER12: u16 = 0xb0c;
2921pub const CSR_MHPMCOUNTER13: u16 = 0xb0d;
2922pub const CSR_MHPMCOUNTER14: u16 = 0xb0e;
2923pub const CSR_MHPMCOUNTER15: u16 = 0xb0f;
2924pub const CSR_MHPMCOUNTER16: u16 = 0xb10;
2925pub const CSR_MHPMCOUNTER17: u16 = 0xb11;
2926pub const CSR_MHPMCOUNTER18: u16 = 0xb12;
2927pub const CSR_MHPMCOUNTER19: u16 = 0xb13;
2928pub const CSR_MHPMCOUNTER20: u16 = 0xb14;
2929pub const CSR_MHPMCOUNTER21: u16 = 0xb15;
2930pub const CSR_MHPMCOUNTER22: u16 = 0xb16;
2931pub const CSR_MHPMCOUNTER23: u16 = 0xb17;
2932pub const CSR_MHPMCOUNTER24: u16 = 0xb18;
2933pub const CSR_MHPMCOUNTER25: u16 = 0xb19;
2934pub const CSR_MHPMCOUNTER26: u16 = 0xb1a;
2935pub const CSR_MHPMCOUNTER27: u16 = 0xb1b;
2936pub const CSR_MHPMCOUNTER28: u16 = 0xb1c;
2937pub const CSR_MHPMCOUNTER29: u16 = 0xb1d;
2938pub const CSR_MHPMCOUNTER30: u16 = 0xb1e;
2939pub const CSR_MHPMCOUNTER31: u16 = 0xb1f;
2940pub const CSR_MCYCLECFG: u16 = 0x321;
2941pub const CSR_MINSTRETCFG: u16 = 0x322;
2942pub const CSR_MHPMEVENT3: u16 = 0x323;
2943pub const CSR_MHPMEVENT4: u16 = 0x324;
2944pub const CSR_MHPMEVENT5: u16 = 0x325;
2945pub const CSR_MHPMEVENT6: u16 = 0x326;
2946pub const CSR_MHPMEVENT7: u16 = 0x327;
2947pub const CSR_MHPMEVENT8: u16 = 0x328;
2948pub const CSR_MHPMEVENT9: u16 = 0x329;
2949pub const CSR_MHPMEVENT10: u16 = 0x32a;
2950pub const CSR_MHPMEVENT11: u16 = 0x32b;
2951pub const CSR_MHPMEVENT12: u16 = 0x32c;
2952pub const CSR_MHPMEVENT13: u16 = 0x32d;
2953pub const CSR_MHPMEVENT14: u16 = 0x32e;
2954pub const CSR_MHPMEVENT15: u16 = 0x32f;
2955pub const CSR_MHPMEVENT16: u16 = 0x330;
2956pub const CSR_MHPMEVENT17: u16 = 0x331;
2957pub const CSR_MHPMEVENT18: u16 = 0x332;
2958pub const CSR_MHPMEVENT19: u16 = 0x333;
2959pub const CSR_MHPMEVENT20: u16 = 0x334;
2960pub const CSR_MHPMEVENT21: u16 = 0x335;
2961pub const CSR_MHPMEVENT22: u16 = 0x336;
2962pub const CSR_MHPMEVENT23: u16 = 0x337;
2963pub const CSR_MHPMEVENT24: u16 = 0x338;
2964pub const CSR_MHPMEVENT25: u16 = 0x339;
2965pub const CSR_MHPMEVENT26: u16 = 0x33a;
2966pub const CSR_MHPMEVENT27: u16 = 0x33b;
2967pub const CSR_MHPMEVENT28: u16 = 0x33c;
2968pub const CSR_MHPMEVENT29: u16 = 0x33d;
2969pub const CSR_MHPMEVENT30: u16 = 0x33e;
2970pub const CSR_MHPMEVENT31: u16 = 0x33f;
2971pub const CSR_MVENDORID: u16 = 0xf11;
2972pub const CSR_MARCHID: u16 = 0xf12;
2973pub const CSR_MIMPID: u16 = 0xf13;
2974pub const CSR_MHARTID: u16 = 0xf14;
2975pub const CSR_MCONFIGPTR: u16 = 0xf15;
2976pub const CSR_MTOPI: u16 = 0xfb0;
2977pub const CSR_SIEH: u16 = 0x114;
2978pub const CSR_SIPH: u16 = 0x154;
2979pub const CSR_STIMECMPH: u16 = 0x15d;
2980pub const CSR_SPMPENH: u16 = 0x193;
2981pub const CSR_VSIEH: u16 = 0x214;
2982pub const CSR_VSIPH: u16 = 0x254;
2983pub const CSR_VSTIMECMPH: u16 = 0x25d;
2984pub const CSR_MEDELEGH: u16 = 0x312;
2985pub const CSR_HEDELEGH: u16 = 0x612;
2986pub const CSR_HTIMEDELTAH: u16 = 0x615;
2987pub const CSR_HIDELEGH: u16 = 0x613;
2988pub const CSR_HVIENH: u16 = 0x618;
2989pub const CSR_HENVCFGH: u16 = 0x61a;
2990pub const CSR_HVIPH: u16 = 0x655;
2991pub const CSR_HVIPRIO1H: u16 = 0x656;
2992pub const CSR_HVIPRIO2H: u16 = 0x657;
2993pub const CSR_HSTATEEN0H: u16 = 0x61c;
2994pub const CSR_HSTATEEN1H: u16 = 0x61d;
2995pub const CSR_HSTATEEN2H: u16 = 0x61e;
2996pub const CSR_HSTATEEN3H: u16 = 0x61f;
2997pub const CSR_CYCLEH: u16 = 0xc80;
2998pub const CSR_TIMEH: u16 = 0xc81;
2999pub const CSR_INSTRETH: u16 = 0xc82;
3000pub const CSR_HPMCOUNTER3H: u16 = 0xc83;
3001pub const CSR_HPMCOUNTER4H: u16 = 0xc84;
3002pub const CSR_HPMCOUNTER5H: u16 = 0xc85;
3003pub const CSR_HPMCOUNTER6H: u16 = 0xc86;
3004pub const CSR_HPMCOUNTER7H: u16 = 0xc87;
3005pub const CSR_HPMCOUNTER8H: u16 = 0xc88;
3006pub const CSR_HPMCOUNTER9H: u16 = 0xc89;
3007pub const CSR_HPMCOUNTER10H: u16 = 0xc8a;
3008pub const CSR_HPMCOUNTER11H: u16 = 0xc8b;
3009pub const CSR_HPMCOUNTER12H: u16 = 0xc8c;
3010pub const CSR_HPMCOUNTER13H: u16 = 0xc8d;
3011pub const CSR_HPMCOUNTER14H: u16 = 0xc8e;
3012pub const CSR_HPMCOUNTER15H: u16 = 0xc8f;
3013pub const CSR_HPMCOUNTER16H: u16 = 0xc90;
3014pub const CSR_HPMCOUNTER17H: u16 = 0xc91;
3015pub const CSR_HPMCOUNTER18H: u16 = 0xc92;
3016pub const CSR_HPMCOUNTER19H: u16 = 0xc93;
3017pub const CSR_HPMCOUNTER20H: u16 = 0xc94;
3018pub const CSR_HPMCOUNTER21H: u16 = 0xc95;
3019pub const CSR_HPMCOUNTER22H: u16 = 0xc96;
3020pub const CSR_HPMCOUNTER23H: u16 = 0xc97;
3021pub const CSR_HPMCOUNTER24H: u16 = 0xc98;
3022pub const CSR_HPMCOUNTER25H: u16 = 0xc99;
3023pub const CSR_HPMCOUNTER26H: u16 = 0xc9a;
3024pub const CSR_HPMCOUNTER27H: u16 = 0xc9b;
3025pub const CSR_HPMCOUNTER28H: u16 = 0xc9c;
3026pub const CSR_HPMCOUNTER29H: u16 = 0xc9d;
3027pub const CSR_HPMCOUNTER30H: u16 = 0xc9e;
3028pub const CSR_HPMCOUNTER31H: u16 = 0xc9f;
3029pub const CSR_MSTATUSH: u16 = 0x310;
3030pub const CSR_MIDELEGH: u16 = 0x313;
3031pub const CSR_MIEH: u16 = 0x314;
3032pub const CSR_MVIENH: u16 = 0x318;
3033pub const CSR_MVIPH: u16 = 0x319;
3034pub const CSR_MENVCFGH: u16 = 0x31a;
3035pub const CSR_MSTATEEN0H: u16 = 0x31c;
3036pub const CSR_MSTATEEN1H: u16 = 0x31d;
3037pub const CSR_MSTATEEN2H: u16 = 0x31e;
3038pub const CSR_MSTATEEN3H: u16 = 0x31f;
3039pub const CSR_MIPH: u16 = 0x354;
3040pub const CSR_MCYCLECFGH: u16 = 0x721;
3041pub const CSR_MINSTRETCFGH: u16 = 0x722;
3042pub const CSR_MHPMEVENT3H: u16 = 0x723;
3043pub const CSR_MHPMEVENT4H: u16 = 0x724;
3044pub const CSR_MHPMEVENT5H: u16 = 0x725;
3045pub const CSR_MHPMEVENT6H: u16 = 0x726;
3046pub const CSR_MHPMEVENT7H: u16 = 0x727;
3047pub const CSR_MHPMEVENT8H: u16 = 0x728;
3048pub const CSR_MHPMEVENT9H: u16 = 0x729;
3049pub const CSR_MHPMEVENT10H: u16 = 0x72a;
3050pub const CSR_MHPMEVENT11H: u16 = 0x72b;
3051pub const CSR_MHPMEVENT12H: u16 = 0x72c;
3052pub const CSR_MHPMEVENT13H: u16 = 0x72d;
3053pub const CSR_MHPMEVENT14H: u16 = 0x72e;
3054pub const CSR_MHPMEVENT15H: u16 = 0x72f;
3055pub const CSR_MHPMEVENT16H: u16 = 0x730;
3056pub const CSR_MHPMEVENT17H: u16 = 0x731;
3057pub const CSR_MHPMEVENT18H: u16 = 0x732;
3058pub const CSR_MHPMEVENT19H: u16 = 0x733;
3059pub const CSR_MHPMEVENT20H: u16 = 0x734;
3060pub const CSR_MHPMEVENT21H: u16 = 0x735;
3061pub const CSR_MHPMEVENT22H: u16 = 0x736;
3062pub const CSR_MHPMEVENT23H: u16 = 0x737;
3063pub const CSR_MHPMEVENT24H: u16 = 0x738;
3064pub const CSR_MHPMEVENT25H: u16 = 0x739;
3065pub const CSR_MHPMEVENT26H: u16 = 0x73a;
3066pub const CSR_MHPMEVENT27H: u16 = 0x73b;
3067pub const CSR_MHPMEVENT28H: u16 = 0x73c;
3068pub const CSR_MHPMEVENT29H: u16 = 0x73d;
3069pub const CSR_MHPMEVENT30H: u16 = 0x73e;
3070pub const CSR_MHPMEVENT31H: u16 = 0x73f;
3071pub const CSR_MNSCRATCH: u16 = 0x740;
3072pub const CSR_MNEPC: u16 = 0x741;
3073pub const CSR_MNCAUSE: u16 = 0x742;
3074pub const CSR_MNSTATUS: u16 = 0x744;
3075pub const CSR_MSECCFGH: u16 = 0x757;
3076pub const CSR_MCYCLEH: u16 = 0xb80;
3077pub const CSR_MINSTRETH: u16 = 0xb82;
3078pub const CSR_MHPMCOUNTER3H: u16 = 0xb83;
3079pub const CSR_MHPMCOUNTER4H: u16 = 0xb84;
3080pub const CSR_MHPMCOUNTER5H: u16 = 0xb85;
3081pub const CSR_MHPMCOUNTER6H: u16 = 0xb86;
3082pub const CSR_MHPMCOUNTER7H: u16 = 0xb87;
3083pub const CSR_MHPMCOUNTER8H: u16 = 0xb88;
3084pub const CSR_MHPMCOUNTER9H: u16 = 0xb89;
3085pub const CSR_MHPMCOUNTER10H: u16 = 0xb8a;
3086pub const CSR_MHPMCOUNTER11H: u16 = 0xb8b;
3087pub const CSR_MHPMCOUNTER12H: u16 = 0xb8c;
3088pub const CSR_MHPMCOUNTER13H: u16 = 0xb8d;
3089pub const CSR_MHPMCOUNTER14H: u16 = 0xb8e;
3090pub const CSR_MHPMCOUNTER15H: u16 = 0xb8f;
3091pub const CSR_MHPMCOUNTER16H: u16 = 0xb90;
3092pub const CSR_MHPMCOUNTER17H: u16 = 0xb91;
3093pub const CSR_MHPMCOUNTER18H: u16 = 0xb92;
3094pub const CSR_MHPMCOUNTER19H: u16 = 0xb93;
3095pub const CSR_MHPMCOUNTER20H: u16 = 0xb94;
3096pub const CSR_MHPMCOUNTER21H: u16 = 0xb95;
3097pub const CSR_MHPMCOUNTER22H: u16 = 0xb96;
3098pub const CSR_MHPMCOUNTER23H: u16 = 0xb97;
3099pub const CSR_MHPMCOUNTER24H: u16 = 0xb98;
3100pub const CSR_MHPMCOUNTER25H: u16 = 0xb99;
3101pub const CSR_MHPMCOUNTER26H: u16 = 0xb9a;
3102pub const CSR_MHPMCOUNTER27H: u16 = 0xb9b;
3103pub const CSR_MHPMCOUNTER28H: u16 = 0xb9c;
3104pub const CSR_MHPMCOUNTER29H: u16 = 0xb9d;
3105pub const CSR_MHPMCOUNTER30H: u16 = 0xb9e;
3106pub const CSR_MHPMCOUNTER31H: u16 = 0xb9f;
3107pub const CAUSE_MISALIGNED_FETCH: u8 = 0x0;
3108pub const CAUSE_FETCH_ACCESS: u8 = 0x1;
3109pub const CAUSE_ILLEGAL_INSTRUCTION: u8 = 0x2;
3110pub const CAUSE_BREAKPOINT: u8 = 0x3;
3111pub const CAUSE_MISALIGNED_LOAD: u8 = 0x4;
3112pub const CAUSE_LOAD_ACCESS: u8 = 0x5;
3113pub const CAUSE_MISALIGNED_STORE: u8 = 0x6;
3114pub const CAUSE_STORE_ACCESS: u8 = 0x7;
3115pub const CAUSE_USER_ECALL: u8 = 0x8;
3116pub const CAUSE_SUPERVISOR_ECALL: u8 = 0x9;
3117pub const CAUSE_VIRTUAL_SUPERVISOR_ECALL: u8 = 0xa;
3118pub const CAUSE_MACHINE_ECALL: u8 = 0xb;
3119pub const CAUSE_FETCH_PAGE_FAULT: u8 = 0xc;
3120pub const CAUSE_LOAD_PAGE_FAULT: u8 = 0xd;
3121pub const CAUSE_STORE_PAGE_FAULT: u8 = 0xf;
3122pub const CAUSE_DOUBLE_TRAP: u8 = 0x10;
3123pub const CAUSE_SOFTWARE_CHECK_FAULT: u8 = 0x12;
3124pub const CAUSE_HARDWARE_ERROR_FAULT: u8 = 0x13;
3125pub const CAUSE_FETCH_GUEST_PAGE_FAULT: u8 = 0x14;
3126pub const CAUSE_LOAD_GUEST_PAGE_FAULT: u8 = 0x15;
3127pub const CAUSE_VIRTUAL_INSTRUCTION: u8 = 0x16;
3128pub const CAUSE_STORE_GUEST_PAGE_FAULT: u8 = 0x17;
3129pub static OPCODE32_MATCH: [u32; 1039] = [
3130 0x33, /* add */
3131 0xffff_ffff, /* add_uw */
3132 0x13, /* addi */
3133 0xffff_ffff, /* addiw */
3134 0xffff_ffff, /* addw */
3135 0x2a000033, /* aes32dsi */
3136 0x2e000033, /* aes32dsmi */
3137 0x22000033, /* aes32esi */
3138 0x26000033, /* aes32esmi */
3139 0xffff_ffff, /* aes64ds */
3140 0xffff_ffff, /* aes64dsm */
3141 0xffff_ffff, /* aes64es */
3142 0xffff_ffff, /* aes64esm */
3143 0xffff_ffff, /* aes64im */
3144 0xffff_ffff, /* aes64ks1i */
3145 0xffff_ffff, /* aes64ks2 */
3146 0x2f, /* amoadd_b */
3147 0xffff_ffff, /* amoadd_d */
3148 0x102f, /* amoadd_h */
3149 0x202f, /* amoadd_w */
3150 0x6000002f, /* amoand_b */
3151 0xffff_ffff, /* amoand_d */
3152 0x6000102f, /* amoand_h */
3153 0x6000202f, /* amoand_w */
3154 0x2800002f, /* amocas_b */
3155 0x2800302f, /* amocas_d */
3156 0x2800102f, /* amocas_h */
3157 0xffff_ffff, /* amocas_q */
3158 0x2800202f, /* amocas_w */
3159 0xa000002f, /* amomax_b */
3160 0xffff_ffff, /* amomax_d */
3161 0xa000102f, /* amomax_h */
3162 0xa000202f, /* amomax_w */
3163 0xe000002f, /* amomaxu_b */
3164 0xffff_ffff, /* amomaxu_d */
3165 0xe000102f, /* amomaxu_h */
3166 0xe000202f, /* amomaxu_w */
3167 0x8000002f, /* amomin_b */
3168 0xffff_ffff, /* amomin_d */
3169 0x8000102f, /* amomin_h */
3170 0x8000202f, /* amomin_w */
3171 0xc000002f, /* amominu_b */
3172 0xffff_ffff, /* amominu_d */
3173 0xc000102f, /* amominu_h */
3174 0xc000202f, /* amominu_w */
3175 0x4000002f, /* amoor_b */
3176 0xffff_ffff, /* amoor_d */
3177 0x4000102f, /* amoor_h */
3178 0x4000202f, /* amoor_w */
3179 0x800002f, /* amoswap_b */
3180 0xffff_ffff, /* amoswap_d */
3181 0x800102f, /* amoswap_h */
3182 0x800202f, /* amoswap_w */
3183 0x2000002f, /* amoxor_b */
3184 0xffff_ffff, /* amoxor_d */
3185 0x2000102f, /* amoxor_h */
3186 0x2000202f, /* amoxor_w */
3187 0x7033, /* and */
3188 0x7013, /* andi */
3189 0x40007033, /* andn */
3190 0x17, /* auipc */
3191 0x48001033, /* bclr */
3192 0xffff_ffff, /* bclri */
3193 0x48001013, /* bclri_rv32 */
3194 0x63, /* beq */
3195 0x63, /* beqz */
3196 0x48005033, /* bext */
3197 0xffff_ffff, /* bexti */
3198 0x48005013, /* bexti_rv32 */
3199 0x5063, /* bge */
3200 0x7063, /* bgeu */
3201 0x5063, /* bgez */
3202 0x4063, /* bgt */
3203 0x6063, /* bgtu */
3204 0x4063, /* bgtz */
3205 0x68001033, /* binv */
3206 0xffff_ffff, /* binvi */
3207 0x68001013, /* binvi_rv32 */
3208 0x5063, /* ble */
3209 0x7063, /* bleu */
3210 0x5063, /* blez */
3211 0x4063, /* blt */
3212 0x6063, /* bltu */
3213 0x4063, /* bltz */
3214 0x1063, /* bne */
3215 0x1063, /* bnez */
3216 0x68705013, /* brev8 */
3217 0x28001033, /* bset */
3218 0xffff_ffff, /* bseti */
3219 0x28001013, /* bseti_rv32 */
3220 0x9002, /* c_add */
3221 0x1, /* c_addi */
3222 0x6101, /* c_addi16sp */
3223 0x0, /* c_addi4spn */
3224 0xffff_ffff, /* c_addiw */
3225 0xffff_ffff, /* c_addw */
3226 0x8c61, /* c_and */
3227 0x8801, /* c_andi */
3228 0xc001, /* c_beqz */
3229 0xe001, /* c_bnez */
3230 0x9002, /* c_ebreak */
3231 0x2000, /* c_fld */
3232 0x2002, /* c_fldsp */
3233 0x6000, /* c_flw */
3234 0x6002, /* c_flwsp */
3235 0xa000, /* c_fsd */
3236 0xa002, /* c_fsdsp */
3237 0xe000, /* c_fsw */
3238 0xe002, /* c_fswsp */
3239 0xa001, /* c_j */
3240 0x2001, /* c_jal */
3241 0x9002, /* c_jalr */
3242 0x8002, /* c_jr */
3243 0x8000, /* c_lbu */
3244 0x6000, /* c_ld */
3245 0x6002, /* c_ldsp */
3246 0x8440, /* c_lh */
3247 0x8400, /* c_lhu */
3248 0x4001, /* c_li */
3249 0x6001, /* c_lui */
3250 0x4000, /* c_lw */
3251 0x4002, /* c_lwsp */
3252 0x6081, /* c_mop_1 */
3253 0x6581, /* c_mop_11 */
3254 0x6681, /* c_mop_13 */
3255 0x6781, /* c_mop_15 */
3256 0x6181, /* c_mop_3 */
3257 0x6281, /* c_mop_5 */
3258 0x6381, /* c_mop_7 */
3259 0x6481, /* c_mop_9 */
3260 0x6081, /* c_mop_N */
3261 0x9c41, /* c_mul */
3262 0x8002, /* c_mv */
3263 0x1, /* c_nop */
3264 0x9c75, /* c_not */
3265 0x9016, /* c_ntl_all */
3266 0x900a, /* c_ntl_p1 */
3267 0x900e, /* c_ntl_pall */
3268 0x9012, /* c_ntl_s1 */
3269 0x8c41, /* c_or */
3270 0x8800, /* c_sb */
3271 0xe000, /* c_sd */
3272 0xe002, /* c_sdsp */
3273 0x9c65, /* c_sext_b */
3274 0x9c6d, /* c_sext_h */
3275 0xffff_ffff, /* c_sext_w */
3276 0x8c00, /* c_sh */
3277 0x2, /* c_slli */
3278 0x2, /* c_slli_rv32 */
3279 0x8401, /* c_srai */
3280 0x8401, /* c_srai_rv32 */
3281 0x8001, /* c_srli */
3282 0x8001, /* c_srli_rv32 */
3283 0x6281, /* c_sspopchk_x5 */
3284 0x6081, /* c_sspush_x1 */
3285 0x8c01, /* c_sub */
3286 0xffff_ffff, /* c_subw */
3287 0xc000, /* c_sw */
3288 0xc002, /* c_swsp */
3289 0x8c21, /* c_xor */
3290 0x9c61, /* c_zext_b */
3291 0x9c69, /* c_zext_h */
3292 0xffff_ffff, /* c_zext_w */
3293 0x10200f, /* cbo_clean */
3294 0x20200f, /* cbo_flush */
3295 0x200f, /* cbo_inval */
3296 0x40200f, /* cbo_zero */
3297 0xa001033, /* clmul */
3298 0xa003033, /* clmulh */
3299 0xa002033, /* clmulr */
3300 0x60001013, /* clz */
3301 0xffff_ffff, /* clzw */
3302 0xa002, /* cm_jalt */
3303 0xac62, /* cm_mva01s */
3304 0xac22, /* cm_mvsa01 */
3305 0xba02, /* cm_pop */
3306 0xbe02, /* cm_popret */
3307 0xbc02, /* cm_popretz */
3308 0xb802, /* cm_push */
3309 0x60201013, /* cpop */
3310 0xffff_ffff, /* cpopw */
3311 0x3073, /* csrc */
3312 0x7073, /* csrci */
3313 0x2073, /* csrr */
3314 0x3073, /* csrrc */
3315 0x7073, /* csrrci */
3316 0x2073, /* csrrs */
3317 0x6073, /* csrrsi */
3318 0x1073, /* csrrw */
3319 0x5073, /* csrrwi */
3320 0x2073, /* csrs */
3321 0x6073, /* csrsi */
3322 0x1073, /* csrw */
3323 0x5073, /* csrwi */
3324 0x60101013, /* ctz */
3325 0xffff_ffff, /* ctzw */
3326 0xe005033, /* czero_eqz */
3327 0xe007033, /* czero_nez */
3328 0x2004033, /* div */
3329 0x2005033, /* divu */
3330 0xffff_ffff, /* divuw */
3331 0xffff_ffff, /* divw */
3332 0x7b200073, /* dret */
3333 0x100073, /* ebreak */
3334 0x73, /* ecall */
3335 0x22002053, /* fabs_d */
3336 0x24002053, /* fabs_h */
3337 0x26002053, /* fabs_q */
3338 0x20002053, /* fabs_s */
3339 0x2000053, /* fadd_d */
3340 0x4000053, /* fadd_h */
3341 0x6000053, /* fadd_q */
3342 0x53, /* fadd_s */
3343 0xe2001053, /* fclass_d */
3344 0xe4001053, /* fclass_h */
3345 0xe6001053, /* fclass_q */
3346 0xe0001053, /* fclass_s */
3347 0x44800053, /* fcvt_bf16_s */
3348 0x42200053, /* fcvt_d_h */
3349 0xffff_ffff, /* fcvt_d_l */
3350 0xffff_ffff, /* fcvt_d_lu */
3351 0x42300053, /* fcvt_d_q */
3352 0x42000053, /* fcvt_d_s */
3353 0xd2000053, /* fcvt_d_w */
3354 0xd2100053, /* fcvt_d_wu */
3355 0x44100053, /* fcvt_h_d */
3356 0xffff_ffff, /* fcvt_h_l */
3357 0xffff_ffff, /* fcvt_h_lu */
3358 0x44300053, /* fcvt_h_q */
3359 0x44000053, /* fcvt_h_s */
3360 0xd4000053, /* fcvt_h_w */
3361 0xd4100053, /* fcvt_h_wu */
3362 0xffff_ffff, /* fcvt_l_d */
3363 0xffff_ffff, /* fcvt_l_h */
3364 0xffff_ffff, /* fcvt_l_q */
3365 0xffff_ffff, /* fcvt_l_s */
3366 0xffff_ffff, /* fcvt_lu_d */
3367 0xffff_ffff, /* fcvt_lu_h */
3368 0xffff_ffff, /* fcvt_lu_q */
3369 0xffff_ffff, /* fcvt_lu_s */
3370 0x46100053, /* fcvt_q_d */
3371 0x46200053, /* fcvt_q_h */
3372 0xffff_ffff, /* fcvt_q_l */
3373 0xffff_ffff, /* fcvt_q_lu */
3374 0x46000053, /* fcvt_q_s */
3375 0xd6000053, /* fcvt_q_w */
3376 0xd6100053, /* fcvt_q_wu */
3377 0x40600053, /* fcvt_s_bf16 */
3378 0x40100053, /* fcvt_s_d */
3379 0x40200053, /* fcvt_s_h */
3380 0xffff_ffff, /* fcvt_s_l */
3381 0xffff_ffff, /* fcvt_s_lu */
3382 0x40300053, /* fcvt_s_q */
3383 0xd0000053, /* fcvt_s_w */
3384 0xd0100053, /* fcvt_s_wu */
3385 0xc2000053, /* fcvt_w_d */
3386 0xc4000053, /* fcvt_w_h */
3387 0xc6000053, /* fcvt_w_q */
3388 0xc0000053, /* fcvt_w_s */
3389 0xc2100053, /* fcvt_wu_d */
3390 0xc4100053, /* fcvt_wu_h */
3391 0xc6100053, /* fcvt_wu_q */
3392 0xc0100053, /* fcvt_wu_s */
3393 0xc2801053, /* fcvtmod_w_d */
3394 0x1a000053, /* fdiv_d */
3395 0x1c000053, /* fdiv_h */
3396 0x1e000053, /* fdiv_q */
3397 0x18000053, /* fdiv_s */
3398 0xf, /* fence */
3399 0x100f, /* fence_i */
3400 0x8330000f, /* fence_tso */
3401 0xa2002053, /* feq_d */
3402 0xa4002053, /* feq_h */
3403 0xa6002053, /* feq_q */
3404 0xa0002053, /* feq_s */
3405 0x3007, /* fld */
3406 0xa2000053, /* fle_d */
3407 0xa4000053, /* fle_h */
3408 0xa6000053, /* fle_q */
3409 0xa0000053, /* fle_s */
3410 0xa2004053, /* fleq_d */
3411 0xa4004053, /* fleq_h */
3412 0xa6004053, /* fleq_q */
3413 0xa0004053, /* fleq_s */
3414 0x1007, /* flh */
3415 0xf2100053, /* fli_d */
3416 0xf4100053, /* fli_h */
3417 0xf6100053, /* fli_q */
3418 0xf0100053, /* fli_s */
3419 0x4007, /* flq */
3420 0xa2001053, /* flt_d */
3421 0xa4001053, /* flt_h */
3422 0xa6001053, /* flt_q */
3423 0xa0001053, /* flt_s */
3424 0xa2005053, /* fltq_d */
3425 0xa4005053, /* fltq_h */
3426 0xa6005053, /* fltq_q */
3427 0xa0005053, /* fltq_s */
3428 0x2007, /* flw */
3429 0x2000043, /* fmadd_d */
3430 0x4000043, /* fmadd_h */
3431 0x6000043, /* fmadd_q */
3432 0x43, /* fmadd_s */
3433 0x2a001053, /* fmax_d */
3434 0x2c001053, /* fmax_h */
3435 0x2e001053, /* fmax_q */
3436 0x28001053, /* fmax_s */
3437 0x2a003053, /* fmaxm_d */
3438 0x2c003053, /* fmaxm_h */
3439 0x2e003053, /* fmaxm_q */
3440 0x28003053, /* fmaxm_s */
3441 0x2a000053, /* fmin_d */
3442 0x2c000053, /* fmin_h */
3443 0x2e000053, /* fmin_q */
3444 0x28000053, /* fmin_s */
3445 0x2a002053, /* fminm_d */
3446 0x2c002053, /* fminm_h */
3447 0x2e002053, /* fminm_q */
3448 0x28002053, /* fminm_s */
3449 0x2000047, /* fmsub_d */
3450 0x4000047, /* fmsub_h */
3451 0x6000047, /* fmsub_q */
3452 0x47, /* fmsub_s */
3453 0x12000053, /* fmul_d */
3454 0x14000053, /* fmul_h */
3455 0x16000053, /* fmul_q */
3456 0x10000053, /* fmul_s */
3457 0x22000053, /* fmv_d */
3458 0xffff_ffff, /* fmv_d_x */
3459 0x24000053, /* fmv_h */
3460 0xf4000053, /* fmv_h_x */
3461 0x26000053, /* fmv_q */
3462 0x20000053, /* fmv_s */
3463 0xf0000053, /* fmv_s_x */
3464 0xf0000053, /* fmv_w_x */
3465 0xffff_ffff, /* fmv_x_d */
3466 0xe4000053, /* fmv_x_h */
3467 0xe0000053, /* fmv_x_s */
3468 0xe0000053, /* fmv_x_w */
3469 0xe2100053, /* fmvh_x_d */
3470 0xffff_ffff, /* fmvh_x_q */
3471 0xb2000053, /* fmvp_d_x */
3472 0xffff_ffff, /* fmvp_q_x */
3473 0x22001053, /* fneg_d */
3474 0x24001053, /* fneg_h */
3475 0x26001053, /* fneg_q */
3476 0x20001053, /* fneg_s */
3477 0x200004f, /* fnmadd_d */
3478 0x400004f, /* fnmadd_h */
3479 0x600004f, /* fnmadd_q */
3480 0x4f, /* fnmadd_s */
3481 0x200004b, /* fnmsub_d */
3482 0x400004b, /* fnmsub_h */
3483 0x600004b, /* fnmsub_q */
3484 0x4b, /* fnmsub_s */
3485 0x302073, /* frcsr */
3486 0x102073, /* frflags */
3487 0x42400053, /* fround_d */
3488 0x44400053, /* fround_h */
3489 0x46400053, /* fround_q */
3490 0x40400053, /* fround_s */
3491 0x42500053, /* froundnx_d */
3492 0x44500053, /* froundnx_h */
3493 0x46500053, /* froundnx_q */
3494 0x40500053, /* froundnx_s */
3495 0x202073, /* frrm */
3496 0x301073, /* fscsr */
3497 0x3027, /* fsd */
3498 0x101073, /* fsflags */
3499 0x105073, /* fsflagsi */
3500 0x22000053, /* fsgnj_d */
3501 0x24000053, /* fsgnj_h */
3502 0x26000053, /* fsgnj_q */
3503 0x20000053, /* fsgnj_s */
3504 0x22001053, /* fsgnjn_d */
3505 0x24001053, /* fsgnjn_h */
3506 0x26001053, /* fsgnjn_q */
3507 0x20001053, /* fsgnjn_s */
3508 0x22002053, /* fsgnjx_d */
3509 0x24002053, /* fsgnjx_h */
3510 0x26002053, /* fsgnjx_q */
3511 0x20002053, /* fsgnjx_s */
3512 0x1027, /* fsh */
3513 0x4027, /* fsq */
3514 0x5a000053, /* fsqrt_d */
3515 0x5c000053, /* fsqrt_h */
3516 0x5e000053, /* fsqrt_q */
3517 0x58000053, /* fsqrt_s */
3518 0x201073, /* fsrm */
3519 0x205073, /* fsrmi */
3520 0xa000053, /* fsub_d */
3521 0xc000053, /* fsub_h */
3522 0xe000053, /* fsub_q */
3523 0x8000053, /* fsub_s */
3524 0x2027, /* fsw */
3525 0x62000073, /* hfence_gvma */
3526 0x22000073, /* hfence_vvma */
3527 0x66000073, /* hinval_gvma */
3528 0x26000073, /* hinval_vvma */
3529 0x60004073, /* hlv_b */
3530 0x60104073, /* hlv_bu */
3531 0xffff_ffff, /* hlv_d */
3532 0x64004073, /* hlv_h */
3533 0x64104073, /* hlv_hu */
3534 0x68004073, /* hlv_w */
3535 0xffff_ffff, /* hlv_wu */
3536 0x64304073, /* hlvx_hu */
3537 0x68304073, /* hlvx_wu */
3538 0x62004073, /* hsv_b */
3539 0xffff_ffff, /* hsv_d */
3540 0x66004073, /* hsv_h */
3541 0x6a004073, /* hsv_w */
3542 0x6f, /* j */
3543 0x6f, /* jal */
3544 0xef, /* jal_pseudo */
3545 0x67, /* jalr */
3546 0xe7, /* jalr_pseudo */
3547 0x67, /* jr */
3548 0x3, /* lb */
3549 0x4003, /* lbu */
3550 0xffff_ffff, /* ld */
3551 0x1003, /* lh */
3552 0x5003, /* lhu */
3553 0x17, /* lpad */
3554 0xffff_ffff, /* lr_d */
3555 0x1000202f, /* lr_w */
3556 0x37, /* lui */
3557 0x2003, /* lw */
3558 0xffff_ffff, /* lwu */
3559 0xa006033, /* max */
3560 0xa007033, /* maxu */
3561 0xa004033, /* min */
3562 0xa005033, /* minu */
3563 0x70200073, /* mnret */
3564 0x81c04073, /* mop_r_0 */
3565 0x81d04073, /* mop_r_1 */
3566 0x89e04073, /* mop_r_10 */
3567 0x89f04073, /* mop_r_11 */
3568 0x8dc04073, /* mop_r_12 */
3569 0x8dd04073, /* mop_r_13 */
3570 0x8de04073, /* mop_r_14 */
3571 0x8df04073, /* mop_r_15 */
3572 0xc1c04073, /* mop_r_16 */
3573 0xc1d04073, /* mop_r_17 */
3574 0xc1e04073, /* mop_r_18 */
3575 0xc1f04073, /* mop_r_19 */
3576 0x81e04073, /* mop_r_2 */
3577 0xc5c04073, /* mop_r_20 */
3578 0xc5d04073, /* mop_r_21 */
3579 0xc5e04073, /* mop_r_22 */
3580 0xc5f04073, /* mop_r_23 */
3581 0xc9c04073, /* mop_r_24 */
3582 0xc9d04073, /* mop_r_25 */
3583 0xc9e04073, /* mop_r_26 */
3584 0xc9f04073, /* mop_r_27 */
3585 0xcdc04073, /* mop_r_28 */
3586 0xcdd04073, /* mop_r_29 */
3587 0x81f04073, /* mop_r_3 */
3588 0xcde04073, /* mop_r_30 */
3589 0xcdf04073, /* mop_r_31 */
3590 0x85c04073, /* mop_r_4 */
3591 0x85d04073, /* mop_r_5 */
3592 0x85e04073, /* mop_r_6 */
3593 0x85f04073, /* mop_r_7 */
3594 0x89c04073, /* mop_r_8 */
3595 0x89d04073, /* mop_r_9 */
3596 0x81c04073, /* mop_r_N */
3597 0x82004073, /* mop_rr_0 */
3598 0x86004073, /* mop_rr_1 */
3599 0x8a004073, /* mop_rr_2 */
3600 0x8e004073, /* mop_rr_3 */
3601 0xc2004073, /* mop_rr_4 */
3602 0xc6004073, /* mop_rr_5 */
3603 0xca004073, /* mop_rr_6 */
3604 0xce004073, /* mop_rr_7 */
3605 0x82004073, /* mop_rr_N */
3606 0x30200073, /* mret */
3607 0x2000033, /* mul */
3608 0x2001033, /* mulh */
3609 0x2002033, /* mulhsu */
3610 0x2003033, /* mulhu */
3611 0xffff_ffff, /* mulw */
3612 0x13, /* mv */
3613 0x40000033, /* neg */
3614 0x13, /* nop */
3615 0x500033, /* ntl_all */
3616 0x200033, /* ntl_p1 */
3617 0x300033, /* ntl_pall */
3618 0x400033, /* ntl_s1 */
3619 0x6033, /* or */
3620 0x28705013, /* orc_b */
3621 0x6013, /* ori */
3622 0x40006033, /* orn */
3623 0x8004033, /* pack */
3624 0x8007033, /* packh */
3625 0xffff_ffff, /* packw */
3626 0x100000f, /* pause */
3627 0x6013, /* prefetch_i */
3628 0x106013, /* prefetch_r */
3629 0x306013, /* prefetch_w */
3630 0xc0002073, /* rdcycle */
3631 0xc8002073, /* rdcycleh */
3632 0xc0202073, /* rdinstret */
3633 0xc8202073, /* rdinstreth */
3634 0xc0102073, /* rdtime */
3635 0xc8102073, /* rdtimeh */
3636 0x2006033, /* rem */
3637 0x2007033, /* remu */
3638 0xffff_ffff, /* remuw */
3639 0xffff_ffff, /* remw */
3640 0x8067, /* ret */
3641 0xffff_ffff, /* rev8 */
3642 0x69805013, /* rev8_rv32 */
3643 0x60001033, /* rol */
3644 0xffff_ffff, /* rolw */
3645 0x60005033, /* ror */
3646 0xffff_ffff, /* rori */
3647 0x60005013, /* rori_rv32 */
3648 0xffff_ffff, /* roriw */
3649 0xffff_ffff, /* rorw */
3650 0x23, /* sb */
3651 0x100073, /* sbreak */
3652 0xffff_ffff, /* sc_d */
3653 0x1800202f, /* sc_w */
3654 0x73, /* scall */
3655 0x10400073, /* sctrclr */
3656 0xffff_ffff, /* sd */
3657 0x103013, /* seqz */
3658 0x60401013, /* sext_b */
3659 0x60501013, /* sext_h */
3660 0xffff_ffff, /* sext_w */
3661 0x18100073, /* sfence_inval_ir */
3662 0x12000073, /* sfence_vma */
3663 0x18000073, /* sfence_w_inval */
3664 0x2033, /* sgtz */
3665 0x1023, /* sh */
3666 0x20002033, /* sh1add */
3667 0xffff_ffff, /* sh1add_uw */
3668 0x20004033, /* sh2add */
3669 0xffff_ffff, /* sh2add_uw */
3670 0x20006033, /* sh3add */
3671 0xffff_ffff, /* sh3add_uw */
3672 0x10201013, /* sha256sig0 */
3673 0x10301013, /* sha256sig1 */
3674 0x10001013, /* sha256sum0 */
3675 0x10101013, /* sha256sum1 */
3676 0xffff_ffff, /* sha512sig0 */
3677 0x5c000033, /* sha512sig0h */
3678 0x54000033, /* sha512sig0l */
3679 0xffff_ffff, /* sha512sig1 */
3680 0x5e000033, /* sha512sig1h */
3681 0x56000033, /* sha512sig1l */
3682 0xffff_ffff, /* sha512sum0 */
3683 0x50000033, /* sha512sum0r */
3684 0xffff_ffff, /* sha512sum1 */
3685 0x52000033, /* sha512sum1r */
3686 0x16000073, /* sinval_vma */
3687 0x1033, /* sll */
3688 0x1013, /* slli */
3689 0x1013, /* slli_rv32 */
3690 0xffff_ffff, /* slli_uw */
3691 0xffff_ffff, /* slliw */
3692 0xffff_ffff, /* sllw */
3693 0x2033, /* slt */
3694 0x2013, /* slti */
3695 0x3013, /* sltiu */
3696 0x3033, /* sltu */
3697 0x2033, /* sltz */
3698 0x10801013, /* sm3p0 */
3699 0x10901013, /* sm3p1 */
3700 0x30000033, /* sm4ed */
3701 0x34000033, /* sm4ks */
3702 0x3033, /* snez */
3703 0x40005033, /* sra */
3704 0x40005013, /* srai */
3705 0x40005013, /* srai_rv32 */
3706 0xffff_ffff, /* sraiw */
3707 0xffff_ffff, /* sraw */
3708 0x10200073, /* sret */
3709 0x5033, /* srl */
3710 0x5013, /* srli */
3711 0x5013, /* srli_rv32 */
3712 0xffff_ffff, /* srliw */
3713 0xffff_ffff, /* srlw */
3714 0xffff_ffff, /* ssamoswap_d */
3715 0x4800202f, /* ssamoswap_w */
3716 0xcdc0c073, /* sspopchk_x1 */
3717 0xcdc2c073, /* sspopchk_x5 */
3718 0xce104073, /* sspush_x1 */
3719 0xce504073, /* sspush_x5 */
3720 0xcdc04073, /* ssrdp */
3721 0x40000033, /* sub */
3722 0xffff_ffff, /* subw */
3723 0x2023, /* sw */
3724 0x8f05013, /* unzip */
3725 0x24002057, /* vaadd_vv */
3726 0x24006057, /* vaadd_vx */
3727 0x20002057, /* vaaddu_vv */
3728 0x20006057, /* vaaddu_vx */
3729 0x40003057, /* vadc_vim */
3730 0x40000057, /* vadc_vvm */
3731 0x40004057, /* vadc_vxm */
3732 0x3057, /* vadd_vi */
3733 0x57, /* vadd_vv */
3734 0x4057, /* vadd_vx */
3735 0xa600a077, /* vaesdf_vs */
3736 0xa200a077, /* vaesdf_vv */
3737 0xa6002077, /* vaesdm_vs */
3738 0xa2002077, /* vaesdm_vv */
3739 0xa601a077, /* vaesef_vs */
3740 0xa201a077, /* vaesef_vv */
3741 0xa6012077, /* vaesem_vs */
3742 0xa2012077, /* vaesem_vv */
3743 0x8a002077, /* vaeskf1_vi */
3744 0xaa002077, /* vaeskf2_vi */
3745 0xa603a077, /* vaesz_vs */
3746 0x24003057, /* vand_vi */
3747 0x24000057, /* vand_vv */
3748 0x24004057, /* vand_vx */
3749 0x4000057, /* vandn_vv */
3750 0x4004057, /* vandn_vx */
3751 0x2c002057, /* vasub_vv */
3752 0x2c006057, /* vasub_vx */
3753 0x28002057, /* vasubu_vv */
3754 0x28006057, /* vasubu_vx */
3755 0x48042057, /* vbrev8_v */
3756 0x48052057, /* vbrev_v */
3757 0x30002057, /* vclmul_vv */
3758 0x30006057, /* vclmul_vx */
3759 0x34002057, /* vclmulh_vv */
3760 0x34006057, /* vclmulh_vx */
3761 0x48062057, /* vclz_v */
3762 0x5e002057, /* vcompress_vm */
3763 0x40082057, /* vcpop_m */
3764 0x48072057, /* vcpop_v */
3765 0x4806a057, /* vctz_v */
3766 0x84002057, /* vdiv_vv */
3767 0x84006057, /* vdiv_vx */
3768 0x80002057, /* vdivu_vv */
3769 0x80006057, /* vdivu_vx */
3770 0x5057, /* vfadd_vf */
3771 0x1057, /* vfadd_vv */
3772 0x4c081057, /* vfclass_v */
3773 0x48019057, /* vfcvt_f_x_v */
3774 0x48011057, /* vfcvt_f_xu_v */
3775 0x48039057, /* vfcvt_rtz_x_f_v */
3776 0x48031057, /* vfcvt_rtz_xu_f_v */
3777 0x48009057, /* vfcvt_x_f_v */
3778 0x48001057, /* vfcvt_xu_f_v */
3779 0x80005057, /* vfdiv_vf */
3780 0x80001057, /* vfdiv_vv */
3781 0x4008a057, /* vfirst_m */
3782 0xb0005057, /* vfmacc_vf */
3783 0xb0001057, /* vfmacc_vv */
3784 0xa0005057, /* vfmadd_vf */
3785 0xa0001057, /* vfmadd_vv */
3786 0x18005057, /* vfmax_vf */
3787 0x18001057, /* vfmax_vv */
3788 0x5c005057, /* vfmerge_vfm */
3789 0x10005057, /* vfmin_vf */
3790 0x10001057, /* vfmin_vv */
3791 0xb8005057, /* vfmsac_vf */
3792 0xb8001057, /* vfmsac_vv */
3793 0xa8005057, /* vfmsub_vf */
3794 0xa8001057, /* vfmsub_vv */
3795 0x90005057, /* vfmul_vf */
3796 0x90001057, /* vfmul_vv */
3797 0x42001057, /* vfmv_f_s */
3798 0x42005057, /* vfmv_s_f */
3799 0x5e005057, /* vfmv_v_f */
3800 0x480a1057, /* vfncvt_f_f_w */
3801 0x48099057, /* vfncvt_f_x_w */
3802 0x48091057, /* vfncvt_f_xu_w */
3803 0x480a9057, /* vfncvt_rod_f_f_w */
3804 0x480b9057, /* vfncvt_rtz_x_f_w */
3805 0x480b1057, /* vfncvt_rtz_xu_f_w */
3806 0x48089057, /* vfncvt_x_f_w */
3807 0x48081057, /* vfncvt_xu_f_w */
3808 0x480e9057, /* vfncvtbf16_f_f_w */
3809 0xb4005057, /* vfnmacc_vf */
3810 0xb4001057, /* vfnmacc_vv */
3811 0xa4005057, /* vfnmadd_vf */
3812 0xa4001057, /* vfnmadd_vv */
3813 0xbc005057, /* vfnmsac_vf */
3814 0xbc001057, /* vfnmsac_vv */
3815 0xac005057, /* vfnmsub_vf */
3816 0xac001057, /* vfnmsub_vv */
3817 0x84005057, /* vfrdiv_vf */
3818 0x4c029057, /* vfrec7_v */
3819 0x1c001057, /* vfredmax_vs */
3820 0x14001057, /* vfredmin_vs */
3821 0xc001057, /* vfredosum_vs */
3822 0x4001057, /* vfredsum_vs */
3823 0x4001057, /* vfredusum_vs */
3824 0x4c021057, /* vfrsqrt7_v */
3825 0x9c005057, /* vfrsub_vf */
3826 0x20005057, /* vfsgnj_vf */
3827 0x20001057, /* vfsgnj_vv */
3828 0x24005057, /* vfsgnjn_vf */
3829 0x24001057, /* vfsgnjn_vv */
3830 0x28005057, /* vfsgnjx_vf */
3831 0x28001057, /* vfsgnjx_vv */
3832 0x3c005057, /* vfslide1down_vf */
3833 0x38005057, /* vfslide1up_vf */
3834 0x4c001057, /* vfsqrt_v */
3835 0x8005057, /* vfsub_vf */
3836 0x8001057, /* vfsub_vv */
3837 0xc0005057, /* vfwadd_vf */
3838 0xc0001057, /* vfwadd_vv */
3839 0xd0005057, /* vfwadd_wf */
3840 0xd0001057, /* vfwadd_wv */
3841 0x48061057, /* vfwcvt_f_f_v */
3842 0x48059057, /* vfwcvt_f_x_v */
3843 0x48051057, /* vfwcvt_f_xu_v */
3844 0x48079057, /* vfwcvt_rtz_x_f_v */
3845 0x48071057, /* vfwcvt_rtz_xu_f_v */
3846 0x48049057, /* vfwcvt_x_f_v */
3847 0x48041057, /* vfwcvt_xu_f_v */
3848 0x48069057, /* vfwcvtbf16_f_f_v */
3849 0xf0005057, /* vfwmacc_vf */
3850 0xf0001057, /* vfwmacc_vv */
3851 0xec005057, /* vfwmaccbf16_vf */
3852 0xec001057, /* vfwmaccbf16_vv */
3853 0xf8005057, /* vfwmsac_vf */
3854 0xf8001057, /* vfwmsac_vv */
3855 0xe0005057, /* vfwmul_vf */
3856 0xe0001057, /* vfwmul_vv */
3857 0xf4005057, /* vfwnmacc_vf */
3858 0xf4001057, /* vfwnmacc_vv */
3859 0xfc005057, /* vfwnmsac_vf */
3860 0xfc001057, /* vfwnmsac_vv */
3861 0xcc001057, /* vfwredosum_vs */
3862 0xc4001057, /* vfwredsum_vs */
3863 0xc4001057, /* vfwredusum_vs */
3864 0xc8005057, /* vfwsub_vf */
3865 0xc8001057, /* vfwsub_vv */
3866 0xd8005057, /* vfwsub_wf */
3867 0xd8001057, /* vfwsub_wv */
3868 0xb2002077, /* vghsh_vv */
3869 0xa208a077, /* vgmul_vv */
3870 0x5008a057, /* vid_v */
3871 0x50082057, /* viota_m */
3872 0x2800007, /* vl1r_v */
3873 0x2805007, /* vl1re16_v */
3874 0x2806007, /* vl1re32_v */
3875 0x2807007, /* vl1re64_v */
3876 0x2800007, /* vl1re8_v */
3877 0x22800007, /* vl2r_v */
3878 0x22805007, /* vl2re16_v */
3879 0x22806007, /* vl2re32_v */
3880 0x22807007, /* vl2re64_v */
3881 0x22800007, /* vl2re8_v */
3882 0x62800007, /* vl4r_v */
3883 0x62805007, /* vl4re16_v */
3884 0x62806007, /* vl4re32_v */
3885 0x62807007, /* vl4re64_v */
3886 0x62800007, /* vl4re8_v */
3887 0xe2800007, /* vl8r_v */
3888 0xe2805007, /* vl8re16_v */
3889 0xe2806007, /* vl8re32_v */
3890 0xe2807007, /* vl8re64_v */
3891 0xe2800007, /* vl8re8_v */
3892 0x5007, /* vle16_v */
3893 0x1005007, /* vle16ff_v */
3894 0x2b00007, /* vle1_v */
3895 0x6007, /* vle32_v */
3896 0x1006007, /* vle32ff_v */
3897 0x7007, /* vle64_v */
3898 0x1007007, /* vle64ff_v */
3899 0x7, /* vle8_v */
3900 0x1000007, /* vle8ff_v */
3901 0x2b00007, /* vlm_v */
3902 0xc005007, /* vloxei16_v */
3903 0xc006007, /* vloxei32_v */
3904 0xc007007, /* vloxei64_v */
3905 0xc000007, /* vloxei8_v */
3906 0x8005007, /* vlse16_v */
3907 0x8006007, /* vlse32_v */
3908 0x8007007, /* vlse64_v */
3909 0x8000007, /* vlse8_v */
3910 0x4005007, /* vluxei16_v */
3911 0x4006007, /* vluxei32_v */
3912 0x4007007, /* vluxei64_v */
3913 0x4000007, /* vluxei8_v */
3914 0xb4002057, /* vmacc_vv */
3915 0xb4006057, /* vmacc_vx */
3916 0x46003057, /* vmadc_vi */
3917 0x44003057, /* vmadc_vim */
3918 0x46000057, /* vmadc_vv */
3919 0x44000057, /* vmadc_vvm */
3920 0x46004057, /* vmadc_vx */
3921 0x44004057, /* vmadc_vxm */
3922 0xa4002057, /* vmadd_vv */
3923 0xa4006057, /* vmadd_vx */
3924 0x66002057, /* vmand_mm */
3925 0x62002057, /* vmandn_mm */
3926 0x60002057, /* vmandnot_mm */
3927 0x1c000057, /* vmax_vv */
3928 0x1c004057, /* vmax_vx */
3929 0x18000057, /* vmaxu_vv */
3930 0x18004057, /* vmaxu_vx */
3931 0x5c003057, /* vmerge_vim */
3932 0x5c000057, /* vmerge_vvm */
3933 0x5c004057, /* vmerge_vxm */
3934 0x60005057, /* vmfeq_vf */
3935 0x60001057, /* vmfeq_vv */
3936 0x7c005057, /* vmfge_vf */
3937 0x74005057, /* vmfgt_vf */
3938 0x64005057, /* vmfle_vf */
3939 0x64001057, /* vmfle_vv */
3940 0x6c005057, /* vmflt_vf */
3941 0x6c001057, /* vmflt_vv */
3942 0x70005057, /* vmfne_vf */
3943 0x70001057, /* vmfne_vv */
3944 0x14000057, /* vmin_vv */
3945 0x14004057, /* vmin_vx */
3946 0x10000057, /* vminu_vv */
3947 0x10004057, /* vminu_vx */
3948 0x76002057, /* vmnand_mm */
3949 0x7a002057, /* vmnor_mm */
3950 0x6a002057, /* vmor_mm */
3951 0x72002057, /* vmorn_mm */
3952 0x70002057, /* vmornot_mm */
3953 0x4e000057, /* vmsbc_vv */
3954 0x4c000057, /* vmsbc_vvm */
3955 0x4e004057, /* vmsbc_vx */
3956 0x4c004057, /* vmsbc_vxm */
3957 0x5000a057, /* vmsbf_m */
3958 0x60003057, /* vmseq_vi */
3959 0x60000057, /* vmseq_vv */
3960 0x60004057, /* vmseq_vx */
3961 0x7c003057, /* vmsgt_vi */
3962 0x7c004057, /* vmsgt_vx */
3963 0x78003057, /* vmsgtu_vi */
3964 0x78004057, /* vmsgtu_vx */
3965 0x5001a057, /* vmsif_m */
3966 0x74003057, /* vmsle_vi */
3967 0x74000057, /* vmsle_vv */
3968 0x74004057, /* vmsle_vx */
3969 0x70003057, /* vmsleu_vi */
3970 0x70000057, /* vmsleu_vv */
3971 0x70004057, /* vmsleu_vx */
3972 0x6c000057, /* vmslt_vv */
3973 0x6c004057, /* vmslt_vx */
3974 0x68000057, /* vmsltu_vv */
3975 0x68004057, /* vmsltu_vx */
3976 0x64003057, /* vmsne_vi */
3977 0x64000057, /* vmsne_vv */
3978 0x64004057, /* vmsne_vx */
3979 0x50012057, /* vmsof_m */
3980 0x94002057, /* vmul_vv */
3981 0x94006057, /* vmul_vx */
3982 0x9c002057, /* vmulh_vv */
3983 0x9c006057, /* vmulh_vx */
3984 0x98002057, /* vmulhsu_vv */
3985 0x98006057, /* vmulhsu_vx */
3986 0x90002057, /* vmulhu_vv */
3987 0x90006057, /* vmulhu_vx */
3988 0x9e003057, /* vmv1r_v */
3989 0x9e00b057, /* vmv2r_v */
3990 0x9e01b057, /* vmv4r_v */
3991 0x9e03b057, /* vmv8r_v */
3992 0x42006057, /* vmv_s_x */
3993 0x5e003057, /* vmv_v_i */
3994 0x5e000057, /* vmv_v_v */
3995 0x5e004057, /* vmv_v_x */
3996 0x42002057, /* vmv_x_s */
3997 0x7e002057, /* vmxnor_mm */
3998 0x6e002057, /* vmxor_mm */
3999 0xbc003057, /* vnclip_wi */
4000 0xbc000057, /* vnclip_wv */
4001 0xbc004057, /* vnclip_wx */
4002 0xb8003057, /* vnclipu_wi */
4003 0xb8000057, /* vnclipu_wv */
4004 0xb8004057, /* vnclipu_wx */
4005 0xbc002057, /* vnmsac_vv */
4006 0xbc006057, /* vnmsac_vx */
4007 0xac002057, /* vnmsub_vv */
4008 0xac006057, /* vnmsub_vx */
4009 0xb4003057, /* vnsra_wi */
4010 0xb4000057, /* vnsra_wv */
4011 0xb4004057, /* vnsra_wx */
4012 0xb0003057, /* vnsrl_wi */
4013 0xb0000057, /* vnsrl_wv */
4014 0xb0004057, /* vnsrl_wx */
4015 0x28003057, /* vor_vi */
4016 0x28000057, /* vor_vv */
4017 0x28004057, /* vor_vx */
4018 0x40082057, /* vpopc_m */
4019 0x4002057, /* vredand_vs */
4020 0x1c002057, /* vredmax_vs */
4021 0x18002057, /* vredmaxu_vs */
4022 0x14002057, /* vredmin_vs */
4023 0x10002057, /* vredminu_vs */
4024 0x8002057, /* vredor_vs */
4025 0x2057, /* vredsum_vs */
4026 0xc002057, /* vredxor_vs */
4027 0x8c002057, /* vrem_vv */
4028 0x8c006057, /* vrem_vx */
4029 0x88002057, /* vremu_vv */
4030 0x88006057, /* vremu_vx */
4031 0x4804a057, /* vrev8_v */
4032 0x30003057, /* vrgather_vi */
4033 0x30000057, /* vrgather_vv */
4034 0x30004057, /* vrgather_vx */
4035 0x38000057, /* vrgatherei16_vv */
4036 0x54000057, /* vrol_vv */
4037 0x54004057, /* vrol_vx */
4038 0x50003057, /* vror_vi */
4039 0x50000057, /* vror_vv */
4040 0x50004057, /* vror_vx */
4041 0xc003057, /* vrsub_vi */
4042 0xc004057, /* vrsub_vx */
4043 0x2800027, /* vs1r_v */
4044 0x22800027, /* vs2r_v */
4045 0x62800027, /* vs4r_v */
4046 0xe2800027, /* vs8r_v */
4047 0x84003057, /* vsadd_vi */
4048 0x84000057, /* vsadd_vv */
4049 0x84004057, /* vsadd_vx */
4050 0x80003057, /* vsaddu_vi */
4051 0x80000057, /* vsaddu_vv */
4052 0x80004057, /* vsaddu_vx */
4053 0x48000057, /* vsbc_vvm */
4054 0x48004057, /* vsbc_vxm */
4055 0x5027, /* vse16_v */
4056 0x2b00027, /* vse1_v */
4057 0x6027, /* vse32_v */
4058 0x7027, /* vse64_v */
4059 0x27, /* vse8_v */
4060 0xc0007057, /* vsetivli */
4061 0x80007057, /* vsetvl */
4062 0x7057, /* vsetvli */
4063 0x4803a057, /* vsext_vf2 */
4064 0x4802a057, /* vsext_vf4 */
4065 0x4801a057, /* vsext_vf8 */
4066 0xba002077, /* vsha2ch_vv */
4067 0xbe002077, /* vsha2cl_vv */
4068 0xb6002077, /* vsha2ms_vv */
4069 0x3c006057, /* vslide1down_vx */
4070 0x38006057, /* vslide1up_vx */
4071 0x3c003057, /* vslidedown_vi */
4072 0x3c004057, /* vslidedown_vx */
4073 0x38003057, /* vslideup_vi */
4074 0x38004057, /* vslideup_vx */
4075 0x94003057, /* vsll_vi */
4076 0x94000057, /* vsll_vv */
4077 0x94004057, /* vsll_vx */
4078 0xae002077, /* vsm3c_vi */
4079 0x82002077, /* vsm3me_vv */
4080 0x86002077, /* vsm4k_vi */
4081 0xa6082077, /* vsm4r_vs */
4082 0xa2082077, /* vsm4r_vv */
4083 0x2b00027, /* vsm_v */
4084 0x9c000057, /* vsmul_vv */
4085 0x9c004057, /* vsmul_vx */
4086 0xc005027, /* vsoxei16_v */
4087 0xc006027, /* vsoxei32_v */
4088 0xc007027, /* vsoxei64_v */
4089 0xc000027, /* vsoxei8_v */
4090 0xa4003057, /* vsra_vi */
4091 0xa4000057, /* vsra_vv */
4092 0xa4004057, /* vsra_vx */
4093 0xa0003057, /* vsrl_vi */
4094 0xa0000057, /* vsrl_vv */
4095 0xa0004057, /* vsrl_vx */
4096 0x8005027, /* vsse16_v */
4097 0x8006027, /* vsse32_v */
4098 0x8007027, /* vsse64_v */
4099 0x8000027, /* vsse8_v */
4100 0xac003057, /* vssra_vi */
4101 0xac000057, /* vssra_vv */
4102 0xac004057, /* vssra_vx */
4103 0xa8003057, /* vssrl_vi */
4104 0xa8000057, /* vssrl_vv */
4105 0xa8004057, /* vssrl_vx */
4106 0x8c000057, /* vssub_vv */
4107 0x8c004057, /* vssub_vx */
4108 0x88000057, /* vssubu_vv */
4109 0x88004057, /* vssubu_vx */
4110 0x8000057, /* vsub_vv */
4111 0x8004057, /* vsub_vx */
4112 0x4005027, /* vsuxei16_v */
4113 0x4006027, /* vsuxei32_v */
4114 0x4007027, /* vsuxei64_v */
4115 0x4000027, /* vsuxei8_v */
4116 0xc4002057, /* vwadd_vv */
4117 0xc4006057, /* vwadd_vx */
4118 0xd4002057, /* vwadd_wv */
4119 0xd4006057, /* vwadd_wx */
4120 0xc0002057, /* vwaddu_vv */
4121 0xc0006057, /* vwaddu_vx */
4122 0xd0002057, /* vwaddu_wv */
4123 0xd0006057, /* vwaddu_wx */
4124 0xf4002057, /* vwmacc_vv */
4125 0xf4006057, /* vwmacc_vx */
4126 0xfc002057, /* vwmaccsu_vv */
4127 0xfc006057, /* vwmaccsu_vx */
4128 0xf0002057, /* vwmaccu_vv */
4129 0xf0006057, /* vwmaccu_vx */
4130 0xf8006057, /* vwmaccus_vx */
4131 0xec002057, /* vwmul_vv */
4132 0xec006057, /* vwmul_vx */
4133 0xe8002057, /* vwmulsu_vv */
4134 0xe8006057, /* vwmulsu_vx */
4135 0xe0002057, /* vwmulu_vv */
4136 0xe0006057, /* vwmulu_vx */
4137 0xc4000057, /* vwredsum_vs */
4138 0xc0000057, /* vwredsumu_vs */
4139 0xd4003057, /* vwsll_vi */
4140 0xd4000057, /* vwsll_vv */
4141 0xd4004057, /* vwsll_vx */
4142 0xcc002057, /* vwsub_vv */
4143 0xcc006057, /* vwsub_vx */
4144 0xdc002057, /* vwsub_wv */
4145 0xdc006057, /* vwsub_wx */
4146 0xc8002057, /* vwsubu_vv */
4147 0xc8006057, /* vwsubu_vx */
4148 0xd8002057, /* vwsubu_wv */
4149 0xd8006057, /* vwsubu_wx */
4150 0x2c003057, /* vxor_vi */
4151 0x2c000057, /* vxor_vv */
4152 0x2c004057, /* vxor_vx */
4153 0x48032057, /* vzext_vf2 */
4154 0x48022057, /* vzext_vf4 */
4155 0x48012057, /* vzext_vf8 */
4156 0x10500073, /* wfi */
4157 0xd00073, /* wrs_nto */
4158 0x1d00073, /* wrs_sto */
4159 0x40004033, /* xnor */
4160 0x4033, /* xor */
4161 0x4013, /* xori */
4162 0x28002033, /* xperm4 */
4163 0x28004033, /* xperm8 */
4164 0xff07013, /* zext_b */
4165 0xffff_ffff, /* zext_h */
4166 0x8004033, /* zext_h_rv32 */
4167 0xffff_ffff, /* zext_w */
4168 0x8f01013, /* zip */
4169];
4170pub static OPCODE32_MASK: [u32; 1039] = [
4171 0xfe00707f, /* add */
4172 0xffff_ffff, /* add_uw */
4173 0x707f, /* addi */
4174 0xffff_ffff, /* addiw */
4175 0xffff_ffff, /* addw */
4176 0x3e00707f, /* aes32dsi */
4177 0x3e00707f, /* aes32dsmi */
4178 0x3e00707f, /* aes32esi */
4179 0x3e00707f, /* aes32esmi */
4180 0xffff_ffff, /* aes64ds */
4181 0xffff_ffff, /* aes64dsm */
4182 0xffff_ffff, /* aes64es */
4183 0xffff_ffff, /* aes64esm */
4184 0xffff_ffff, /* aes64im */
4185 0xffff_ffff, /* aes64ks1i */
4186 0xffff_ffff, /* aes64ks2 */
4187 0xf800707f, /* amoadd_b */
4188 0xffff_ffff, /* amoadd_d */
4189 0xf800707f, /* amoadd_h */
4190 0xf800707f, /* amoadd_w */
4191 0xf800707f, /* amoand_b */
4192 0xffff_ffff, /* amoand_d */
4193 0xf800707f, /* amoand_h */
4194 0xf800707f, /* amoand_w */
4195 0xf800707f, /* amocas_b */
4196 0xf800707f, /* amocas_d */
4197 0xf800707f, /* amocas_h */
4198 0xffff_ffff, /* amocas_q */
4199 0xf800707f, /* amocas_w */
4200 0xf800707f, /* amomax_b */
4201 0xffff_ffff, /* amomax_d */
4202 0xf800707f, /* amomax_h */
4203 0xf800707f, /* amomax_w */
4204 0xf800707f, /* amomaxu_b */
4205 0xffff_ffff, /* amomaxu_d */
4206 0xf800707f, /* amomaxu_h */
4207 0xf800707f, /* amomaxu_w */
4208 0xf800707f, /* amomin_b */
4209 0xffff_ffff, /* amomin_d */
4210 0xf800707f, /* amomin_h */
4211 0xf800707f, /* amomin_w */
4212 0xf800707f, /* amominu_b */
4213 0xffff_ffff, /* amominu_d */
4214 0xf800707f, /* amominu_h */
4215 0xf800707f, /* amominu_w */
4216 0xf800707f, /* amoor_b */
4217 0xffff_ffff, /* amoor_d */
4218 0xf800707f, /* amoor_h */
4219 0xf800707f, /* amoor_w */
4220 0xf800707f, /* amoswap_b */
4221 0xffff_ffff, /* amoswap_d */
4222 0xf800707f, /* amoswap_h */
4223 0xf800707f, /* amoswap_w */
4224 0xf800707f, /* amoxor_b */
4225 0xffff_ffff, /* amoxor_d */
4226 0xf800707f, /* amoxor_h */
4227 0xf800707f, /* amoxor_w */
4228 0xfe00707f, /* and */
4229 0x707f, /* andi */
4230 0xfe00707f, /* andn */
4231 0x7f, /* auipc */
4232 0xfe00707f, /* bclr */
4233 0xffff_ffff, /* bclri */
4234 0xfe00707f, /* bclri_rv32 */
4235 0x707f, /* beq */
4236 0x1f0707f, /* beqz */
4237 0xfe00707f, /* bext */
4238 0xffff_ffff, /* bexti */
4239 0xfe00707f, /* bexti_rv32 */
4240 0x707f, /* bge */
4241 0x707f, /* bgeu */
4242 0x1f0707f, /* bgez */
4243 0x707f, /* bgt */
4244 0x707f, /* bgtu */
4245 0xff07f, /* bgtz */
4246 0xfe00707f, /* binv */
4247 0xffff_ffff, /* binvi */
4248 0xfe00707f, /* binvi_rv32 */
4249 0x707f, /* ble */
4250 0x707f, /* bleu */
4251 0xff07f, /* blez */
4252 0x707f, /* blt */
4253 0x707f, /* bltu */
4254 0x1f0707f, /* bltz */
4255 0x707f, /* bne */
4256 0x1f0707f, /* bnez */
4257 0xfff0707f, /* brev8 */
4258 0xfe00707f, /* bset */
4259 0xffff_ffff, /* bseti */
4260 0xfe00707f, /* bseti_rv32 */
4261 0xf003, /* c_add */
4262 0xe003, /* c_addi */
4263 0xef83, /* c_addi16sp */
4264 0xe003, /* c_addi4spn */
4265 0xffff_ffff, /* c_addiw */
4266 0xffff_ffff, /* c_addw */
4267 0xfc63, /* c_and */
4268 0xec03, /* c_andi */
4269 0xe003, /* c_beqz */
4270 0xe003, /* c_bnez */
4271 0xffff, /* c_ebreak */
4272 0xe003, /* c_fld */
4273 0xe003, /* c_fldsp */
4274 0xe003, /* c_flw */
4275 0xe003, /* c_flwsp */
4276 0xe003, /* c_fsd */
4277 0xe003, /* c_fsdsp */
4278 0xe003, /* c_fsw */
4279 0xe003, /* c_fswsp */
4280 0xe003, /* c_j */
4281 0xe003, /* c_jal */
4282 0xf07f, /* c_jalr */
4283 0xf07f, /* c_jr */
4284 0xfc03, /* c_lbu */
4285 0xe003, /* c_ld */
4286 0xe003, /* c_ldsp */
4287 0xfc43, /* c_lh */
4288 0xfc43, /* c_lhu */
4289 0xe003, /* c_li */
4290 0xe003, /* c_lui */
4291 0xe003, /* c_lw */
4292 0xe003, /* c_lwsp */
4293 0xffff, /* c_mop_1 */
4294 0xffff, /* c_mop_11 */
4295 0xffff, /* c_mop_13 */
4296 0xffff, /* c_mop_15 */
4297 0xffff, /* c_mop_3 */
4298 0xffff, /* c_mop_5 */
4299 0xffff, /* c_mop_7 */
4300 0xffff, /* c_mop_9 */
4301 0xf8ff, /* c_mop_N */
4302 0xfc63, /* c_mul */
4303 0xf003, /* c_mv */
4304 0xef83, /* c_nop */
4305 0xfc7f, /* c_not */
4306 0xffff, /* c_ntl_all */
4307 0xffff, /* c_ntl_p1 */
4308 0xffff, /* c_ntl_pall */
4309 0xffff, /* c_ntl_s1 */
4310 0xfc63, /* c_or */
4311 0xfc03, /* c_sb */
4312 0xe003, /* c_sd */
4313 0xe003, /* c_sdsp */
4314 0xfc7f, /* c_sext_b */
4315 0xfc7f, /* c_sext_h */
4316 0xffff_ffff, /* c_sext_w */
4317 0xfc43, /* c_sh */
4318 0xe003, /* c_slli */
4319 0xf003, /* c_slli_rv32 */
4320 0xec03, /* c_srai */
4321 0xfc03, /* c_srai_rv32 */
4322 0xec03, /* c_srli */
4323 0xfc03, /* c_srli_rv32 */
4324 0xffff, /* c_sspopchk_x5 */
4325 0xffff, /* c_sspush_x1 */
4326 0xfc63, /* c_sub */
4327 0xffff_ffff, /* c_subw */
4328 0xe003, /* c_sw */
4329 0xe003, /* c_swsp */
4330 0xfc63, /* c_xor */
4331 0xfc7f, /* c_zext_b */
4332 0xfc7f, /* c_zext_h */
4333 0xffff_ffff, /* c_zext_w */
4334 0xfff07fff, /* cbo_clean */
4335 0xfff07fff, /* cbo_flush */
4336 0xfff07fff, /* cbo_inval */
4337 0xfff07fff, /* cbo_zero */
4338 0xfe00707f, /* clmul */
4339 0xfe00707f, /* clmulh */
4340 0xfe00707f, /* clmulr */
4341 0xfff0707f, /* clz */
4342 0xffff_ffff, /* clzw */
4343 0xfc03, /* cm_jalt */
4344 0xfc63, /* cm_mva01s */
4345 0xfc63, /* cm_mvsa01 */
4346 0xff03, /* cm_pop */
4347 0xff03, /* cm_popret */
4348 0xff03, /* cm_popretz */
4349 0xff03, /* cm_push */
4350 0xfff0707f, /* cpop */
4351 0xffff_ffff, /* cpopw */
4352 0x7fff, /* csrc */
4353 0x7fff, /* csrci */
4354 0xff07f, /* csrr */
4355 0x707f, /* csrrc */
4356 0x707f, /* csrrci */
4357 0x707f, /* csrrs */
4358 0x707f, /* csrrsi */
4359 0x707f, /* csrrw */
4360 0x707f, /* csrrwi */
4361 0x7fff, /* csrs */
4362 0x7fff, /* csrsi */
4363 0x7fff, /* csrw */
4364 0x7fff, /* csrwi */
4365 0xfff0707f, /* ctz */
4366 0xffff_ffff, /* ctzw */
4367 0xfe00707f, /* czero_eqz */
4368 0xfe00707f, /* czero_nez */
4369 0xfe00707f, /* div */
4370 0xfe00707f, /* divu */
4371 0xffff_ffff, /* divuw */
4372 0xffff_ffff, /* divw */
4373 0xffffffff, /* dret */
4374 0xffffffff, /* ebreak */
4375 0xffffffff, /* ecall */
4376 0xfe00707f, /* fabs_d */
4377 0xfe00707f, /* fabs_h */
4378 0xfe00707f, /* fabs_q */
4379 0xfe00707f, /* fabs_s */
4380 0xfe00007f, /* fadd_d */
4381 0xfe00007f, /* fadd_h */
4382 0xfe00007f, /* fadd_q */
4383 0xfe00007f, /* fadd_s */
4384 0xfff0707f, /* fclass_d */
4385 0xfff0707f, /* fclass_h */
4386 0xfff0707f, /* fclass_q */
4387 0xfff0707f, /* fclass_s */
4388 0xfff0007f, /* fcvt_bf16_s */
4389 0xfff0007f, /* fcvt_d_h */
4390 0xffff_ffff, /* fcvt_d_l */
4391 0xffff_ffff, /* fcvt_d_lu */
4392 0xfff0007f, /* fcvt_d_q */
4393 0xfff0007f, /* fcvt_d_s */
4394 0xfff0007f, /* fcvt_d_w */
4395 0xfff0007f, /* fcvt_d_wu */
4396 0xfff0007f, /* fcvt_h_d */
4397 0xffff_ffff, /* fcvt_h_l */
4398 0xffff_ffff, /* fcvt_h_lu */
4399 0xfff0007f, /* fcvt_h_q */
4400 0xfff0007f, /* fcvt_h_s */
4401 0xfff0007f, /* fcvt_h_w */
4402 0xfff0007f, /* fcvt_h_wu */
4403 0xffff_ffff, /* fcvt_l_d */
4404 0xffff_ffff, /* fcvt_l_h */
4405 0xffff_ffff, /* fcvt_l_q */
4406 0xffff_ffff, /* fcvt_l_s */
4407 0xffff_ffff, /* fcvt_lu_d */
4408 0xffff_ffff, /* fcvt_lu_h */
4409 0xffff_ffff, /* fcvt_lu_q */
4410 0xffff_ffff, /* fcvt_lu_s */
4411 0xfff0007f, /* fcvt_q_d */
4412 0xfff0007f, /* fcvt_q_h */
4413 0xffff_ffff, /* fcvt_q_l */
4414 0xffff_ffff, /* fcvt_q_lu */
4415 0xfff0007f, /* fcvt_q_s */
4416 0xfff0007f, /* fcvt_q_w */
4417 0xfff0007f, /* fcvt_q_wu */
4418 0xfff0007f, /* fcvt_s_bf16 */
4419 0xfff0007f, /* fcvt_s_d */
4420 0xfff0007f, /* fcvt_s_h */
4421 0xffff_ffff, /* fcvt_s_l */
4422 0xffff_ffff, /* fcvt_s_lu */
4423 0xfff0007f, /* fcvt_s_q */
4424 0xfff0007f, /* fcvt_s_w */
4425 0xfff0007f, /* fcvt_s_wu */
4426 0xfff0007f, /* fcvt_w_d */
4427 0xfff0007f, /* fcvt_w_h */
4428 0xfff0007f, /* fcvt_w_q */
4429 0xfff0007f, /* fcvt_w_s */
4430 0xfff0007f, /* fcvt_wu_d */
4431 0xfff0007f, /* fcvt_wu_h */
4432 0xfff0007f, /* fcvt_wu_q */
4433 0xfff0007f, /* fcvt_wu_s */
4434 0xfff0707f, /* fcvtmod_w_d */
4435 0xfe00007f, /* fdiv_d */
4436 0xfe00007f, /* fdiv_h */
4437 0xfe00007f, /* fdiv_q */
4438 0xfe00007f, /* fdiv_s */
4439 0x707f, /* fence */
4440 0x707f, /* fence_i */
4441 0xfff0707f, /* fence_tso */
4442 0xfe00707f, /* feq_d */
4443 0xfe00707f, /* feq_h */
4444 0xfe00707f, /* feq_q */
4445 0xfe00707f, /* feq_s */
4446 0x707f, /* fld */
4447 0xfe00707f, /* fle_d */
4448 0xfe00707f, /* fle_h */
4449 0xfe00707f, /* fle_q */
4450 0xfe00707f, /* fle_s */
4451 0xfe00707f, /* fleq_d */
4452 0xfe00707f, /* fleq_h */
4453 0xfe00707f, /* fleq_q */
4454 0xfe00707f, /* fleq_s */
4455 0x707f, /* flh */
4456 0xfff0707f, /* fli_d */
4457 0xfff0707f, /* fli_h */
4458 0xfff0707f, /* fli_q */
4459 0xfff0707f, /* fli_s */
4460 0x707f, /* flq */
4461 0xfe00707f, /* flt_d */
4462 0xfe00707f, /* flt_h */
4463 0xfe00707f, /* flt_q */
4464 0xfe00707f, /* flt_s */
4465 0xfe00707f, /* fltq_d */
4466 0xfe00707f, /* fltq_h */
4467 0xfe00707f, /* fltq_q */
4468 0xfe00707f, /* fltq_s */
4469 0x707f, /* flw */
4470 0x600007f, /* fmadd_d */
4471 0x600007f, /* fmadd_h */
4472 0x600007f, /* fmadd_q */
4473 0x600007f, /* fmadd_s */
4474 0xfe00707f, /* fmax_d */
4475 0xfe00707f, /* fmax_h */
4476 0xfe00707f, /* fmax_q */
4477 0xfe00707f, /* fmax_s */
4478 0xfe00707f, /* fmaxm_d */
4479 0xfe00707f, /* fmaxm_h */
4480 0xfe00707f, /* fmaxm_q */
4481 0xfe00707f, /* fmaxm_s */
4482 0xfe00707f, /* fmin_d */
4483 0xfe00707f, /* fmin_h */
4484 0xfe00707f, /* fmin_q */
4485 0xfe00707f, /* fmin_s */
4486 0xfe00707f, /* fminm_d */
4487 0xfe00707f, /* fminm_h */
4488 0xfe00707f, /* fminm_q */
4489 0xfe00707f, /* fminm_s */
4490 0x600007f, /* fmsub_d */
4491 0x600007f, /* fmsub_h */
4492 0x600007f, /* fmsub_q */
4493 0x600007f, /* fmsub_s */
4494 0xfe00007f, /* fmul_d */
4495 0xfe00007f, /* fmul_h */
4496 0xfe00007f, /* fmul_q */
4497 0xfe00007f, /* fmul_s */
4498 0xfe00707f, /* fmv_d */
4499 0xffff_ffff, /* fmv_d_x */
4500 0xfe00707f, /* fmv_h */
4501 0xfff0707f, /* fmv_h_x */
4502 0xfe00707f, /* fmv_q */
4503 0xfe00707f, /* fmv_s */
4504 0xfff0707f, /* fmv_s_x */
4505 0xfff0707f, /* fmv_w_x */
4506 0xffff_ffff, /* fmv_x_d */
4507 0xfff0707f, /* fmv_x_h */
4508 0xfff0707f, /* fmv_x_s */
4509 0xfff0707f, /* fmv_x_w */
4510 0xfff0707f, /* fmvh_x_d */
4511 0xffff_ffff, /* fmvh_x_q */
4512 0xfe00707f, /* fmvp_d_x */
4513 0xffff_ffff, /* fmvp_q_x */
4514 0xfe00707f, /* fneg_d */
4515 0xfe00707f, /* fneg_h */
4516 0xfe00707f, /* fneg_q */
4517 0xfe00707f, /* fneg_s */
4518 0x600007f, /* fnmadd_d */
4519 0x600007f, /* fnmadd_h */
4520 0x600007f, /* fnmadd_q */
4521 0x600007f, /* fnmadd_s */
4522 0x600007f, /* fnmsub_d */
4523 0x600007f, /* fnmsub_h */
4524 0x600007f, /* fnmsub_q */
4525 0x600007f, /* fnmsub_s */
4526 0xfffff07f, /* frcsr */
4527 0xfffff07f, /* frflags */
4528 0xfff0007f, /* fround_d */
4529 0xfff0007f, /* fround_h */
4530 0xfff0007f, /* fround_q */
4531 0xfff0007f, /* fround_s */
4532 0xfff0007f, /* froundnx_d */
4533 0xfff0007f, /* froundnx_h */
4534 0xfff0007f, /* froundnx_q */
4535 0xfff0007f, /* froundnx_s */
4536 0xfffff07f, /* frrm */
4537 0xfff0707f, /* fscsr */
4538 0x707f, /* fsd */
4539 0xfff0707f, /* fsflags */
4540 0xfff0707f, /* fsflagsi */
4541 0xfe00707f, /* fsgnj_d */
4542 0xfe00707f, /* fsgnj_h */
4543 0xfe00707f, /* fsgnj_q */
4544 0xfe00707f, /* fsgnj_s */
4545 0xfe00707f, /* fsgnjn_d */
4546 0xfe00707f, /* fsgnjn_h */
4547 0xfe00707f, /* fsgnjn_q */
4548 0xfe00707f, /* fsgnjn_s */
4549 0xfe00707f, /* fsgnjx_d */
4550 0xfe00707f, /* fsgnjx_h */
4551 0xfe00707f, /* fsgnjx_q */
4552 0xfe00707f, /* fsgnjx_s */
4553 0x707f, /* fsh */
4554 0x707f, /* fsq */
4555 0xfff0007f, /* fsqrt_d */
4556 0xfff0007f, /* fsqrt_h */
4557 0xfff0007f, /* fsqrt_q */
4558 0xfff0007f, /* fsqrt_s */
4559 0xfff0707f, /* fsrm */
4560 0xfff0707f, /* fsrmi */
4561 0xfe00007f, /* fsub_d */
4562 0xfe00007f, /* fsub_h */
4563 0xfe00007f, /* fsub_q */
4564 0xfe00007f, /* fsub_s */
4565 0x707f, /* fsw */
4566 0xfe007fff, /* hfence_gvma */
4567 0xfe007fff, /* hfence_vvma */
4568 0xfe007fff, /* hinval_gvma */
4569 0xfe007fff, /* hinval_vvma */
4570 0xfff0707f, /* hlv_b */
4571 0xfff0707f, /* hlv_bu */
4572 0xffff_ffff, /* hlv_d */
4573 0xfff0707f, /* hlv_h */
4574 0xfff0707f, /* hlv_hu */
4575 0xfff0707f, /* hlv_w */
4576 0xffff_ffff, /* hlv_wu */
4577 0xfff0707f, /* hlvx_hu */
4578 0xfff0707f, /* hlvx_wu */
4579 0xfe007fff, /* hsv_b */
4580 0xffff_ffff, /* hsv_d */
4581 0xfe007fff, /* hsv_h */
4582 0xfe007fff, /* hsv_w */
4583 0xfff, /* j */
4584 0x7f, /* jal */
4585 0xfff, /* jal_pseudo */
4586 0x707f, /* jalr */
4587 0xfff07fff, /* jalr_pseudo */
4588 0xfff07fff, /* jr */
4589 0x707f, /* lb */
4590 0x707f, /* lbu */
4591 0xffff_ffff, /* ld */
4592 0x707f, /* lh */
4593 0x707f, /* lhu */
4594 0xfff, /* lpad */
4595 0xffff_ffff, /* lr_d */
4596 0xf9f0707f, /* lr_w */
4597 0x7f, /* lui */
4598 0x707f, /* lw */
4599 0xffff_ffff, /* lwu */
4600 0xfe00707f, /* max */
4601 0xfe00707f, /* maxu */
4602 0xfe00707f, /* min */
4603 0xfe00707f, /* minu */
4604 0xffffffff, /* mnret */
4605 0xfff0707f, /* mop_r_0 */
4606 0xfff0707f, /* mop_r_1 */
4607 0xfff0707f, /* mop_r_10 */
4608 0xfff0707f, /* mop_r_11 */
4609 0xfff0707f, /* mop_r_12 */
4610 0xfff0707f, /* mop_r_13 */
4611 0xfff0707f, /* mop_r_14 */
4612 0xfff0707f, /* mop_r_15 */
4613 0xfff0707f, /* mop_r_16 */
4614 0xfff0707f, /* mop_r_17 */
4615 0xfff0707f, /* mop_r_18 */
4616 0xfff0707f, /* mop_r_19 */
4617 0xfff0707f, /* mop_r_2 */
4618 0xfff0707f, /* mop_r_20 */
4619 0xfff0707f, /* mop_r_21 */
4620 0xfff0707f, /* mop_r_22 */
4621 0xfff0707f, /* mop_r_23 */
4622 0xfff0707f, /* mop_r_24 */
4623 0xfff0707f, /* mop_r_25 */
4624 0xfff0707f, /* mop_r_26 */
4625 0xfff0707f, /* mop_r_27 */
4626 0xfff0707f, /* mop_r_28 */
4627 0xfff0707f, /* mop_r_29 */
4628 0xfff0707f, /* mop_r_3 */
4629 0xfff0707f, /* mop_r_30 */
4630 0xfff0707f, /* mop_r_31 */
4631 0xfff0707f, /* mop_r_4 */
4632 0xfff0707f, /* mop_r_5 */
4633 0xfff0707f, /* mop_r_6 */
4634 0xfff0707f, /* mop_r_7 */
4635 0xfff0707f, /* mop_r_8 */
4636 0xfff0707f, /* mop_r_9 */
4637 0xb3c0707f, /* mop_r_N */
4638 0xfe00707f, /* mop_rr_0 */
4639 0xfe00707f, /* mop_rr_1 */
4640 0xfe00707f, /* mop_rr_2 */
4641 0xfe00707f, /* mop_rr_3 */
4642 0xfe00707f, /* mop_rr_4 */
4643 0xfe00707f, /* mop_rr_5 */
4644 0xfe00707f, /* mop_rr_6 */
4645 0xfe00707f, /* mop_rr_7 */
4646 0xb200707f, /* mop_rr_N */
4647 0xffffffff, /* mret */
4648 0xfe00707f, /* mul */
4649 0xfe00707f, /* mulh */
4650 0xfe00707f, /* mulhsu */
4651 0xfe00707f, /* mulhu */
4652 0xffff_ffff, /* mulw */
4653 0xfff0707f, /* mv */
4654 0xfff0707f, /* neg */
4655 0xffffffff, /* nop */
4656 0xffffffff, /* ntl_all */
4657 0xffffffff, /* ntl_p1 */
4658 0xffffffff, /* ntl_pall */
4659 0xffffffff, /* ntl_s1 */
4660 0xfe00707f, /* or */
4661 0xfff0707f, /* orc_b */
4662 0x707f, /* ori */
4663 0xfe00707f, /* orn */
4664 0xfe00707f, /* pack */
4665 0xfe00707f, /* packh */
4666 0xffff_ffff, /* packw */
4667 0xffffffff, /* pause */
4668 0x1f07fff, /* prefetch_i */
4669 0x1f07fff, /* prefetch_r */
4670 0x1f07fff, /* prefetch_w */
4671 0xfffff07f, /* rdcycle */
4672 0xfffff07f, /* rdcycleh */
4673 0xfffff07f, /* rdinstret */
4674 0xfffff07f, /* rdinstreth */
4675 0xfffff07f, /* rdtime */
4676 0xfffff07f, /* rdtimeh */
4677 0xfe00707f, /* rem */
4678 0xfe00707f, /* remu */
4679 0xffff_ffff, /* remuw */
4680 0xffff_ffff, /* remw */
4681 0xffffffff, /* ret */
4682 0xffff_ffff, /* rev8 */
4683 0xfff0707f, /* rev8_rv32 */
4684 0xfe00707f, /* rol */
4685 0xffff_ffff, /* rolw */
4686 0xfe00707f, /* ror */
4687 0xffff_ffff, /* rori */
4688 0xfe00707f, /* rori_rv32 */
4689 0xffff_ffff, /* roriw */
4690 0xffff_ffff, /* rorw */
4691 0x707f, /* sb */
4692 0xffffffff, /* sbreak */
4693 0xffff_ffff, /* sc_d */
4694 0xf800707f, /* sc_w */
4695 0xffffffff, /* scall */
4696 0xffffffff, /* sctrclr */
4697 0xffff_ffff, /* sd */
4698 0xfff0707f, /* seqz */
4699 0xfff0707f, /* sext_b */
4700 0xfff0707f, /* sext_h */
4701 0xffff_ffff, /* sext_w */
4702 0xffffffff, /* sfence_inval_ir */
4703 0xfe007fff, /* sfence_vma */
4704 0xffffffff, /* sfence_w_inval */
4705 0xfe0ff07f, /* sgtz */
4706 0x707f, /* sh */
4707 0xfe00707f, /* sh1add */
4708 0xffff_ffff, /* sh1add_uw */
4709 0xfe00707f, /* sh2add */
4710 0xffff_ffff, /* sh2add_uw */
4711 0xfe00707f, /* sh3add */
4712 0xffff_ffff, /* sh3add_uw */
4713 0xfff0707f, /* sha256sig0 */
4714 0xfff0707f, /* sha256sig1 */
4715 0xfff0707f, /* sha256sum0 */
4716 0xfff0707f, /* sha256sum1 */
4717 0xffff_ffff, /* sha512sig0 */
4718 0xfe00707f, /* sha512sig0h */
4719 0xfe00707f, /* sha512sig0l */
4720 0xffff_ffff, /* sha512sig1 */
4721 0xfe00707f, /* sha512sig1h */
4722 0xfe00707f, /* sha512sig1l */
4723 0xffff_ffff, /* sha512sum0 */
4724 0xfe00707f, /* sha512sum0r */
4725 0xffff_ffff, /* sha512sum1 */
4726 0xfe00707f, /* sha512sum1r */
4727 0xfe007fff, /* sinval_vma */
4728 0xfe00707f, /* sll */
4729 0xfc00707f, /* slli */
4730 0xfe00707f, /* slli_rv32 */
4731 0xffff_ffff, /* slli_uw */
4732 0xffff_ffff, /* slliw */
4733 0xffff_ffff, /* sllw */
4734 0xfe00707f, /* slt */
4735 0x707f, /* slti */
4736 0x707f, /* sltiu */
4737 0xfe00707f, /* sltu */
4738 0xfff0707f, /* sltz */
4739 0xfff0707f, /* sm3p0 */
4740 0xfff0707f, /* sm3p1 */
4741 0x3e00707f, /* sm4ed */
4742 0x3e00707f, /* sm4ks */
4743 0xfe0ff07f, /* snez */
4744 0xfe00707f, /* sra */
4745 0xfc00707f, /* srai */
4746 0xfe00707f, /* srai_rv32 */
4747 0xffff_ffff, /* sraiw */
4748 0xffff_ffff, /* sraw */
4749 0xffffffff, /* sret */
4750 0xfe00707f, /* srl */
4751 0xfc00707f, /* srli */
4752 0xfe00707f, /* srli_rv32 */
4753 0xffff_ffff, /* srliw */
4754 0xffff_ffff, /* srlw */
4755 0xffff_ffff, /* ssamoswap_d */
4756 0xf800707f, /* ssamoswap_w */
4757 0xffffffff, /* sspopchk_x1 */
4758 0xffffffff, /* sspopchk_x5 */
4759 0xffffffff, /* sspush_x1 */
4760 0xffffffff, /* sspush_x5 */
4761 0xfffff07f, /* ssrdp */
4762 0xfe00707f, /* sub */
4763 0xffff_ffff, /* subw */
4764 0x707f, /* sw */
4765 0xfff0707f, /* unzip */
4766 0xfc00707f, /* vaadd_vv */
4767 0xfc00707f, /* vaadd_vx */
4768 0xfc00707f, /* vaaddu_vv */
4769 0xfc00707f, /* vaaddu_vx */
4770 0xfe00707f, /* vadc_vim */
4771 0xfe00707f, /* vadc_vvm */
4772 0xfe00707f, /* vadc_vxm */
4773 0xfc00707f, /* vadd_vi */
4774 0xfc00707f, /* vadd_vv */
4775 0xfc00707f, /* vadd_vx */
4776 0xfe0ff07f, /* vaesdf_vs */
4777 0xfe0ff07f, /* vaesdf_vv */
4778 0xfe0ff07f, /* vaesdm_vs */
4779 0xfe0ff07f, /* vaesdm_vv */
4780 0xfe0ff07f, /* vaesef_vs */
4781 0xfe0ff07f, /* vaesef_vv */
4782 0xfe0ff07f, /* vaesem_vs */
4783 0xfe0ff07f, /* vaesem_vv */
4784 0xfe00707f, /* vaeskf1_vi */
4785 0xfe00707f, /* vaeskf2_vi */
4786 0xfe0ff07f, /* vaesz_vs */
4787 0xfc00707f, /* vand_vi */
4788 0xfc00707f, /* vand_vv */
4789 0xfc00707f, /* vand_vx */
4790 0xfc00707f, /* vandn_vv */
4791 0xfc00707f, /* vandn_vx */
4792 0xfc00707f, /* vasub_vv */
4793 0xfc00707f, /* vasub_vx */
4794 0xfc00707f, /* vasubu_vv */
4795 0xfc00707f, /* vasubu_vx */
4796 0xfc0ff07f, /* vbrev8_v */
4797 0xfc0ff07f, /* vbrev_v */
4798 0xfc00707f, /* vclmul_vv */
4799 0xfc00707f, /* vclmul_vx */
4800 0xfc00707f, /* vclmulh_vv */
4801 0xfc00707f, /* vclmulh_vx */
4802 0xfc0ff07f, /* vclz_v */
4803 0xfe00707f, /* vcompress_vm */
4804 0xfc0ff07f, /* vcpop_m */
4805 0xfc0ff07f, /* vcpop_v */
4806 0xfc0ff07f, /* vctz_v */
4807 0xfc00707f, /* vdiv_vv */
4808 0xfc00707f, /* vdiv_vx */
4809 0xfc00707f, /* vdivu_vv */
4810 0xfc00707f, /* vdivu_vx */
4811 0xfc00707f, /* vfadd_vf */
4812 0xfc00707f, /* vfadd_vv */
4813 0xfc0ff07f, /* vfclass_v */
4814 0xfc0ff07f, /* vfcvt_f_x_v */
4815 0xfc0ff07f, /* vfcvt_f_xu_v */
4816 0xfc0ff07f, /* vfcvt_rtz_x_f_v */
4817 0xfc0ff07f, /* vfcvt_rtz_xu_f_v */
4818 0xfc0ff07f, /* vfcvt_x_f_v */
4819 0xfc0ff07f, /* vfcvt_xu_f_v */
4820 0xfc00707f, /* vfdiv_vf */
4821 0xfc00707f, /* vfdiv_vv */
4822 0xfc0ff07f, /* vfirst_m */
4823 0xfc00707f, /* vfmacc_vf */
4824 0xfc00707f, /* vfmacc_vv */
4825 0xfc00707f, /* vfmadd_vf */
4826 0xfc00707f, /* vfmadd_vv */
4827 0xfc00707f, /* vfmax_vf */
4828 0xfc00707f, /* vfmax_vv */
4829 0xfe00707f, /* vfmerge_vfm */
4830 0xfc00707f, /* vfmin_vf */
4831 0xfc00707f, /* vfmin_vv */
4832 0xfc00707f, /* vfmsac_vf */
4833 0xfc00707f, /* vfmsac_vv */
4834 0xfc00707f, /* vfmsub_vf */
4835 0xfc00707f, /* vfmsub_vv */
4836 0xfc00707f, /* vfmul_vf */
4837 0xfc00707f, /* vfmul_vv */
4838 0xfe0ff07f, /* vfmv_f_s */
4839 0xfff0707f, /* vfmv_s_f */
4840 0xfff0707f, /* vfmv_v_f */
4841 0xfc0ff07f, /* vfncvt_f_f_w */
4842 0xfc0ff07f, /* vfncvt_f_x_w */
4843 0xfc0ff07f, /* vfncvt_f_xu_w */
4844 0xfc0ff07f, /* vfncvt_rod_f_f_w */
4845 0xfc0ff07f, /* vfncvt_rtz_x_f_w */
4846 0xfc0ff07f, /* vfncvt_rtz_xu_f_w */
4847 0xfc0ff07f, /* vfncvt_x_f_w */
4848 0xfc0ff07f, /* vfncvt_xu_f_w */
4849 0xfc0ff07f, /* vfncvtbf16_f_f_w */
4850 0xfc00707f, /* vfnmacc_vf */
4851 0xfc00707f, /* vfnmacc_vv */
4852 0xfc00707f, /* vfnmadd_vf */
4853 0xfc00707f, /* vfnmadd_vv */
4854 0xfc00707f, /* vfnmsac_vf */
4855 0xfc00707f, /* vfnmsac_vv */
4856 0xfc00707f, /* vfnmsub_vf */
4857 0xfc00707f, /* vfnmsub_vv */
4858 0xfc00707f, /* vfrdiv_vf */
4859 0xfc0ff07f, /* vfrec7_v */
4860 0xfc00707f, /* vfredmax_vs */
4861 0xfc00707f, /* vfredmin_vs */
4862 0xfc00707f, /* vfredosum_vs */
4863 0xfc00707f, /* vfredsum_vs */
4864 0xfc00707f, /* vfredusum_vs */
4865 0xfc0ff07f, /* vfrsqrt7_v */
4866 0xfc00707f, /* vfrsub_vf */
4867 0xfc00707f, /* vfsgnj_vf */
4868 0xfc00707f, /* vfsgnj_vv */
4869 0xfc00707f, /* vfsgnjn_vf */
4870 0xfc00707f, /* vfsgnjn_vv */
4871 0xfc00707f, /* vfsgnjx_vf */
4872 0xfc00707f, /* vfsgnjx_vv */
4873 0xfc00707f, /* vfslide1down_vf */
4874 0xfc00707f, /* vfslide1up_vf */
4875 0xfc0ff07f, /* vfsqrt_v */
4876 0xfc00707f, /* vfsub_vf */
4877 0xfc00707f, /* vfsub_vv */
4878 0xfc00707f, /* vfwadd_vf */
4879 0xfc00707f, /* vfwadd_vv */
4880 0xfc00707f, /* vfwadd_wf */
4881 0xfc00707f, /* vfwadd_wv */
4882 0xfc0ff07f, /* vfwcvt_f_f_v */
4883 0xfc0ff07f, /* vfwcvt_f_x_v */
4884 0xfc0ff07f, /* vfwcvt_f_xu_v */
4885 0xfc0ff07f, /* vfwcvt_rtz_x_f_v */
4886 0xfc0ff07f, /* vfwcvt_rtz_xu_f_v */
4887 0xfc0ff07f, /* vfwcvt_x_f_v */
4888 0xfc0ff07f, /* vfwcvt_xu_f_v */
4889 0xfc0ff07f, /* vfwcvtbf16_f_f_v */
4890 0xfc00707f, /* vfwmacc_vf */
4891 0xfc00707f, /* vfwmacc_vv */
4892 0xfc00707f, /* vfwmaccbf16_vf */
4893 0xfc00707f, /* vfwmaccbf16_vv */
4894 0xfc00707f, /* vfwmsac_vf */
4895 0xfc00707f, /* vfwmsac_vv */
4896 0xfc00707f, /* vfwmul_vf */
4897 0xfc00707f, /* vfwmul_vv */
4898 0xfc00707f, /* vfwnmacc_vf */
4899 0xfc00707f, /* vfwnmacc_vv */
4900 0xfc00707f, /* vfwnmsac_vf */
4901 0xfc00707f, /* vfwnmsac_vv */
4902 0xfc00707f, /* vfwredosum_vs */
4903 0xfc00707f, /* vfwredsum_vs */
4904 0xfc00707f, /* vfwredusum_vs */
4905 0xfc00707f, /* vfwsub_vf */
4906 0xfc00707f, /* vfwsub_vv */
4907 0xfc00707f, /* vfwsub_wf */
4908 0xfc00707f, /* vfwsub_wv */
4909 0xfe00707f, /* vghsh_vv */
4910 0xfe0ff07f, /* vgmul_vv */
4911 0xfdfff07f, /* vid_v */
4912 0xfc0ff07f, /* viota_m */
4913 0xfff0707f, /* vl1r_v */
4914 0xfff0707f, /* vl1re16_v */
4915 0xfff0707f, /* vl1re32_v */
4916 0xfff0707f, /* vl1re64_v */
4917 0xfff0707f, /* vl1re8_v */
4918 0xfff0707f, /* vl2r_v */
4919 0xfff0707f, /* vl2re16_v */
4920 0xfff0707f, /* vl2re32_v */
4921 0xfff0707f, /* vl2re64_v */
4922 0xfff0707f, /* vl2re8_v */
4923 0xfff0707f, /* vl4r_v */
4924 0xfff0707f, /* vl4re16_v */
4925 0xfff0707f, /* vl4re32_v */
4926 0xfff0707f, /* vl4re64_v */
4927 0xfff0707f, /* vl4re8_v */
4928 0xfff0707f, /* vl8r_v */
4929 0xfff0707f, /* vl8re16_v */
4930 0xfff0707f, /* vl8re32_v */
4931 0xfff0707f, /* vl8re64_v */
4932 0xfff0707f, /* vl8re8_v */
4933 0x1df0707f, /* vle16_v */
4934 0x1df0707f, /* vle16ff_v */
4935 0xfff0707f, /* vle1_v */
4936 0x1df0707f, /* vle32_v */
4937 0x1df0707f, /* vle32ff_v */
4938 0x1df0707f, /* vle64_v */
4939 0x1df0707f, /* vle64ff_v */
4940 0x1df0707f, /* vle8_v */
4941 0x1df0707f, /* vle8ff_v */
4942 0xfff0707f, /* vlm_v */
4943 0x1c00707f, /* vloxei16_v */
4944 0x1c00707f, /* vloxei32_v */
4945 0x1c00707f, /* vloxei64_v */
4946 0x1c00707f, /* vloxei8_v */
4947 0x1c00707f, /* vlse16_v */
4948 0x1c00707f, /* vlse32_v */
4949 0x1c00707f, /* vlse64_v */
4950 0x1c00707f, /* vlse8_v */
4951 0x1c00707f, /* vluxei16_v */
4952 0x1c00707f, /* vluxei32_v */
4953 0x1c00707f, /* vluxei64_v */
4954 0x1c00707f, /* vluxei8_v */
4955 0xfc00707f, /* vmacc_vv */
4956 0xfc00707f, /* vmacc_vx */
4957 0xfe00707f, /* vmadc_vi */
4958 0xfe00707f, /* vmadc_vim */
4959 0xfe00707f, /* vmadc_vv */
4960 0xfe00707f, /* vmadc_vvm */
4961 0xfe00707f, /* vmadc_vx */
4962 0xfe00707f, /* vmadc_vxm */
4963 0xfc00707f, /* vmadd_vv */
4964 0xfc00707f, /* vmadd_vx */
4965 0xfe00707f, /* vmand_mm */
4966 0xfe00707f, /* vmandn_mm */
4967 0xfc00707f, /* vmandnot_mm */
4968 0xfc00707f, /* vmax_vv */
4969 0xfc00707f, /* vmax_vx */
4970 0xfc00707f, /* vmaxu_vv */
4971 0xfc00707f, /* vmaxu_vx */
4972 0xfe00707f, /* vmerge_vim */
4973 0xfe00707f, /* vmerge_vvm */
4974 0xfe00707f, /* vmerge_vxm */
4975 0xfc00707f, /* vmfeq_vf */
4976 0xfc00707f, /* vmfeq_vv */
4977 0xfc00707f, /* vmfge_vf */
4978 0xfc00707f, /* vmfgt_vf */
4979 0xfc00707f, /* vmfle_vf */
4980 0xfc00707f, /* vmfle_vv */
4981 0xfc00707f, /* vmflt_vf */
4982 0xfc00707f, /* vmflt_vv */
4983 0xfc00707f, /* vmfne_vf */
4984 0xfc00707f, /* vmfne_vv */
4985 0xfc00707f, /* vmin_vv */
4986 0xfc00707f, /* vmin_vx */
4987 0xfc00707f, /* vminu_vv */
4988 0xfc00707f, /* vminu_vx */
4989 0xfe00707f, /* vmnand_mm */
4990 0xfe00707f, /* vmnor_mm */
4991 0xfe00707f, /* vmor_mm */
4992 0xfe00707f, /* vmorn_mm */
4993 0xfc00707f, /* vmornot_mm */
4994 0xfe00707f, /* vmsbc_vv */
4995 0xfe00707f, /* vmsbc_vvm */
4996 0xfe00707f, /* vmsbc_vx */
4997 0xfe00707f, /* vmsbc_vxm */
4998 0xfc0ff07f, /* vmsbf_m */
4999 0xfc00707f, /* vmseq_vi */
5000 0xfc00707f, /* vmseq_vv */
5001 0xfc00707f, /* vmseq_vx */
5002 0xfc00707f, /* vmsgt_vi */
5003 0xfc00707f, /* vmsgt_vx */
5004 0xfc00707f, /* vmsgtu_vi */
5005 0xfc00707f, /* vmsgtu_vx */
5006 0xfc0ff07f, /* vmsif_m */
5007 0xfc00707f, /* vmsle_vi */
5008 0xfc00707f, /* vmsle_vv */
5009 0xfc00707f, /* vmsle_vx */
5010 0xfc00707f, /* vmsleu_vi */
5011 0xfc00707f, /* vmsleu_vv */
5012 0xfc00707f, /* vmsleu_vx */
5013 0xfc00707f, /* vmslt_vv */
5014 0xfc00707f, /* vmslt_vx */
5015 0xfc00707f, /* vmsltu_vv */
5016 0xfc00707f, /* vmsltu_vx */
5017 0xfc00707f, /* vmsne_vi */
5018 0xfc00707f, /* vmsne_vv */
5019 0xfc00707f, /* vmsne_vx */
5020 0xfc0ff07f, /* vmsof_m */
5021 0xfc00707f, /* vmul_vv */
5022 0xfc00707f, /* vmul_vx */
5023 0xfc00707f, /* vmulh_vv */
5024 0xfc00707f, /* vmulh_vx */
5025 0xfc00707f, /* vmulhsu_vv */
5026 0xfc00707f, /* vmulhsu_vx */
5027 0xfc00707f, /* vmulhu_vv */
5028 0xfc00707f, /* vmulhu_vx */
5029 0xfe0ff07f, /* vmv1r_v */
5030 0xfe0ff07f, /* vmv2r_v */
5031 0xfe0ff07f, /* vmv4r_v */
5032 0xfe0ff07f, /* vmv8r_v */
5033 0xfff0707f, /* vmv_s_x */
5034 0xfff0707f, /* vmv_v_i */
5035 0xfff0707f, /* vmv_v_v */
5036 0xfff0707f, /* vmv_v_x */
5037 0xfe0ff07f, /* vmv_x_s */
5038 0xfe00707f, /* vmxnor_mm */
5039 0xfe00707f, /* vmxor_mm */
5040 0xfc00707f, /* vnclip_wi */
5041 0xfc00707f, /* vnclip_wv */
5042 0xfc00707f, /* vnclip_wx */
5043 0xfc00707f, /* vnclipu_wi */
5044 0xfc00707f, /* vnclipu_wv */
5045 0xfc00707f, /* vnclipu_wx */
5046 0xfc00707f, /* vnmsac_vv */
5047 0xfc00707f, /* vnmsac_vx */
5048 0xfc00707f, /* vnmsub_vv */
5049 0xfc00707f, /* vnmsub_vx */
5050 0xfc00707f, /* vnsra_wi */
5051 0xfc00707f, /* vnsra_wv */
5052 0xfc00707f, /* vnsra_wx */
5053 0xfc00707f, /* vnsrl_wi */
5054 0xfc00707f, /* vnsrl_wv */
5055 0xfc00707f, /* vnsrl_wx */
5056 0xfc00707f, /* vor_vi */
5057 0xfc00707f, /* vor_vv */
5058 0xfc00707f, /* vor_vx */
5059 0xfc0ff07f, /* vpopc_m */
5060 0xfc00707f, /* vredand_vs */
5061 0xfc00707f, /* vredmax_vs */
5062 0xfc00707f, /* vredmaxu_vs */
5063 0xfc00707f, /* vredmin_vs */
5064 0xfc00707f, /* vredminu_vs */
5065 0xfc00707f, /* vredor_vs */
5066 0xfc00707f, /* vredsum_vs */
5067 0xfc00707f, /* vredxor_vs */
5068 0xfc00707f, /* vrem_vv */
5069 0xfc00707f, /* vrem_vx */
5070 0xfc00707f, /* vremu_vv */
5071 0xfc00707f, /* vremu_vx */
5072 0xfc0ff07f, /* vrev8_v */
5073 0xfc00707f, /* vrgather_vi */
5074 0xfc00707f, /* vrgather_vv */
5075 0xfc00707f, /* vrgather_vx */
5076 0xfc00707f, /* vrgatherei16_vv */
5077 0xfc00707f, /* vrol_vv */
5078 0xfc00707f, /* vrol_vx */
5079 0xf800707f, /* vror_vi */
5080 0xfc00707f, /* vror_vv */
5081 0xfc00707f, /* vror_vx */
5082 0xfc00707f, /* vrsub_vi */
5083 0xfc00707f, /* vrsub_vx */
5084 0xfff0707f, /* vs1r_v */
5085 0xfff0707f, /* vs2r_v */
5086 0xfff0707f, /* vs4r_v */
5087 0xfff0707f, /* vs8r_v */
5088 0xfc00707f, /* vsadd_vi */
5089 0xfc00707f, /* vsadd_vv */
5090 0xfc00707f, /* vsadd_vx */
5091 0xfc00707f, /* vsaddu_vi */
5092 0xfc00707f, /* vsaddu_vv */
5093 0xfc00707f, /* vsaddu_vx */
5094 0xfe00707f, /* vsbc_vvm */
5095 0xfe00707f, /* vsbc_vxm */
5096 0x1df0707f, /* vse16_v */
5097 0xfff0707f, /* vse1_v */
5098 0x1df0707f, /* vse32_v */
5099 0x1df0707f, /* vse64_v */
5100 0x1df0707f, /* vse8_v */
5101 0xc000707f, /* vsetivli */
5102 0xfe00707f, /* vsetvl */
5103 0x8000707f, /* vsetvli */
5104 0xfc0ff07f, /* vsext_vf2 */
5105 0xfc0ff07f, /* vsext_vf4 */
5106 0xfc0ff07f, /* vsext_vf8 */
5107 0xfe00707f, /* vsha2ch_vv */
5108 0xfe00707f, /* vsha2cl_vv */
5109 0xfe00707f, /* vsha2ms_vv */
5110 0xfc00707f, /* vslide1down_vx */
5111 0xfc00707f, /* vslide1up_vx */
5112 0xfc00707f, /* vslidedown_vi */
5113 0xfc00707f, /* vslidedown_vx */
5114 0xfc00707f, /* vslideup_vi */
5115 0xfc00707f, /* vslideup_vx */
5116 0xfc00707f, /* vsll_vi */
5117 0xfc00707f, /* vsll_vv */
5118 0xfc00707f, /* vsll_vx */
5119 0xfe00707f, /* vsm3c_vi */
5120 0xfe00707f, /* vsm3me_vv */
5121 0xfe00707f, /* vsm4k_vi */
5122 0xfe0ff07f, /* vsm4r_vs */
5123 0xfe0ff07f, /* vsm4r_vv */
5124 0xfff0707f, /* vsm_v */
5125 0xfc00707f, /* vsmul_vv */
5126 0xfc00707f, /* vsmul_vx */
5127 0x1c00707f, /* vsoxei16_v */
5128 0x1c00707f, /* vsoxei32_v */
5129 0x1c00707f, /* vsoxei64_v */
5130 0x1c00707f, /* vsoxei8_v */
5131 0xfc00707f, /* vsra_vi */
5132 0xfc00707f, /* vsra_vv */
5133 0xfc00707f, /* vsra_vx */
5134 0xfc00707f, /* vsrl_vi */
5135 0xfc00707f, /* vsrl_vv */
5136 0xfc00707f, /* vsrl_vx */
5137 0x1c00707f, /* vsse16_v */
5138 0x1c00707f, /* vsse32_v */
5139 0x1c00707f, /* vsse64_v */
5140 0x1c00707f, /* vsse8_v */
5141 0xfc00707f, /* vssra_vi */
5142 0xfc00707f, /* vssra_vv */
5143 0xfc00707f, /* vssra_vx */
5144 0xfc00707f, /* vssrl_vi */
5145 0xfc00707f, /* vssrl_vv */
5146 0xfc00707f, /* vssrl_vx */
5147 0xfc00707f, /* vssub_vv */
5148 0xfc00707f, /* vssub_vx */
5149 0xfc00707f, /* vssubu_vv */
5150 0xfc00707f, /* vssubu_vx */
5151 0xfc00707f, /* vsub_vv */
5152 0xfc00707f, /* vsub_vx */
5153 0x1c00707f, /* vsuxei16_v */
5154 0x1c00707f, /* vsuxei32_v */
5155 0x1c00707f, /* vsuxei64_v */
5156 0x1c00707f, /* vsuxei8_v */
5157 0xfc00707f, /* vwadd_vv */
5158 0xfc00707f, /* vwadd_vx */
5159 0xfc00707f, /* vwadd_wv */
5160 0xfc00707f, /* vwadd_wx */
5161 0xfc00707f, /* vwaddu_vv */
5162 0xfc00707f, /* vwaddu_vx */
5163 0xfc00707f, /* vwaddu_wv */
5164 0xfc00707f, /* vwaddu_wx */
5165 0xfc00707f, /* vwmacc_vv */
5166 0xfc00707f, /* vwmacc_vx */
5167 0xfc00707f, /* vwmaccsu_vv */
5168 0xfc00707f, /* vwmaccsu_vx */
5169 0xfc00707f, /* vwmaccu_vv */
5170 0xfc00707f, /* vwmaccu_vx */
5171 0xfc00707f, /* vwmaccus_vx */
5172 0xfc00707f, /* vwmul_vv */
5173 0xfc00707f, /* vwmul_vx */
5174 0xfc00707f, /* vwmulsu_vv */
5175 0xfc00707f, /* vwmulsu_vx */
5176 0xfc00707f, /* vwmulu_vv */
5177 0xfc00707f, /* vwmulu_vx */
5178 0xfc00707f, /* vwredsum_vs */
5179 0xfc00707f, /* vwredsumu_vs */
5180 0xfc00707f, /* vwsll_vi */
5181 0xfc00707f, /* vwsll_vv */
5182 0xfc00707f, /* vwsll_vx */
5183 0xfc00707f, /* vwsub_vv */
5184 0xfc00707f, /* vwsub_vx */
5185 0xfc00707f, /* vwsub_wv */
5186 0xfc00707f, /* vwsub_wx */
5187 0xfc00707f, /* vwsubu_vv */
5188 0xfc00707f, /* vwsubu_vx */
5189 0xfc00707f, /* vwsubu_wv */
5190 0xfc00707f, /* vwsubu_wx */
5191 0xfc00707f, /* vxor_vi */
5192 0xfc00707f, /* vxor_vv */
5193 0xfc00707f, /* vxor_vx */
5194 0xfc0ff07f, /* vzext_vf2 */
5195 0xfc0ff07f, /* vzext_vf4 */
5196 0xfc0ff07f, /* vzext_vf8 */
5197 0xffffffff, /* wfi */
5198 0xffffffff, /* wrs_nto */
5199 0xffffffff, /* wrs_sto */
5200 0xfe00707f, /* xnor */
5201 0xfe00707f, /* xor */
5202 0x707f, /* xori */
5203 0xfe00707f, /* xperm4 */
5204 0xfe00707f, /* xperm8 */
5205 0xfff0707f, /* zext_b */
5206 0xffff_ffff, /* zext_h */
5207 0xfff0707f, /* zext_h_rv32 */
5208 0xffff_ffff, /* zext_w */
5209 0xfff0707f, /* zip */
5210];
5211pub static OPCODE64_MATCH: [u32; 1039] = [
5212 0x33, /* add */
5213 0x800003b, /* add_uw */
5214 0x13, /* addi */
5215 0x1b, /* addiw */
5216 0x3b, /* addw */
5217 0xffff_ffff, /* aes32dsi */
5218 0xffff_ffff, /* aes32dsmi */
5219 0xffff_ffff, /* aes32esi */
5220 0xffff_ffff, /* aes32esmi */
5221 0x3a000033, /* aes64ds */
5222 0x3e000033, /* aes64dsm */
5223 0x32000033, /* aes64es */
5224 0x36000033, /* aes64esm */
5225 0x30001013, /* aes64im */
5226 0x31001013, /* aes64ks1i */
5227 0x7e000033, /* aes64ks2 */
5228 0x2f, /* amoadd_b */
5229 0x302f, /* amoadd_d */
5230 0x102f, /* amoadd_h */
5231 0x202f, /* amoadd_w */
5232 0x6000002f, /* amoand_b */
5233 0x6000302f, /* amoand_d */
5234 0x6000102f, /* amoand_h */
5235 0x6000202f, /* amoand_w */
5236 0x2800002f, /* amocas_b */
5237 0x2800302f, /* amocas_d */
5238 0x2800102f, /* amocas_h */
5239 0x2800402f, /* amocas_q */
5240 0x2800202f, /* amocas_w */
5241 0xa000002f, /* amomax_b */
5242 0xa000302f, /* amomax_d */
5243 0xa000102f, /* amomax_h */
5244 0xa000202f, /* amomax_w */
5245 0xe000002f, /* amomaxu_b */
5246 0xe000302f, /* amomaxu_d */
5247 0xe000102f, /* amomaxu_h */
5248 0xe000202f, /* amomaxu_w */
5249 0x8000002f, /* amomin_b */
5250 0x8000302f, /* amomin_d */
5251 0x8000102f, /* amomin_h */
5252 0x8000202f, /* amomin_w */
5253 0xc000002f, /* amominu_b */
5254 0xc000302f, /* amominu_d */
5255 0xc000102f, /* amominu_h */
5256 0xc000202f, /* amominu_w */
5257 0x4000002f, /* amoor_b */
5258 0x4000302f, /* amoor_d */
5259 0x4000102f, /* amoor_h */
5260 0x4000202f, /* amoor_w */
5261 0x800002f, /* amoswap_b */
5262 0x800302f, /* amoswap_d */
5263 0x800102f, /* amoswap_h */
5264 0x800202f, /* amoswap_w */
5265 0x2000002f, /* amoxor_b */
5266 0x2000302f, /* amoxor_d */
5267 0x2000102f, /* amoxor_h */
5268 0x2000202f, /* amoxor_w */
5269 0x7033, /* and */
5270 0x7013, /* andi */
5271 0x40007033, /* andn */
5272 0x17, /* auipc */
5273 0x48001033, /* bclr */
5274 0x48001013, /* bclri */
5275 0xffff_ffff, /* bclri_rv32 */
5276 0x63, /* beq */
5277 0x63, /* beqz */
5278 0x48005033, /* bext */
5279 0x48005013, /* bexti */
5280 0xffff_ffff, /* bexti_rv32 */
5281 0x5063, /* bge */
5282 0x7063, /* bgeu */
5283 0x5063, /* bgez */
5284 0x4063, /* bgt */
5285 0x6063, /* bgtu */
5286 0x4063, /* bgtz */
5287 0x68001033, /* binv */
5288 0x68001013, /* binvi */
5289 0xffff_ffff, /* binvi_rv32 */
5290 0x5063, /* ble */
5291 0x7063, /* bleu */
5292 0x5063, /* blez */
5293 0x4063, /* blt */
5294 0x6063, /* bltu */
5295 0x4063, /* bltz */
5296 0x1063, /* bne */
5297 0x1063, /* bnez */
5298 0x68705013, /* brev8 */
5299 0x28001033, /* bset */
5300 0x28001013, /* bseti */
5301 0xffff_ffff, /* bseti_rv32 */
5302 0x9002, /* c_add */
5303 0x1, /* c_addi */
5304 0x6101, /* c_addi16sp */
5305 0x0, /* c_addi4spn */
5306 0x2001, /* c_addiw */
5307 0x9c21, /* c_addw */
5308 0x8c61, /* c_and */
5309 0x8801, /* c_andi */
5310 0xc001, /* c_beqz */
5311 0xe001, /* c_bnez */
5312 0x9002, /* c_ebreak */
5313 0x2000, /* c_fld */
5314 0x2002, /* c_fldsp */
5315 0xffff_ffff, /* c_flw */
5316 0xffff_ffff, /* c_flwsp */
5317 0xa000, /* c_fsd */
5318 0xa002, /* c_fsdsp */
5319 0xffff_ffff, /* c_fsw */
5320 0xffff_ffff, /* c_fswsp */
5321 0xa001, /* c_j */
5322 0xffff_ffff, /* c_jal */
5323 0x9002, /* c_jalr */
5324 0x8002, /* c_jr */
5325 0x8000, /* c_lbu */
5326 0x6000, /* c_ld */
5327 0x6002, /* c_ldsp */
5328 0x8440, /* c_lh */
5329 0x8400, /* c_lhu */
5330 0x4001, /* c_li */
5331 0x6001, /* c_lui */
5332 0x4000, /* c_lw */
5333 0x4002, /* c_lwsp */
5334 0x6081, /* c_mop_1 */
5335 0x6581, /* c_mop_11 */
5336 0x6681, /* c_mop_13 */
5337 0x6781, /* c_mop_15 */
5338 0x6181, /* c_mop_3 */
5339 0x6281, /* c_mop_5 */
5340 0x6381, /* c_mop_7 */
5341 0x6481, /* c_mop_9 */
5342 0x6081, /* c_mop_N */
5343 0x9c41, /* c_mul */
5344 0x8002, /* c_mv */
5345 0x1, /* c_nop */
5346 0x9c75, /* c_not */
5347 0x9016, /* c_ntl_all */
5348 0x900a, /* c_ntl_p1 */
5349 0x900e, /* c_ntl_pall */
5350 0x9012, /* c_ntl_s1 */
5351 0x8c41, /* c_or */
5352 0x8800, /* c_sb */
5353 0xe000, /* c_sd */
5354 0xe002, /* c_sdsp */
5355 0x9c65, /* c_sext_b */
5356 0x9c6d, /* c_sext_h */
5357 0x2001, /* c_sext_w */
5358 0x8c00, /* c_sh */
5359 0x2, /* c_slli */
5360 0xffff_ffff, /* c_slli_rv32 */
5361 0x8401, /* c_srai */
5362 0xffff_ffff, /* c_srai_rv32 */
5363 0x8001, /* c_srli */
5364 0xffff_ffff, /* c_srli_rv32 */
5365 0x6281, /* c_sspopchk_x5 */
5366 0x6081, /* c_sspush_x1 */
5367 0x8c01, /* c_sub */
5368 0x9c01, /* c_subw */
5369 0xc000, /* c_sw */
5370 0xc002, /* c_swsp */
5371 0x8c21, /* c_xor */
5372 0x9c61, /* c_zext_b */
5373 0x9c69, /* c_zext_h */
5374 0x9c71, /* c_zext_w */
5375 0x10200f, /* cbo_clean */
5376 0x20200f, /* cbo_flush */
5377 0x200f, /* cbo_inval */
5378 0x40200f, /* cbo_zero */
5379 0xa001033, /* clmul */
5380 0xa003033, /* clmulh */
5381 0xa002033, /* clmulr */
5382 0x60001013, /* clz */
5383 0x6000101b, /* clzw */
5384 0xa002, /* cm_jalt */
5385 0xac62, /* cm_mva01s */
5386 0xac22, /* cm_mvsa01 */
5387 0xba02, /* cm_pop */
5388 0xbe02, /* cm_popret */
5389 0xbc02, /* cm_popretz */
5390 0xb802, /* cm_push */
5391 0x60201013, /* cpop */
5392 0x6020101b, /* cpopw */
5393 0x3073, /* csrc */
5394 0x7073, /* csrci */
5395 0x2073, /* csrr */
5396 0x3073, /* csrrc */
5397 0x7073, /* csrrci */
5398 0x2073, /* csrrs */
5399 0x6073, /* csrrsi */
5400 0x1073, /* csrrw */
5401 0x5073, /* csrrwi */
5402 0x2073, /* csrs */
5403 0x6073, /* csrsi */
5404 0x1073, /* csrw */
5405 0x5073, /* csrwi */
5406 0x60101013, /* ctz */
5407 0x6010101b, /* ctzw */
5408 0xe005033, /* czero_eqz */
5409 0xe007033, /* czero_nez */
5410 0x2004033, /* div */
5411 0x2005033, /* divu */
5412 0x200503b, /* divuw */
5413 0x200403b, /* divw */
5414 0x7b200073, /* dret */
5415 0x100073, /* ebreak */
5416 0x73, /* ecall */
5417 0x22002053, /* fabs_d */
5418 0x24002053, /* fabs_h */
5419 0x26002053, /* fabs_q */
5420 0x20002053, /* fabs_s */
5421 0x2000053, /* fadd_d */
5422 0x4000053, /* fadd_h */
5423 0x6000053, /* fadd_q */
5424 0x53, /* fadd_s */
5425 0xe2001053, /* fclass_d */
5426 0xe4001053, /* fclass_h */
5427 0xe6001053, /* fclass_q */
5428 0xe0001053, /* fclass_s */
5429 0x44800053, /* fcvt_bf16_s */
5430 0x42200053, /* fcvt_d_h */
5431 0xd2200053, /* fcvt_d_l */
5432 0xd2300053, /* fcvt_d_lu */
5433 0x42300053, /* fcvt_d_q */
5434 0x42000053, /* fcvt_d_s */
5435 0xd2000053, /* fcvt_d_w */
5436 0xd2100053, /* fcvt_d_wu */
5437 0x44100053, /* fcvt_h_d */
5438 0xd4200053, /* fcvt_h_l */
5439 0xd4300053, /* fcvt_h_lu */
5440 0x44300053, /* fcvt_h_q */
5441 0x44000053, /* fcvt_h_s */
5442 0xd4000053, /* fcvt_h_w */
5443 0xd4100053, /* fcvt_h_wu */
5444 0xc2200053, /* fcvt_l_d */
5445 0xc4200053, /* fcvt_l_h */
5446 0xc6200053, /* fcvt_l_q */
5447 0xc0200053, /* fcvt_l_s */
5448 0xc2300053, /* fcvt_lu_d */
5449 0xc4300053, /* fcvt_lu_h */
5450 0xc6300053, /* fcvt_lu_q */
5451 0xc0300053, /* fcvt_lu_s */
5452 0x46100053, /* fcvt_q_d */
5453 0x46200053, /* fcvt_q_h */
5454 0xd6200053, /* fcvt_q_l */
5455 0xd6300053, /* fcvt_q_lu */
5456 0x46000053, /* fcvt_q_s */
5457 0xd6000053, /* fcvt_q_w */
5458 0xd6100053, /* fcvt_q_wu */
5459 0x40600053, /* fcvt_s_bf16 */
5460 0x40100053, /* fcvt_s_d */
5461 0x40200053, /* fcvt_s_h */
5462 0xd0200053, /* fcvt_s_l */
5463 0xd0300053, /* fcvt_s_lu */
5464 0x40300053, /* fcvt_s_q */
5465 0xd0000053, /* fcvt_s_w */
5466 0xd0100053, /* fcvt_s_wu */
5467 0xc2000053, /* fcvt_w_d */
5468 0xc4000053, /* fcvt_w_h */
5469 0xc6000053, /* fcvt_w_q */
5470 0xc0000053, /* fcvt_w_s */
5471 0xc2100053, /* fcvt_wu_d */
5472 0xc4100053, /* fcvt_wu_h */
5473 0xc6100053, /* fcvt_wu_q */
5474 0xc0100053, /* fcvt_wu_s */
5475 0xc2801053, /* fcvtmod_w_d */
5476 0x1a000053, /* fdiv_d */
5477 0x1c000053, /* fdiv_h */
5478 0x1e000053, /* fdiv_q */
5479 0x18000053, /* fdiv_s */
5480 0xf, /* fence */
5481 0x100f, /* fence_i */
5482 0x8330000f, /* fence_tso */
5483 0xa2002053, /* feq_d */
5484 0xa4002053, /* feq_h */
5485 0xa6002053, /* feq_q */
5486 0xa0002053, /* feq_s */
5487 0x3007, /* fld */
5488 0xa2000053, /* fle_d */
5489 0xa4000053, /* fle_h */
5490 0xa6000053, /* fle_q */
5491 0xa0000053, /* fle_s */
5492 0xa2004053, /* fleq_d */
5493 0xa4004053, /* fleq_h */
5494 0xa6004053, /* fleq_q */
5495 0xa0004053, /* fleq_s */
5496 0x1007, /* flh */
5497 0xf2100053, /* fli_d */
5498 0xf4100053, /* fli_h */
5499 0xf6100053, /* fli_q */
5500 0xf0100053, /* fli_s */
5501 0x4007, /* flq */
5502 0xa2001053, /* flt_d */
5503 0xa4001053, /* flt_h */
5504 0xa6001053, /* flt_q */
5505 0xa0001053, /* flt_s */
5506 0xa2005053, /* fltq_d */
5507 0xa4005053, /* fltq_h */
5508 0xa6005053, /* fltq_q */
5509 0xa0005053, /* fltq_s */
5510 0x2007, /* flw */
5511 0x2000043, /* fmadd_d */
5512 0x4000043, /* fmadd_h */
5513 0x6000043, /* fmadd_q */
5514 0x43, /* fmadd_s */
5515 0x2a001053, /* fmax_d */
5516 0x2c001053, /* fmax_h */
5517 0x2e001053, /* fmax_q */
5518 0x28001053, /* fmax_s */
5519 0x2a003053, /* fmaxm_d */
5520 0x2c003053, /* fmaxm_h */
5521 0x2e003053, /* fmaxm_q */
5522 0x28003053, /* fmaxm_s */
5523 0x2a000053, /* fmin_d */
5524 0x2c000053, /* fmin_h */
5525 0x2e000053, /* fmin_q */
5526 0x28000053, /* fmin_s */
5527 0x2a002053, /* fminm_d */
5528 0x2c002053, /* fminm_h */
5529 0x2e002053, /* fminm_q */
5530 0x28002053, /* fminm_s */
5531 0x2000047, /* fmsub_d */
5532 0x4000047, /* fmsub_h */
5533 0x6000047, /* fmsub_q */
5534 0x47, /* fmsub_s */
5535 0x12000053, /* fmul_d */
5536 0x14000053, /* fmul_h */
5537 0x16000053, /* fmul_q */
5538 0x10000053, /* fmul_s */
5539 0x22000053, /* fmv_d */
5540 0xf2000053, /* fmv_d_x */
5541 0x24000053, /* fmv_h */
5542 0xf4000053, /* fmv_h_x */
5543 0x26000053, /* fmv_q */
5544 0x20000053, /* fmv_s */
5545 0xf0000053, /* fmv_s_x */
5546 0xf0000053, /* fmv_w_x */
5547 0xe2000053, /* fmv_x_d */
5548 0xe4000053, /* fmv_x_h */
5549 0xe0000053, /* fmv_x_s */
5550 0xe0000053, /* fmv_x_w */
5551 0xffff_ffff, /* fmvh_x_d */
5552 0xe6100053, /* fmvh_x_q */
5553 0xffff_ffff, /* fmvp_d_x */
5554 0xb6000053, /* fmvp_q_x */
5555 0x22001053, /* fneg_d */
5556 0x24001053, /* fneg_h */
5557 0x26001053, /* fneg_q */
5558 0x20001053, /* fneg_s */
5559 0x200004f, /* fnmadd_d */
5560 0x400004f, /* fnmadd_h */
5561 0x600004f, /* fnmadd_q */
5562 0x4f, /* fnmadd_s */
5563 0x200004b, /* fnmsub_d */
5564 0x400004b, /* fnmsub_h */
5565 0x600004b, /* fnmsub_q */
5566 0x4b, /* fnmsub_s */
5567 0x302073, /* frcsr */
5568 0x102073, /* frflags */
5569 0x42400053, /* fround_d */
5570 0x44400053, /* fround_h */
5571 0x46400053, /* fround_q */
5572 0x40400053, /* fround_s */
5573 0x42500053, /* froundnx_d */
5574 0x44500053, /* froundnx_h */
5575 0x46500053, /* froundnx_q */
5576 0x40500053, /* froundnx_s */
5577 0x202073, /* frrm */
5578 0x301073, /* fscsr */
5579 0x3027, /* fsd */
5580 0x101073, /* fsflags */
5581 0x105073, /* fsflagsi */
5582 0x22000053, /* fsgnj_d */
5583 0x24000053, /* fsgnj_h */
5584 0x26000053, /* fsgnj_q */
5585 0x20000053, /* fsgnj_s */
5586 0x22001053, /* fsgnjn_d */
5587 0x24001053, /* fsgnjn_h */
5588 0x26001053, /* fsgnjn_q */
5589 0x20001053, /* fsgnjn_s */
5590 0x22002053, /* fsgnjx_d */
5591 0x24002053, /* fsgnjx_h */
5592 0x26002053, /* fsgnjx_q */
5593 0x20002053, /* fsgnjx_s */
5594 0x1027, /* fsh */
5595 0x4027, /* fsq */
5596 0x5a000053, /* fsqrt_d */
5597 0x5c000053, /* fsqrt_h */
5598 0x5e000053, /* fsqrt_q */
5599 0x58000053, /* fsqrt_s */
5600 0x201073, /* fsrm */
5601 0x205073, /* fsrmi */
5602 0xa000053, /* fsub_d */
5603 0xc000053, /* fsub_h */
5604 0xe000053, /* fsub_q */
5605 0x8000053, /* fsub_s */
5606 0x2027, /* fsw */
5607 0x62000073, /* hfence_gvma */
5608 0x22000073, /* hfence_vvma */
5609 0x66000073, /* hinval_gvma */
5610 0x26000073, /* hinval_vvma */
5611 0x60004073, /* hlv_b */
5612 0x60104073, /* hlv_bu */
5613 0x6c004073, /* hlv_d */
5614 0x64004073, /* hlv_h */
5615 0x64104073, /* hlv_hu */
5616 0x68004073, /* hlv_w */
5617 0x68104073, /* hlv_wu */
5618 0x64304073, /* hlvx_hu */
5619 0x68304073, /* hlvx_wu */
5620 0x62004073, /* hsv_b */
5621 0x6e004073, /* hsv_d */
5622 0x66004073, /* hsv_h */
5623 0x6a004073, /* hsv_w */
5624 0x6f, /* j */
5625 0x6f, /* jal */
5626 0xef, /* jal_pseudo */
5627 0x67, /* jalr */
5628 0xe7, /* jalr_pseudo */
5629 0x67, /* jr */
5630 0x3, /* lb */
5631 0x4003, /* lbu */
5632 0x3003, /* ld */
5633 0x1003, /* lh */
5634 0x5003, /* lhu */
5635 0x17, /* lpad */
5636 0x1000302f, /* lr_d */
5637 0x1000202f, /* lr_w */
5638 0x37, /* lui */
5639 0x2003, /* lw */
5640 0x6003, /* lwu */
5641 0xa006033, /* max */
5642 0xa007033, /* maxu */
5643 0xa004033, /* min */
5644 0xa005033, /* minu */
5645 0x70200073, /* mnret */
5646 0x81c04073, /* mop_r_0 */
5647 0x81d04073, /* mop_r_1 */
5648 0x89e04073, /* mop_r_10 */
5649 0x89f04073, /* mop_r_11 */
5650 0x8dc04073, /* mop_r_12 */
5651 0x8dd04073, /* mop_r_13 */
5652 0x8de04073, /* mop_r_14 */
5653 0x8df04073, /* mop_r_15 */
5654 0xc1c04073, /* mop_r_16 */
5655 0xc1d04073, /* mop_r_17 */
5656 0xc1e04073, /* mop_r_18 */
5657 0xc1f04073, /* mop_r_19 */
5658 0x81e04073, /* mop_r_2 */
5659 0xc5c04073, /* mop_r_20 */
5660 0xc5d04073, /* mop_r_21 */
5661 0xc5e04073, /* mop_r_22 */
5662 0xc5f04073, /* mop_r_23 */
5663 0xc9c04073, /* mop_r_24 */
5664 0xc9d04073, /* mop_r_25 */
5665 0xc9e04073, /* mop_r_26 */
5666 0xc9f04073, /* mop_r_27 */
5667 0xcdc04073, /* mop_r_28 */
5668 0xcdd04073, /* mop_r_29 */
5669 0x81f04073, /* mop_r_3 */
5670 0xcde04073, /* mop_r_30 */
5671 0xcdf04073, /* mop_r_31 */
5672 0x85c04073, /* mop_r_4 */
5673 0x85d04073, /* mop_r_5 */
5674 0x85e04073, /* mop_r_6 */
5675 0x85f04073, /* mop_r_7 */
5676 0x89c04073, /* mop_r_8 */
5677 0x89d04073, /* mop_r_9 */
5678 0x81c04073, /* mop_r_N */
5679 0x82004073, /* mop_rr_0 */
5680 0x86004073, /* mop_rr_1 */
5681 0x8a004073, /* mop_rr_2 */
5682 0x8e004073, /* mop_rr_3 */
5683 0xc2004073, /* mop_rr_4 */
5684 0xc6004073, /* mop_rr_5 */
5685 0xca004073, /* mop_rr_6 */
5686 0xce004073, /* mop_rr_7 */
5687 0x82004073, /* mop_rr_N */
5688 0x30200073, /* mret */
5689 0x2000033, /* mul */
5690 0x2001033, /* mulh */
5691 0x2002033, /* mulhsu */
5692 0x2003033, /* mulhu */
5693 0x200003b, /* mulw */
5694 0x13, /* mv */
5695 0x40000033, /* neg */
5696 0x13, /* nop */
5697 0x500033, /* ntl_all */
5698 0x200033, /* ntl_p1 */
5699 0x300033, /* ntl_pall */
5700 0x400033, /* ntl_s1 */
5701 0x6033, /* or */
5702 0x28705013, /* orc_b */
5703 0x6013, /* ori */
5704 0x40006033, /* orn */
5705 0x8004033, /* pack */
5706 0x8007033, /* packh */
5707 0x800403b, /* packw */
5708 0x100000f, /* pause */
5709 0x6013, /* prefetch_i */
5710 0x106013, /* prefetch_r */
5711 0x306013, /* prefetch_w */
5712 0xc0002073, /* rdcycle */
5713 0xffff_ffff, /* rdcycleh */
5714 0xc0202073, /* rdinstret */
5715 0xffff_ffff, /* rdinstreth */
5716 0xc0102073, /* rdtime */
5717 0xffff_ffff, /* rdtimeh */
5718 0x2006033, /* rem */
5719 0x2007033, /* remu */
5720 0x200703b, /* remuw */
5721 0x200603b, /* remw */
5722 0x8067, /* ret */
5723 0x6b805013, /* rev8 */
5724 0xffff_ffff, /* rev8_rv32 */
5725 0x60001033, /* rol */
5726 0x6000103b, /* rolw */
5727 0x60005033, /* ror */
5728 0x60005013, /* rori */
5729 0xffff_ffff, /* rori_rv32 */
5730 0x6000501b, /* roriw */
5731 0x6000503b, /* rorw */
5732 0x23, /* sb */
5733 0x100073, /* sbreak */
5734 0x1800302f, /* sc_d */
5735 0x1800202f, /* sc_w */
5736 0x73, /* scall */
5737 0x10400073, /* sctrclr */
5738 0x3023, /* sd */
5739 0x103013, /* seqz */
5740 0x60401013, /* sext_b */
5741 0x60501013, /* sext_h */
5742 0x1b, /* sext_w */
5743 0x18100073, /* sfence_inval_ir */
5744 0x12000073, /* sfence_vma */
5745 0x18000073, /* sfence_w_inval */
5746 0x2033, /* sgtz */
5747 0x1023, /* sh */
5748 0x20002033, /* sh1add */
5749 0x2000203b, /* sh1add_uw */
5750 0x20004033, /* sh2add */
5751 0x2000403b, /* sh2add_uw */
5752 0x20006033, /* sh3add */
5753 0x2000603b, /* sh3add_uw */
5754 0x10201013, /* sha256sig0 */
5755 0x10301013, /* sha256sig1 */
5756 0x10001013, /* sha256sum0 */
5757 0x10101013, /* sha256sum1 */
5758 0x10601013, /* sha512sig0 */
5759 0xffff_ffff, /* sha512sig0h */
5760 0xffff_ffff, /* sha512sig0l */
5761 0x10701013, /* sha512sig1 */
5762 0xffff_ffff, /* sha512sig1h */
5763 0xffff_ffff, /* sha512sig1l */
5764 0x10401013, /* sha512sum0 */
5765 0xffff_ffff, /* sha512sum0r */
5766 0x10501013, /* sha512sum1 */
5767 0xffff_ffff, /* sha512sum1r */
5768 0x16000073, /* sinval_vma */
5769 0x1033, /* sll */
5770 0x1013, /* slli */
5771 0xffff_ffff, /* slli_rv32 */
5772 0x800101b, /* slli_uw */
5773 0x101b, /* slliw */
5774 0x103b, /* sllw */
5775 0x2033, /* slt */
5776 0x2013, /* slti */
5777 0x3013, /* sltiu */
5778 0x3033, /* sltu */
5779 0x2033, /* sltz */
5780 0x10801013, /* sm3p0 */
5781 0x10901013, /* sm3p1 */
5782 0x30000033, /* sm4ed */
5783 0x34000033, /* sm4ks */
5784 0x3033, /* snez */
5785 0x40005033, /* sra */
5786 0x40005013, /* srai */
5787 0xffff_ffff, /* srai_rv32 */
5788 0x4000501b, /* sraiw */
5789 0x4000503b, /* sraw */
5790 0x10200073, /* sret */
5791 0x5033, /* srl */
5792 0x5013, /* srli */
5793 0xffff_ffff, /* srli_rv32 */
5794 0x501b, /* srliw */
5795 0x503b, /* srlw */
5796 0x4800302f, /* ssamoswap_d */
5797 0x4800202f, /* ssamoswap_w */
5798 0xcdc0c073, /* sspopchk_x1 */
5799 0xcdc2c073, /* sspopchk_x5 */
5800 0xce104073, /* sspush_x1 */
5801 0xce504073, /* sspush_x5 */
5802 0xcdc04073, /* ssrdp */
5803 0x40000033, /* sub */
5804 0x4000003b, /* subw */
5805 0x2023, /* sw */
5806 0xffff_ffff, /* unzip */
5807 0x24002057, /* vaadd_vv */
5808 0x24006057, /* vaadd_vx */
5809 0x20002057, /* vaaddu_vv */
5810 0x20006057, /* vaaddu_vx */
5811 0x40003057, /* vadc_vim */
5812 0x40000057, /* vadc_vvm */
5813 0x40004057, /* vadc_vxm */
5814 0x3057, /* vadd_vi */
5815 0x57, /* vadd_vv */
5816 0x4057, /* vadd_vx */
5817 0xa600a077, /* vaesdf_vs */
5818 0xa200a077, /* vaesdf_vv */
5819 0xa6002077, /* vaesdm_vs */
5820 0xa2002077, /* vaesdm_vv */
5821 0xa601a077, /* vaesef_vs */
5822 0xa201a077, /* vaesef_vv */
5823 0xa6012077, /* vaesem_vs */
5824 0xa2012077, /* vaesem_vv */
5825 0x8a002077, /* vaeskf1_vi */
5826 0xaa002077, /* vaeskf2_vi */
5827 0xa603a077, /* vaesz_vs */
5828 0x24003057, /* vand_vi */
5829 0x24000057, /* vand_vv */
5830 0x24004057, /* vand_vx */
5831 0x4000057, /* vandn_vv */
5832 0x4004057, /* vandn_vx */
5833 0x2c002057, /* vasub_vv */
5834 0x2c006057, /* vasub_vx */
5835 0x28002057, /* vasubu_vv */
5836 0x28006057, /* vasubu_vx */
5837 0x48042057, /* vbrev8_v */
5838 0x48052057, /* vbrev_v */
5839 0x30002057, /* vclmul_vv */
5840 0x30006057, /* vclmul_vx */
5841 0x34002057, /* vclmulh_vv */
5842 0x34006057, /* vclmulh_vx */
5843 0x48062057, /* vclz_v */
5844 0x5e002057, /* vcompress_vm */
5845 0x40082057, /* vcpop_m */
5846 0x48072057, /* vcpop_v */
5847 0x4806a057, /* vctz_v */
5848 0x84002057, /* vdiv_vv */
5849 0x84006057, /* vdiv_vx */
5850 0x80002057, /* vdivu_vv */
5851 0x80006057, /* vdivu_vx */
5852 0x5057, /* vfadd_vf */
5853 0x1057, /* vfadd_vv */
5854 0x4c081057, /* vfclass_v */
5855 0x48019057, /* vfcvt_f_x_v */
5856 0x48011057, /* vfcvt_f_xu_v */
5857 0x48039057, /* vfcvt_rtz_x_f_v */
5858 0x48031057, /* vfcvt_rtz_xu_f_v */
5859 0x48009057, /* vfcvt_x_f_v */
5860 0x48001057, /* vfcvt_xu_f_v */
5861 0x80005057, /* vfdiv_vf */
5862 0x80001057, /* vfdiv_vv */
5863 0x4008a057, /* vfirst_m */
5864 0xb0005057, /* vfmacc_vf */
5865 0xb0001057, /* vfmacc_vv */
5866 0xa0005057, /* vfmadd_vf */
5867 0xa0001057, /* vfmadd_vv */
5868 0x18005057, /* vfmax_vf */
5869 0x18001057, /* vfmax_vv */
5870 0x5c005057, /* vfmerge_vfm */
5871 0x10005057, /* vfmin_vf */
5872 0x10001057, /* vfmin_vv */
5873 0xb8005057, /* vfmsac_vf */
5874 0xb8001057, /* vfmsac_vv */
5875 0xa8005057, /* vfmsub_vf */
5876 0xa8001057, /* vfmsub_vv */
5877 0x90005057, /* vfmul_vf */
5878 0x90001057, /* vfmul_vv */
5879 0x42001057, /* vfmv_f_s */
5880 0x42005057, /* vfmv_s_f */
5881 0x5e005057, /* vfmv_v_f */
5882 0x480a1057, /* vfncvt_f_f_w */
5883 0x48099057, /* vfncvt_f_x_w */
5884 0x48091057, /* vfncvt_f_xu_w */
5885 0x480a9057, /* vfncvt_rod_f_f_w */
5886 0x480b9057, /* vfncvt_rtz_x_f_w */
5887 0x480b1057, /* vfncvt_rtz_xu_f_w */
5888 0x48089057, /* vfncvt_x_f_w */
5889 0x48081057, /* vfncvt_xu_f_w */
5890 0x480e9057, /* vfncvtbf16_f_f_w */
5891 0xb4005057, /* vfnmacc_vf */
5892 0xb4001057, /* vfnmacc_vv */
5893 0xa4005057, /* vfnmadd_vf */
5894 0xa4001057, /* vfnmadd_vv */
5895 0xbc005057, /* vfnmsac_vf */
5896 0xbc001057, /* vfnmsac_vv */
5897 0xac005057, /* vfnmsub_vf */
5898 0xac001057, /* vfnmsub_vv */
5899 0x84005057, /* vfrdiv_vf */
5900 0x4c029057, /* vfrec7_v */
5901 0x1c001057, /* vfredmax_vs */
5902 0x14001057, /* vfredmin_vs */
5903 0xc001057, /* vfredosum_vs */
5904 0x4001057, /* vfredsum_vs */
5905 0x4001057, /* vfredusum_vs */
5906 0x4c021057, /* vfrsqrt7_v */
5907 0x9c005057, /* vfrsub_vf */
5908 0x20005057, /* vfsgnj_vf */
5909 0x20001057, /* vfsgnj_vv */
5910 0x24005057, /* vfsgnjn_vf */
5911 0x24001057, /* vfsgnjn_vv */
5912 0x28005057, /* vfsgnjx_vf */
5913 0x28001057, /* vfsgnjx_vv */
5914 0x3c005057, /* vfslide1down_vf */
5915 0x38005057, /* vfslide1up_vf */
5916 0x4c001057, /* vfsqrt_v */
5917 0x8005057, /* vfsub_vf */
5918 0x8001057, /* vfsub_vv */
5919 0xc0005057, /* vfwadd_vf */
5920 0xc0001057, /* vfwadd_vv */
5921 0xd0005057, /* vfwadd_wf */
5922 0xd0001057, /* vfwadd_wv */
5923 0x48061057, /* vfwcvt_f_f_v */
5924 0x48059057, /* vfwcvt_f_x_v */
5925 0x48051057, /* vfwcvt_f_xu_v */
5926 0x48079057, /* vfwcvt_rtz_x_f_v */
5927 0x48071057, /* vfwcvt_rtz_xu_f_v */
5928 0x48049057, /* vfwcvt_x_f_v */
5929 0x48041057, /* vfwcvt_xu_f_v */
5930 0x48069057, /* vfwcvtbf16_f_f_v */
5931 0xf0005057, /* vfwmacc_vf */
5932 0xf0001057, /* vfwmacc_vv */
5933 0xec005057, /* vfwmaccbf16_vf */
5934 0xec001057, /* vfwmaccbf16_vv */
5935 0xf8005057, /* vfwmsac_vf */
5936 0xf8001057, /* vfwmsac_vv */
5937 0xe0005057, /* vfwmul_vf */
5938 0xe0001057, /* vfwmul_vv */
5939 0xf4005057, /* vfwnmacc_vf */
5940 0xf4001057, /* vfwnmacc_vv */
5941 0xfc005057, /* vfwnmsac_vf */
5942 0xfc001057, /* vfwnmsac_vv */
5943 0xcc001057, /* vfwredosum_vs */
5944 0xc4001057, /* vfwredsum_vs */
5945 0xc4001057, /* vfwredusum_vs */
5946 0xc8005057, /* vfwsub_vf */
5947 0xc8001057, /* vfwsub_vv */
5948 0xd8005057, /* vfwsub_wf */
5949 0xd8001057, /* vfwsub_wv */
5950 0xb2002077, /* vghsh_vv */
5951 0xa208a077, /* vgmul_vv */
5952 0x5008a057, /* vid_v */
5953 0x50082057, /* viota_m */
5954 0x2800007, /* vl1r_v */
5955 0x2805007, /* vl1re16_v */
5956 0x2806007, /* vl1re32_v */
5957 0x2807007, /* vl1re64_v */
5958 0x2800007, /* vl1re8_v */
5959 0x22800007, /* vl2r_v */
5960 0x22805007, /* vl2re16_v */
5961 0x22806007, /* vl2re32_v */
5962 0x22807007, /* vl2re64_v */
5963 0x22800007, /* vl2re8_v */
5964 0x62800007, /* vl4r_v */
5965 0x62805007, /* vl4re16_v */
5966 0x62806007, /* vl4re32_v */
5967 0x62807007, /* vl4re64_v */
5968 0x62800007, /* vl4re8_v */
5969 0xe2800007, /* vl8r_v */
5970 0xe2805007, /* vl8re16_v */
5971 0xe2806007, /* vl8re32_v */
5972 0xe2807007, /* vl8re64_v */
5973 0xe2800007, /* vl8re8_v */
5974 0x5007, /* vle16_v */
5975 0x1005007, /* vle16ff_v */
5976 0x2b00007, /* vle1_v */
5977 0x6007, /* vle32_v */
5978 0x1006007, /* vle32ff_v */
5979 0x7007, /* vle64_v */
5980 0x1007007, /* vle64ff_v */
5981 0x7, /* vle8_v */
5982 0x1000007, /* vle8ff_v */
5983 0x2b00007, /* vlm_v */
5984 0xc005007, /* vloxei16_v */
5985 0xc006007, /* vloxei32_v */
5986 0xc007007, /* vloxei64_v */
5987 0xc000007, /* vloxei8_v */
5988 0x8005007, /* vlse16_v */
5989 0x8006007, /* vlse32_v */
5990 0x8007007, /* vlse64_v */
5991 0x8000007, /* vlse8_v */
5992 0x4005007, /* vluxei16_v */
5993 0x4006007, /* vluxei32_v */
5994 0x4007007, /* vluxei64_v */
5995 0x4000007, /* vluxei8_v */
5996 0xb4002057, /* vmacc_vv */
5997 0xb4006057, /* vmacc_vx */
5998 0x46003057, /* vmadc_vi */
5999 0x44003057, /* vmadc_vim */
6000 0x46000057, /* vmadc_vv */
6001 0x44000057, /* vmadc_vvm */
6002 0x46004057, /* vmadc_vx */
6003 0x44004057, /* vmadc_vxm */
6004 0xa4002057, /* vmadd_vv */
6005 0xa4006057, /* vmadd_vx */
6006 0x66002057, /* vmand_mm */
6007 0x62002057, /* vmandn_mm */
6008 0x60002057, /* vmandnot_mm */
6009 0x1c000057, /* vmax_vv */
6010 0x1c004057, /* vmax_vx */
6011 0x18000057, /* vmaxu_vv */
6012 0x18004057, /* vmaxu_vx */
6013 0x5c003057, /* vmerge_vim */
6014 0x5c000057, /* vmerge_vvm */
6015 0x5c004057, /* vmerge_vxm */
6016 0x60005057, /* vmfeq_vf */
6017 0x60001057, /* vmfeq_vv */
6018 0x7c005057, /* vmfge_vf */
6019 0x74005057, /* vmfgt_vf */
6020 0x64005057, /* vmfle_vf */
6021 0x64001057, /* vmfle_vv */
6022 0x6c005057, /* vmflt_vf */
6023 0x6c001057, /* vmflt_vv */
6024 0x70005057, /* vmfne_vf */
6025 0x70001057, /* vmfne_vv */
6026 0x14000057, /* vmin_vv */
6027 0x14004057, /* vmin_vx */
6028 0x10000057, /* vminu_vv */
6029 0x10004057, /* vminu_vx */
6030 0x76002057, /* vmnand_mm */
6031 0x7a002057, /* vmnor_mm */
6032 0x6a002057, /* vmor_mm */
6033 0x72002057, /* vmorn_mm */
6034 0x70002057, /* vmornot_mm */
6035 0x4e000057, /* vmsbc_vv */
6036 0x4c000057, /* vmsbc_vvm */
6037 0x4e004057, /* vmsbc_vx */
6038 0x4c004057, /* vmsbc_vxm */
6039 0x5000a057, /* vmsbf_m */
6040 0x60003057, /* vmseq_vi */
6041 0x60000057, /* vmseq_vv */
6042 0x60004057, /* vmseq_vx */
6043 0x7c003057, /* vmsgt_vi */
6044 0x7c004057, /* vmsgt_vx */
6045 0x78003057, /* vmsgtu_vi */
6046 0x78004057, /* vmsgtu_vx */
6047 0x5001a057, /* vmsif_m */
6048 0x74003057, /* vmsle_vi */
6049 0x74000057, /* vmsle_vv */
6050 0x74004057, /* vmsle_vx */
6051 0x70003057, /* vmsleu_vi */
6052 0x70000057, /* vmsleu_vv */
6053 0x70004057, /* vmsleu_vx */
6054 0x6c000057, /* vmslt_vv */
6055 0x6c004057, /* vmslt_vx */
6056 0x68000057, /* vmsltu_vv */
6057 0x68004057, /* vmsltu_vx */
6058 0x64003057, /* vmsne_vi */
6059 0x64000057, /* vmsne_vv */
6060 0x64004057, /* vmsne_vx */
6061 0x50012057, /* vmsof_m */
6062 0x94002057, /* vmul_vv */
6063 0x94006057, /* vmul_vx */
6064 0x9c002057, /* vmulh_vv */
6065 0x9c006057, /* vmulh_vx */
6066 0x98002057, /* vmulhsu_vv */
6067 0x98006057, /* vmulhsu_vx */
6068 0x90002057, /* vmulhu_vv */
6069 0x90006057, /* vmulhu_vx */
6070 0x9e003057, /* vmv1r_v */
6071 0x9e00b057, /* vmv2r_v */
6072 0x9e01b057, /* vmv4r_v */
6073 0x9e03b057, /* vmv8r_v */
6074 0x42006057, /* vmv_s_x */
6075 0x5e003057, /* vmv_v_i */
6076 0x5e000057, /* vmv_v_v */
6077 0x5e004057, /* vmv_v_x */
6078 0x42002057, /* vmv_x_s */
6079 0x7e002057, /* vmxnor_mm */
6080 0x6e002057, /* vmxor_mm */
6081 0xbc003057, /* vnclip_wi */
6082 0xbc000057, /* vnclip_wv */
6083 0xbc004057, /* vnclip_wx */
6084 0xb8003057, /* vnclipu_wi */
6085 0xb8000057, /* vnclipu_wv */
6086 0xb8004057, /* vnclipu_wx */
6087 0xbc002057, /* vnmsac_vv */
6088 0xbc006057, /* vnmsac_vx */
6089 0xac002057, /* vnmsub_vv */
6090 0xac006057, /* vnmsub_vx */
6091 0xb4003057, /* vnsra_wi */
6092 0xb4000057, /* vnsra_wv */
6093 0xb4004057, /* vnsra_wx */
6094 0xb0003057, /* vnsrl_wi */
6095 0xb0000057, /* vnsrl_wv */
6096 0xb0004057, /* vnsrl_wx */
6097 0x28003057, /* vor_vi */
6098 0x28000057, /* vor_vv */
6099 0x28004057, /* vor_vx */
6100 0x40082057, /* vpopc_m */
6101 0x4002057, /* vredand_vs */
6102 0x1c002057, /* vredmax_vs */
6103 0x18002057, /* vredmaxu_vs */
6104 0x14002057, /* vredmin_vs */
6105 0x10002057, /* vredminu_vs */
6106 0x8002057, /* vredor_vs */
6107 0x2057, /* vredsum_vs */
6108 0xc002057, /* vredxor_vs */
6109 0x8c002057, /* vrem_vv */
6110 0x8c006057, /* vrem_vx */
6111 0x88002057, /* vremu_vv */
6112 0x88006057, /* vremu_vx */
6113 0x4804a057, /* vrev8_v */
6114 0x30003057, /* vrgather_vi */
6115 0x30000057, /* vrgather_vv */
6116 0x30004057, /* vrgather_vx */
6117 0x38000057, /* vrgatherei16_vv */
6118 0x54000057, /* vrol_vv */
6119 0x54004057, /* vrol_vx */
6120 0x50003057, /* vror_vi */
6121 0x50000057, /* vror_vv */
6122 0x50004057, /* vror_vx */
6123 0xc003057, /* vrsub_vi */
6124 0xc004057, /* vrsub_vx */
6125 0x2800027, /* vs1r_v */
6126 0x22800027, /* vs2r_v */
6127 0x62800027, /* vs4r_v */
6128 0xe2800027, /* vs8r_v */
6129 0x84003057, /* vsadd_vi */
6130 0x84000057, /* vsadd_vv */
6131 0x84004057, /* vsadd_vx */
6132 0x80003057, /* vsaddu_vi */
6133 0x80000057, /* vsaddu_vv */
6134 0x80004057, /* vsaddu_vx */
6135 0x48000057, /* vsbc_vvm */
6136 0x48004057, /* vsbc_vxm */
6137 0x5027, /* vse16_v */
6138 0x2b00027, /* vse1_v */
6139 0x6027, /* vse32_v */
6140 0x7027, /* vse64_v */
6141 0x27, /* vse8_v */
6142 0xc0007057, /* vsetivli */
6143 0x80007057, /* vsetvl */
6144 0x7057, /* vsetvli */
6145 0x4803a057, /* vsext_vf2 */
6146 0x4802a057, /* vsext_vf4 */
6147 0x4801a057, /* vsext_vf8 */
6148 0xba002077, /* vsha2ch_vv */
6149 0xbe002077, /* vsha2cl_vv */
6150 0xb6002077, /* vsha2ms_vv */
6151 0x3c006057, /* vslide1down_vx */
6152 0x38006057, /* vslide1up_vx */
6153 0x3c003057, /* vslidedown_vi */
6154 0x3c004057, /* vslidedown_vx */
6155 0x38003057, /* vslideup_vi */
6156 0x38004057, /* vslideup_vx */
6157 0x94003057, /* vsll_vi */
6158 0x94000057, /* vsll_vv */
6159 0x94004057, /* vsll_vx */
6160 0xae002077, /* vsm3c_vi */
6161 0x82002077, /* vsm3me_vv */
6162 0x86002077, /* vsm4k_vi */
6163 0xa6082077, /* vsm4r_vs */
6164 0xa2082077, /* vsm4r_vv */
6165 0x2b00027, /* vsm_v */
6166 0x9c000057, /* vsmul_vv */
6167 0x9c004057, /* vsmul_vx */
6168 0xc005027, /* vsoxei16_v */
6169 0xc006027, /* vsoxei32_v */
6170 0xc007027, /* vsoxei64_v */
6171 0xc000027, /* vsoxei8_v */
6172 0xa4003057, /* vsra_vi */
6173 0xa4000057, /* vsra_vv */
6174 0xa4004057, /* vsra_vx */
6175 0xa0003057, /* vsrl_vi */
6176 0xa0000057, /* vsrl_vv */
6177 0xa0004057, /* vsrl_vx */
6178 0x8005027, /* vsse16_v */
6179 0x8006027, /* vsse32_v */
6180 0x8007027, /* vsse64_v */
6181 0x8000027, /* vsse8_v */
6182 0xac003057, /* vssra_vi */
6183 0xac000057, /* vssra_vv */
6184 0xac004057, /* vssra_vx */
6185 0xa8003057, /* vssrl_vi */
6186 0xa8000057, /* vssrl_vv */
6187 0xa8004057, /* vssrl_vx */
6188 0x8c000057, /* vssub_vv */
6189 0x8c004057, /* vssub_vx */
6190 0x88000057, /* vssubu_vv */
6191 0x88004057, /* vssubu_vx */
6192 0x8000057, /* vsub_vv */
6193 0x8004057, /* vsub_vx */
6194 0x4005027, /* vsuxei16_v */
6195 0x4006027, /* vsuxei32_v */
6196 0x4007027, /* vsuxei64_v */
6197 0x4000027, /* vsuxei8_v */
6198 0xc4002057, /* vwadd_vv */
6199 0xc4006057, /* vwadd_vx */
6200 0xd4002057, /* vwadd_wv */
6201 0xd4006057, /* vwadd_wx */
6202 0xc0002057, /* vwaddu_vv */
6203 0xc0006057, /* vwaddu_vx */
6204 0xd0002057, /* vwaddu_wv */
6205 0xd0006057, /* vwaddu_wx */
6206 0xf4002057, /* vwmacc_vv */
6207 0xf4006057, /* vwmacc_vx */
6208 0xfc002057, /* vwmaccsu_vv */
6209 0xfc006057, /* vwmaccsu_vx */
6210 0xf0002057, /* vwmaccu_vv */
6211 0xf0006057, /* vwmaccu_vx */
6212 0xf8006057, /* vwmaccus_vx */
6213 0xec002057, /* vwmul_vv */
6214 0xec006057, /* vwmul_vx */
6215 0xe8002057, /* vwmulsu_vv */
6216 0xe8006057, /* vwmulsu_vx */
6217 0xe0002057, /* vwmulu_vv */
6218 0xe0006057, /* vwmulu_vx */
6219 0xc4000057, /* vwredsum_vs */
6220 0xc0000057, /* vwredsumu_vs */
6221 0xd4003057, /* vwsll_vi */
6222 0xd4000057, /* vwsll_vv */
6223 0xd4004057, /* vwsll_vx */
6224 0xcc002057, /* vwsub_vv */
6225 0xcc006057, /* vwsub_vx */
6226 0xdc002057, /* vwsub_wv */
6227 0xdc006057, /* vwsub_wx */
6228 0xc8002057, /* vwsubu_vv */
6229 0xc8006057, /* vwsubu_vx */
6230 0xd8002057, /* vwsubu_wv */
6231 0xd8006057, /* vwsubu_wx */
6232 0x2c003057, /* vxor_vi */
6233 0x2c000057, /* vxor_vv */
6234 0x2c004057, /* vxor_vx */
6235 0x48032057, /* vzext_vf2 */
6236 0x48022057, /* vzext_vf4 */
6237 0x48012057, /* vzext_vf8 */
6238 0x10500073, /* wfi */
6239 0xd00073, /* wrs_nto */
6240 0x1d00073, /* wrs_sto */
6241 0x40004033, /* xnor */
6242 0x4033, /* xor */
6243 0x4013, /* xori */
6244 0x28002033, /* xperm4 */
6245 0x28004033, /* xperm8 */
6246 0xff07013, /* zext_b */
6247 0x800403b, /* zext_h */
6248 0xffff_ffff, /* zext_h_rv32 */
6249 0x800003b, /* zext_w */
6250 0xffff_ffff, /* zip */
6251];
6252pub static OPCODE64_MASK: [u32; 1039] = [
6253 0xfe00707f, /* add */
6254 0xfe00707f, /* add_uw */
6255 0x707f, /* addi */
6256 0x707f, /* addiw */
6257 0xfe00707f, /* addw */
6258 0xffff_ffff, /* aes32dsi */
6259 0xffff_ffff, /* aes32dsmi */
6260 0xffff_ffff, /* aes32esi */
6261 0xffff_ffff, /* aes32esmi */
6262 0xfe00707f, /* aes64ds */
6263 0xfe00707f, /* aes64dsm */
6264 0xfe00707f, /* aes64es */
6265 0xfe00707f, /* aes64esm */
6266 0xfff0707f, /* aes64im */
6267 0xff00707f, /* aes64ks1i */
6268 0xfe00707f, /* aes64ks2 */
6269 0xf800707f, /* amoadd_b */
6270 0xf800707f, /* amoadd_d */
6271 0xf800707f, /* amoadd_h */
6272 0xf800707f, /* amoadd_w */
6273 0xf800707f, /* amoand_b */
6274 0xf800707f, /* amoand_d */
6275 0xf800707f, /* amoand_h */
6276 0xf800707f, /* amoand_w */
6277 0xf800707f, /* amocas_b */
6278 0xf800707f, /* amocas_d */
6279 0xf800707f, /* amocas_h */
6280 0xf800707f, /* amocas_q */
6281 0xf800707f, /* amocas_w */
6282 0xf800707f, /* amomax_b */
6283 0xf800707f, /* amomax_d */
6284 0xf800707f, /* amomax_h */
6285 0xf800707f, /* amomax_w */
6286 0xf800707f, /* amomaxu_b */
6287 0xf800707f, /* amomaxu_d */
6288 0xf800707f, /* amomaxu_h */
6289 0xf800707f, /* amomaxu_w */
6290 0xf800707f, /* amomin_b */
6291 0xf800707f, /* amomin_d */
6292 0xf800707f, /* amomin_h */
6293 0xf800707f, /* amomin_w */
6294 0xf800707f, /* amominu_b */
6295 0xf800707f, /* amominu_d */
6296 0xf800707f, /* amominu_h */
6297 0xf800707f, /* amominu_w */
6298 0xf800707f, /* amoor_b */
6299 0xf800707f, /* amoor_d */
6300 0xf800707f, /* amoor_h */
6301 0xf800707f, /* amoor_w */
6302 0xf800707f, /* amoswap_b */
6303 0xf800707f, /* amoswap_d */
6304 0xf800707f, /* amoswap_h */
6305 0xf800707f, /* amoswap_w */
6306 0xf800707f, /* amoxor_b */
6307 0xf800707f, /* amoxor_d */
6308 0xf800707f, /* amoxor_h */
6309 0xf800707f, /* amoxor_w */
6310 0xfe00707f, /* and */
6311 0x707f, /* andi */
6312 0xfe00707f, /* andn */
6313 0x7f, /* auipc */
6314 0xfe00707f, /* bclr */
6315 0xfc00707f, /* bclri */
6316 0xffff_ffff, /* bclri_rv32 */
6317 0x707f, /* beq */
6318 0x1f0707f, /* beqz */
6319 0xfe00707f, /* bext */
6320 0xfc00707f, /* bexti */
6321 0xffff_ffff, /* bexti_rv32 */
6322 0x707f, /* bge */
6323 0x707f, /* bgeu */
6324 0x1f0707f, /* bgez */
6325 0x707f, /* bgt */
6326 0x707f, /* bgtu */
6327 0xff07f, /* bgtz */
6328 0xfe00707f, /* binv */
6329 0xfc00707f, /* binvi */
6330 0xffff_ffff, /* binvi_rv32 */
6331 0x707f, /* ble */
6332 0x707f, /* bleu */
6333 0xff07f, /* blez */
6334 0x707f, /* blt */
6335 0x707f, /* bltu */
6336 0x1f0707f, /* bltz */
6337 0x707f, /* bne */
6338 0x1f0707f, /* bnez */
6339 0xfff0707f, /* brev8 */
6340 0xfe00707f, /* bset */
6341 0xfc00707f, /* bseti */
6342 0xffff_ffff, /* bseti_rv32 */
6343 0xf003, /* c_add */
6344 0xe003, /* c_addi */
6345 0xef83, /* c_addi16sp */
6346 0xe003, /* c_addi4spn */
6347 0xe003, /* c_addiw */
6348 0xfc63, /* c_addw */
6349 0xfc63, /* c_and */
6350 0xec03, /* c_andi */
6351 0xe003, /* c_beqz */
6352 0xe003, /* c_bnez */
6353 0xffff, /* c_ebreak */
6354 0xe003, /* c_fld */
6355 0xe003, /* c_fldsp */
6356 0xffff_ffff, /* c_flw */
6357 0xffff_ffff, /* c_flwsp */
6358 0xe003, /* c_fsd */
6359 0xe003, /* c_fsdsp */
6360 0xffff_ffff, /* c_fsw */
6361 0xffff_ffff, /* c_fswsp */
6362 0xe003, /* c_j */
6363 0xffff_ffff, /* c_jal */
6364 0xf07f, /* c_jalr */
6365 0xf07f, /* c_jr */
6366 0xfc03, /* c_lbu */
6367 0xe003, /* c_ld */
6368 0xe003, /* c_ldsp */
6369 0xfc43, /* c_lh */
6370 0xfc43, /* c_lhu */
6371 0xe003, /* c_li */
6372 0xe003, /* c_lui */
6373 0xe003, /* c_lw */
6374 0xe003, /* c_lwsp */
6375 0xffff, /* c_mop_1 */
6376 0xffff, /* c_mop_11 */
6377 0xffff, /* c_mop_13 */
6378 0xffff, /* c_mop_15 */
6379 0xffff, /* c_mop_3 */
6380 0xffff, /* c_mop_5 */
6381 0xffff, /* c_mop_7 */
6382 0xffff, /* c_mop_9 */
6383 0xf8ff, /* c_mop_N */
6384 0xfc63, /* c_mul */
6385 0xf003, /* c_mv */
6386 0xef83, /* c_nop */
6387 0xfc7f, /* c_not */
6388 0xffff, /* c_ntl_all */
6389 0xffff, /* c_ntl_p1 */
6390 0xffff, /* c_ntl_pall */
6391 0xffff, /* c_ntl_s1 */
6392 0xfc63, /* c_or */
6393 0xfc03, /* c_sb */
6394 0xe003, /* c_sd */
6395 0xe003, /* c_sdsp */
6396 0xfc7f, /* c_sext_b */
6397 0xfc7f, /* c_sext_h */
6398 0xf07f, /* c_sext_w */
6399 0xfc43, /* c_sh */
6400 0xe003, /* c_slli */
6401 0xffff_ffff, /* c_slli_rv32 */
6402 0xec03, /* c_srai */
6403 0xffff_ffff, /* c_srai_rv32 */
6404 0xec03, /* c_srli */
6405 0xffff_ffff, /* c_srli_rv32 */
6406 0xffff, /* c_sspopchk_x5 */
6407 0xffff, /* c_sspush_x1 */
6408 0xfc63, /* c_sub */
6409 0xfc63, /* c_subw */
6410 0xe003, /* c_sw */
6411 0xe003, /* c_swsp */
6412 0xfc63, /* c_xor */
6413 0xfc7f, /* c_zext_b */
6414 0xfc7f, /* c_zext_h */
6415 0xfc7f, /* c_zext_w */
6416 0xfff07fff, /* cbo_clean */
6417 0xfff07fff, /* cbo_flush */
6418 0xfff07fff, /* cbo_inval */
6419 0xfff07fff, /* cbo_zero */
6420 0xfe00707f, /* clmul */
6421 0xfe00707f, /* clmulh */
6422 0xfe00707f, /* clmulr */
6423 0xfff0707f, /* clz */
6424 0xfff0707f, /* clzw */
6425 0xfc03, /* cm_jalt */
6426 0xfc63, /* cm_mva01s */
6427 0xfc63, /* cm_mvsa01 */
6428 0xff03, /* cm_pop */
6429 0xff03, /* cm_popret */
6430 0xff03, /* cm_popretz */
6431 0xff03, /* cm_push */
6432 0xfff0707f, /* cpop */
6433 0xfff0707f, /* cpopw */
6434 0x7fff, /* csrc */
6435 0x7fff, /* csrci */
6436 0xff07f, /* csrr */
6437 0x707f, /* csrrc */
6438 0x707f, /* csrrci */
6439 0x707f, /* csrrs */
6440 0x707f, /* csrrsi */
6441 0x707f, /* csrrw */
6442 0x707f, /* csrrwi */
6443 0x7fff, /* csrs */
6444 0x7fff, /* csrsi */
6445 0x7fff, /* csrw */
6446 0x7fff, /* csrwi */
6447 0xfff0707f, /* ctz */
6448 0xfff0707f, /* ctzw */
6449 0xfe00707f, /* czero_eqz */
6450 0xfe00707f, /* czero_nez */
6451 0xfe00707f, /* div */
6452 0xfe00707f, /* divu */
6453 0xfe00707f, /* divuw */
6454 0xfe00707f, /* divw */
6455 0xffffffff, /* dret */
6456 0xffffffff, /* ebreak */
6457 0xffffffff, /* ecall */
6458 0xfe00707f, /* fabs_d */
6459 0xfe00707f, /* fabs_h */
6460 0xfe00707f, /* fabs_q */
6461 0xfe00707f, /* fabs_s */
6462 0xfe00007f, /* fadd_d */
6463 0xfe00007f, /* fadd_h */
6464 0xfe00007f, /* fadd_q */
6465 0xfe00007f, /* fadd_s */
6466 0xfff0707f, /* fclass_d */
6467 0xfff0707f, /* fclass_h */
6468 0xfff0707f, /* fclass_q */
6469 0xfff0707f, /* fclass_s */
6470 0xfff0007f, /* fcvt_bf16_s */
6471 0xfff0007f, /* fcvt_d_h */
6472 0xfff0007f, /* fcvt_d_l */
6473 0xfff0007f, /* fcvt_d_lu */
6474 0xfff0007f, /* fcvt_d_q */
6475 0xfff0007f, /* fcvt_d_s */
6476 0xfff0007f, /* fcvt_d_w */
6477 0xfff0007f, /* fcvt_d_wu */
6478 0xfff0007f, /* fcvt_h_d */
6479 0xfff0007f, /* fcvt_h_l */
6480 0xfff0007f, /* fcvt_h_lu */
6481 0xfff0007f, /* fcvt_h_q */
6482 0xfff0007f, /* fcvt_h_s */
6483 0xfff0007f, /* fcvt_h_w */
6484 0xfff0007f, /* fcvt_h_wu */
6485 0xfff0007f, /* fcvt_l_d */
6486 0xfff0007f, /* fcvt_l_h */
6487 0xfff0007f, /* fcvt_l_q */
6488 0xfff0007f, /* fcvt_l_s */
6489 0xfff0007f, /* fcvt_lu_d */
6490 0xfff0007f, /* fcvt_lu_h */
6491 0xfff0007f, /* fcvt_lu_q */
6492 0xfff0007f, /* fcvt_lu_s */
6493 0xfff0007f, /* fcvt_q_d */
6494 0xfff0007f, /* fcvt_q_h */
6495 0xfff0007f, /* fcvt_q_l */
6496 0xfff0007f, /* fcvt_q_lu */
6497 0xfff0007f, /* fcvt_q_s */
6498 0xfff0007f, /* fcvt_q_w */
6499 0xfff0007f, /* fcvt_q_wu */
6500 0xfff0007f, /* fcvt_s_bf16 */
6501 0xfff0007f, /* fcvt_s_d */
6502 0xfff0007f, /* fcvt_s_h */
6503 0xfff0007f, /* fcvt_s_l */
6504 0xfff0007f, /* fcvt_s_lu */
6505 0xfff0007f, /* fcvt_s_q */
6506 0xfff0007f, /* fcvt_s_w */
6507 0xfff0007f, /* fcvt_s_wu */
6508 0xfff0007f, /* fcvt_w_d */
6509 0xfff0007f, /* fcvt_w_h */
6510 0xfff0007f, /* fcvt_w_q */
6511 0xfff0007f, /* fcvt_w_s */
6512 0xfff0007f, /* fcvt_wu_d */
6513 0xfff0007f, /* fcvt_wu_h */
6514 0xfff0007f, /* fcvt_wu_q */
6515 0xfff0007f, /* fcvt_wu_s */
6516 0xfff0707f, /* fcvtmod_w_d */
6517 0xfe00007f, /* fdiv_d */
6518 0xfe00007f, /* fdiv_h */
6519 0xfe00007f, /* fdiv_q */
6520 0xfe00007f, /* fdiv_s */
6521 0x707f, /* fence */
6522 0x707f, /* fence_i */
6523 0xfff0707f, /* fence_tso */
6524 0xfe00707f, /* feq_d */
6525 0xfe00707f, /* feq_h */
6526 0xfe00707f, /* feq_q */
6527 0xfe00707f, /* feq_s */
6528 0x707f, /* fld */
6529 0xfe00707f, /* fle_d */
6530 0xfe00707f, /* fle_h */
6531 0xfe00707f, /* fle_q */
6532 0xfe00707f, /* fle_s */
6533 0xfe00707f, /* fleq_d */
6534 0xfe00707f, /* fleq_h */
6535 0xfe00707f, /* fleq_q */
6536 0xfe00707f, /* fleq_s */
6537 0x707f, /* flh */
6538 0xfff0707f, /* fli_d */
6539 0xfff0707f, /* fli_h */
6540 0xfff0707f, /* fli_q */
6541 0xfff0707f, /* fli_s */
6542 0x707f, /* flq */
6543 0xfe00707f, /* flt_d */
6544 0xfe00707f, /* flt_h */
6545 0xfe00707f, /* flt_q */
6546 0xfe00707f, /* flt_s */
6547 0xfe00707f, /* fltq_d */
6548 0xfe00707f, /* fltq_h */
6549 0xfe00707f, /* fltq_q */
6550 0xfe00707f, /* fltq_s */
6551 0x707f, /* flw */
6552 0x600007f, /* fmadd_d */
6553 0x600007f, /* fmadd_h */
6554 0x600007f, /* fmadd_q */
6555 0x600007f, /* fmadd_s */
6556 0xfe00707f, /* fmax_d */
6557 0xfe00707f, /* fmax_h */
6558 0xfe00707f, /* fmax_q */
6559 0xfe00707f, /* fmax_s */
6560 0xfe00707f, /* fmaxm_d */
6561 0xfe00707f, /* fmaxm_h */
6562 0xfe00707f, /* fmaxm_q */
6563 0xfe00707f, /* fmaxm_s */
6564 0xfe00707f, /* fmin_d */
6565 0xfe00707f, /* fmin_h */
6566 0xfe00707f, /* fmin_q */
6567 0xfe00707f, /* fmin_s */
6568 0xfe00707f, /* fminm_d */
6569 0xfe00707f, /* fminm_h */
6570 0xfe00707f, /* fminm_q */
6571 0xfe00707f, /* fminm_s */
6572 0x600007f, /* fmsub_d */
6573 0x600007f, /* fmsub_h */
6574 0x600007f, /* fmsub_q */
6575 0x600007f, /* fmsub_s */
6576 0xfe00007f, /* fmul_d */
6577 0xfe00007f, /* fmul_h */
6578 0xfe00007f, /* fmul_q */
6579 0xfe00007f, /* fmul_s */
6580 0xfe00707f, /* fmv_d */
6581 0xfff0707f, /* fmv_d_x */
6582 0xfe00707f, /* fmv_h */
6583 0xfff0707f, /* fmv_h_x */
6584 0xfe00707f, /* fmv_q */
6585 0xfe00707f, /* fmv_s */
6586 0xfff0707f, /* fmv_s_x */
6587 0xfff0707f, /* fmv_w_x */
6588 0xfff0707f, /* fmv_x_d */
6589 0xfff0707f, /* fmv_x_h */
6590 0xfff0707f, /* fmv_x_s */
6591 0xfff0707f, /* fmv_x_w */
6592 0xffff_ffff, /* fmvh_x_d */
6593 0xfff0707f, /* fmvh_x_q */
6594 0xffff_ffff, /* fmvp_d_x */
6595 0xfe00707f, /* fmvp_q_x */
6596 0xfe00707f, /* fneg_d */
6597 0xfe00707f, /* fneg_h */
6598 0xfe00707f, /* fneg_q */
6599 0xfe00707f, /* fneg_s */
6600 0x600007f, /* fnmadd_d */
6601 0x600007f, /* fnmadd_h */
6602 0x600007f, /* fnmadd_q */
6603 0x600007f, /* fnmadd_s */
6604 0x600007f, /* fnmsub_d */
6605 0x600007f, /* fnmsub_h */
6606 0x600007f, /* fnmsub_q */
6607 0x600007f, /* fnmsub_s */
6608 0xfffff07f, /* frcsr */
6609 0xfffff07f, /* frflags */
6610 0xfff0007f, /* fround_d */
6611 0xfff0007f, /* fround_h */
6612 0xfff0007f, /* fround_q */
6613 0xfff0007f, /* fround_s */
6614 0xfff0007f, /* froundnx_d */
6615 0xfff0007f, /* froundnx_h */
6616 0xfff0007f, /* froundnx_q */
6617 0xfff0007f, /* froundnx_s */
6618 0xfffff07f, /* frrm */
6619 0xfff0707f, /* fscsr */
6620 0x707f, /* fsd */
6621 0xfff0707f, /* fsflags */
6622 0xfff0707f, /* fsflagsi */
6623 0xfe00707f, /* fsgnj_d */
6624 0xfe00707f, /* fsgnj_h */
6625 0xfe00707f, /* fsgnj_q */
6626 0xfe00707f, /* fsgnj_s */
6627 0xfe00707f, /* fsgnjn_d */
6628 0xfe00707f, /* fsgnjn_h */
6629 0xfe00707f, /* fsgnjn_q */
6630 0xfe00707f, /* fsgnjn_s */
6631 0xfe00707f, /* fsgnjx_d */
6632 0xfe00707f, /* fsgnjx_h */
6633 0xfe00707f, /* fsgnjx_q */
6634 0xfe00707f, /* fsgnjx_s */
6635 0x707f, /* fsh */
6636 0x707f, /* fsq */
6637 0xfff0007f, /* fsqrt_d */
6638 0xfff0007f, /* fsqrt_h */
6639 0xfff0007f, /* fsqrt_q */
6640 0xfff0007f, /* fsqrt_s */
6641 0xfff0707f, /* fsrm */
6642 0xfff0707f, /* fsrmi */
6643 0xfe00007f, /* fsub_d */
6644 0xfe00007f, /* fsub_h */
6645 0xfe00007f, /* fsub_q */
6646 0xfe00007f, /* fsub_s */
6647 0x707f, /* fsw */
6648 0xfe007fff, /* hfence_gvma */
6649 0xfe007fff, /* hfence_vvma */
6650 0xfe007fff, /* hinval_gvma */
6651 0xfe007fff, /* hinval_vvma */
6652 0xfff0707f, /* hlv_b */
6653 0xfff0707f, /* hlv_bu */
6654 0xfff0707f, /* hlv_d */
6655 0xfff0707f, /* hlv_h */
6656 0xfff0707f, /* hlv_hu */
6657 0xfff0707f, /* hlv_w */
6658 0xfff0707f, /* hlv_wu */
6659 0xfff0707f, /* hlvx_hu */
6660 0xfff0707f, /* hlvx_wu */
6661 0xfe007fff, /* hsv_b */
6662 0xfe007fff, /* hsv_d */
6663 0xfe007fff, /* hsv_h */
6664 0xfe007fff, /* hsv_w */
6665 0xfff, /* j */
6666 0x7f, /* jal */
6667 0xfff, /* jal_pseudo */
6668 0x707f, /* jalr */
6669 0xfff07fff, /* jalr_pseudo */
6670 0xfff07fff, /* jr */
6671 0x707f, /* lb */
6672 0x707f, /* lbu */
6673 0x707f, /* ld */
6674 0x707f, /* lh */
6675 0x707f, /* lhu */
6676 0xfff, /* lpad */
6677 0xf9f0707f, /* lr_d */
6678 0xf9f0707f, /* lr_w */
6679 0x7f, /* lui */
6680 0x707f, /* lw */
6681 0x707f, /* lwu */
6682 0xfe00707f, /* max */
6683 0xfe00707f, /* maxu */
6684 0xfe00707f, /* min */
6685 0xfe00707f, /* minu */
6686 0xffffffff, /* mnret */
6687 0xfff0707f, /* mop_r_0 */
6688 0xfff0707f, /* mop_r_1 */
6689 0xfff0707f, /* mop_r_10 */
6690 0xfff0707f, /* mop_r_11 */
6691 0xfff0707f, /* mop_r_12 */
6692 0xfff0707f, /* mop_r_13 */
6693 0xfff0707f, /* mop_r_14 */
6694 0xfff0707f, /* mop_r_15 */
6695 0xfff0707f, /* mop_r_16 */
6696 0xfff0707f, /* mop_r_17 */
6697 0xfff0707f, /* mop_r_18 */
6698 0xfff0707f, /* mop_r_19 */
6699 0xfff0707f, /* mop_r_2 */
6700 0xfff0707f, /* mop_r_20 */
6701 0xfff0707f, /* mop_r_21 */
6702 0xfff0707f, /* mop_r_22 */
6703 0xfff0707f, /* mop_r_23 */
6704 0xfff0707f, /* mop_r_24 */
6705 0xfff0707f, /* mop_r_25 */
6706 0xfff0707f, /* mop_r_26 */
6707 0xfff0707f, /* mop_r_27 */
6708 0xfff0707f, /* mop_r_28 */
6709 0xfff0707f, /* mop_r_29 */
6710 0xfff0707f, /* mop_r_3 */
6711 0xfff0707f, /* mop_r_30 */
6712 0xfff0707f, /* mop_r_31 */
6713 0xfff0707f, /* mop_r_4 */
6714 0xfff0707f, /* mop_r_5 */
6715 0xfff0707f, /* mop_r_6 */
6716 0xfff0707f, /* mop_r_7 */
6717 0xfff0707f, /* mop_r_8 */
6718 0xfff0707f, /* mop_r_9 */
6719 0xb3c0707f, /* mop_r_N */
6720 0xfe00707f, /* mop_rr_0 */
6721 0xfe00707f, /* mop_rr_1 */
6722 0xfe00707f, /* mop_rr_2 */
6723 0xfe00707f, /* mop_rr_3 */
6724 0xfe00707f, /* mop_rr_4 */
6725 0xfe00707f, /* mop_rr_5 */
6726 0xfe00707f, /* mop_rr_6 */
6727 0xfe00707f, /* mop_rr_7 */
6728 0xb200707f, /* mop_rr_N */
6729 0xffffffff, /* mret */
6730 0xfe00707f, /* mul */
6731 0xfe00707f, /* mulh */
6732 0xfe00707f, /* mulhsu */
6733 0xfe00707f, /* mulhu */
6734 0xfe00707f, /* mulw */
6735 0xfff0707f, /* mv */
6736 0xfff0707f, /* neg */
6737 0xffffffff, /* nop */
6738 0xffffffff, /* ntl_all */
6739 0xffffffff, /* ntl_p1 */
6740 0xffffffff, /* ntl_pall */
6741 0xffffffff, /* ntl_s1 */
6742 0xfe00707f, /* or */
6743 0xfff0707f, /* orc_b */
6744 0x707f, /* ori */
6745 0xfe00707f, /* orn */
6746 0xfe00707f, /* pack */
6747 0xfe00707f, /* packh */
6748 0xfe00707f, /* packw */
6749 0xffffffff, /* pause */
6750 0x1f07fff, /* prefetch_i */
6751 0x1f07fff, /* prefetch_r */
6752 0x1f07fff, /* prefetch_w */
6753 0xfffff07f, /* rdcycle */
6754 0xffff_ffff, /* rdcycleh */
6755 0xfffff07f, /* rdinstret */
6756 0xffff_ffff, /* rdinstreth */
6757 0xfffff07f, /* rdtime */
6758 0xffff_ffff, /* rdtimeh */
6759 0xfe00707f, /* rem */
6760 0xfe00707f, /* remu */
6761 0xfe00707f, /* remuw */
6762 0xfe00707f, /* remw */
6763 0xffffffff, /* ret */
6764 0xfff0707f, /* rev8 */
6765 0xffff_ffff, /* rev8_rv32 */
6766 0xfe00707f, /* rol */
6767 0xfe00707f, /* rolw */
6768 0xfe00707f, /* ror */
6769 0xfc00707f, /* rori */
6770 0xffff_ffff, /* rori_rv32 */
6771 0xfe00707f, /* roriw */
6772 0xfe00707f, /* rorw */
6773 0x707f, /* sb */
6774 0xffffffff, /* sbreak */
6775 0xf800707f, /* sc_d */
6776 0xf800707f, /* sc_w */
6777 0xffffffff, /* scall */
6778 0xffffffff, /* sctrclr */
6779 0x707f, /* sd */
6780 0xfff0707f, /* seqz */
6781 0xfff0707f, /* sext_b */
6782 0xfff0707f, /* sext_h */
6783 0xfff0707f, /* sext_w */
6784 0xffffffff, /* sfence_inval_ir */
6785 0xfe007fff, /* sfence_vma */
6786 0xffffffff, /* sfence_w_inval */
6787 0xfe0ff07f, /* sgtz */
6788 0x707f, /* sh */
6789 0xfe00707f, /* sh1add */
6790 0xfe00707f, /* sh1add_uw */
6791 0xfe00707f, /* sh2add */
6792 0xfe00707f, /* sh2add_uw */
6793 0xfe00707f, /* sh3add */
6794 0xfe00707f, /* sh3add_uw */
6795 0xfff0707f, /* sha256sig0 */
6796 0xfff0707f, /* sha256sig1 */
6797 0xfff0707f, /* sha256sum0 */
6798 0xfff0707f, /* sha256sum1 */
6799 0xfff0707f, /* sha512sig0 */
6800 0xffff_ffff, /* sha512sig0h */
6801 0xffff_ffff, /* sha512sig0l */
6802 0xfff0707f, /* sha512sig1 */
6803 0xffff_ffff, /* sha512sig1h */
6804 0xffff_ffff, /* sha512sig1l */
6805 0xfff0707f, /* sha512sum0 */
6806 0xffff_ffff, /* sha512sum0r */
6807 0xfff0707f, /* sha512sum1 */
6808 0xffff_ffff, /* sha512sum1r */
6809 0xfe007fff, /* sinval_vma */
6810 0xfe00707f, /* sll */
6811 0xfc00707f, /* slli */
6812 0xffff_ffff, /* slli_rv32 */
6813 0xfc00707f, /* slli_uw */
6814 0xfe00707f, /* slliw */
6815 0xfe00707f, /* sllw */
6816 0xfe00707f, /* slt */
6817 0x707f, /* slti */
6818 0x707f, /* sltiu */
6819 0xfe00707f, /* sltu */
6820 0xfff0707f, /* sltz */
6821 0xfff0707f, /* sm3p0 */
6822 0xfff0707f, /* sm3p1 */
6823 0x3e00707f, /* sm4ed */
6824 0x3e00707f, /* sm4ks */
6825 0xfe0ff07f, /* snez */
6826 0xfe00707f, /* sra */
6827 0xfc00707f, /* srai */
6828 0xffff_ffff, /* srai_rv32 */
6829 0xfe00707f, /* sraiw */
6830 0xfe00707f, /* sraw */
6831 0xffffffff, /* sret */
6832 0xfe00707f, /* srl */
6833 0xfc00707f, /* srli */
6834 0xffff_ffff, /* srli_rv32 */
6835 0xfe00707f, /* srliw */
6836 0xfe00707f, /* srlw */
6837 0xf800707f, /* ssamoswap_d */
6838 0xf800707f, /* ssamoswap_w */
6839 0xffffffff, /* sspopchk_x1 */
6840 0xffffffff, /* sspopchk_x5 */
6841 0xffffffff, /* sspush_x1 */
6842 0xffffffff, /* sspush_x5 */
6843 0xfffff07f, /* ssrdp */
6844 0xfe00707f, /* sub */
6845 0xfe00707f, /* subw */
6846 0x707f, /* sw */
6847 0xffff_ffff, /* unzip */
6848 0xfc00707f, /* vaadd_vv */
6849 0xfc00707f, /* vaadd_vx */
6850 0xfc00707f, /* vaaddu_vv */
6851 0xfc00707f, /* vaaddu_vx */
6852 0xfe00707f, /* vadc_vim */
6853 0xfe00707f, /* vadc_vvm */
6854 0xfe00707f, /* vadc_vxm */
6855 0xfc00707f, /* vadd_vi */
6856 0xfc00707f, /* vadd_vv */
6857 0xfc00707f, /* vadd_vx */
6858 0xfe0ff07f, /* vaesdf_vs */
6859 0xfe0ff07f, /* vaesdf_vv */
6860 0xfe0ff07f, /* vaesdm_vs */
6861 0xfe0ff07f, /* vaesdm_vv */
6862 0xfe0ff07f, /* vaesef_vs */
6863 0xfe0ff07f, /* vaesef_vv */
6864 0xfe0ff07f, /* vaesem_vs */
6865 0xfe0ff07f, /* vaesem_vv */
6866 0xfe00707f, /* vaeskf1_vi */
6867 0xfe00707f, /* vaeskf2_vi */
6868 0xfe0ff07f, /* vaesz_vs */
6869 0xfc00707f, /* vand_vi */
6870 0xfc00707f, /* vand_vv */
6871 0xfc00707f, /* vand_vx */
6872 0xfc00707f, /* vandn_vv */
6873 0xfc00707f, /* vandn_vx */
6874 0xfc00707f, /* vasub_vv */
6875 0xfc00707f, /* vasub_vx */
6876 0xfc00707f, /* vasubu_vv */
6877 0xfc00707f, /* vasubu_vx */
6878 0xfc0ff07f, /* vbrev8_v */
6879 0xfc0ff07f, /* vbrev_v */
6880 0xfc00707f, /* vclmul_vv */
6881 0xfc00707f, /* vclmul_vx */
6882 0xfc00707f, /* vclmulh_vv */
6883 0xfc00707f, /* vclmulh_vx */
6884 0xfc0ff07f, /* vclz_v */
6885 0xfe00707f, /* vcompress_vm */
6886 0xfc0ff07f, /* vcpop_m */
6887 0xfc0ff07f, /* vcpop_v */
6888 0xfc0ff07f, /* vctz_v */
6889 0xfc00707f, /* vdiv_vv */
6890 0xfc00707f, /* vdiv_vx */
6891 0xfc00707f, /* vdivu_vv */
6892 0xfc00707f, /* vdivu_vx */
6893 0xfc00707f, /* vfadd_vf */
6894 0xfc00707f, /* vfadd_vv */
6895 0xfc0ff07f, /* vfclass_v */
6896 0xfc0ff07f, /* vfcvt_f_x_v */
6897 0xfc0ff07f, /* vfcvt_f_xu_v */
6898 0xfc0ff07f, /* vfcvt_rtz_x_f_v */
6899 0xfc0ff07f, /* vfcvt_rtz_xu_f_v */
6900 0xfc0ff07f, /* vfcvt_x_f_v */
6901 0xfc0ff07f, /* vfcvt_xu_f_v */
6902 0xfc00707f, /* vfdiv_vf */
6903 0xfc00707f, /* vfdiv_vv */
6904 0xfc0ff07f, /* vfirst_m */
6905 0xfc00707f, /* vfmacc_vf */
6906 0xfc00707f, /* vfmacc_vv */
6907 0xfc00707f, /* vfmadd_vf */
6908 0xfc00707f, /* vfmadd_vv */
6909 0xfc00707f, /* vfmax_vf */
6910 0xfc00707f, /* vfmax_vv */
6911 0xfe00707f, /* vfmerge_vfm */
6912 0xfc00707f, /* vfmin_vf */
6913 0xfc00707f, /* vfmin_vv */
6914 0xfc00707f, /* vfmsac_vf */
6915 0xfc00707f, /* vfmsac_vv */
6916 0xfc00707f, /* vfmsub_vf */
6917 0xfc00707f, /* vfmsub_vv */
6918 0xfc00707f, /* vfmul_vf */
6919 0xfc00707f, /* vfmul_vv */
6920 0xfe0ff07f, /* vfmv_f_s */
6921 0xfff0707f, /* vfmv_s_f */
6922 0xfff0707f, /* vfmv_v_f */
6923 0xfc0ff07f, /* vfncvt_f_f_w */
6924 0xfc0ff07f, /* vfncvt_f_x_w */
6925 0xfc0ff07f, /* vfncvt_f_xu_w */
6926 0xfc0ff07f, /* vfncvt_rod_f_f_w */
6927 0xfc0ff07f, /* vfncvt_rtz_x_f_w */
6928 0xfc0ff07f, /* vfncvt_rtz_xu_f_w */
6929 0xfc0ff07f, /* vfncvt_x_f_w */
6930 0xfc0ff07f, /* vfncvt_xu_f_w */
6931 0xfc0ff07f, /* vfncvtbf16_f_f_w */
6932 0xfc00707f, /* vfnmacc_vf */
6933 0xfc00707f, /* vfnmacc_vv */
6934 0xfc00707f, /* vfnmadd_vf */
6935 0xfc00707f, /* vfnmadd_vv */
6936 0xfc00707f, /* vfnmsac_vf */
6937 0xfc00707f, /* vfnmsac_vv */
6938 0xfc00707f, /* vfnmsub_vf */
6939 0xfc00707f, /* vfnmsub_vv */
6940 0xfc00707f, /* vfrdiv_vf */
6941 0xfc0ff07f, /* vfrec7_v */
6942 0xfc00707f, /* vfredmax_vs */
6943 0xfc00707f, /* vfredmin_vs */
6944 0xfc00707f, /* vfredosum_vs */
6945 0xfc00707f, /* vfredsum_vs */
6946 0xfc00707f, /* vfredusum_vs */
6947 0xfc0ff07f, /* vfrsqrt7_v */
6948 0xfc00707f, /* vfrsub_vf */
6949 0xfc00707f, /* vfsgnj_vf */
6950 0xfc00707f, /* vfsgnj_vv */
6951 0xfc00707f, /* vfsgnjn_vf */
6952 0xfc00707f, /* vfsgnjn_vv */
6953 0xfc00707f, /* vfsgnjx_vf */
6954 0xfc00707f, /* vfsgnjx_vv */
6955 0xfc00707f, /* vfslide1down_vf */
6956 0xfc00707f, /* vfslide1up_vf */
6957 0xfc0ff07f, /* vfsqrt_v */
6958 0xfc00707f, /* vfsub_vf */
6959 0xfc00707f, /* vfsub_vv */
6960 0xfc00707f, /* vfwadd_vf */
6961 0xfc00707f, /* vfwadd_vv */
6962 0xfc00707f, /* vfwadd_wf */
6963 0xfc00707f, /* vfwadd_wv */
6964 0xfc0ff07f, /* vfwcvt_f_f_v */
6965 0xfc0ff07f, /* vfwcvt_f_x_v */
6966 0xfc0ff07f, /* vfwcvt_f_xu_v */
6967 0xfc0ff07f, /* vfwcvt_rtz_x_f_v */
6968 0xfc0ff07f, /* vfwcvt_rtz_xu_f_v */
6969 0xfc0ff07f, /* vfwcvt_x_f_v */
6970 0xfc0ff07f, /* vfwcvt_xu_f_v */
6971 0xfc0ff07f, /* vfwcvtbf16_f_f_v */
6972 0xfc00707f, /* vfwmacc_vf */
6973 0xfc00707f, /* vfwmacc_vv */
6974 0xfc00707f, /* vfwmaccbf16_vf */
6975 0xfc00707f, /* vfwmaccbf16_vv */
6976 0xfc00707f, /* vfwmsac_vf */
6977 0xfc00707f, /* vfwmsac_vv */
6978 0xfc00707f, /* vfwmul_vf */
6979 0xfc00707f, /* vfwmul_vv */
6980 0xfc00707f, /* vfwnmacc_vf */
6981 0xfc00707f, /* vfwnmacc_vv */
6982 0xfc00707f, /* vfwnmsac_vf */
6983 0xfc00707f, /* vfwnmsac_vv */
6984 0xfc00707f, /* vfwredosum_vs */
6985 0xfc00707f, /* vfwredsum_vs */
6986 0xfc00707f, /* vfwredusum_vs */
6987 0xfc00707f, /* vfwsub_vf */
6988 0xfc00707f, /* vfwsub_vv */
6989 0xfc00707f, /* vfwsub_wf */
6990 0xfc00707f, /* vfwsub_wv */
6991 0xfe00707f, /* vghsh_vv */
6992 0xfe0ff07f, /* vgmul_vv */
6993 0xfdfff07f, /* vid_v */
6994 0xfc0ff07f, /* viota_m */
6995 0xfff0707f, /* vl1r_v */
6996 0xfff0707f, /* vl1re16_v */
6997 0xfff0707f, /* vl1re32_v */
6998 0xfff0707f, /* vl1re64_v */
6999 0xfff0707f, /* vl1re8_v */
7000 0xfff0707f, /* vl2r_v */
7001 0xfff0707f, /* vl2re16_v */
7002 0xfff0707f, /* vl2re32_v */
7003 0xfff0707f, /* vl2re64_v */
7004 0xfff0707f, /* vl2re8_v */
7005 0xfff0707f, /* vl4r_v */
7006 0xfff0707f, /* vl4re16_v */
7007 0xfff0707f, /* vl4re32_v */
7008 0xfff0707f, /* vl4re64_v */
7009 0xfff0707f, /* vl4re8_v */
7010 0xfff0707f, /* vl8r_v */
7011 0xfff0707f, /* vl8re16_v */
7012 0xfff0707f, /* vl8re32_v */
7013 0xfff0707f, /* vl8re64_v */
7014 0xfff0707f, /* vl8re8_v */
7015 0x1df0707f, /* vle16_v */
7016 0x1df0707f, /* vle16ff_v */
7017 0xfff0707f, /* vle1_v */
7018 0x1df0707f, /* vle32_v */
7019 0x1df0707f, /* vle32ff_v */
7020 0x1df0707f, /* vle64_v */
7021 0x1df0707f, /* vle64ff_v */
7022 0x1df0707f, /* vle8_v */
7023 0x1df0707f, /* vle8ff_v */
7024 0xfff0707f, /* vlm_v */
7025 0x1c00707f, /* vloxei16_v */
7026 0x1c00707f, /* vloxei32_v */
7027 0x1c00707f, /* vloxei64_v */
7028 0x1c00707f, /* vloxei8_v */
7029 0x1c00707f, /* vlse16_v */
7030 0x1c00707f, /* vlse32_v */
7031 0x1c00707f, /* vlse64_v */
7032 0x1c00707f, /* vlse8_v */
7033 0x1c00707f, /* vluxei16_v */
7034 0x1c00707f, /* vluxei32_v */
7035 0x1c00707f, /* vluxei64_v */
7036 0x1c00707f, /* vluxei8_v */
7037 0xfc00707f, /* vmacc_vv */
7038 0xfc00707f, /* vmacc_vx */
7039 0xfe00707f, /* vmadc_vi */
7040 0xfe00707f, /* vmadc_vim */
7041 0xfe00707f, /* vmadc_vv */
7042 0xfe00707f, /* vmadc_vvm */
7043 0xfe00707f, /* vmadc_vx */
7044 0xfe00707f, /* vmadc_vxm */
7045 0xfc00707f, /* vmadd_vv */
7046 0xfc00707f, /* vmadd_vx */
7047 0xfe00707f, /* vmand_mm */
7048 0xfe00707f, /* vmandn_mm */
7049 0xfc00707f, /* vmandnot_mm */
7050 0xfc00707f, /* vmax_vv */
7051 0xfc00707f, /* vmax_vx */
7052 0xfc00707f, /* vmaxu_vv */
7053 0xfc00707f, /* vmaxu_vx */
7054 0xfe00707f, /* vmerge_vim */
7055 0xfe00707f, /* vmerge_vvm */
7056 0xfe00707f, /* vmerge_vxm */
7057 0xfc00707f, /* vmfeq_vf */
7058 0xfc00707f, /* vmfeq_vv */
7059 0xfc00707f, /* vmfge_vf */
7060 0xfc00707f, /* vmfgt_vf */
7061 0xfc00707f, /* vmfle_vf */
7062 0xfc00707f, /* vmfle_vv */
7063 0xfc00707f, /* vmflt_vf */
7064 0xfc00707f, /* vmflt_vv */
7065 0xfc00707f, /* vmfne_vf */
7066 0xfc00707f, /* vmfne_vv */
7067 0xfc00707f, /* vmin_vv */
7068 0xfc00707f, /* vmin_vx */
7069 0xfc00707f, /* vminu_vv */
7070 0xfc00707f, /* vminu_vx */
7071 0xfe00707f, /* vmnand_mm */
7072 0xfe00707f, /* vmnor_mm */
7073 0xfe00707f, /* vmor_mm */
7074 0xfe00707f, /* vmorn_mm */
7075 0xfc00707f, /* vmornot_mm */
7076 0xfe00707f, /* vmsbc_vv */
7077 0xfe00707f, /* vmsbc_vvm */
7078 0xfe00707f, /* vmsbc_vx */
7079 0xfe00707f, /* vmsbc_vxm */
7080 0xfc0ff07f, /* vmsbf_m */
7081 0xfc00707f, /* vmseq_vi */
7082 0xfc00707f, /* vmseq_vv */
7083 0xfc00707f, /* vmseq_vx */
7084 0xfc00707f, /* vmsgt_vi */
7085 0xfc00707f, /* vmsgt_vx */
7086 0xfc00707f, /* vmsgtu_vi */
7087 0xfc00707f, /* vmsgtu_vx */
7088 0xfc0ff07f, /* vmsif_m */
7089 0xfc00707f, /* vmsle_vi */
7090 0xfc00707f, /* vmsle_vv */
7091 0xfc00707f, /* vmsle_vx */
7092 0xfc00707f, /* vmsleu_vi */
7093 0xfc00707f, /* vmsleu_vv */
7094 0xfc00707f, /* vmsleu_vx */
7095 0xfc00707f, /* vmslt_vv */
7096 0xfc00707f, /* vmslt_vx */
7097 0xfc00707f, /* vmsltu_vv */
7098 0xfc00707f, /* vmsltu_vx */
7099 0xfc00707f, /* vmsne_vi */
7100 0xfc00707f, /* vmsne_vv */
7101 0xfc00707f, /* vmsne_vx */
7102 0xfc0ff07f, /* vmsof_m */
7103 0xfc00707f, /* vmul_vv */
7104 0xfc00707f, /* vmul_vx */
7105 0xfc00707f, /* vmulh_vv */
7106 0xfc00707f, /* vmulh_vx */
7107 0xfc00707f, /* vmulhsu_vv */
7108 0xfc00707f, /* vmulhsu_vx */
7109 0xfc00707f, /* vmulhu_vv */
7110 0xfc00707f, /* vmulhu_vx */
7111 0xfe0ff07f, /* vmv1r_v */
7112 0xfe0ff07f, /* vmv2r_v */
7113 0xfe0ff07f, /* vmv4r_v */
7114 0xfe0ff07f, /* vmv8r_v */
7115 0xfff0707f, /* vmv_s_x */
7116 0xfff0707f, /* vmv_v_i */
7117 0xfff0707f, /* vmv_v_v */
7118 0xfff0707f, /* vmv_v_x */
7119 0xfe0ff07f, /* vmv_x_s */
7120 0xfe00707f, /* vmxnor_mm */
7121 0xfe00707f, /* vmxor_mm */
7122 0xfc00707f, /* vnclip_wi */
7123 0xfc00707f, /* vnclip_wv */
7124 0xfc00707f, /* vnclip_wx */
7125 0xfc00707f, /* vnclipu_wi */
7126 0xfc00707f, /* vnclipu_wv */
7127 0xfc00707f, /* vnclipu_wx */
7128 0xfc00707f, /* vnmsac_vv */
7129 0xfc00707f, /* vnmsac_vx */
7130 0xfc00707f, /* vnmsub_vv */
7131 0xfc00707f, /* vnmsub_vx */
7132 0xfc00707f, /* vnsra_wi */
7133 0xfc00707f, /* vnsra_wv */
7134 0xfc00707f, /* vnsra_wx */
7135 0xfc00707f, /* vnsrl_wi */
7136 0xfc00707f, /* vnsrl_wv */
7137 0xfc00707f, /* vnsrl_wx */
7138 0xfc00707f, /* vor_vi */
7139 0xfc00707f, /* vor_vv */
7140 0xfc00707f, /* vor_vx */
7141 0xfc0ff07f, /* vpopc_m */
7142 0xfc00707f, /* vredand_vs */
7143 0xfc00707f, /* vredmax_vs */
7144 0xfc00707f, /* vredmaxu_vs */
7145 0xfc00707f, /* vredmin_vs */
7146 0xfc00707f, /* vredminu_vs */
7147 0xfc00707f, /* vredor_vs */
7148 0xfc00707f, /* vredsum_vs */
7149 0xfc00707f, /* vredxor_vs */
7150 0xfc00707f, /* vrem_vv */
7151 0xfc00707f, /* vrem_vx */
7152 0xfc00707f, /* vremu_vv */
7153 0xfc00707f, /* vremu_vx */
7154 0xfc0ff07f, /* vrev8_v */
7155 0xfc00707f, /* vrgather_vi */
7156 0xfc00707f, /* vrgather_vv */
7157 0xfc00707f, /* vrgather_vx */
7158 0xfc00707f, /* vrgatherei16_vv */
7159 0xfc00707f, /* vrol_vv */
7160 0xfc00707f, /* vrol_vx */
7161 0xf800707f, /* vror_vi */
7162 0xfc00707f, /* vror_vv */
7163 0xfc00707f, /* vror_vx */
7164 0xfc00707f, /* vrsub_vi */
7165 0xfc00707f, /* vrsub_vx */
7166 0xfff0707f, /* vs1r_v */
7167 0xfff0707f, /* vs2r_v */
7168 0xfff0707f, /* vs4r_v */
7169 0xfff0707f, /* vs8r_v */
7170 0xfc00707f, /* vsadd_vi */
7171 0xfc00707f, /* vsadd_vv */
7172 0xfc00707f, /* vsadd_vx */
7173 0xfc00707f, /* vsaddu_vi */
7174 0xfc00707f, /* vsaddu_vv */
7175 0xfc00707f, /* vsaddu_vx */
7176 0xfe00707f, /* vsbc_vvm */
7177 0xfe00707f, /* vsbc_vxm */
7178 0x1df0707f, /* vse16_v */
7179 0xfff0707f, /* vse1_v */
7180 0x1df0707f, /* vse32_v */
7181 0x1df0707f, /* vse64_v */
7182 0x1df0707f, /* vse8_v */
7183 0xc000707f, /* vsetivli */
7184 0xfe00707f, /* vsetvl */
7185 0x8000707f, /* vsetvli */
7186 0xfc0ff07f, /* vsext_vf2 */
7187 0xfc0ff07f, /* vsext_vf4 */
7188 0xfc0ff07f, /* vsext_vf8 */
7189 0xfe00707f, /* vsha2ch_vv */
7190 0xfe00707f, /* vsha2cl_vv */
7191 0xfe00707f, /* vsha2ms_vv */
7192 0xfc00707f, /* vslide1down_vx */
7193 0xfc00707f, /* vslide1up_vx */
7194 0xfc00707f, /* vslidedown_vi */
7195 0xfc00707f, /* vslidedown_vx */
7196 0xfc00707f, /* vslideup_vi */
7197 0xfc00707f, /* vslideup_vx */
7198 0xfc00707f, /* vsll_vi */
7199 0xfc00707f, /* vsll_vv */
7200 0xfc00707f, /* vsll_vx */
7201 0xfe00707f, /* vsm3c_vi */
7202 0xfe00707f, /* vsm3me_vv */
7203 0xfe00707f, /* vsm4k_vi */
7204 0xfe0ff07f, /* vsm4r_vs */
7205 0xfe0ff07f, /* vsm4r_vv */
7206 0xfff0707f, /* vsm_v */
7207 0xfc00707f, /* vsmul_vv */
7208 0xfc00707f, /* vsmul_vx */
7209 0x1c00707f, /* vsoxei16_v */
7210 0x1c00707f, /* vsoxei32_v */
7211 0x1c00707f, /* vsoxei64_v */
7212 0x1c00707f, /* vsoxei8_v */
7213 0xfc00707f, /* vsra_vi */
7214 0xfc00707f, /* vsra_vv */
7215 0xfc00707f, /* vsra_vx */
7216 0xfc00707f, /* vsrl_vi */
7217 0xfc00707f, /* vsrl_vv */
7218 0xfc00707f, /* vsrl_vx */
7219 0x1c00707f, /* vsse16_v */
7220 0x1c00707f, /* vsse32_v */
7221 0x1c00707f, /* vsse64_v */
7222 0x1c00707f, /* vsse8_v */
7223 0xfc00707f, /* vssra_vi */
7224 0xfc00707f, /* vssra_vv */
7225 0xfc00707f, /* vssra_vx */
7226 0xfc00707f, /* vssrl_vi */
7227 0xfc00707f, /* vssrl_vv */
7228 0xfc00707f, /* vssrl_vx */
7229 0xfc00707f, /* vssub_vv */
7230 0xfc00707f, /* vssub_vx */
7231 0xfc00707f, /* vssubu_vv */
7232 0xfc00707f, /* vssubu_vx */
7233 0xfc00707f, /* vsub_vv */
7234 0xfc00707f, /* vsub_vx */
7235 0x1c00707f, /* vsuxei16_v */
7236 0x1c00707f, /* vsuxei32_v */
7237 0x1c00707f, /* vsuxei64_v */
7238 0x1c00707f, /* vsuxei8_v */
7239 0xfc00707f, /* vwadd_vv */
7240 0xfc00707f, /* vwadd_vx */
7241 0xfc00707f, /* vwadd_wv */
7242 0xfc00707f, /* vwadd_wx */
7243 0xfc00707f, /* vwaddu_vv */
7244 0xfc00707f, /* vwaddu_vx */
7245 0xfc00707f, /* vwaddu_wv */
7246 0xfc00707f, /* vwaddu_wx */
7247 0xfc00707f, /* vwmacc_vv */
7248 0xfc00707f, /* vwmacc_vx */
7249 0xfc00707f, /* vwmaccsu_vv */
7250 0xfc00707f, /* vwmaccsu_vx */
7251 0xfc00707f, /* vwmaccu_vv */
7252 0xfc00707f, /* vwmaccu_vx */
7253 0xfc00707f, /* vwmaccus_vx */
7254 0xfc00707f, /* vwmul_vv */
7255 0xfc00707f, /* vwmul_vx */
7256 0xfc00707f, /* vwmulsu_vv */
7257 0xfc00707f, /* vwmulsu_vx */
7258 0xfc00707f, /* vwmulu_vv */
7259 0xfc00707f, /* vwmulu_vx */
7260 0xfc00707f, /* vwredsum_vs */
7261 0xfc00707f, /* vwredsumu_vs */
7262 0xfc00707f, /* vwsll_vi */
7263 0xfc00707f, /* vwsll_vv */
7264 0xfc00707f, /* vwsll_vx */
7265 0xfc00707f, /* vwsub_vv */
7266 0xfc00707f, /* vwsub_vx */
7267 0xfc00707f, /* vwsub_wv */
7268 0xfc00707f, /* vwsub_wx */
7269 0xfc00707f, /* vwsubu_vv */
7270 0xfc00707f, /* vwsubu_vx */
7271 0xfc00707f, /* vwsubu_wv */
7272 0xfc00707f, /* vwsubu_wx */
7273 0xfc00707f, /* vxor_vi */
7274 0xfc00707f, /* vxor_vv */
7275 0xfc00707f, /* vxor_vx */
7276 0xfc0ff07f, /* vzext_vf2 */
7277 0xfc0ff07f, /* vzext_vf4 */
7278 0xfc0ff07f, /* vzext_vf8 */
7279 0xffffffff, /* wfi */
7280 0xffffffff, /* wrs_nto */
7281 0xffffffff, /* wrs_sto */
7282 0xfe00707f, /* xnor */
7283 0xfe00707f, /* xor */
7284 0x707f, /* xori */
7285 0xfe00707f, /* xperm4 */
7286 0xfe00707f, /* xperm8 */
7287 0xfff0707f, /* zext_b */
7288 0xfff0707f, /* zext_h */
7289 0xffff_ffff, /* zext_h_rv32 */
7290 0xfff0707f, /* zext_w */
7291 0xffff_ffff, /* zip */
7292];
7293pub static OPCODE_MATCH: [u32; 1039] = [
7294 0x33, /* add */
7295 0x800003b, /* add_uw */
7296 0x13, /* addi */
7297 0x1b, /* addiw */
7298 0x3b, /* addw */
7299 0x2a000033, /* aes32dsi */
7300 0x2e000033, /* aes32dsmi */
7301 0x22000033, /* aes32esi */
7302 0x26000033, /* aes32esmi */
7303 0x3a000033, /* aes64ds */
7304 0x3e000033, /* aes64dsm */
7305 0x32000033, /* aes64es */
7306 0x36000033, /* aes64esm */
7307 0x30001013, /* aes64im */
7308 0x31001013, /* aes64ks1i */
7309 0x7e000033, /* aes64ks2 */
7310 0x2f, /* amoadd_b */
7311 0x302f, /* amoadd_d */
7312 0x102f, /* amoadd_h */
7313 0x202f, /* amoadd_w */
7314 0x6000002f, /* amoand_b */
7315 0x6000302f, /* amoand_d */
7316 0x6000102f, /* amoand_h */
7317 0x6000202f, /* amoand_w */
7318 0x2800002f, /* amocas_b */
7319 0x2800302f, /* amocas_d */
7320 0x2800102f, /* amocas_h */
7321 0x2800402f, /* amocas_q */
7322 0x2800202f, /* amocas_w */
7323 0xa000002f, /* amomax_b */
7324 0xa000302f, /* amomax_d */
7325 0xa000102f, /* amomax_h */
7326 0xa000202f, /* amomax_w */
7327 0xe000002f, /* amomaxu_b */
7328 0xe000302f, /* amomaxu_d */
7329 0xe000102f, /* amomaxu_h */
7330 0xe000202f, /* amomaxu_w */
7331 0x8000002f, /* amomin_b */
7332 0x8000302f, /* amomin_d */
7333 0x8000102f, /* amomin_h */
7334 0x8000202f, /* amomin_w */
7335 0xc000002f, /* amominu_b */
7336 0xc000302f, /* amominu_d */
7337 0xc000102f, /* amominu_h */
7338 0xc000202f, /* amominu_w */
7339 0x4000002f, /* amoor_b */
7340 0x4000302f, /* amoor_d */
7341 0x4000102f, /* amoor_h */
7342 0x4000202f, /* amoor_w */
7343 0x800002f, /* amoswap_b */
7344 0x800302f, /* amoswap_d */
7345 0x800102f, /* amoswap_h */
7346 0x800202f, /* amoswap_w */
7347 0x2000002f, /* amoxor_b */
7348 0x2000302f, /* amoxor_d */
7349 0x2000102f, /* amoxor_h */
7350 0x2000202f, /* amoxor_w */
7351 0x7033, /* and */
7352 0x7013, /* andi */
7353 0x40007033, /* andn */
7354 0x17, /* auipc */
7355 0x48001033, /* bclr */
7356 0x48001013, /* bclri */
7357 0x48001013, /* bclri_rv32 */
7358 0x63, /* beq */
7359 0x63, /* beqz */
7360 0x48005033, /* bext */
7361 0x48005013, /* bexti */
7362 0x48005013, /* bexti_rv32 */
7363 0x5063, /* bge */
7364 0x7063, /* bgeu */
7365 0x5063, /* bgez */
7366 0x4063, /* bgt */
7367 0x6063, /* bgtu */
7368 0x4063, /* bgtz */
7369 0x68001033, /* binv */
7370 0x68001013, /* binvi */
7371 0x68001013, /* binvi_rv32 */
7372 0x5063, /* ble */
7373 0x7063, /* bleu */
7374 0x5063, /* blez */
7375 0x4063, /* blt */
7376 0x6063, /* bltu */
7377 0x4063, /* bltz */
7378 0x1063, /* bne */
7379 0x1063, /* bnez */
7380 0x68705013, /* brev8 */
7381 0x28001033, /* bset */
7382 0x28001013, /* bseti */
7383 0x28001013, /* bseti_rv32 */
7384 0x9002, /* c_add */
7385 0x1, /* c_addi */
7386 0x6101, /* c_addi16sp */
7387 0x0, /* c_addi4spn */
7388 0x2001, /* c_addiw */
7389 0x9c21, /* c_addw */
7390 0x8c61, /* c_and */
7391 0x8801, /* c_andi */
7392 0xc001, /* c_beqz */
7393 0xe001, /* c_bnez */
7394 0x9002, /* c_ebreak */
7395 0x2000, /* c_fld */
7396 0x2002, /* c_fldsp */
7397 0x6000, /* c_flw */
7398 0x6002, /* c_flwsp */
7399 0xa000, /* c_fsd */
7400 0xa002, /* c_fsdsp */
7401 0xe000, /* c_fsw */
7402 0xe002, /* c_fswsp */
7403 0xa001, /* c_j */
7404 0x2001, /* c_jal */
7405 0x9002, /* c_jalr */
7406 0x8002, /* c_jr */
7407 0x8000, /* c_lbu */
7408 0x6000, /* c_ld */
7409 0x6002, /* c_ldsp */
7410 0x8440, /* c_lh */
7411 0x8400, /* c_lhu */
7412 0x4001, /* c_li */
7413 0x6001, /* c_lui */
7414 0x4000, /* c_lw */
7415 0x4002, /* c_lwsp */
7416 0x6081, /* c_mop_1 */
7417 0x6581, /* c_mop_11 */
7418 0x6681, /* c_mop_13 */
7419 0x6781, /* c_mop_15 */
7420 0x6181, /* c_mop_3 */
7421 0x6281, /* c_mop_5 */
7422 0x6381, /* c_mop_7 */
7423 0x6481, /* c_mop_9 */
7424 0x6081, /* c_mop_N */
7425 0x9c41, /* c_mul */
7426 0x8002, /* c_mv */
7427 0x1, /* c_nop */
7428 0x9c75, /* c_not */
7429 0x9016, /* c_ntl_all */
7430 0x900a, /* c_ntl_p1 */
7431 0x900e, /* c_ntl_pall */
7432 0x9012, /* c_ntl_s1 */
7433 0x8c41, /* c_or */
7434 0x8800, /* c_sb */
7435 0xe000, /* c_sd */
7436 0xe002, /* c_sdsp */
7437 0x9c65, /* c_sext_b */
7438 0x9c6d, /* c_sext_h */
7439 0x2001, /* c_sext_w */
7440 0x8c00, /* c_sh */
7441 0x2, /* c_slli */
7442 0x2, /* c_slli_rv32 */
7443 0x8401, /* c_srai */
7444 0x8401, /* c_srai_rv32 */
7445 0x8001, /* c_srli */
7446 0x8001, /* c_srli_rv32 */
7447 0x6281, /* c_sspopchk_x5 */
7448 0x6081, /* c_sspush_x1 */
7449 0x8c01, /* c_sub */
7450 0x9c01, /* c_subw */
7451 0xc000, /* c_sw */
7452 0xc002, /* c_swsp */
7453 0x8c21, /* c_xor */
7454 0x9c61, /* c_zext_b */
7455 0x9c69, /* c_zext_h */
7456 0x9c71, /* c_zext_w */
7457 0x10200f, /* cbo_clean */
7458 0x20200f, /* cbo_flush */
7459 0x200f, /* cbo_inval */
7460 0x40200f, /* cbo_zero */
7461 0xa001033, /* clmul */
7462 0xa003033, /* clmulh */
7463 0xa002033, /* clmulr */
7464 0x60001013, /* clz */
7465 0x6000101b, /* clzw */
7466 0xa002, /* cm_jalt */
7467 0xac62, /* cm_mva01s */
7468 0xac22, /* cm_mvsa01 */
7469 0xba02, /* cm_pop */
7470 0xbe02, /* cm_popret */
7471 0xbc02, /* cm_popretz */
7472 0xb802, /* cm_push */
7473 0x60201013, /* cpop */
7474 0x6020101b, /* cpopw */
7475 0x3073, /* csrc */
7476 0x7073, /* csrci */
7477 0x2073, /* csrr */
7478 0x3073, /* csrrc */
7479 0x7073, /* csrrci */
7480 0x2073, /* csrrs */
7481 0x6073, /* csrrsi */
7482 0x1073, /* csrrw */
7483 0x5073, /* csrrwi */
7484 0x2073, /* csrs */
7485 0x6073, /* csrsi */
7486 0x1073, /* csrw */
7487 0x5073, /* csrwi */
7488 0x60101013, /* ctz */
7489 0x6010101b, /* ctzw */
7490 0xe005033, /* czero_eqz */
7491 0xe007033, /* czero_nez */
7492 0x2004033, /* div */
7493 0x2005033, /* divu */
7494 0x200503b, /* divuw */
7495 0x200403b, /* divw */
7496 0x7b200073, /* dret */
7497 0x100073, /* ebreak */
7498 0x73, /* ecall */
7499 0x22002053, /* fabs_d */
7500 0x24002053, /* fabs_h */
7501 0x26002053, /* fabs_q */
7502 0x20002053, /* fabs_s */
7503 0x2000053, /* fadd_d */
7504 0x4000053, /* fadd_h */
7505 0x6000053, /* fadd_q */
7506 0x53, /* fadd_s */
7507 0xe2001053, /* fclass_d */
7508 0xe4001053, /* fclass_h */
7509 0xe6001053, /* fclass_q */
7510 0xe0001053, /* fclass_s */
7511 0x44800053, /* fcvt_bf16_s */
7512 0x42200053, /* fcvt_d_h */
7513 0xd2200053, /* fcvt_d_l */
7514 0xd2300053, /* fcvt_d_lu */
7515 0x42300053, /* fcvt_d_q */
7516 0x42000053, /* fcvt_d_s */
7517 0xd2000053, /* fcvt_d_w */
7518 0xd2100053, /* fcvt_d_wu */
7519 0x44100053, /* fcvt_h_d */
7520 0xd4200053, /* fcvt_h_l */
7521 0xd4300053, /* fcvt_h_lu */
7522 0x44300053, /* fcvt_h_q */
7523 0x44000053, /* fcvt_h_s */
7524 0xd4000053, /* fcvt_h_w */
7525 0xd4100053, /* fcvt_h_wu */
7526 0xc2200053, /* fcvt_l_d */
7527 0xc4200053, /* fcvt_l_h */
7528 0xc6200053, /* fcvt_l_q */
7529 0xc0200053, /* fcvt_l_s */
7530 0xc2300053, /* fcvt_lu_d */
7531 0xc4300053, /* fcvt_lu_h */
7532 0xc6300053, /* fcvt_lu_q */
7533 0xc0300053, /* fcvt_lu_s */
7534 0x46100053, /* fcvt_q_d */
7535 0x46200053, /* fcvt_q_h */
7536 0xd6200053, /* fcvt_q_l */
7537 0xd6300053, /* fcvt_q_lu */
7538 0x46000053, /* fcvt_q_s */
7539 0xd6000053, /* fcvt_q_w */
7540 0xd6100053, /* fcvt_q_wu */
7541 0x40600053, /* fcvt_s_bf16 */
7542 0x40100053, /* fcvt_s_d */
7543 0x40200053, /* fcvt_s_h */
7544 0xd0200053, /* fcvt_s_l */
7545 0xd0300053, /* fcvt_s_lu */
7546 0x40300053, /* fcvt_s_q */
7547 0xd0000053, /* fcvt_s_w */
7548 0xd0100053, /* fcvt_s_wu */
7549 0xc2000053, /* fcvt_w_d */
7550 0xc4000053, /* fcvt_w_h */
7551 0xc6000053, /* fcvt_w_q */
7552 0xc0000053, /* fcvt_w_s */
7553 0xc2100053, /* fcvt_wu_d */
7554 0xc4100053, /* fcvt_wu_h */
7555 0xc6100053, /* fcvt_wu_q */
7556 0xc0100053, /* fcvt_wu_s */
7557 0xc2801053, /* fcvtmod_w_d */
7558 0x1a000053, /* fdiv_d */
7559 0x1c000053, /* fdiv_h */
7560 0x1e000053, /* fdiv_q */
7561 0x18000053, /* fdiv_s */
7562 0xf, /* fence */
7563 0x100f, /* fence_i */
7564 0x8330000f, /* fence_tso */
7565 0xa2002053, /* feq_d */
7566 0xa4002053, /* feq_h */
7567 0xa6002053, /* feq_q */
7568 0xa0002053, /* feq_s */
7569 0x3007, /* fld */
7570 0xa2000053, /* fle_d */
7571 0xa4000053, /* fle_h */
7572 0xa6000053, /* fle_q */
7573 0xa0000053, /* fle_s */
7574 0xa2004053, /* fleq_d */
7575 0xa4004053, /* fleq_h */
7576 0xa6004053, /* fleq_q */
7577 0xa0004053, /* fleq_s */
7578 0x1007, /* flh */
7579 0xf2100053, /* fli_d */
7580 0xf4100053, /* fli_h */
7581 0xf6100053, /* fli_q */
7582 0xf0100053, /* fli_s */
7583 0x4007, /* flq */
7584 0xa2001053, /* flt_d */
7585 0xa4001053, /* flt_h */
7586 0xa6001053, /* flt_q */
7587 0xa0001053, /* flt_s */
7588 0xa2005053, /* fltq_d */
7589 0xa4005053, /* fltq_h */
7590 0xa6005053, /* fltq_q */
7591 0xa0005053, /* fltq_s */
7592 0x2007, /* flw */
7593 0x2000043, /* fmadd_d */
7594 0x4000043, /* fmadd_h */
7595 0x6000043, /* fmadd_q */
7596 0x43, /* fmadd_s */
7597 0x2a001053, /* fmax_d */
7598 0x2c001053, /* fmax_h */
7599 0x2e001053, /* fmax_q */
7600 0x28001053, /* fmax_s */
7601 0x2a003053, /* fmaxm_d */
7602 0x2c003053, /* fmaxm_h */
7603 0x2e003053, /* fmaxm_q */
7604 0x28003053, /* fmaxm_s */
7605 0x2a000053, /* fmin_d */
7606 0x2c000053, /* fmin_h */
7607 0x2e000053, /* fmin_q */
7608 0x28000053, /* fmin_s */
7609 0x2a002053, /* fminm_d */
7610 0x2c002053, /* fminm_h */
7611 0x2e002053, /* fminm_q */
7612 0x28002053, /* fminm_s */
7613 0x2000047, /* fmsub_d */
7614 0x4000047, /* fmsub_h */
7615 0x6000047, /* fmsub_q */
7616 0x47, /* fmsub_s */
7617 0x12000053, /* fmul_d */
7618 0x14000053, /* fmul_h */
7619 0x16000053, /* fmul_q */
7620 0x10000053, /* fmul_s */
7621 0x22000053, /* fmv_d */
7622 0xf2000053, /* fmv_d_x */
7623 0x24000053, /* fmv_h */
7624 0xf4000053, /* fmv_h_x */
7625 0x26000053, /* fmv_q */
7626 0x20000053, /* fmv_s */
7627 0xf0000053, /* fmv_s_x */
7628 0xf0000053, /* fmv_w_x */
7629 0xe2000053, /* fmv_x_d */
7630 0xe4000053, /* fmv_x_h */
7631 0xe0000053, /* fmv_x_s */
7632 0xe0000053, /* fmv_x_w */
7633 0xe2100053, /* fmvh_x_d */
7634 0xe6100053, /* fmvh_x_q */
7635 0xb2000053, /* fmvp_d_x */
7636 0xb6000053, /* fmvp_q_x */
7637 0x22001053, /* fneg_d */
7638 0x24001053, /* fneg_h */
7639 0x26001053, /* fneg_q */
7640 0x20001053, /* fneg_s */
7641 0x200004f, /* fnmadd_d */
7642 0x400004f, /* fnmadd_h */
7643 0x600004f, /* fnmadd_q */
7644 0x4f, /* fnmadd_s */
7645 0x200004b, /* fnmsub_d */
7646 0x400004b, /* fnmsub_h */
7647 0x600004b, /* fnmsub_q */
7648 0x4b, /* fnmsub_s */
7649 0x302073, /* frcsr */
7650 0x102073, /* frflags */
7651 0x42400053, /* fround_d */
7652 0x44400053, /* fround_h */
7653 0x46400053, /* fround_q */
7654 0x40400053, /* fround_s */
7655 0x42500053, /* froundnx_d */
7656 0x44500053, /* froundnx_h */
7657 0x46500053, /* froundnx_q */
7658 0x40500053, /* froundnx_s */
7659 0x202073, /* frrm */
7660 0x301073, /* fscsr */
7661 0x3027, /* fsd */
7662 0x101073, /* fsflags */
7663 0x105073, /* fsflagsi */
7664 0x22000053, /* fsgnj_d */
7665 0x24000053, /* fsgnj_h */
7666 0x26000053, /* fsgnj_q */
7667 0x20000053, /* fsgnj_s */
7668 0x22001053, /* fsgnjn_d */
7669 0x24001053, /* fsgnjn_h */
7670 0x26001053, /* fsgnjn_q */
7671 0x20001053, /* fsgnjn_s */
7672 0x22002053, /* fsgnjx_d */
7673 0x24002053, /* fsgnjx_h */
7674 0x26002053, /* fsgnjx_q */
7675 0x20002053, /* fsgnjx_s */
7676 0x1027, /* fsh */
7677 0x4027, /* fsq */
7678 0x5a000053, /* fsqrt_d */
7679 0x5c000053, /* fsqrt_h */
7680 0x5e000053, /* fsqrt_q */
7681 0x58000053, /* fsqrt_s */
7682 0x201073, /* fsrm */
7683 0x205073, /* fsrmi */
7684 0xa000053, /* fsub_d */
7685 0xc000053, /* fsub_h */
7686 0xe000053, /* fsub_q */
7687 0x8000053, /* fsub_s */
7688 0x2027, /* fsw */
7689 0x62000073, /* hfence_gvma */
7690 0x22000073, /* hfence_vvma */
7691 0x66000073, /* hinval_gvma */
7692 0x26000073, /* hinval_vvma */
7693 0x60004073, /* hlv_b */
7694 0x60104073, /* hlv_bu */
7695 0x6c004073, /* hlv_d */
7696 0x64004073, /* hlv_h */
7697 0x64104073, /* hlv_hu */
7698 0x68004073, /* hlv_w */
7699 0x68104073, /* hlv_wu */
7700 0x64304073, /* hlvx_hu */
7701 0x68304073, /* hlvx_wu */
7702 0x62004073, /* hsv_b */
7703 0x6e004073, /* hsv_d */
7704 0x66004073, /* hsv_h */
7705 0x6a004073, /* hsv_w */
7706 0x6f, /* j */
7707 0x6f, /* jal */
7708 0xef, /* jal_pseudo */
7709 0x67, /* jalr */
7710 0xe7, /* jalr_pseudo */
7711 0x67, /* jr */
7712 0x3, /* lb */
7713 0x4003, /* lbu */
7714 0x3003, /* ld */
7715 0x1003, /* lh */
7716 0x5003, /* lhu */
7717 0x17, /* lpad */
7718 0x1000302f, /* lr_d */
7719 0x1000202f, /* lr_w */
7720 0x37, /* lui */
7721 0x2003, /* lw */
7722 0x6003, /* lwu */
7723 0xa006033, /* max */
7724 0xa007033, /* maxu */
7725 0xa004033, /* min */
7726 0xa005033, /* minu */
7727 0x70200073, /* mnret */
7728 0x81c04073, /* mop_r_0 */
7729 0x81d04073, /* mop_r_1 */
7730 0x89e04073, /* mop_r_10 */
7731 0x89f04073, /* mop_r_11 */
7732 0x8dc04073, /* mop_r_12 */
7733 0x8dd04073, /* mop_r_13 */
7734 0x8de04073, /* mop_r_14 */
7735 0x8df04073, /* mop_r_15 */
7736 0xc1c04073, /* mop_r_16 */
7737 0xc1d04073, /* mop_r_17 */
7738 0xc1e04073, /* mop_r_18 */
7739 0xc1f04073, /* mop_r_19 */
7740 0x81e04073, /* mop_r_2 */
7741 0xc5c04073, /* mop_r_20 */
7742 0xc5d04073, /* mop_r_21 */
7743 0xc5e04073, /* mop_r_22 */
7744 0xc5f04073, /* mop_r_23 */
7745 0xc9c04073, /* mop_r_24 */
7746 0xc9d04073, /* mop_r_25 */
7747 0xc9e04073, /* mop_r_26 */
7748 0xc9f04073, /* mop_r_27 */
7749 0xcdc04073, /* mop_r_28 */
7750 0xcdd04073, /* mop_r_29 */
7751 0x81f04073, /* mop_r_3 */
7752 0xcde04073, /* mop_r_30 */
7753 0xcdf04073, /* mop_r_31 */
7754 0x85c04073, /* mop_r_4 */
7755 0x85d04073, /* mop_r_5 */
7756 0x85e04073, /* mop_r_6 */
7757 0x85f04073, /* mop_r_7 */
7758 0x89c04073, /* mop_r_8 */
7759 0x89d04073, /* mop_r_9 */
7760 0x81c04073, /* mop_r_N */
7761 0x82004073, /* mop_rr_0 */
7762 0x86004073, /* mop_rr_1 */
7763 0x8a004073, /* mop_rr_2 */
7764 0x8e004073, /* mop_rr_3 */
7765 0xc2004073, /* mop_rr_4 */
7766 0xc6004073, /* mop_rr_5 */
7767 0xca004073, /* mop_rr_6 */
7768 0xce004073, /* mop_rr_7 */
7769 0x82004073, /* mop_rr_N */
7770 0x30200073, /* mret */
7771 0x2000033, /* mul */
7772 0x2001033, /* mulh */
7773 0x2002033, /* mulhsu */
7774 0x2003033, /* mulhu */
7775 0x200003b, /* mulw */
7776 0x13, /* mv */
7777 0x40000033, /* neg */
7778 0x13, /* nop */
7779 0x500033, /* ntl_all */
7780 0x200033, /* ntl_p1 */
7781 0x300033, /* ntl_pall */
7782 0x400033, /* ntl_s1 */
7783 0x6033, /* or */
7784 0x28705013, /* orc_b */
7785 0x6013, /* ori */
7786 0x40006033, /* orn */
7787 0x8004033, /* pack */
7788 0x8007033, /* packh */
7789 0x800403b, /* packw */
7790 0x100000f, /* pause */
7791 0x6013, /* prefetch_i */
7792 0x106013, /* prefetch_r */
7793 0x306013, /* prefetch_w */
7794 0xc0002073, /* rdcycle */
7795 0xc8002073, /* rdcycleh */
7796 0xc0202073, /* rdinstret */
7797 0xc8202073, /* rdinstreth */
7798 0xc0102073, /* rdtime */
7799 0xc8102073, /* rdtimeh */
7800 0x2006033, /* rem */
7801 0x2007033, /* remu */
7802 0x200703b, /* remuw */
7803 0x200603b, /* remw */
7804 0x8067, /* ret */
7805 0x6b805013, /* rev8 */
7806 0x69805013, /* rev8_rv32 */
7807 0x60001033, /* rol */
7808 0x6000103b, /* rolw */
7809 0x60005033, /* ror */
7810 0x60005013, /* rori */
7811 0x60005013, /* rori_rv32 */
7812 0x6000501b, /* roriw */
7813 0x6000503b, /* rorw */
7814 0x23, /* sb */
7815 0x100073, /* sbreak */
7816 0x1800302f, /* sc_d */
7817 0x1800202f, /* sc_w */
7818 0x73, /* scall */
7819 0x10400073, /* sctrclr */
7820 0x3023, /* sd */
7821 0x103013, /* seqz */
7822 0x60401013, /* sext_b */
7823 0x60501013, /* sext_h */
7824 0x1b, /* sext_w */
7825 0x18100073, /* sfence_inval_ir */
7826 0x12000073, /* sfence_vma */
7827 0x18000073, /* sfence_w_inval */
7828 0x2033, /* sgtz */
7829 0x1023, /* sh */
7830 0x20002033, /* sh1add */
7831 0x2000203b, /* sh1add_uw */
7832 0x20004033, /* sh2add */
7833 0x2000403b, /* sh2add_uw */
7834 0x20006033, /* sh3add */
7835 0x2000603b, /* sh3add_uw */
7836 0x10201013, /* sha256sig0 */
7837 0x10301013, /* sha256sig1 */
7838 0x10001013, /* sha256sum0 */
7839 0x10101013, /* sha256sum1 */
7840 0x10601013, /* sha512sig0 */
7841 0x5c000033, /* sha512sig0h */
7842 0x54000033, /* sha512sig0l */
7843 0x10701013, /* sha512sig1 */
7844 0x5e000033, /* sha512sig1h */
7845 0x56000033, /* sha512sig1l */
7846 0x10401013, /* sha512sum0 */
7847 0x50000033, /* sha512sum0r */
7848 0x10501013, /* sha512sum1 */
7849 0x52000033, /* sha512sum1r */
7850 0x16000073, /* sinval_vma */
7851 0x1033, /* sll */
7852 0x1013, /* slli */
7853 0x1013, /* slli_rv32 */
7854 0x800101b, /* slli_uw */
7855 0x101b, /* slliw */
7856 0x103b, /* sllw */
7857 0x2033, /* slt */
7858 0x2013, /* slti */
7859 0x3013, /* sltiu */
7860 0x3033, /* sltu */
7861 0x2033, /* sltz */
7862 0x10801013, /* sm3p0 */
7863 0x10901013, /* sm3p1 */
7864 0x30000033, /* sm4ed */
7865 0x34000033, /* sm4ks */
7866 0x3033, /* snez */
7867 0x40005033, /* sra */
7868 0x40005013, /* srai */
7869 0x40005013, /* srai_rv32 */
7870 0x4000501b, /* sraiw */
7871 0x4000503b, /* sraw */
7872 0x10200073, /* sret */
7873 0x5033, /* srl */
7874 0x5013, /* srli */
7875 0x5013, /* srli_rv32 */
7876 0x501b, /* srliw */
7877 0x503b, /* srlw */
7878 0x4800302f, /* ssamoswap_d */
7879 0x4800202f, /* ssamoswap_w */
7880 0xcdc0c073, /* sspopchk_x1 */
7881 0xcdc2c073, /* sspopchk_x5 */
7882 0xce104073, /* sspush_x1 */
7883 0xce504073, /* sspush_x5 */
7884 0xcdc04073, /* ssrdp */
7885 0x40000033, /* sub */
7886 0x4000003b, /* subw */
7887 0x2023, /* sw */
7888 0x8f05013, /* unzip */
7889 0x24002057, /* vaadd_vv */
7890 0x24006057, /* vaadd_vx */
7891 0x20002057, /* vaaddu_vv */
7892 0x20006057, /* vaaddu_vx */
7893 0x40003057, /* vadc_vim */
7894 0x40000057, /* vadc_vvm */
7895 0x40004057, /* vadc_vxm */
7896 0x3057, /* vadd_vi */
7897 0x57, /* vadd_vv */
7898 0x4057, /* vadd_vx */
7899 0xa600a077, /* vaesdf_vs */
7900 0xa200a077, /* vaesdf_vv */
7901 0xa6002077, /* vaesdm_vs */
7902 0xa2002077, /* vaesdm_vv */
7903 0xa601a077, /* vaesef_vs */
7904 0xa201a077, /* vaesef_vv */
7905 0xa6012077, /* vaesem_vs */
7906 0xa2012077, /* vaesem_vv */
7907 0x8a002077, /* vaeskf1_vi */
7908 0xaa002077, /* vaeskf2_vi */
7909 0xa603a077, /* vaesz_vs */
7910 0x24003057, /* vand_vi */
7911 0x24000057, /* vand_vv */
7912 0x24004057, /* vand_vx */
7913 0x4000057, /* vandn_vv */
7914 0x4004057, /* vandn_vx */
7915 0x2c002057, /* vasub_vv */
7916 0x2c006057, /* vasub_vx */
7917 0x28002057, /* vasubu_vv */
7918 0x28006057, /* vasubu_vx */
7919 0x48042057, /* vbrev8_v */
7920 0x48052057, /* vbrev_v */
7921 0x30002057, /* vclmul_vv */
7922 0x30006057, /* vclmul_vx */
7923 0x34002057, /* vclmulh_vv */
7924 0x34006057, /* vclmulh_vx */
7925 0x48062057, /* vclz_v */
7926 0x5e002057, /* vcompress_vm */
7927 0x40082057, /* vcpop_m */
7928 0x48072057, /* vcpop_v */
7929 0x4806a057, /* vctz_v */
7930 0x84002057, /* vdiv_vv */
7931 0x84006057, /* vdiv_vx */
7932 0x80002057, /* vdivu_vv */
7933 0x80006057, /* vdivu_vx */
7934 0x5057, /* vfadd_vf */
7935 0x1057, /* vfadd_vv */
7936 0x4c081057, /* vfclass_v */
7937 0x48019057, /* vfcvt_f_x_v */
7938 0x48011057, /* vfcvt_f_xu_v */
7939 0x48039057, /* vfcvt_rtz_x_f_v */
7940 0x48031057, /* vfcvt_rtz_xu_f_v */
7941 0x48009057, /* vfcvt_x_f_v */
7942 0x48001057, /* vfcvt_xu_f_v */
7943 0x80005057, /* vfdiv_vf */
7944 0x80001057, /* vfdiv_vv */
7945 0x4008a057, /* vfirst_m */
7946 0xb0005057, /* vfmacc_vf */
7947 0xb0001057, /* vfmacc_vv */
7948 0xa0005057, /* vfmadd_vf */
7949 0xa0001057, /* vfmadd_vv */
7950 0x18005057, /* vfmax_vf */
7951 0x18001057, /* vfmax_vv */
7952 0x5c005057, /* vfmerge_vfm */
7953 0x10005057, /* vfmin_vf */
7954 0x10001057, /* vfmin_vv */
7955 0xb8005057, /* vfmsac_vf */
7956 0xb8001057, /* vfmsac_vv */
7957 0xa8005057, /* vfmsub_vf */
7958 0xa8001057, /* vfmsub_vv */
7959 0x90005057, /* vfmul_vf */
7960 0x90001057, /* vfmul_vv */
7961 0x42001057, /* vfmv_f_s */
7962 0x42005057, /* vfmv_s_f */
7963 0x5e005057, /* vfmv_v_f */
7964 0x480a1057, /* vfncvt_f_f_w */
7965 0x48099057, /* vfncvt_f_x_w */
7966 0x48091057, /* vfncvt_f_xu_w */
7967 0x480a9057, /* vfncvt_rod_f_f_w */
7968 0x480b9057, /* vfncvt_rtz_x_f_w */
7969 0x480b1057, /* vfncvt_rtz_xu_f_w */
7970 0x48089057, /* vfncvt_x_f_w */
7971 0x48081057, /* vfncvt_xu_f_w */
7972 0x480e9057, /* vfncvtbf16_f_f_w */
7973 0xb4005057, /* vfnmacc_vf */
7974 0xb4001057, /* vfnmacc_vv */
7975 0xa4005057, /* vfnmadd_vf */
7976 0xa4001057, /* vfnmadd_vv */
7977 0xbc005057, /* vfnmsac_vf */
7978 0xbc001057, /* vfnmsac_vv */
7979 0xac005057, /* vfnmsub_vf */
7980 0xac001057, /* vfnmsub_vv */
7981 0x84005057, /* vfrdiv_vf */
7982 0x4c029057, /* vfrec7_v */
7983 0x1c001057, /* vfredmax_vs */
7984 0x14001057, /* vfredmin_vs */
7985 0xc001057, /* vfredosum_vs */
7986 0x4001057, /* vfredsum_vs */
7987 0x4001057, /* vfredusum_vs */
7988 0x4c021057, /* vfrsqrt7_v */
7989 0x9c005057, /* vfrsub_vf */
7990 0x20005057, /* vfsgnj_vf */
7991 0x20001057, /* vfsgnj_vv */
7992 0x24005057, /* vfsgnjn_vf */
7993 0x24001057, /* vfsgnjn_vv */
7994 0x28005057, /* vfsgnjx_vf */
7995 0x28001057, /* vfsgnjx_vv */
7996 0x3c005057, /* vfslide1down_vf */
7997 0x38005057, /* vfslide1up_vf */
7998 0x4c001057, /* vfsqrt_v */
7999 0x8005057, /* vfsub_vf */
8000 0x8001057, /* vfsub_vv */
8001 0xc0005057, /* vfwadd_vf */
8002 0xc0001057, /* vfwadd_vv */
8003 0xd0005057, /* vfwadd_wf */
8004 0xd0001057, /* vfwadd_wv */
8005 0x48061057, /* vfwcvt_f_f_v */
8006 0x48059057, /* vfwcvt_f_x_v */
8007 0x48051057, /* vfwcvt_f_xu_v */
8008 0x48079057, /* vfwcvt_rtz_x_f_v */
8009 0x48071057, /* vfwcvt_rtz_xu_f_v */
8010 0x48049057, /* vfwcvt_x_f_v */
8011 0x48041057, /* vfwcvt_xu_f_v */
8012 0x48069057, /* vfwcvtbf16_f_f_v */
8013 0xf0005057, /* vfwmacc_vf */
8014 0xf0001057, /* vfwmacc_vv */
8015 0xec005057, /* vfwmaccbf16_vf */
8016 0xec001057, /* vfwmaccbf16_vv */
8017 0xf8005057, /* vfwmsac_vf */
8018 0xf8001057, /* vfwmsac_vv */
8019 0xe0005057, /* vfwmul_vf */
8020 0xe0001057, /* vfwmul_vv */
8021 0xf4005057, /* vfwnmacc_vf */
8022 0xf4001057, /* vfwnmacc_vv */
8023 0xfc005057, /* vfwnmsac_vf */
8024 0xfc001057, /* vfwnmsac_vv */
8025 0xcc001057, /* vfwredosum_vs */
8026 0xc4001057, /* vfwredsum_vs */
8027 0xc4001057, /* vfwredusum_vs */
8028 0xc8005057, /* vfwsub_vf */
8029 0xc8001057, /* vfwsub_vv */
8030 0xd8005057, /* vfwsub_wf */
8031 0xd8001057, /* vfwsub_wv */
8032 0xb2002077, /* vghsh_vv */
8033 0xa208a077, /* vgmul_vv */
8034 0x5008a057, /* vid_v */
8035 0x50082057, /* viota_m */
8036 0x2800007, /* vl1r_v */
8037 0x2805007, /* vl1re16_v */
8038 0x2806007, /* vl1re32_v */
8039 0x2807007, /* vl1re64_v */
8040 0x2800007, /* vl1re8_v */
8041 0x22800007, /* vl2r_v */
8042 0x22805007, /* vl2re16_v */
8043 0x22806007, /* vl2re32_v */
8044 0x22807007, /* vl2re64_v */
8045 0x22800007, /* vl2re8_v */
8046 0x62800007, /* vl4r_v */
8047 0x62805007, /* vl4re16_v */
8048 0x62806007, /* vl4re32_v */
8049 0x62807007, /* vl4re64_v */
8050 0x62800007, /* vl4re8_v */
8051 0xe2800007, /* vl8r_v */
8052 0xe2805007, /* vl8re16_v */
8053 0xe2806007, /* vl8re32_v */
8054 0xe2807007, /* vl8re64_v */
8055 0xe2800007, /* vl8re8_v */
8056 0x5007, /* vle16_v */
8057 0x1005007, /* vle16ff_v */
8058 0x2b00007, /* vle1_v */
8059 0x6007, /* vle32_v */
8060 0x1006007, /* vle32ff_v */
8061 0x7007, /* vle64_v */
8062 0x1007007, /* vle64ff_v */
8063 0x7, /* vle8_v */
8064 0x1000007, /* vle8ff_v */
8065 0x2b00007, /* vlm_v */
8066 0xc005007, /* vloxei16_v */
8067 0xc006007, /* vloxei32_v */
8068 0xc007007, /* vloxei64_v */
8069 0xc000007, /* vloxei8_v */
8070 0x8005007, /* vlse16_v */
8071 0x8006007, /* vlse32_v */
8072 0x8007007, /* vlse64_v */
8073 0x8000007, /* vlse8_v */
8074 0x4005007, /* vluxei16_v */
8075 0x4006007, /* vluxei32_v */
8076 0x4007007, /* vluxei64_v */
8077 0x4000007, /* vluxei8_v */
8078 0xb4002057, /* vmacc_vv */
8079 0xb4006057, /* vmacc_vx */
8080 0x46003057, /* vmadc_vi */
8081 0x44003057, /* vmadc_vim */
8082 0x46000057, /* vmadc_vv */
8083 0x44000057, /* vmadc_vvm */
8084 0x46004057, /* vmadc_vx */
8085 0x44004057, /* vmadc_vxm */
8086 0xa4002057, /* vmadd_vv */
8087 0xa4006057, /* vmadd_vx */
8088 0x66002057, /* vmand_mm */
8089 0x62002057, /* vmandn_mm */
8090 0x60002057, /* vmandnot_mm */
8091 0x1c000057, /* vmax_vv */
8092 0x1c004057, /* vmax_vx */
8093 0x18000057, /* vmaxu_vv */
8094 0x18004057, /* vmaxu_vx */
8095 0x5c003057, /* vmerge_vim */
8096 0x5c000057, /* vmerge_vvm */
8097 0x5c004057, /* vmerge_vxm */
8098 0x60005057, /* vmfeq_vf */
8099 0x60001057, /* vmfeq_vv */
8100 0x7c005057, /* vmfge_vf */
8101 0x74005057, /* vmfgt_vf */
8102 0x64005057, /* vmfle_vf */
8103 0x64001057, /* vmfle_vv */
8104 0x6c005057, /* vmflt_vf */
8105 0x6c001057, /* vmflt_vv */
8106 0x70005057, /* vmfne_vf */
8107 0x70001057, /* vmfne_vv */
8108 0x14000057, /* vmin_vv */
8109 0x14004057, /* vmin_vx */
8110 0x10000057, /* vminu_vv */
8111 0x10004057, /* vminu_vx */
8112 0x76002057, /* vmnand_mm */
8113 0x7a002057, /* vmnor_mm */
8114 0x6a002057, /* vmor_mm */
8115 0x72002057, /* vmorn_mm */
8116 0x70002057, /* vmornot_mm */
8117 0x4e000057, /* vmsbc_vv */
8118 0x4c000057, /* vmsbc_vvm */
8119 0x4e004057, /* vmsbc_vx */
8120 0x4c004057, /* vmsbc_vxm */
8121 0x5000a057, /* vmsbf_m */
8122 0x60003057, /* vmseq_vi */
8123 0x60000057, /* vmseq_vv */
8124 0x60004057, /* vmseq_vx */
8125 0x7c003057, /* vmsgt_vi */
8126 0x7c004057, /* vmsgt_vx */
8127 0x78003057, /* vmsgtu_vi */
8128 0x78004057, /* vmsgtu_vx */
8129 0x5001a057, /* vmsif_m */
8130 0x74003057, /* vmsle_vi */
8131 0x74000057, /* vmsle_vv */
8132 0x74004057, /* vmsle_vx */
8133 0x70003057, /* vmsleu_vi */
8134 0x70000057, /* vmsleu_vv */
8135 0x70004057, /* vmsleu_vx */
8136 0x6c000057, /* vmslt_vv */
8137 0x6c004057, /* vmslt_vx */
8138 0x68000057, /* vmsltu_vv */
8139 0x68004057, /* vmsltu_vx */
8140 0x64003057, /* vmsne_vi */
8141 0x64000057, /* vmsne_vv */
8142 0x64004057, /* vmsne_vx */
8143 0x50012057, /* vmsof_m */
8144 0x94002057, /* vmul_vv */
8145 0x94006057, /* vmul_vx */
8146 0x9c002057, /* vmulh_vv */
8147 0x9c006057, /* vmulh_vx */
8148 0x98002057, /* vmulhsu_vv */
8149 0x98006057, /* vmulhsu_vx */
8150 0x90002057, /* vmulhu_vv */
8151 0x90006057, /* vmulhu_vx */
8152 0x9e003057, /* vmv1r_v */
8153 0x9e00b057, /* vmv2r_v */
8154 0x9e01b057, /* vmv4r_v */
8155 0x9e03b057, /* vmv8r_v */
8156 0x42006057, /* vmv_s_x */
8157 0x5e003057, /* vmv_v_i */
8158 0x5e000057, /* vmv_v_v */
8159 0x5e004057, /* vmv_v_x */
8160 0x42002057, /* vmv_x_s */
8161 0x7e002057, /* vmxnor_mm */
8162 0x6e002057, /* vmxor_mm */
8163 0xbc003057, /* vnclip_wi */
8164 0xbc000057, /* vnclip_wv */
8165 0xbc004057, /* vnclip_wx */
8166 0xb8003057, /* vnclipu_wi */
8167 0xb8000057, /* vnclipu_wv */
8168 0xb8004057, /* vnclipu_wx */
8169 0xbc002057, /* vnmsac_vv */
8170 0xbc006057, /* vnmsac_vx */
8171 0xac002057, /* vnmsub_vv */
8172 0xac006057, /* vnmsub_vx */
8173 0xb4003057, /* vnsra_wi */
8174 0xb4000057, /* vnsra_wv */
8175 0xb4004057, /* vnsra_wx */
8176 0xb0003057, /* vnsrl_wi */
8177 0xb0000057, /* vnsrl_wv */
8178 0xb0004057, /* vnsrl_wx */
8179 0x28003057, /* vor_vi */
8180 0x28000057, /* vor_vv */
8181 0x28004057, /* vor_vx */
8182 0x40082057, /* vpopc_m */
8183 0x4002057, /* vredand_vs */
8184 0x1c002057, /* vredmax_vs */
8185 0x18002057, /* vredmaxu_vs */
8186 0x14002057, /* vredmin_vs */
8187 0x10002057, /* vredminu_vs */
8188 0x8002057, /* vredor_vs */
8189 0x2057, /* vredsum_vs */
8190 0xc002057, /* vredxor_vs */
8191 0x8c002057, /* vrem_vv */
8192 0x8c006057, /* vrem_vx */
8193 0x88002057, /* vremu_vv */
8194 0x88006057, /* vremu_vx */
8195 0x4804a057, /* vrev8_v */
8196 0x30003057, /* vrgather_vi */
8197 0x30000057, /* vrgather_vv */
8198 0x30004057, /* vrgather_vx */
8199 0x38000057, /* vrgatherei16_vv */
8200 0x54000057, /* vrol_vv */
8201 0x54004057, /* vrol_vx */
8202 0x50003057, /* vror_vi */
8203 0x50000057, /* vror_vv */
8204 0x50004057, /* vror_vx */
8205 0xc003057, /* vrsub_vi */
8206 0xc004057, /* vrsub_vx */
8207 0x2800027, /* vs1r_v */
8208 0x22800027, /* vs2r_v */
8209 0x62800027, /* vs4r_v */
8210 0xe2800027, /* vs8r_v */
8211 0x84003057, /* vsadd_vi */
8212 0x84000057, /* vsadd_vv */
8213 0x84004057, /* vsadd_vx */
8214 0x80003057, /* vsaddu_vi */
8215 0x80000057, /* vsaddu_vv */
8216 0x80004057, /* vsaddu_vx */
8217 0x48000057, /* vsbc_vvm */
8218 0x48004057, /* vsbc_vxm */
8219 0x5027, /* vse16_v */
8220 0x2b00027, /* vse1_v */
8221 0x6027, /* vse32_v */
8222 0x7027, /* vse64_v */
8223 0x27, /* vse8_v */
8224 0xc0007057, /* vsetivli */
8225 0x80007057, /* vsetvl */
8226 0x7057, /* vsetvli */
8227 0x4803a057, /* vsext_vf2 */
8228 0x4802a057, /* vsext_vf4 */
8229 0x4801a057, /* vsext_vf8 */
8230 0xba002077, /* vsha2ch_vv */
8231 0xbe002077, /* vsha2cl_vv */
8232 0xb6002077, /* vsha2ms_vv */
8233 0x3c006057, /* vslide1down_vx */
8234 0x38006057, /* vslide1up_vx */
8235 0x3c003057, /* vslidedown_vi */
8236 0x3c004057, /* vslidedown_vx */
8237 0x38003057, /* vslideup_vi */
8238 0x38004057, /* vslideup_vx */
8239 0x94003057, /* vsll_vi */
8240 0x94000057, /* vsll_vv */
8241 0x94004057, /* vsll_vx */
8242 0xae002077, /* vsm3c_vi */
8243 0x82002077, /* vsm3me_vv */
8244 0x86002077, /* vsm4k_vi */
8245 0xa6082077, /* vsm4r_vs */
8246 0xa2082077, /* vsm4r_vv */
8247 0x2b00027, /* vsm_v */
8248 0x9c000057, /* vsmul_vv */
8249 0x9c004057, /* vsmul_vx */
8250 0xc005027, /* vsoxei16_v */
8251 0xc006027, /* vsoxei32_v */
8252 0xc007027, /* vsoxei64_v */
8253 0xc000027, /* vsoxei8_v */
8254 0xa4003057, /* vsra_vi */
8255 0xa4000057, /* vsra_vv */
8256 0xa4004057, /* vsra_vx */
8257 0xa0003057, /* vsrl_vi */
8258 0xa0000057, /* vsrl_vv */
8259 0xa0004057, /* vsrl_vx */
8260 0x8005027, /* vsse16_v */
8261 0x8006027, /* vsse32_v */
8262 0x8007027, /* vsse64_v */
8263 0x8000027, /* vsse8_v */
8264 0xac003057, /* vssra_vi */
8265 0xac000057, /* vssra_vv */
8266 0xac004057, /* vssra_vx */
8267 0xa8003057, /* vssrl_vi */
8268 0xa8000057, /* vssrl_vv */
8269 0xa8004057, /* vssrl_vx */
8270 0x8c000057, /* vssub_vv */
8271 0x8c004057, /* vssub_vx */
8272 0x88000057, /* vssubu_vv */
8273 0x88004057, /* vssubu_vx */
8274 0x8000057, /* vsub_vv */
8275 0x8004057, /* vsub_vx */
8276 0x4005027, /* vsuxei16_v */
8277 0x4006027, /* vsuxei32_v */
8278 0x4007027, /* vsuxei64_v */
8279 0x4000027, /* vsuxei8_v */
8280 0xc4002057, /* vwadd_vv */
8281 0xc4006057, /* vwadd_vx */
8282 0xd4002057, /* vwadd_wv */
8283 0xd4006057, /* vwadd_wx */
8284 0xc0002057, /* vwaddu_vv */
8285 0xc0006057, /* vwaddu_vx */
8286 0xd0002057, /* vwaddu_wv */
8287 0xd0006057, /* vwaddu_wx */
8288 0xf4002057, /* vwmacc_vv */
8289 0xf4006057, /* vwmacc_vx */
8290 0xfc002057, /* vwmaccsu_vv */
8291 0xfc006057, /* vwmaccsu_vx */
8292 0xf0002057, /* vwmaccu_vv */
8293 0xf0006057, /* vwmaccu_vx */
8294 0xf8006057, /* vwmaccus_vx */
8295 0xec002057, /* vwmul_vv */
8296 0xec006057, /* vwmul_vx */
8297 0xe8002057, /* vwmulsu_vv */
8298 0xe8006057, /* vwmulsu_vx */
8299 0xe0002057, /* vwmulu_vv */
8300 0xe0006057, /* vwmulu_vx */
8301 0xc4000057, /* vwredsum_vs */
8302 0xc0000057, /* vwredsumu_vs */
8303 0xd4003057, /* vwsll_vi */
8304 0xd4000057, /* vwsll_vv */
8305 0xd4004057, /* vwsll_vx */
8306 0xcc002057, /* vwsub_vv */
8307 0xcc006057, /* vwsub_vx */
8308 0xdc002057, /* vwsub_wv */
8309 0xdc006057, /* vwsub_wx */
8310 0xc8002057, /* vwsubu_vv */
8311 0xc8006057, /* vwsubu_vx */
8312 0xd8002057, /* vwsubu_wv */
8313 0xd8006057, /* vwsubu_wx */
8314 0x2c003057, /* vxor_vi */
8315 0x2c000057, /* vxor_vv */
8316 0x2c004057, /* vxor_vx */
8317 0x48032057, /* vzext_vf2 */
8318 0x48022057, /* vzext_vf4 */
8319 0x48012057, /* vzext_vf8 */
8320 0x10500073, /* wfi */
8321 0xd00073, /* wrs_nto */
8322 0x1d00073, /* wrs_sto */
8323 0x40004033, /* xnor */
8324 0x4033, /* xor */
8325 0x4013, /* xori */
8326 0x28002033, /* xperm4 */
8327 0x28004033, /* xperm8 */
8328 0xff07013, /* zext_b */
8329 0x800403b, /* zext_h */
8330 0x8004033, /* zext_h_rv32 */
8331 0x800003b, /* zext_w */
8332 0x8f01013, /* zip */
8333];
8334pub static OPCODE_MASK: [u32; 1039] = [
8335 0xfe00707f, /* add */
8336 0xfe00707f, /* add_uw */
8337 0x707f, /* addi */
8338 0x707f, /* addiw */
8339 0xfe00707f, /* addw */
8340 0x3e00707f, /* aes32dsi */
8341 0x3e00707f, /* aes32dsmi */
8342 0x3e00707f, /* aes32esi */
8343 0x3e00707f, /* aes32esmi */
8344 0xfe00707f, /* aes64ds */
8345 0xfe00707f, /* aes64dsm */
8346 0xfe00707f, /* aes64es */
8347 0xfe00707f, /* aes64esm */
8348 0xfff0707f, /* aes64im */
8349 0xff00707f, /* aes64ks1i */
8350 0xfe00707f, /* aes64ks2 */
8351 0xf800707f, /* amoadd_b */
8352 0xf800707f, /* amoadd_d */
8353 0xf800707f, /* amoadd_h */
8354 0xf800707f, /* amoadd_w */
8355 0xf800707f, /* amoand_b */
8356 0xf800707f, /* amoand_d */
8357 0xf800707f, /* amoand_h */
8358 0xf800707f, /* amoand_w */
8359 0xf800707f, /* amocas_b */
8360 0xf800707f, /* amocas_d */
8361 0xf800707f, /* amocas_h */
8362 0xf800707f, /* amocas_q */
8363 0xf800707f, /* amocas_w */
8364 0xf800707f, /* amomax_b */
8365 0xf800707f, /* amomax_d */
8366 0xf800707f, /* amomax_h */
8367 0xf800707f, /* amomax_w */
8368 0xf800707f, /* amomaxu_b */
8369 0xf800707f, /* amomaxu_d */
8370 0xf800707f, /* amomaxu_h */
8371 0xf800707f, /* amomaxu_w */
8372 0xf800707f, /* amomin_b */
8373 0xf800707f, /* amomin_d */
8374 0xf800707f, /* amomin_h */
8375 0xf800707f, /* amomin_w */
8376 0xf800707f, /* amominu_b */
8377 0xf800707f, /* amominu_d */
8378 0xf800707f, /* amominu_h */
8379 0xf800707f, /* amominu_w */
8380 0xf800707f, /* amoor_b */
8381 0xf800707f, /* amoor_d */
8382 0xf800707f, /* amoor_h */
8383 0xf800707f, /* amoor_w */
8384 0xf800707f, /* amoswap_b */
8385 0xf800707f, /* amoswap_d */
8386 0xf800707f, /* amoswap_h */
8387 0xf800707f, /* amoswap_w */
8388 0xf800707f, /* amoxor_b */
8389 0xf800707f, /* amoxor_d */
8390 0xf800707f, /* amoxor_h */
8391 0xf800707f, /* amoxor_w */
8392 0xfe00707f, /* and */
8393 0x707f, /* andi */
8394 0xfe00707f, /* andn */
8395 0x7f, /* auipc */
8396 0xfe00707f, /* bclr */
8397 0xfc00707f, /* bclri */
8398 0xfe00707f, /* bclri_rv32 */
8399 0x707f, /* beq */
8400 0x1f0707f, /* beqz */
8401 0xfe00707f, /* bext */
8402 0xfc00707f, /* bexti */
8403 0xfe00707f, /* bexti_rv32 */
8404 0x707f, /* bge */
8405 0x707f, /* bgeu */
8406 0x1f0707f, /* bgez */
8407 0x707f, /* bgt */
8408 0x707f, /* bgtu */
8409 0xff07f, /* bgtz */
8410 0xfe00707f, /* binv */
8411 0xfc00707f, /* binvi */
8412 0xfe00707f, /* binvi_rv32 */
8413 0x707f, /* ble */
8414 0x707f, /* bleu */
8415 0xff07f, /* blez */
8416 0x707f, /* blt */
8417 0x707f, /* bltu */
8418 0x1f0707f, /* bltz */
8419 0x707f, /* bne */
8420 0x1f0707f, /* bnez */
8421 0xfff0707f, /* brev8 */
8422 0xfe00707f, /* bset */
8423 0xfc00707f, /* bseti */
8424 0xfe00707f, /* bseti_rv32 */
8425 0xf003, /* c_add */
8426 0xe003, /* c_addi */
8427 0xef83, /* c_addi16sp */
8428 0xe003, /* c_addi4spn */
8429 0xe003, /* c_addiw */
8430 0xfc63, /* c_addw */
8431 0xfc63, /* c_and */
8432 0xec03, /* c_andi */
8433 0xe003, /* c_beqz */
8434 0xe003, /* c_bnez */
8435 0xffff, /* c_ebreak */
8436 0xe003, /* c_fld */
8437 0xe003, /* c_fldsp */
8438 0xe003, /* c_flw */
8439 0xe003, /* c_flwsp */
8440 0xe003, /* c_fsd */
8441 0xe003, /* c_fsdsp */
8442 0xe003, /* c_fsw */
8443 0xe003, /* c_fswsp */
8444 0xe003, /* c_j */
8445 0xe003, /* c_jal */
8446 0xf07f, /* c_jalr */
8447 0xf07f, /* c_jr */
8448 0xfc03, /* c_lbu */
8449 0xe003, /* c_ld */
8450 0xe003, /* c_ldsp */
8451 0xfc43, /* c_lh */
8452 0xfc43, /* c_lhu */
8453 0xe003, /* c_li */
8454 0xe003, /* c_lui */
8455 0xe003, /* c_lw */
8456 0xe003, /* c_lwsp */
8457 0xffff, /* c_mop_1 */
8458 0xffff, /* c_mop_11 */
8459 0xffff, /* c_mop_13 */
8460 0xffff, /* c_mop_15 */
8461 0xffff, /* c_mop_3 */
8462 0xffff, /* c_mop_5 */
8463 0xffff, /* c_mop_7 */
8464 0xffff, /* c_mop_9 */
8465 0xf8ff, /* c_mop_N */
8466 0xfc63, /* c_mul */
8467 0xf003, /* c_mv */
8468 0xef83, /* c_nop */
8469 0xfc7f, /* c_not */
8470 0xffff, /* c_ntl_all */
8471 0xffff, /* c_ntl_p1 */
8472 0xffff, /* c_ntl_pall */
8473 0xffff, /* c_ntl_s1 */
8474 0xfc63, /* c_or */
8475 0xfc03, /* c_sb */
8476 0xe003, /* c_sd */
8477 0xe003, /* c_sdsp */
8478 0xfc7f, /* c_sext_b */
8479 0xfc7f, /* c_sext_h */
8480 0xf07f, /* c_sext_w */
8481 0xfc43, /* c_sh */
8482 0xe003, /* c_slli */
8483 0xf003, /* c_slli_rv32 */
8484 0xec03, /* c_srai */
8485 0xfc03, /* c_srai_rv32 */
8486 0xec03, /* c_srli */
8487 0xfc03, /* c_srli_rv32 */
8488 0xffff, /* c_sspopchk_x5 */
8489 0xffff, /* c_sspush_x1 */
8490 0xfc63, /* c_sub */
8491 0xfc63, /* c_subw */
8492 0xe003, /* c_sw */
8493 0xe003, /* c_swsp */
8494 0xfc63, /* c_xor */
8495 0xfc7f, /* c_zext_b */
8496 0xfc7f, /* c_zext_h */
8497 0xfc7f, /* c_zext_w */
8498 0xfff07fff, /* cbo_clean */
8499 0xfff07fff, /* cbo_flush */
8500 0xfff07fff, /* cbo_inval */
8501 0xfff07fff, /* cbo_zero */
8502 0xfe00707f, /* clmul */
8503 0xfe00707f, /* clmulh */
8504 0xfe00707f, /* clmulr */
8505 0xfff0707f, /* clz */
8506 0xfff0707f, /* clzw */
8507 0xfc03, /* cm_jalt */
8508 0xfc63, /* cm_mva01s */
8509 0xfc63, /* cm_mvsa01 */
8510 0xff03, /* cm_pop */
8511 0xff03, /* cm_popret */
8512 0xff03, /* cm_popretz */
8513 0xff03, /* cm_push */
8514 0xfff0707f, /* cpop */
8515 0xfff0707f, /* cpopw */
8516 0x7fff, /* csrc */
8517 0x7fff, /* csrci */
8518 0xff07f, /* csrr */
8519 0x707f, /* csrrc */
8520 0x707f, /* csrrci */
8521 0x707f, /* csrrs */
8522 0x707f, /* csrrsi */
8523 0x707f, /* csrrw */
8524 0x707f, /* csrrwi */
8525 0x7fff, /* csrs */
8526 0x7fff, /* csrsi */
8527 0x7fff, /* csrw */
8528 0x7fff, /* csrwi */
8529 0xfff0707f, /* ctz */
8530 0xfff0707f, /* ctzw */
8531 0xfe00707f, /* czero_eqz */
8532 0xfe00707f, /* czero_nez */
8533 0xfe00707f, /* div */
8534 0xfe00707f, /* divu */
8535 0xfe00707f, /* divuw */
8536 0xfe00707f, /* divw */
8537 0xffffffff, /* dret */
8538 0xffffffff, /* ebreak */
8539 0xffffffff, /* ecall */
8540 0xfe00707f, /* fabs_d */
8541 0xfe00707f, /* fabs_h */
8542 0xfe00707f, /* fabs_q */
8543 0xfe00707f, /* fabs_s */
8544 0xfe00007f, /* fadd_d */
8545 0xfe00007f, /* fadd_h */
8546 0xfe00007f, /* fadd_q */
8547 0xfe00007f, /* fadd_s */
8548 0xfff0707f, /* fclass_d */
8549 0xfff0707f, /* fclass_h */
8550 0xfff0707f, /* fclass_q */
8551 0xfff0707f, /* fclass_s */
8552 0xfff0007f, /* fcvt_bf16_s */
8553 0xfff0007f, /* fcvt_d_h */
8554 0xfff0007f, /* fcvt_d_l */
8555 0xfff0007f, /* fcvt_d_lu */
8556 0xfff0007f, /* fcvt_d_q */
8557 0xfff0007f, /* fcvt_d_s */
8558 0xfff0007f, /* fcvt_d_w */
8559 0xfff0007f, /* fcvt_d_wu */
8560 0xfff0007f, /* fcvt_h_d */
8561 0xfff0007f, /* fcvt_h_l */
8562 0xfff0007f, /* fcvt_h_lu */
8563 0xfff0007f, /* fcvt_h_q */
8564 0xfff0007f, /* fcvt_h_s */
8565 0xfff0007f, /* fcvt_h_w */
8566 0xfff0007f, /* fcvt_h_wu */
8567 0xfff0007f, /* fcvt_l_d */
8568 0xfff0007f, /* fcvt_l_h */
8569 0xfff0007f, /* fcvt_l_q */
8570 0xfff0007f, /* fcvt_l_s */
8571 0xfff0007f, /* fcvt_lu_d */
8572 0xfff0007f, /* fcvt_lu_h */
8573 0xfff0007f, /* fcvt_lu_q */
8574 0xfff0007f, /* fcvt_lu_s */
8575 0xfff0007f, /* fcvt_q_d */
8576 0xfff0007f, /* fcvt_q_h */
8577 0xfff0007f, /* fcvt_q_l */
8578 0xfff0007f, /* fcvt_q_lu */
8579 0xfff0007f, /* fcvt_q_s */
8580 0xfff0007f, /* fcvt_q_w */
8581 0xfff0007f, /* fcvt_q_wu */
8582 0xfff0007f, /* fcvt_s_bf16 */
8583 0xfff0007f, /* fcvt_s_d */
8584 0xfff0007f, /* fcvt_s_h */
8585 0xfff0007f, /* fcvt_s_l */
8586 0xfff0007f, /* fcvt_s_lu */
8587 0xfff0007f, /* fcvt_s_q */
8588 0xfff0007f, /* fcvt_s_w */
8589 0xfff0007f, /* fcvt_s_wu */
8590 0xfff0007f, /* fcvt_w_d */
8591 0xfff0007f, /* fcvt_w_h */
8592 0xfff0007f, /* fcvt_w_q */
8593 0xfff0007f, /* fcvt_w_s */
8594 0xfff0007f, /* fcvt_wu_d */
8595 0xfff0007f, /* fcvt_wu_h */
8596 0xfff0007f, /* fcvt_wu_q */
8597 0xfff0007f, /* fcvt_wu_s */
8598 0xfff0707f, /* fcvtmod_w_d */
8599 0xfe00007f, /* fdiv_d */
8600 0xfe00007f, /* fdiv_h */
8601 0xfe00007f, /* fdiv_q */
8602 0xfe00007f, /* fdiv_s */
8603 0x707f, /* fence */
8604 0x707f, /* fence_i */
8605 0xfff0707f, /* fence_tso */
8606 0xfe00707f, /* feq_d */
8607 0xfe00707f, /* feq_h */
8608 0xfe00707f, /* feq_q */
8609 0xfe00707f, /* feq_s */
8610 0x707f, /* fld */
8611 0xfe00707f, /* fle_d */
8612 0xfe00707f, /* fle_h */
8613 0xfe00707f, /* fle_q */
8614 0xfe00707f, /* fle_s */
8615 0xfe00707f, /* fleq_d */
8616 0xfe00707f, /* fleq_h */
8617 0xfe00707f, /* fleq_q */
8618 0xfe00707f, /* fleq_s */
8619 0x707f, /* flh */
8620 0xfff0707f, /* fli_d */
8621 0xfff0707f, /* fli_h */
8622 0xfff0707f, /* fli_q */
8623 0xfff0707f, /* fli_s */
8624 0x707f, /* flq */
8625 0xfe00707f, /* flt_d */
8626 0xfe00707f, /* flt_h */
8627 0xfe00707f, /* flt_q */
8628 0xfe00707f, /* flt_s */
8629 0xfe00707f, /* fltq_d */
8630 0xfe00707f, /* fltq_h */
8631 0xfe00707f, /* fltq_q */
8632 0xfe00707f, /* fltq_s */
8633 0x707f, /* flw */
8634 0x600007f, /* fmadd_d */
8635 0x600007f, /* fmadd_h */
8636 0x600007f, /* fmadd_q */
8637 0x600007f, /* fmadd_s */
8638 0xfe00707f, /* fmax_d */
8639 0xfe00707f, /* fmax_h */
8640 0xfe00707f, /* fmax_q */
8641 0xfe00707f, /* fmax_s */
8642 0xfe00707f, /* fmaxm_d */
8643 0xfe00707f, /* fmaxm_h */
8644 0xfe00707f, /* fmaxm_q */
8645 0xfe00707f, /* fmaxm_s */
8646 0xfe00707f, /* fmin_d */
8647 0xfe00707f, /* fmin_h */
8648 0xfe00707f, /* fmin_q */
8649 0xfe00707f, /* fmin_s */
8650 0xfe00707f, /* fminm_d */
8651 0xfe00707f, /* fminm_h */
8652 0xfe00707f, /* fminm_q */
8653 0xfe00707f, /* fminm_s */
8654 0x600007f, /* fmsub_d */
8655 0x600007f, /* fmsub_h */
8656 0x600007f, /* fmsub_q */
8657 0x600007f, /* fmsub_s */
8658 0xfe00007f, /* fmul_d */
8659 0xfe00007f, /* fmul_h */
8660 0xfe00007f, /* fmul_q */
8661 0xfe00007f, /* fmul_s */
8662 0xfe00707f, /* fmv_d */
8663 0xfff0707f, /* fmv_d_x */
8664 0xfe00707f, /* fmv_h */
8665 0xfff0707f, /* fmv_h_x */
8666 0xfe00707f, /* fmv_q */
8667 0xfe00707f, /* fmv_s */
8668 0xfff0707f, /* fmv_s_x */
8669 0xfff0707f, /* fmv_w_x */
8670 0xfff0707f, /* fmv_x_d */
8671 0xfff0707f, /* fmv_x_h */
8672 0xfff0707f, /* fmv_x_s */
8673 0xfff0707f, /* fmv_x_w */
8674 0xfff0707f, /* fmvh_x_d */
8675 0xfff0707f, /* fmvh_x_q */
8676 0xfe00707f, /* fmvp_d_x */
8677 0xfe00707f, /* fmvp_q_x */
8678 0xfe00707f, /* fneg_d */
8679 0xfe00707f, /* fneg_h */
8680 0xfe00707f, /* fneg_q */
8681 0xfe00707f, /* fneg_s */
8682 0x600007f, /* fnmadd_d */
8683 0x600007f, /* fnmadd_h */
8684 0x600007f, /* fnmadd_q */
8685 0x600007f, /* fnmadd_s */
8686 0x600007f, /* fnmsub_d */
8687 0x600007f, /* fnmsub_h */
8688 0x600007f, /* fnmsub_q */
8689 0x600007f, /* fnmsub_s */
8690 0xfffff07f, /* frcsr */
8691 0xfffff07f, /* frflags */
8692 0xfff0007f, /* fround_d */
8693 0xfff0007f, /* fround_h */
8694 0xfff0007f, /* fround_q */
8695 0xfff0007f, /* fround_s */
8696 0xfff0007f, /* froundnx_d */
8697 0xfff0007f, /* froundnx_h */
8698 0xfff0007f, /* froundnx_q */
8699 0xfff0007f, /* froundnx_s */
8700 0xfffff07f, /* frrm */
8701 0xfff0707f, /* fscsr */
8702 0x707f, /* fsd */
8703 0xfff0707f, /* fsflags */
8704 0xfff0707f, /* fsflagsi */
8705 0xfe00707f, /* fsgnj_d */
8706 0xfe00707f, /* fsgnj_h */
8707 0xfe00707f, /* fsgnj_q */
8708 0xfe00707f, /* fsgnj_s */
8709 0xfe00707f, /* fsgnjn_d */
8710 0xfe00707f, /* fsgnjn_h */
8711 0xfe00707f, /* fsgnjn_q */
8712 0xfe00707f, /* fsgnjn_s */
8713 0xfe00707f, /* fsgnjx_d */
8714 0xfe00707f, /* fsgnjx_h */
8715 0xfe00707f, /* fsgnjx_q */
8716 0xfe00707f, /* fsgnjx_s */
8717 0x707f, /* fsh */
8718 0x707f, /* fsq */
8719 0xfff0007f, /* fsqrt_d */
8720 0xfff0007f, /* fsqrt_h */
8721 0xfff0007f, /* fsqrt_q */
8722 0xfff0007f, /* fsqrt_s */
8723 0xfff0707f, /* fsrm */
8724 0xfff0707f, /* fsrmi */
8725 0xfe00007f, /* fsub_d */
8726 0xfe00007f, /* fsub_h */
8727 0xfe00007f, /* fsub_q */
8728 0xfe00007f, /* fsub_s */
8729 0x707f, /* fsw */
8730 0xfe007fff, /* hfence_gvma */
8731 0xfe007fff, /* hfence_vvma */
8732 0xfe007fff, /* hinval_gvma */
8733 0xfe007fff, /* hinval_vvma */
8734 0xfff0707f, /* hlv_b */
8735 0xfff0707f, /* hlv_bu */
8736 0xfff0707f, /* hlv_d */
8737 0xfff0707f, /* hlv_h */
8738 0xfff0707f, /* hlv_hu */
8739 0xfff0707f, /* hlv_w */
8740 0xfff0707f, /* hlv_wu */
8741 0xfff0707f, /* hlvx_hu */
8742 0xfff0707f, /* hlvx_wu */
8743 0xfe007fff, /* hsv_b */
8744 0xfe007fff, /* hsv_d */
8745 0xfe007fff, /* hsv_h */
8746 0xfe007fff, /* hsv_w */
8747 0xfff, /* j */
8748 0x7f, /* jal */
8749 0xfff, /* jal_pseudo */
8750 0x707f, /* jalr */
8751 0xfff07fff, /* jalr_pseudo */
8752 0xfff07fff, /* jr */
8753 0x707f, /* lb */
8754 0x707f, /* lbu */
8755 0x707f, /* ld */
8756 0x707f, /* lh */
8757 0x707f, /* lhu */
8758 0xfff, /* lpad */
8759 0xf9f0707f, /* lr_d */
8760 0xf9f0707f, /* lr_w */
8761 0x7f, /* lui */
8762 0x707f, /* lw */
8763 0x707f, /* lwu */
8764 0xfe00707f, /* max */
8765 0xfe00707f, /* maxu */
8766 0xfe00707f, /* min */
8767 0xfe00707f, /* minu */
8768 0xffffffff, /* mnret */
8769 0xfff0707f, /* mop_r_0 */
8770 0xfff0707f, /* mop_r_1 */
8771 0xfff0707f, /* mop_r_10 */
8772 0xfff0707f, /* mop_r_11 */
8773 0xfff0707f, /* mop_r_12 */
8774 0xfff0707f, /* mop_r_13 */
8775 0xfff0707f, /* mop_r_14 */
8776 0xfff0707f, /* mop_r_15 */
8777 0xfff0707f, /* mop_r_16 */
8778 0xfff0707f, /* mop_r_17 */
8779 0xfff0707f, /* mop_r_18 */
8780 0xfff0707f, /* mop_r_19 */
8781 0xfff0707f, /* mop_r_2 */
8782 0xfff0707f, /* mop_r_20 */
8783 0xfff0707f, /* mop_r_21 */
8784 0xfff0707f, /* mop_r_22 */
8785 0xfff0707f, /* mop_r_23 */
8786 0xfff0707f, /* mop_r_24 */
8787 0xfff0707f, /* mop_r_25 */
8788 0xfff0707f, /* mop_r_26 */
8789 0xfff0707f, /* mop_r_27 */
8790 0xfff0707f, /* mop_r_28 */
8791 0xfff0707f, /* mop_r_29 */
8792 0xfff0707f, /* mop_r_3 */
8793 0xfff0707f, /* mop_r_30 */
8794 0xfff0707f, /* mop_r_31 */
8795 0xfff0707f, /* mop_r_4 */
8796 0xfff0707f, /* mop_r_5 */
8797 0xfff0707f, /* mop_r_6 */
8798 0xfff0707f, /* mop_r_7 */
8799 0xfff0707f, /* mop_r_8 */
8800 0xfff0707f, /* mop_r_9 */
8801 0xb3c0707f, /* mop_r_N */
8802 0xfe00707f, /* mop_rr_0 */
8803 0xfe00707f, /* mop_rr_1 */
8804 0xfe00707f, /* mop_rr_2 */
8805 0xfe00707f, /* mop_rr_3 */
8806 0xfe00707f, /* mop_rr_4 */
8807 0xfe00707f, /* mop_rr_5 */
8808 0xfe00707f, /* mop_rr_6 */
8809 0xfe00707f, /* mop_rr_7 */
8810 0xb200707f, /* mop_rr_N */
8811 0xffffffff, /* mret */
8812 0xfe00707f, /* mul */
8813 0xfe00707f, /* mulh */
8814 0xfe00707f, /* mulhsu */
8815 0xfe00707f, /* mulhu */
8816 0xfe00707f, /* mulw */
8817 0xfff0707f, /* mv */
8818 0xfff0707f, /* neg */
8819 0xffffffff, /* nop */
8820 0xffffffff, /* ntl_all */
8821 0xffffffff, /* ntl_p1 */
8822 0xffffffff, /* ntl_pall */
8823 0xffffffff, /* ntl_s1 */
8824 0xfe00707f, /* or */
8825 0xfff0707f, /* orc_b */
8826 0x707f, /* ori */
8827 0xfe00707f, /* orn */
8828 0xfe00707f, /* pack */
8829 0xfe00707f, /* packh */
8830 0xfe00707f, /* packw */
8831 0xffffffff, /* pause */
8832 0x1f07fff, /* prefetch_i */
8833 0x1f07fff, /* prefetch_r */
8834 0x1f07fff, /* prefetch_w */
8835 0xfffff07f, /* rdcycle */
8836 0xfffff07f, /* rdcycleh */
8837 0xfffff07f, /* rdinstret */
8838 0xfffff07f, /* rdinstreth */
8839 0xfffff07f, /* rdtime */
8840 0xfffff07f, /* rdtimeh */
8841 0xfe00707f, /* rem */
8842 0xfe00707f, /* remu */
8843 0xfe00707f, /* remuw */
8844 0xfe00707f, /* remw */
8845 0xffffffff, /* ret */
8846 0xfff0707f, /* rev8 */
8847 0xfff0707f, /* rev8_rv32 */
8848 0xfe00707f, /* rol */
8849 0xfe00707f, /* rolw */
8850 0xfe00707f, /* ror */
8851 0xfc00707f, /* rori */
8852 0xfe00707f, /* rori_rv32 */
8853 0xfe00707f, /* roriw */
8854 0xfe00707f, /* rorw */
8855 0x707f, /* sb */
8856 0xffffffff, /* sbreak */
8857 0xf800707f, /* sc_d */
8858 0xf800707f, /* sc_w */
8859 0xffffffff, /* scall */
8860 0xffffffff, /* sctrclr */
8861 0x707f, /* sd */
8862 0xfff0707f, /* seqz */
8863 0xfff0707f, /* sext_b */
8864 0xfff0707f, /* sext_h */
8865 0xfff0707f, /* sext_w */
8866 0xffffffff, /* sfence_inval_ir */
8867 0xfe007fff, /* sfence_vma */
8868 0xffffffff, /* sfence_w_inval */
8869 0xfe0ff07f, /* sgtz */
8870 0x707f, /* sh */
8871 0xfe00707f, /* sh1add */
8872 0xfe00707f, /* sh1add_uw */
8873 0xfe00707f, /* sh2add */
8874 0xfe00707f, /* sh2add_uw */
8875 0xfe00707f, /* sh3add */
8876 0xfe00707f, /* sh3add_uw */
8877 0xfff0707f, /* sha256sig0 */
8878 0xfff0707f, /* sha256sig1 */
8879 0xfff0707f, /* sha256sum0 */
8880 0xfff0707f, /* sha256sum1 */
8881 0xfff0707f, /* sha512sig0 */
8882 0xfe00707f, /* sha512sig0h */
8883 0xfe00707f, /* sha512sig0l */
8884 0xfff0707f, /* sha512sig1 */
8885 0xfe00707f, /* sha512sig1h */
8886 0xfe00707f, /* sha512sig1l */
8887 0xfff0707f, /* sha512sum0 */
8888 0xfe00707f, /* sha512sum0r */
8889 0xfff0707f, /* sha512sum1 */
8890 0xfe00707f, /* sha512sum1r */
8891 0xfe007fff, /* sinval_vma */
8892 0xfe00707f, /* sll */
8893 0xfc00707f, /* slli */
8894 0xfe00707f, /* slli_rv32 */
8895 0xfc00707f, /* slli_uw */
8896 0xfe00707f, /* slliw */
8897 0xfe00707f, /* sllw */
8898 0xfe00707f, /* slt */
8899 0x707f, /* slti */
8900 0x707f, /* sltiu */
8901 0xfe00707f, /* sltu */
8902 0xfff0707f, /* sltz */
8903 0xfff0707f, /* sm3p0 */
8904 0xfff0707f, /* sm3p1 */
8905 0x3e00707f, /* sm4ed */
8906 0x3e00707f, /* sm4ks */
8907 0xfe0ff07f, /* snez */
8908 0xfe00707f, /* sra */
8909 0xfc00707f, /* srai */
8910 0xfe00707f, /* srai_rv32 */
8911 0xfe00707f, /* sraiw */
8912 0xfe00707f, /* sraw */
8913 0xffffffff, /* sret */
8914 0xfe00707f, /* srl */
8915 0xfc00707f, /* srli */
8916 0xfe00707f, /* srli_rv32 */
8917 0xfe00707f, /* srliw */
8918 0xfe00707f, /* srlw */
8919 0xf800707f, /* ssamoswap_d */
8920 0xf800707f, /* ssamoswap_w */
8921 0xffffffff, /* sspopchk_x1 */
8922 0xffffffff, /* sspopchk_x5 */
8923 0xffffffff, /* sspush_x1 */
8924 0xffffffff, /* sspush_x5 */
8925 0xfffff07f, /* ssrdp */
8926 0xfe00707f, /* sub */
8927 0xfe00707f, /* subw */
8928 0x707f, /* sw */
8929 0xfff0707f, /* unzip */
8930 0xfc00707f, /* vaadd_vv */
8931 0xfc00707f, /* vaadd_vx */
8932 0xfc00707f, /* vaaddu_vv */
8933 0xfc00707f, /* vaaddu_vx */
8934 0xfe00707f, /* vadc_vim */
8935 0xfe00707f, /* vadc_vvm */
8936 0xfe00707f, /* vadc_vxm */
8937 0xfc00707f, /* vadd_vi */
8938 0xfc00707f, /* vadd_vv */
8939 0xfc00707f, /* vadd_vx */
8940 0xfe0ff07f, /* vaesdf_vs */
8941 0xfe0ff07f, /* vaesdf_vv */
8942 0xfe0ff07f, /* vaesdm_vs */
8943 0xfe0ff07f, /* vaesdm_vv */
8944 0xfe0ff07f, /* vaesef_vs */
8945 0xfe0ff07f, /* vaesef_vv */
8946 0xfe0ff07f, /* vaesem_vs */
8947 0xfe0ff07f, /* vaesem_vv */
8948 0xfe00707f, /* vaeskf1_vi */
8949 0xfe00707f, /* vaeskf2_vi */
8950 0xfe0ff07f, /* vaesz_vs */
8951 0xfc00707f, /* vand_vi */
8952 0xfc00707f, /* vand_vv */
8953 0xfc00707f, /* vand_vx */
8954 0xfc00707f, /* vandn_vv */
8955 0xfc00707f, /* vandn_vx */
8956 0xfc00707f, /* vasub_vv */
8957 0xfc00707f, /* vasub_vx */
8958 0xfc00707f, /* vasubu_vv */
8959 0xfc00707f, /* vasubu_vx */
8960 0xfc0ff07f, /* vbrev8_v */
8961 0xfc0ff07f, /* vbrev_v */
8962 0xfc00707f, /* vclmul_vv */
8963 0xfc00707f, /* vclmul_vx */
8964 0xfc00707f, /* vclmulh_vv */
8965 0xfc00707f, /* vclmulh_vx */
8966 0xfc0ff07f, /* vclz_v */
8967 0xfe00707f, /* vcompress_vm */
8968 0xfc0ff07f, /* vcpop_m */
8969 0xfc0ff07f, /* vcpop_v */
8970 0xfc0ff07f, /* vctz_v */
8971 0xfc00707f, /* vdiv_vv */
8972 0xfc00707f, /* vdiv_vx */
8973 0xfc00707f, /* vdivu_vv */
8974 0xfc00707f, /* vdivu_vx */
8975 0xfc00707f, /* vfadd_vf */
8976 0xfc00707f, /* vfadd_vv */
8977 0xfc0ff07f, /* vfclass_v */
8978 0xfc0ff07f, /* vfcvt_f_x_v */
8979 0xfc0ff07f, /* vfcvt_f_xu_v */
8980 0xfc0ff07f, /* vfcvt_rtz_x_f_v */
8981 0xfc0ff07f, /* vfcvt_rtz_xu_f_v */
8982 0xfc0ff07f, /* vfcvt_x_f_v */
8983 0xfc0ff07f, /* vfcvt_xu_f_v */
8984 0xfc00707f, /* vfdiv_vf */
8985 0xfc00707f, /* vfdiv_vv */
8986 0xfc0ff07f, /* vfirst_m */
8987 0xfc00707f, /* vfmacc_vf */
8988 0xfc00707f, /* vfmacc_vv */
8989 0xfc00707f, /* vfmadd_vf */
8990 0xfc00707f, /* vfmadd_vv */
8991 0xfc00707f, /* vfmax_vf */
8992 0xfc00707f, /* vfmax_vv */
8993 0xfe00707f, /* vfmerge_vfm */
8994 0xfc00707f, /* vfmin_vf */
8995 0xfc00707f, /* vfmin_vv */
8996 0xfc00707f, /* vfmsac_vf */
8997 0xfc00707f, /* vfmsac_vv */
8998 0xfc00707f, /* vfmsub_vf */
8999 0xfc00707f, /* vfmsub_vv */
9000 0xfc00707f, /* vfmul_vf */
9001 0xfc00707f, /* vfmul_vv */
9002 0xfe0ff07f, /* vfmv_f_s */
9003 0xfff0707f, /* vfmv_s_f */
9004 0xfff0707f, /* vfmv_v_f */
9005 0xfc0ff07f, /* vfncvt_f_f_w */
9006 0xfc0ff07f, /* vfncvt_f_x_w */
9007 0xfc0ff07f, /* vfncvt_f_xu_w */
9008 0xfc0ff07f, /* vfncvt_rod_f_f_w */
9009 0xfc0ff07f, /* vfncvt_rtz_x_f_w */
9010 0xfc0ff07f, /* vfncvt_rtz_xu_f_w */
9011 0xfc0ff07f, /* vfncvt_x_f_w */
9012 0xfc0ff07f, /* vfncvt_xu_f_w */
9013 0xfc0ff07f, /* vfncvtbf16_f_f_w */
9014 0xfc00707f, /* vfnmacc_vf */
9015 0xfc00707f, /* vfnmacc_vv */
9016 0xfc00707f, /* vfnmadd_vf */
9017 0xfc00707f, /* vfnmadd_vv */
9018 0xfc00707f, /* vfnmsac_vf */
9019 0xfc00707f, /* vfnmsac_vv */
9020 0xfc00707f, /* vfnmsub_vf */
9021 0xfc00707f, /* vfnmsub_vv */
9022 0xfc00707f, /* vfrdiv_vf */
9023 0xfc0ff07f, /* vfrec7_v */
9024 0xfc00707f, /* vfredmax_vs */
9025 0xfc00707f, /* vfredmin_vs */
9026 0xfc00707f, /* vfredosum_vs */
9027 0xfc00707f, /* vfredsum_vs */
9028 0xfc00707f, /* vfredusum_vs */
9029 0xfc0ff07f, /* vfrsqrt7_v */
9030 0xfc00707f, /* vfrsub_vf */
9031 0xfc00707f, /* vfsgnj_vf */
9032 0xfc00707f, /* vfsgnj_vv */
9033 0xfc00707f, /* vfsgnjn_vf */
9034 0xfc00707f, /* vfsgnjn_vv */
9035 0xfc00707f, /* vfsgnjx_vf */
9036 0xfc00707f, /* vfsgnjx_vv */
9037 0xfc00707f, /* vfslide1down_vf */
9038 0xfc00707f, /* vfslide1up_vf */
9039 0xfc0ff07f, /* vfsqrt_v */
9040 0xfc00707f, /* vfsub_vf */
9041 0xfc00707f, /* vfsub_vv */
9042 0xfc00707f, /* vfwadd_vf */
9043 0xfc00707f, /* vfwadd_vv */
9044 0xfc00707f, /* vfwadd_wf */
9045 0xfc00707f, /* vfwadd_wv */
9046 0xfc0ff07f, /* vfwcvt_f_f_v */
9047 0xfc0ff07f, /* vfwcvt_f_x_v */
9048 0xfc0ff07f, /* vfwcvt_f_xu_v */
9049 0xfc0ff07f, /* vfwcvt_rtz_x_f_v */
9050 0xfc0ff07f, /* vfwcvt_rtz_xu_f_v */
9051 0xfc0ff07f, /* vfwcvt_x_f_v */
9052 0xfc0ff07f, /* vfwcvt_xu_f_v */
9053 0xfc0ff07f, /* vfwcvtbf16_f_f_v */
9054 0xfc00707f, /* vfwmacc_vf */
9055 0xfc00707f, /* vfwmacc_vv */
9056 0xfc00707f, /* vfwmaccbf16_vf */
9057 0xfc00707f, /* vfwmaccbf16_vv */
9058 0xfc00707f, /* vfwmsac_vf */
9059 0xfc00707f, /* vfwmsac_vv */
9060 0xfc00707f, /* vfwmul_vf */
9061 0xfc00707f, /* vfwmul_vv */
9062 0xfc00707f, /* vfwnmacc_vf */
9063 0xfc00707f, /* vfwnmacc_vv */
9064 0xfc00707f, /* vfwnmsac_vf */
9065 0xfc00707f, /* vfwnmsac_vv */
9066 0xfc00707f, /* vfwredosum_vs */
9067 0xfc00707f, /* vfwredsum_vs */
9068 0xfc00707f, /* vfwredusum_vs */
9069 0xfc00707f, /* vfwsub_vf */
9070 0xfc00707f, /* vfwsub_vv */
9071 0xfc00707f, /* vfwsub_wf */
9072 0xfc00707f, /* vfwsub_wv */
9073 0xfe00707f, /* vghsh_vv */
9074 0xfe0ff07f, /* vgmul_vv */
9075 0xfdfff07f, /* vid_v */
9076 0xfc0ff07f, /* viota_m */
9077 0xfff0707f, /* vl1r_v */
9078 0xfff0707f, /* vl1re16_v */
9079 0xfff0707f, /* vl1re32_v */
9080 0xfff0707f, /* vl1re64_v */
9081 0xfff0707f, /* vl1re8_v */
9082 0xfff0707f, /* vl2r_v */
9083 0xfff0707f, /* vl2re16_v */
9084 0xfff0707f, /* vl2re32_v */
9085 0xfff0707f, /* vl2re64_v */
9086 0xfff0707f, /* vl2re8_v */
9087 0xfff0707f, /* vl4r_v */
9088 0xfff0707f, /* vl4re16_v */
9089 0xfff0707f, /* vl4re32_v */
9090 0xfff0707f, /* vl4re64_v */
9091 0xfff0707f, /* vl4re8_v */
9092 0xfff0707f, /* vl8r_v */
9093 0xfff0707f, /* vl8re16_v */
9094 0xfff0707f, /* vl8re32_v */
9095 0xfff0707f, /* vl8re64_v */
9096 0xfff0707f, /* vl8re8_v */
9097 0x1df0707f, /* vle16_v */
9098 0x1df0707f, /* vle16ff_v */
9099 0xfff0707f, /* vle1_v */
9100 0x1df0707f, /* vle32_v */
9101 0x1df0707f, /* vle32ff_v */
9102 0x1df0707f, /* vle64_v */
9103 0x1df0707f, /* vle64ff_v */
9104 0x1df0707f, /* vle8_v */
9105 0x1df0707f, /* vle8ff_v */
9106 0xfff0707f, /* vlm_v */
9107 0x1c00707f, /* vloxei16_v */
9108 0x1c00707f, /* vloxei32_v */
9109 0x1c00707f, /* vloxei64_v */
9110 0x1c00707f, /* vloxei8_v */
9111 0x1c00707f, /* vlse16_v */
9112 0x1c00707f, /* vlse32_v */
9113 0x1c00707f, /* vlse64_v */
9114 0x1c00707f, /* vlse8_v */
9115 0x1c00707f, /* vluxei16_v */
9116 0x1c00707f, /* vluxei32_v */
9117 0x1c00707f, /* vluxei64_v */
9118 0x1c00707f, /* vluxei8_v */
9119 0xfc00707f, /* vmacc_vv */
9120 0xfc00707f, /* vmacc_vx */
9121 0xfe00707f, /* vmadc_vi */
9122 0xfe00707f, /* vmadc_vim */
9123 0xfe00707f, /* vmadc_vv */
9124 0xfe00707f, /* vmadc_vvm */
9125 0xfe00707f, /* vmadc_vx */
9126 0xfe00707f, /* vmadc_vxm */
9127 0xfc00707f, /* vmadd_vv */
9128 0xfc00707f, /* vmadd_vx */
9129 0xfe00707f, /* vmand_mm */
9130 0xfe00707f, /* vmandn_mm */
9131 0xfc00707f, /* vmandnot_mm */
9132 0xfc00707f, /* vmax_vv */
9133 0xfc00707f, /* vmax_vx */
9134 0xfc00707f, /* vmaxu_vv */
9135 0xfc00707f, /* vmaxu_vx */
9136 0xfe00707f, /* vmerge_vim */
9137 0xfe00707f, /* vmerge_vvm */
9138 0xfe00707f, /* vmerge_vxm */
9139 0xfc00707f, /* vmfeq_vf */
9140 0xfc00707f, /* vmfeq_vv */
9141 0xfc00707f, /* vmfge_vf */
9142 0xfc00707f, /* vmfgt_vf */
9143 0xfc00707f, /* vmfle_vf */
9144 0xfc00707f, /* vmfle_vv */
9145 0xfc00707f, /* vmflt_vf */
9146 0xfc00707f, /* vmflt_vv */
9147 0xfc00707f, /* vmfne_vf */
9148 0xfc00707f, /* vmfne_vv */
9149 0xfc00707f, /* vmin_vv */
9150 0xfc00707f, /* vmin_vx */
9151 0xfc00707f, /* vminu_vv */
9152 0xfc00707f, /* vminu_vx */
9153 0xfe00707f, /* vmnand_mm */
9154 0xfe00707f, /* vmnor_mm */
9155 0xfe00707f, /* vmor_mm */
9156 0xfe00707f, /* vmorn_mm */
9157 0xfc00707f, /* vmornot_mm */
9158 0xfe00707f, /* vmsbc_vv */
9159 0xfe00707f, /* vmsbc_vvm */
9160 0xfe00707f, /* vmsbc_vx */
9161 0xfe00707f, /* vmsbc_vxm */
9162 0xfc0ff07f, /* vmsbf_m */
9163 0xfc00707f, /* vmseq_vi */
9164 0xfc00707f, /* vmseq_vv */
9165 0xfc00707f, /* vmseq_vx */
9166 0xfc00707f, /* vmsgt_vi */
9167 0xfc00707f, /* vmsgt_vx */
9168 0xfc00707f, /* vmsgtu_vi */
9169 0xfc00707f, /* vmsgtu_vx */
9170 0xfc0ff07f, /* vmsif_m */
9171 0xfc00707f, /* vmsle_vi */
9172 0xfc00707f, /* vmsle_vv */
9173 0xfc00707f, /* vmsle_vx */
9174 0xfc00707f, /* vmsleu_vi */
9175 0xfc00707f, /* vmsleu_vv */
9176 0xfc00707f, /* vmsleu_vx */
9177 0xfc00707f, /* vmslt_vv */
9178 0xfc00707f, /* vmslt_vx */
9179 0xfc00707f, /* vmsltu_vv */
9180 0xfc00707f, /* vmsltu_vx */
9181 0xfc00707f, /* vmsne_vi */
9182 0xfc00707f, /* vmsne_vv */
9183 0xfc00707f, /* vmsne_vx */
9184 0xfc0ff07f, /* vmsof_m */
9185 0xfc00707f, /* vmul_vv */
9186 0xfc00707f, /* vmul_vx */
9187 0xfc00707f, /* vmulh_vv */
9188 0xfc00707f, /* vmulh_vx */
9189 0xfc00707f, /* vmulhsu_vv */
9190 0xfc00707f, /* vmulhsu_vx */
9191 0xfc00707f, /* vmulhu_vv */
9192 0xfc00707f, /* vmulhu_vx */
9193 0xfe0ff07f, /* vmv1r_v */
9194 0xfe0ff07f, /* vmv2r_v */
9195 0xfe0ff07f, /* vmv4r_v */
9196 0xfe0ff07f, /* vmv8r_v */
9197 0xfff0707f, /* vmv_s_x */
9198 0xfff0707f, /* vmv_v_i */
9199 0xfff0707f, /* vmv_v_v */
9200 0xfff0707f, /* vmv_v_x */
9201 0xfe0ff07f, /* vmv_x_s */
9202 0xfe00707f, /* vmxnor_mm */
9203 0xfe00707f, /* vmxor_mm */
9204 0xfc00707f, /* vnclip_wi */
9205 0xfc00707f, /* vnclip_wv */
9206 0xfc00707f, /* vnclip_wx */
9207 0xfc00707f, /* vnclipu_wi */
9208 0xfc00707f, /* vnclipu_wv */
9209 0xfc00707f, /* vnclipu_wx */
9210 0xfc00707f, /* vnmsac_vv */
9211 0xfc00707f, /* vnmsac_vx */
9212 0xfc00707f, /* vnmsub_vv */
9213 0xfc00707f, /* vnmsub_vx */
9214 0xfc00707f, /* vnsra_wi */
9215 0xfc00707f, /* vnsra_wv */
9216 0xfc00707f, /* vnsra_wx */
9217 0xfc00707f, /* vnsrl_wi */
9218 0xfc00707f, /* vnsrl_wv */
9219 0xfc00707f, /* vnsrl_wx */
9220 0xfc00707f, /* vor_vi */
9221 0xfc00707f, /* vor_vv */
9222 0xfc00707f, /* vor_vx */
9223 0xfc0ff07f, /* vpopc_m */
9224 0xfc00707f, /* vredand_vs */
9225 0xfc00707f, /* vredmax_vs */
9226 0xfc00707f, /* vredmaxu_vs */
9227 0xfc00707f, /* vredmin_vs */
9228 0xfc00707f, /* vredminu_vs */
9229 0xfc00707f, /* vredor_vs */
9230 0xfc00707f, /* vredsum_vs */
9231 0xfc00707f, /* vredxor_vs */
9232 0xfc00707f, /* vrem_vv */
9233 0xfc00707f, /* vrem_vx */
9234 0xfc00707f, /* vremu_vv */
9235 0xfc00707f, /* vremu_vx */
9236 0xfc0ff07f, /* vrev8_v */
9237 0xfc00707f, /* vrgather_vi */
9238 0xfc00707f, /* vrgather_vv */
9239 0xfc00707f, /* vrgather_vx */
9240 0xfc00707f, /* vrgatherei16_vv */
9241 0xfc00707f, /* vrol_vv */
9242 0xfc00707f, /* vrol_vx */
9243 0xf800707f, /* vror_vi */
9244 0xfc00707f, /* vror_vv */
9245 0xfc00707f, /* vror_vx */
9246 0xfc00707f, /* vrsub_vi */
9247 0xfc00707f, /* vrsub_vx */
9248 0xfff0707f, /* vs1r_v */
9249 0xfff0707f, /* vs2r_v */
9250 0xfff0707f, /* vs4r_v */
9251 0xfff0707f, /* vs8r_v */
9252 0xfc00707f, /* vsadd_vi */
9253 0xfc00707f, /* vsadd_vv */
9254 0xfc00707f, /* vsadd_vx */
9255 0xfc00707f, /* vsaddu_vi */
9256 0xfc00707f, /* vsaddu_vv */
9257 0xfc00707f, /* vsaddu_vx */
9258 0xfe00707f, /* vsbc_vvm */
9259 0xfe00707f, /* vsbc_vxm */
9260 0x1df0707f, /* vse16_v */
9261 0xfff0707f, /* vse1_v */
9262 0x1df0707f, /* vse32_v */
9263 0x1df0707f, /* vse64_v */
9264 0x1df0707f, /* vse8_v */
9265 0xc000707f, /* vsetivli */
9266 0xfe00707f, /* vsetvl */
9267 0x8000707f, /* vsetvli */
9268 0xfc0ff07f, /* vsext_vf2 */
9269 0xfc0ff07f, /* vsext_vf4 */
9270 0xfc0ff07f, /* vsext_vf8 */
9271 0xfe00707f, /* vsha2ch_vv */
9272 0xfe00707f, /* vsha2cl_vv */
9273 0xfe00707f, /* vsha2ms_vv */
9274 0xfc00707f, /* vslide1down_vx */
9275 0xfc00707f, /* vslide1up_vx */
9276 0xfc00707f, /* vslidedown_vi */
9277 0xfc00707f, /* vslidedown_vx */
9278 0xfc00707f, /* vslideup_vi */
9279 0xfc00707f, /* vslideup_vx */
9280 0xfc00707f, /* vsll_vi */
9281 0xfc00707f, /* vsll_vv */
9282 0xfc00707f, /* vsll_vx */
9283 0xfe00707f, /* vsm3c_vi */
9284 0xfe00707f, /* vsm3me_vv */
9285 0xfe00707f, /* vsm4k_vi */
9286 0xfe0ff07f, /* vsm4r_vs */
9287 0xfe0ff07f, /* vsm4r_vv */
9288 0xfff0707f, /* vsm_v */
9289 0xfc00707f, /* vsmul_vv */
9290 0xfc00707f, /* vsmul_vx */
9291 0x1c00707f, /* vsoxei16_v */
9292 0x1c00707f, /* vsoxei32_v */
9293 0x1c00707f, /* vsoxei64_v */
9294 0x1c00707f, /* vsoxei8_v */
9295 0xfc00707f, /* vsra_vi */
9296 0xfc00707f, /* vsra_vv */
9297 0xfc00707f, /* vsra_vx */
9298 0xfc00707f, /* vsrl_vi */
9299 0xfc00707f, /* vsrl_vv */
9300 0xfc00707f, /* vsrl_vx */
9301 0x1c00707f, /* vsse16_v */
9302 0x1c00707f, /* vsse32_v */
9303 0x1c00707f, /* vsse64_v */
9304 0x1c00707f, /* vsse8_v */
9305 0xfc00707f, /* vssra_vi */
9306 0xfc00707f, /* vssra_vv */
9307 0xfc00707f, /* vssra_vx */
9308 0xfc00707f, /* vssrl_vi */
9309 0xfc00707f, /* vssrl_vv */
9310 0xfc00707f, /* vssrl_vx */
9311 0xfc00707f, /* vssub_vv */
9312 0xfc00707f, /* vssub_vx */
9313 0xfc00707f, /* vssubu_vv */
9314 0xfc00707f, /* vssubu_vx */
9315 0xfc00707f, /* vsub_vv */
9316 0xfc00707f, /* vsub_vx */
9317 0x1c00707f, /* vsuxei16_v */
9318 0x1c00707f, /* vsuxei32_v */
9319 0x1c00707f, /* vsuxei64_v */
9320 0x1c00707f, /* vsuxei8_v */
9321 0xfc00707f, /* vwadd_vv */
9322 0xfc00707f, /* vwadd_vx */
9323 0xfc00707f, /* vwadd_wv */
9324 0xfc00707f, /* vwadd_wx */
9325 0xfc00707f, /* vwaddu_vv */
9326 0xfc00707f, /* vwaddu_vx */
9327 0xfc00707f, /* vwaddu_wv */
9328 0xfc00707f, /* vwaddu_wx */
9329 0xfc00707f, /* vwmacc_vv */
9330 0xfc00707f, /* vwmacc_vx */
9331 0xfc00707f, /* vwmaccsu_vv */
9332 0xfc00707f, /* vwmaccsu_vx */
9333 0xfc00707f, /* vwmaccu_vv */
9334 0xfc00707f, /* vwmaccu_vx */
9335 0xfc00707f, /* vwmaccus_vx */
9336 0xfc00707f, /* vwmul_vv */
9337 0xfc00707f, /* vwmul_vx */
9338 0xfc00707f, /* vwmulsu_vv */
9339 0xfc00707f, /* vwmulsu_vx */
9340 0xfc00707f, /* vwmulu_vv */
9341 0xfc00707f, /* vwmulu_vx */
9342 0xfc00707f, /* vwredsum_vs */
9343 0xfc00707f, /* vwredsumu_vs */
9344 0xfc00707f, /* vwsll_vi */
9345 0xfc00707f, /* vwsll_vv */
9346 0xfc00707f, /* vwsll_vx */
9347 0xfc00707f, /* vwsub_vv */
9348 0xfc00707f, /* vwsub_vx */
9349 0xfc00707f, /* vwsub_wv */
9350 0xfc00707f, /* vwsub_wx */
9351 0xfc00707f, /* vwsubu_vv */
9352 0xfc00707f, /* vwsubu_vx */
9353 0xfc00707f, /* vwsubu_wv */
9354 0xfc00707f, /* vwsubu_wx */
9355 0xfc00707f, /* vxor_vi */
9356 0xfc00707f, /* vxor_vv */
9357 0xfc00707f, /* vxor_vx */
9358 0xfc0ff07f, /* vzext_vf2 */
9359 0xfc0ff07f, /* vzext_vf4 */
9360 0xfc0ff07f, /* vzext_vf8 */
9361 0xffffffff, /* wfi */
9362 0xffffffff, /* wrs_nto */
9363 0xffffffff, /* wrs_sto */
9364 0xfe00707f, /* xnor */
9365 0xfe00707f, /* xor */
9366 0x707f, /* xori */
9367 0xfe00707f, /* xperm4 */
9368 0xfe00707f, /* xperm8 */
9369 0xfff0707f, /* zext_b */
9370 0xfff0707f, /* zext_h */
9371 0xfff0707f, /* zext_h_rv32 */
9372 0xfff0707f, /* zext_w */
9373 0xfff0707f, /* zip */
9374];
9375pub static OPCODE_MASK_COMPRESSED: [u16; 1039] = [
9376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9377 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61443, 57347,
9379 61315, 57347, 57347, 64611, 64611, 60419, 57347, 57347, 65535, 57347, 57347, 57347, 57347,
9380 57347, 57347, 57347, 57347, 57347, 57347, 61567, 61567, 64515, 57347, 57347, 64579, 64579,
9381 57347, 57347, 57347, 57347, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 63743,
9382 64611, 61443, 61315, 64639, 65535, 65535, 65535, 65535, 64611, 64515, 57347, 57347, 64639,
9383 64639, 61567, 64579, 57347, 61443, 60419, 64515, 60419, 64515, 65535, 65535, 64611, 64611,
9384 57347, 57347, 64611, 64639, 64639, 64639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64515, 64611, 64611,
9385 65283, 65283, 65283, 65283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9401 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9403 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9407 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9412 0, 0, 0, 0, 0, 0,
9413];
9414pub static OPCODE_MATCH_COMPRESSED: [u16; 1039] = [
9415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36866, 1, 24833,
9418 0, 8193, 39969, 35937, 34817, 49153, 57345, 36866, 8192, 8194, 24576, 24578, 40960, 40962,
9419 57344, 57346, 40961, 8193, 36866, 32770, 32768, 24576, 24578, 33856, 33792, 16385, 24577,
9420 16384, 16386, 24705, 25985, 26241, 26497, 24961, 25217, 25473, 25729, 24705, 40001, 32770, 1,
9421 40053, 36886, 36874, 36878, 36882, 35905, 34816, 57344, 57346, 40037, 40045, 8193, 35840, 2, 2,
9422 33793, 33793, 32769, 32769, 25217, 24705, 35841, 39937, 49152, 49154, 35873, 40033, 40041,
9423 40049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40962, 44130, 44066, 47618, 48642, 48130, 47106, 0, 0, 0, 0,
9424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9451];
9452pub static OPCODE_XLEN: [u8; 1039] = [
9453 3, /* add */
9454 2, /* add_uw */
9455 3, /* addi */
9456 2, /* addiw */
9457 2, /* addw */
9458 1, /* aes32dsi */
9459 1, /* aes32dsmi */
9460 1, /* aes32esi */
9461 1, /* aes32esmi */
9462 2, /* aes64ds */
9463 2, /* aes64dsm */
9464 2, /* aes64es */
9465 2, /* aes64esm */
9466 2, /* aes64im */
9467 2, /* aes64ks1i */
9468 2, /* aes64ks2 */
9469 3, /* amoadd_b */
9470 2, /* amoadd_d */
9471 3, /* amoadd_h */
9472 3, /* amoadd_w */
9473 3, /* amoand_b */
9474 2, /* amoand_d */
9475 3, /* amoand_h */
9476 3, /* amoand_w */
9477 3, /* amocas_b */
9478 3, /* amocas_d */
9479 3, /* amocas_h */
9480 2, /* amocas_q */
9481 3, /* amocas_w */
9482 3, /* amomax_b */
9483 2, /* amomax_d */
9484 3, /* amomax_h */
9485 3, /* amomax_w */
9486 3, /* amomaxu_b */
9487 2, /* amomaxu_d */
9488 3, /* amomaxu_h */
9489 3, /* amomaxu_w */
9490 3, /* amomin_b */
9491 2, /* amomin_d */
9492 3, /* amomin_h */
9493 3, /* amomin_w */
9494 3, /* amominu_b */
9495 2, /* amominu_d */
9496 3, /* amominu_h */
9497 3, /* amominu_w */
9498 3, /* amoor_b */
9499 2, /* amoor_d */
9500 3, /* amoor_h */
9501 3, /* amoor_w */
9502 3, /* amoswap_b */
9503 2, /* amoswap_d */
9504 3, /* amoswap_h */
9505 3, /* amoswap_w */
9506 3, /* amoxor_b */
9507 2, /* amoxor_d */
9508 3, /* amoxor_h */
9509 3, /* amoxor_w */
9510 3, /* and */
9511 3, /* andi */
9512 3, /* andn */
9513 3, /* auipc */
9514 3, /* bclr */
9515 2, /* bclri */
9516 1, /* bclri_rv32 */
9517 3, /* beq */
9518 3, /* beqz */
9519 3, /* bext */
9520 2, /* bexti */
9521 1, /* bexti_rv32 */
9522 3, /* bge */
9523 3, /* bgeu */
9524 3, /* bgez */
9525 3, /* bgt */
9526 3, /* bgtu */
9527 3, /* bgtz */
9528 3, /* binv */
9529 2, /* binvi */
9530 1, /* binvi_rv32 */
9531 3, /* ble */
9532 3, /* bleu */
9533 3, /* blez */
9534 3, /* blt */
9535 3, /* bltu */
9536 3, /* bltz */
9537 3, /* bne */
9538 3, /* bnez */
9539 3, /* brev8 */
9540 3, /* bset */
9541 2, /* bseti */
9542 1, /* bseti_rv32 */
9543 3, /* c_add */
9544 3, /* c_addi */
9545 3, /* c_addi16sp */
9546 3, /* c_addi4spn */
9547 2, /* c_addiw */
9548 2, /* c_addw */
9549 3, /* c_and */
9550 3, /* c_andi */
9551 3, /* c_beqz */
9552 3, /* c_bnez */
9553 3, /* c_ebreak */
9554 3, /* c_fld */
9555 3, /* c_fldsp */
9556 1, /* c_flw */
9557 1, /* c_flwsp */
9558 3, /* c_fsd */
9559 3, /* c_fsdsp */
9560 1, /* c_fsw */
9561 1, /* c_fswsp */
9562 3, /* c_j */
9563 1, /* c_jal */
9564 3, /* c_jalr */
9565 3, /* c_jr */
9566 3, /* c_lbu */
9567 3, /* c_ld */
9568 3, /* c_ldsp */
9569 3, /* c_lh */
9570 3, /* c_lhu */
9571 3, /* c_li */
9572 3, /* c_lui */
9573 3, /* c_lw */
9574 3, /* c_lwsp */
9575 3, /* c_mop_1 */
9576 3, /* c_mop_11 */
9577 3, /* c_mop_13 */
9578 3, /* c_mop_15 */
9579 3, /* c_mop_3 */
9580 3, /* c_mop_5 */
9581 3, /* c_mop_7 */
9582 3, /* c_mop_9 */
9583 3, /* c_mop_N */
9584 3, /* c_mul */
9585 3, /* c_mv */
9586 3, /* c_nop */
9587 3, /* c_not */
9588 3, /* c_ntl_all */
9589 3, /* c_ntl_p1 */
9590 3, /* c_ntl_pall */
9591 3, /* c_ntl_s1 */
9592 3, /* c_or */
9593 3, /* c_sb */
9594 3, /* c_sd */
9595 3, /* c_sdsp */
9596 3, /* c_sext_b */
9597 3, /* c_sext_h */
9598 2, /* c_sext_w */
9599 3, /* c_sh */
9600 3, /* c_slli */
9601 1, /* c_slli_rv32 */
9602 3, /* c_srai */
9603 1, /* c_srai_rv32 */
9604 3, /* c_srli */
9605 1, /* c_srli_rv32 */
9606 3, /* c_sspopchk_x5 */
9607 3, /* c_sspush_x1 */
9608 3, /* c_sub */
9609 2, /* c_subw */
9610 3, /* c_sw */
9611 3, /* c_swsp */
9612 3, /* c_xor */
9613 3, /* c_zext_b */
9614 3, /* c_zext_h */
9615 2, /* c_zext_w */
9616 3, /* cbo_clean */
9617 3, /* cbo_flush */
9618 3, /* cbo_inval */
9619 3, /* cbo_zero */
9620 3, /* clmul */
9621 3, /* clmulh */
9622 3, /* clmulr */
9623 3, /* clz */
9624 2, /* clzw */
9625 3, /* cm_jalt */
9626 3, /* cm_mva01s */
9627 3, /* cm_mvsa01 */
9628 3, /* cm_pop */
9629 3, /* cm_popret */
9630 3, /* cm_popretz */
9631 3, /* cm_push */
9632 3, /* cpop */
9633 2, /* cpopw */
9634 3, /* csrc */
9635 3, /* csrci */
9636 3, /* csrr */
9637 3, /* csrrc */
9638 3, /* csrrci */
9639 3, /* csrrs */
9640 3, /* csrrsi */
9641 3, /* csrrw */
9642 3, /* csrrwi */
9643 3, /* csrs */
9644 3, /* csrsi */
9645 3, /* csrw */
9646 3, /* csrwi */
9647 3, /* ctz */
9648 2, /* ctzw */
9649 3, /* czero_eqz */
9650 3, /* czero_nez */
9651 3, /* div */
9652 3, /* divu */
9653 2, /* divuw */
9654 2, /* divw */
9655 3, /* dret */
9656 3, /* ebreak */
9657 3, /* ecall */
9658 3, /* fabs_d */
9659 3, /* fabs_h */
9660 3, /* fabs_q */
9661 3, /* fabs_s */
9662 3, /* fadd_d */
9663 3, /* fadd_h */
9664 3, /* fadd_q */
9665 3, /* fadd_s */
9666 3, /* fclass_d */
9667 3, /* fclass_h */
9668 3, /* fclass_q */
9669 3, /* fclass_s */
9670 3, /* fcvt_bf16_s */
9671 3, /* fcvt_d_h */
9672 2, /* fcvt_d_l */
9673 2, /* fcvt_d_lu */
9674 3, /* fcvt_d_q */
9675 3, /* fcvt_d_s */
9676 3, /* fcvt_d_w */
9677 3, /* fcvt_d_wu */
9678 3, /* fcvt_h_d */
9679 2, /* fcvt_h_l */
9680 2, /* fcvt_h_lu */
9681 3, /* fcvt_h_q */
9682 3, /* fcvt_h_s */
9683 3, /* fcvt_h_w */
9684 3, /* fcvt_h_wu */
9685 2, /* fcvt_l_d */
9686 2, /* fcvt_l_h */
9687 2, /* fcvt_l_q */
9688 2, /* fcvt_l_s */
9689 2, /* fcvt_lu_d */
9690 2, /* fcvt_lu_h */
9691 2, /* fcvt_lu_q */
9692 2, /* fcvt_lu_s */
9693 3, /* fcvt_q_d */
9694 3, /* fcvt_q_h */
9695 2, /* fcvt_q_l */
9696 2, /* fcvt_q_lu */
9697 3, /* fcvt_q_s */
9698 3, /* fcvt_q_w */
9699 3, /* fcvt_q_wu */
9700 3, /* fcvt_s_bf16 */
9701 3, /* fcvt_s_d */
9702 3, /* fcvt_s_h */
9703 2, /* fcvt_s_l */
9704 2, /* fcvt_s_lu */
9705 3, /* fcvt_s_q */
9706 3, /* fcvt_s_w */
9707 3, /* fcvt_s_wu */
9708 3, /* fcvt_w_d */
9709 3, /* fcvt_w_h */
9710 3, /* fcvt_w_q */
9711 3, /* fcvt_w_s */
9712 3, /* fcvt_wu_d */
9713 3, /* fcvt_wu_h */
9714 3, /* fcvt_wu_q */
9715 3, /* fcvt_wu_s */
9716 3, /* fcvtmod_w_d */
9717 3, /* fdiv_d */
9718 3, /* fdiv_h */
9719 3, /* fdiv_q */
9720 3, /* fdiv_s */
9721 3, /* fence */
9722 3, /* fence_i */
9723 3, /* fence_tso */
9724 3, /* feq_d */
9725 3, /* feq_h */
9726 3, /* feq_q */
9727 3, /* feq_s */
9728 3, /* fld */
9729 3, /* fle_d */
9730 3, /* fle_h */
9731 3, /* fle_q */
9732 3, /* fle_s */
9733 3, /* fleq_d */
9734 3, /* fleq_h */
9735 3, /* fleq_q */
9736 3, /* fleq_s */
9737 3, /* flh */
9738 3, /* fli_d */
9739 3, /* fli_h */
9740 3, /* fli_q */
9741 3, /* fli_s */
9742 3, /* flq */
9743 3, /* flt_d */
9744 3, /* flt_h */
9745 3, /* flt_q */
9746 3, /* flt_s */
9747 3, /* fltq_d */
9748 3, /* fltq_h */
9749 3, /* fltq_q */
9750 3, /* fltq_s */
9751 3, /* flw */
9752 3, /* fmadd_d */
9753 3, /* fmadd_h */
9754 3, /* fmadd_q */
9755 3, /* fmadd_s */
9756 3, /* fmax_d */
9757 3, /* fmax_h */
9758 3, /* fmax_q */
9759 3, /* fmax_s */
9760 3, /* fmaxm_d */
9761 3, /* fmaxm_h */
9762 3, /* fmaxm_q */
9763 3, /* fmaxm_s */
9764 3, /* fmin_d */
9765 3, /* fmin_h */
9766 3, /* fmin_q */
9767 3, /* fmin_s */
9768 3, /* fminm_d */
9769 3, /* fminm_h */
9770 3, /* fminm_q */
9771 3, /* fminm_s */
9772 3, /* fmsub_d */
9773 3, /* fmsub_h */
9774 3, /* fmsub_q */
9775 3, /* fmsub_s */
9776 3, /* fmul_d */
9777 3, /* fmul_h */
9778 3, /* fmul_q */
9779 3, /* fmul_s */
9780 3, /* fmv_d */
9781 2, /* fmv_d_x */
9782 3, /* fmv_h */
9783 3, /* fmv_h_x */
9784 3, /* fmv_q */
9785 3, /* fmv_s */
9786 3, /* fmv_s_x */
9787 3, /* fmv_w_x */
9788 2, /* fmv_x_d */
9789 3, /* fmv_x_h */
9790 3, /* fmv_x_s */
9791 3, /* fmv_x_w */
9792 1, /* fmvh_x_d */
9793 2, /* fmvh_x_q */
9794 1, /* fmvp_d_x */
9795 2, /* fmvp_q_x */
9796 3, /* fneg_d */
9797 3, /* fneg_h */
9798 3, /* fneg_q */
9799 3, /* fneg_s */
9800 3, /* fnmadd_d */
9801 3, /* fnmadd_h */
9802 3, /* fnmadd_q */
9803 3, /* fnmadd_s */
9804 3, /* fnmsub_d */
9805 3, /* fnmsub_h */
9806 3, /* fnmsub_q */
9807 3, /* fnmsub_s */
9808 3, /* frcsr */
9809 3, /* frflags */
9810 3, /* fround_d */
9811 3, /* fround_h */
9812 3, /* fround_q */
9813 3, /* fround_s */
9814 3, /* froundnx_d */
9815 3, /* froundnx_h */
9816 3, /* froundnx_q */
9817 3, /* froundnx_s */
9818 3, /* frrm */
9819 3, /* fscsr */
9820 3, /* fsd */
9821 3, /* fsflags */
9822 3, /* fsflagsi */
9823 3, /* fsgnj_d */
9824 3, /* fsgnj_h */
9825 3, /* fsgnj_q */
9826 3, /* fsgnj_s */
9827 3, /* fsgnjn_d */
9828 3, /* fsgnjn_h */
9829 3, /* fsgnjn_q */
9830 3, /* fsgnjn_s */
9831 3, /* fsgnjx_d */
9832 3, /* fsgnjx_h */
9833 3, /* fsgnjx_q */
9834 3, /* fsgnjx_s */
9835 3, /* fsh */
9836 3, /* fsq */
9837 3, /* fsqrt_d */
9838 3, /* fsqrt_h */
9839 3, /* fsqrt_q */
9840 3, /* fsqrt_s */
9841 3, /* fsrm */
9842 3, /* fsrmi */
9843 3, /* fsub_d */
9844 3, /* fsub_h */
9845 3, /* fsub_q */
9846 3, /* fsub_s */
9847 3, /* fsw */
9848 3, /* hfence_gvma */
9849 3, /* hfence_vvma */
9850 3, /* hinval_gvma */
9851 3, /* hinval_vvma */
9852 3, /* hlv_b */
9853 3, /* hlv_bu */
9854 2, /* hlv_d */
9855 3, /* hlv_h */
9856 3, /* hlv_hu */
9857 3, /* hlv_w */
9858 2, /* hlv_wu */
9859 3, /* hlvx_hu */
9860 3, /* hlvx_wu */
9861 3, /* hsv_b */
9862 2, /* hsv_d */
9863 3, /* hsv_h */
9864 3, /* hsv_w */
9865 3, /* j */
9866 3, /* jal */
9867 3, /* jal_pseudo */
9868 3, /* jalr */
9869 3, /* jalr_pseudo */
9870 3, /* jr */
9871 3, /* lb */
9872 3, /* lbu */
9873 2, /* ld */
9874 3, /* lh */
9875 3, /* lhu */
9876 3, /* lpad */
9877 2, /* lr_d */
9878 3, /* lr_w */
9879 3, /* lui */
9880 3, /* lw */
9881 2, /* lwu */
9882 3, /* max */
9883 3, /* maxu */
9884 3, /* min */
9885 3, /* minu */
9886 3, /* mnret */
9887 3, /* mop_r_0 */
9888 3, /* mop_r_1 */
9889 3, /* mop_r_10 */
9890 3, /* mop_r_11 */
9891 3, /* mop_r_12 */
9892 3, /* mop_r_13 */
9893 3, /* mop_r_14 */
9894 3, /* mop_r_15 */
9895 3, /* mop_r_16 */
9896 3, /* mop_r_17 */
9897 3, /* mop_r_18 */
9898 3, /* mop_r_19 */
9899 3, /* mop_r_2 */
9900 3, /* mop_r_20 */
9901 3, /* mop_r_21 */
9902 3, /* mop_r_22 */
9903 3, /* mop_r_23 */
9904 3, /* mop_r_24 */
9905 3, /* mop_r_25 */
9906 3, /* mop_r_26 */
9907 3, /* mop_r_27 */
9908 3, /* mop_r_28 */
9909 3, /* mop_r_29 */
9910 3, /* mop_r_3 */
9911 3, /* mop_r_30 */
9912 3, /* mop_r_31 */
9913 3, /* mop_r_4 */
9914 3, /* mop_r_5 */
9915 3, /* mop_r_6 */
9916 3, /* mop_r_7 */
9917 3, /* mop_r_8 */
9918 3, /* mop_r_9 */
9919 3, /* mop_r_N */
9920 3, /* mop_rr_0 */
9921 3, /* mop_rr_1 */
9922 3, /* mop_rr_2 */
9923 3, /* mop_rr_3 */
9924 3, /* mop_rr_4 */
9925 3, /* mop_rr_5 */
9926 3, /* mop_rr_6 */
9927 3, /* mop_rr_7 */
9928 3, /* mop_rr_N */
9929 3, /* mret */
9930 3, /* mul */
9931 3, /* mulh */
9932 3, /* mulhsu */
9933 3, /* mulhu */
9934 2, /* mulw */
9935 3, /* mv */
9936 3, /* neg */
9937 3, /* nop */
9938 3, /* ntl_all */
9939 3, /* ntl_p1 */
9940 3, /* ntl_pall */
9941 3, /* ntl_s1 */
9942 3, /* or */
9943 3, /* orc_b */
9944 3, /* ori */
9945 3, /* orn */
9946 3, /* pack */
9947 3, /* packh */
9948 2, /* packw */
9949 3, /* pause */
9950 3, /* prefetch_i */
9951 3, /* prefetch_r */
9952 3, /* prefetch_w */
9953 3, /* rdcycle */
9954 1, /* rdcycleh */
9955 3, /* rdinstret */
9956 1, /* rdinstreth */
9957 3, /* rdtime */
9958 1, /* rdtimeh */
9959 3, /* rem */
9960 3, /* remu */
9961 2, /* remuw */
9962 2, /* remw */
9963 3, /* ret */
9964 2, /* rev8 */
9965 1, /* rev8_rv32 */
9966 3, /* rol */
9967 2, /* rolw */
9968 3, /* ror */
9969 2, /* rori */
9970 1, /* rori_rv32 */
9971 2, /* roriw */
9972 2, /* rorw */
9973 3, /* sb */
9974 3, /* sbreak */
9975 2, /* sc_d */
9976 3, /* sc_w */
9977 3, /* scall */
9978 3, /* sctrclr */
9979 2, /* sd */
9980 3, /* seqz */
9981 3, /* sext_b */
9982 3, /* sext_h */
9983 2, /* sext_w */
9984 3, /* sfence_inval_ir */
9985 3, /* sfence_vma */
9986 3, /* sfence_w_inval */
9987 3, /* sgtz */
9988 3, /* sh */
9989 3, /* sh1add */
9990 2, /* sh1add_uw */
9991 3, /* sh2add */
9992 2, /* sh2add_uw */
9993 3, /* sh3add */
9994 2, /* sh3add_uw */
9995 3, /* sha256sig0 */
9996 3, /* sha256sig1 */
9997 3, /* sha256sum0 */
9998 3, /* sha256sum1 */
9999 2, /* sha512sig0 */
10000 1, /* sha512sig0h */
10001 1, /* sha512sig0l */
10002 2, /* sha512sig1 */
10003 1, /* sha512sig1h */
10004 1, /* sha512sig1l */
10005 2, /* sha512sum0 */
10006 1, /* sha512sum0r */
10007 2, /* sha512sum1 */
10008 1, /* sha512sum1r */
10009 3, /* sinval_vma */
10010 3, /* sll */
10011 3, /* slli */
10012 1, /* slli_rv32 */
10013 2, /* slli_uw */
10014 2, /* slliw */
10015 2, /* sllw */
10016 3, /* slt */
10017 3, /* slti */
10018 3, /* sltiu */
10019 3, /* sltu */
10020 3, /* sltz */
10021 3, /* sm3p0 */
10022 3, /* sm3p1 */
10023 3, /* sm4ed */
10024 3, /* sm4ks */
10025 3, /* snez */
10026 3, /* sra */
10027 3, /* srai */
10028 1, /* srai_rv32 */
10029 2, /* sraiw */
10030 2, /* sraw */
10031 3, /* sret */
10032 3, /* srl */
10033 3, /* srli */
10034 1, /* srli_rv32 */
10035 2, /* srliw */
10036 2, /* srlw */
10037 2, /* ssamoswap_d */
10038 3, /* ssamoswap_w */
10039 3, /* sspopchk_x1 */
10040 3, /* sspopchk_x5 */
10041 3, /* sspush_x1 */
10042 3, /* sspush_x5 */
10043 3, /* ssrdp */
10044 3, /* sub */
10045 2, /* subw */
10046 3, /* sw */
10047 1, /* unzip */
10048 3, /* vaadd_vv */
10049 3, /* vaadd_vx */
10050 3, /* vaaddu_vv */
10051 3, /* vaaddu_vx */
10052 3, /* vadc_vim */
10053 3, /* vadc_vvm */
10054 3, /* vadc_vxm */
10055 3, /* vadd_vi */
10056 3, /* vadd_vv */
10057 3, /* vadd_vx */
10058 3, /* vaesdf_vs */
10059 3, /* vaesdf_vv */
10060 3, /* vaesdm_vs */
10061 3, /* vaesdm_vv */
10062 3, /* vaesef_vs */
10063 3, /* vaesef_vv */
10064 3, /* vaesem_vs */
10065 3, /* vaesem_vv */
10066 3, /* vaeskf1_vi */
10067 3, /* vaeskf2_vi */
10068 3, /* vaesz_vs */
10069 3, /* vand_vi */
10070 3, /* vand_vv */
10071 3, /* vand_vx */
10072 3, /* vandn_vv */
10073 3, /* vandn_vx */
10074 3, /* vasub_vv */
10075 3, /* vasub_vx */
10076 3, /* vasubu_vv */
10077 3, /* vasubu_vx */
10078 3, /* vbrev8_v */
10079 3, /* vbrev_v */
10080 3, /* vclmul_vv */
10081 3, /* vclmul_vx */
10082 3, /* vclmulh_vv */
10083 3, /* vclmulh_vx */
10084 3, /* vclz_v */
10085 3, /* vcompress_vm */
10086 3, /* vcpop_m */
10087 3, /* vcpop_v */
10088 3, /* vctz_v */
10089 3, /* vdiv_vv */
10090 3, /* vdiv_vx */
10091 3, /* vdivu_vv */
10092 3, /* vdivu_vx */
10093 3, /* vfadd_vf */
10094 3, /* vfadd_vv */
10095 3, /* vfclass_v */
10096 3, /* vfcvt_f_x_v */
10097 3, /* vfcvt_f_xu_v */
10098 3, /* vfcvt_rtz_x_f_v */
10099 3, /* vfcvt_rtz_xu_f_v */
10100 3, /* vfcvt_x_f_v */
10101 3, /* vfcvt_xu_f_v */
10102 3, /* vfdiv_vf */
10103 3, /* vfdiv_vv */
10104 3, /* vfirst_m */
10105 3, /* vfmacc_vf */
10106 3, /* vfmacc_vv */
10107 3, /* vfmadd_vf */
10108 3, /* vfmadd_vv */
10109 3, /* vfmax_vf */
10110 3, /* vfmax_vv */
10111 3, /* vfmerge_vfm */
10112 3, /* vfmin_vf */
10113 3, /* vfmin_vv */
10114 3, /* vfmsac_vf */
10115 3, /* vfmsac_vv */
10116 3, /* vfmsub_vf */
10117 3, /* vfmsub_vv */
10118 3, /* vfmul_vf */
10119 3, /* vfmul_vv */
10120 3, /* vfmv_f_s */
10121 3, /* vfmv_s_f */
10122 3, /* vfmv_v_f */
10123 3, /* vfncvt_f_f_w */
10124 3, /* vfncvt_f_x_w */
10125 3, /* vfncvt_f_xu_w */
10126 3, /* vfncvt_rod_f_f_w */
10127 3, /* vfncvt_rtz_x_f_w */
10128 3, /* vfncvt_rtz_xu_f_w */
10129 3, /* vfncvt_x_f_w */
10130 3, /* vfncvt_xu_f_w */
10131 3, /* vfncvtbf16_f_f_w */
10132 3, /* vfnmacc_vf */
10133 3, /* vfnmacc_vv */
10134 3, /* vfnmadd_vf */
10135 3, /* vfnmadd_vv */
10136 3, /* vfnmsac_vf */
10137 3, /* vfnmsac_vv */
10138 3, /* vfnmsub_vf */
10139 3, /* vfnmsub_vv */
10140 3, /* vfrdiv_vf */
10141 3, /* vfrec7_v */
10142 3, /* vfredmax_vs */
10143 3, /* vfredmin_vs */
10144 3, /* vfredosum_vs */
10145 3, /* vfredsum_vs */
10146 3, /* vfredusum_vs */
10147 3, /* vfrsqrt7_v */
10148 3, /* vfrsub_vf */
10149 3, /* vfsgnj_vf */
10150 3, /* vfsgnj_vv */
10151 3, /* vfsgnjn_vf */
10152 3, /* vfsgnjn_vv */
10153 3, /* vfsgnjx_vf */
10154 3, /* vfsgnjx_vv */
10155 3, /* vfslide1down_vf */
10156 3, /* vfslide1up_vf */
10157 3, /* vfsqrt_v */
10158 3, /* vfsub_vf */
10159 3, /* vfsub_vv */
10160 3, /* vfwadd_vf */
10161 3, /* vfwadd_vv */
10162 3, /* vfwadd_wf */
10163 3, /* vfwadd_wv */
10164 3, /* vfwcvt_f_f_v */
10165 3, /* vfwcvt_f_x_v */
10166 3, /* vfwcvt_f_xu_v */
10167 3, /* vfwcvt_rtz_x_f_v */
10168 3, /* vfwcvt_rtz_xu_f_v */
10169 3, /* vfwcvt_x_f_v */
10170 3, /* vfwcvt_xu_f_v */
10171 3, /* vfwcvtbf16_f_f_v */
10172 3, /* vfwmacc_vf */
10173 3, /* vfwmacc_vv */
10174 3, /* vfwmaccbf16_vf */
10175 3, /* vfwmaccbf16_vv */
10176 3, /* vfwmsac_vf */
10177 3, /* vfwmsac_vv */
10178 3, /* vfwmul_vf */
10179 3, /* vfwmul_vv */
10180 3, /* vfwnmacc_vf */
10181 3, /* vfwnmacc_vv */
10182 3, /* vfwnmsac_vf */
10183 3, /* vfwnmsac_vv */
10184 3, /* vfwredosum_vs */
10185 3, /* vfwredsum_vs */
10186 3, /* vfwredusum_vs */
10187 3, /* vfwsub_vf */
10188 3, /* vfwsub_vv */
10189 3, /* vfwsub_wf */
10190 3, /* vfwsub_wv */
10191 3, /* vghsh_vv */
10192 3, /* vgmul_vv */
10193 3, /* vid_v */
10194 3, /* viota_m */
10195 3, /* vl1r_v */
10196 3, /* vl1re16_v */
10197 3, /* vl1re32_v */
10198 3, /* vl1re64_v */
10199 3, /* vl1re8_v */
10200 3, /* vl2r_v */
10201 3, /* vl2re16_v */
10202 3, /* vl2re32_v */
10203 3, /* vl2re64_v */
10204 3, /* vl2re8_v */
10205 3, /* vl4r_v */
10206 3, /* vl4re16_v */
10207 3, /* vl4re32_v */
10208 3, /* vl4re64_v */
10209 3, /* vl4re8_v */
10210 3, /* vl8r_v */
10211 3, /* vl8re16_v */
10212 3, /* vl8re32_v */
10213 3, /* vl8re64_v */
10214 3, /* vl8re8_v */
10215 3, /* vle16_v */
10216 3, /* vle16ff_v */
10217 3, /* vle1_v */
10218 3, /* vle32_v */
10219 3, /* vle32ff_v */
10220 3, /* vle64_v */
10221 3, /* vle64ff_v */
10222 3, /* vle8_v */
10223 3, /* vle8ff_v */
10224 3, /* vlm_v */
10225 3, /* vloxei16_v */
10226 3, /* vloxei32_v */
10227 3, /* vloxei64_v */
10228 3, /* vloxei8_v */
10229 3, /* vlse16_v */
10230 3, /* vlse32_v */
10231 3, /* vlse64_v */
10232 3, /* vlse8_v */
10233 3, /* vluxei16_v */
10234 3, /* vluxei32_v */
10235 3, /* vluxei64_v */
10236 3, /* vluxei8_v */
10237 3, /* vmacc_vv */
10238 3, /* vmacc_vx */
10239 3, /* vmadc_vi */
10240 3, /* vmadc_vim */
10241 3, /* vmadc_vv */
10242 3, /* vmadc_vvm */
10243 3, /* vmadc_vx */
10244 3, /* vmadc_vxm */
10245 3, /* vmadd_vv */
10246 3, /* vmadd_vx */
10247 3, /* vmand_mm */
10248 3, /* vmandn_mm */
10249 3, /* vmandnot_mm */
10250 3, /* vmax_vv */
10251 3, /* vmax_vx */
10252 3, /* vmaxu_vv */
10253 3, /* vmaxu_vx */
10254 3, /* vmerge_vim */
10255 3, /* vmerge_vvm */
10256 3, /* vmerge_vxm */
10257 3, /* vmfeq_vf */
10258 3, /* vmfeq_vv */
10259 3, /* vmfge_vf */
10260 3, /* vmfgt_vf */
10261 3, /* vmfle_vf */
10262 3, /* vmfle_vv */
10263 3, /* vmflt_vf */
10264 3, /* vmflt_vv */
10265 3, /* vmfne_vf */
10266 3, /* vmfne_vv */
10267 3, /* vmin_vv */
10268 3, /* vmin_vx */
10269 3, /* vminu_vv */
10270 3, /* vminu_vx */
10271 3, /* vmnand_mm */
10272 3, /* vmnor_mm */
10273 3, /* vmor_mm */
10274 3, /* vmorn_mm */
10275 3, /* vmornot_mm */
10276 3, /* vmsbc_vv */
10277 3, /* vmsbc_vvm */
10278 3, /* vmsbc_vx */
10279 3, /* vmsbc_vxm */
10280 3, /* vmsbf_m */
10281 3, /* vmseq_vi */
10282 3, /* vmseq_vv */
10283 3, /* vmseq_vx */
10284 3, /* vmsgt_vi */
10285 3, /* vmsgt_vx */
10286 3, /* vmsgtu_vi */
10287 3, /* vmsgtu_vx */
10288 3, /* vmsif_m */
10289 3, /* vmsle_vi */
10290 3, /* vmsle_vv */
10291 3, /* vmsle_vx */
10292 3, /* vmsleu_vi */
10293 3, /* vmsleu_vv */
10294 3, /* vmsleu_vx */
10295 3, /* vmslt_vv */
10296 3, /* vmslt_vx */
10297 3, /* vmsltu_vv */
10298 3, /* vmsltu_vx */
10299 3, /* vmsne_vi */
10300 3, /* vmsne_vv */
10301 3, /* vmsne_vx */
10302 3, /* vmsof_m */
10303 3, /* vmul_vv */
10304 3, /* vmul_vx */
10305 3, /* vmulh_vv */
10306 3, /* vmulh_vx */
10307 3, /* vmulhsu_vv */
10308 3, /* vmulhsu_vx */
10309 3, /* vmulhu_vv */
10310 3, /* vmulhu_vx */
10311 3, /* vmv1r_v */
10312 3, /* vmv2r_v */
10313 3, /* vmv4r_v */
10314 3, /* vmv8r_v */
10315 3, /* vmv_s_x */
10316 3, /* vmv_v_i */
10317 3, /* vmv_v_v */
10318 3, /* vmv_v_x */
10319 3, /* vmv_x_s */
10320 3, /* vmxnor_mm */
10321 3, /* vmxor_mm */
10322 3, /* vnclip_wi */
10323 3, /* vnclip_wv */
10324 3, /* vnclip_wx */
10325 3, /* vnclipu_wi */
10326 3, /* vnclipu_wv */
10327 3, /* vnclipu_wx */
10328 3, /* vnmsac_vv */
10329 3, /* vnmsac_vx */
10330 3, /* vnmsub_vv */
10331 3, /* vnmsub_vx */
10332 3, /* vnsra_wi */
10333 3, /* vnsra_wv */
10334 3, /* vnsra_wx */
10335 3, /* vnsrl_wi */
10336 3, /* vnsrl_wv */
10337 3, /* vnsrl_wx */
10338 3, /* vor_vi */
10339 3, /* vor_vv */
10340 3, /* vor_vx */
10341 3, /* vpopc_m */
10342 3, /* vredand_vs */
10343 3, /* vredmax_vs */
10344 3, /* vredmaxu_vs */
10345 3, /* vredmin_vs */
10346 3, /* vredminu_vs */
10347 3, /* vredor_vs */
10348 3, /* vredsum_vs */
10349 3, /* vredxor_vs */
10350 3, /* vrem_vv */
10351 3, /* vrem_vx */
10352 3, /* vremu_vv */
10353 3, /* vremu_vx */
10354 3, /* vrev8_v */
10355 3, /* vrgather_vi */
10356 3, /* vrgather_vv */
10357 3, /* vrgather_vx */
10358 3, /* vrgatherei16_vv */
10359 3, /* vrol_vv */
10360 3, /* vrol_vx */
10361 3, /* vror_vi */
10362 3, /* vror_vv */
10363 3, /* vror_vx */
10364 3, /* vrsub_vi */
10365 3, /* vrsub_vx */
10366 3, /* vs1r_v */
10367 3, /* vs2r_v */
10368 3, /* vs4r_v */
10369 3, /* vs8r_v */
10370 3, /* vsadd_vi */
10371 3, /* vsadd_vv */
10372 3, /* vsadd_vx */
10373 3, /* vsaddu_vi */
10374 3, /* vsaddu_vv */
10375 3, /* vsaddu_vx */
10376 3, /* vsbc_vvm */
10377 3, /* vsbc_vxm */
10378 3, /* vse16_v */
10379 3, /* vse1_v */
10380 3, /* vse32_v */
10381 3, /* vse64_v */
10382 3, /* vse8_v */
10383 3, /* vsetivli */
10384 3, /* vsetvl */
10385 3, /* vsetvli */
10386 3, /* vsext_vf2 */
10387 3, /* vsext_vf4 */
10388 3, /* vsext_vf8 */
10389 3, /* vsha2ch_vv */
10390 3, /* vsha2cl_vv */
10391 3, /* vsha2ms_vv */
10392 3, /* vslide1down_vx */
10393 3, /* vslide1up_vx */
10394 3, /* vslidedown_vi */
10395 3, /* vslidedown_vx */
10396 3, /* vslideup_vi */
10397 3, /* vslideup_vx */
10398 3, /* vsll_vi */
10399 3, /* vsll_vv */
10400 3, /* vsll_vx */
10401 3, /* vsm3c_vi */
10402 3, /* vsm3me_vv */
10403 3, /* vsm4k_vi */
10404 3, /* vsm4r_vs */
10405 3, /* vsm4r_vv */
10406 3, /* vsm_v */
10407 3, /* vsmul_vv */
10408 3, /* vsmul_vx */
10409 3, /* vsoxei16_v */
10410 3, /* vsoxei32_v */
10411 3, /* vsoxei64_v */
10412 3, /* vsoxei8_v */
10413 3, /* vsra_vi */
10414 3, /* vsra_vv */
10415 3, /* vsra_vx */
10416 3, /* vsrl_vi */
10417 3, /* vsrl_vv */
10418 3, /* vsrl_vx */
10419 3, /* vsse16_v */
10420 3, /* vsse32_v */
10421 3, /* vsse64_v */
10422 3, /* vsse8_v */
10423 3, /* vssra_vi */
10424 3, /* vssra_vv */
10425 3, /* vssra_vx */
10426 3, /* vssrl_vi */
10427 3, /* vssrl_vv */
10428 3, /* vssrl_vx */
10429 3, /* vssub_vv */
10430 3, /* vssub_vx */
10431 3, /* vssubu_vv */
10432 3, /* vssubu_vx */
10433 3, /* vsub_vv */
10434 3, /* vsub_vx */
10435 3, /* vsuxei16_v */
10436 3, /* vsuxei32_v */
10437 3, /* vsuxei64_v */
10438 3, /* vsuxei8_v */
10439 3, /* vwadd_vv */
10440 3, /* vwadd_vx */
10441 3, /* vwadd_wv */
10442 3, /* vwadd_wx */
10443 3, /* vwaddu_vv */
10444 3, /* vwaddu_vx */
10445 3, /* vwaddu_wv */
10446 3, /* vwaddu_wx */
10447 3, /* vwmacc_vv */
10448 3, /* vwmacc_vx */
10449 3, /* vwmaccsu_vv */
10450 3, /* vwmaccsu_vx */
10451 3, /* vwmaccu_vv */
10452 3, /* vwmaccu_vx */
10453 3, /* vwmaccus_vx */
10454 3, /* vwmul_vv */
10455 3, /* vwmul_vx */
10456 3, /* vwmulsu_vv */
10457 3, /* vwmulsu_vx */
10458 3, /* vwmulu_vv */
10459 3, /* vwmulu_vx */
10460 3, /* vwredsum_vs */
10461 3, /* vwredsumu_vs */
10462 3, /* vwsll_vi */
10463 3, /* vwsll_vv */
10464 3, /* vwsll_vx */
10465 3, /* vwsub_vv */
10466 3, /* vwsub_vx */
10467 3, /* vwsub_wv */
10468 3, /* vwsub_wx */
10469 3, /* vwsubu_vv */
10470 3, /* vwsubu_vx */
10471 3, /* vwsubu_wv */
10472 3, /* vwsubu_wx */
10473 3, /* vxor_vi */
10474 3, /* vxor_vv */
10475 3, /* vxor_vx */
10476 3, /* vzext_vf2 */
10477 3, /* vzext_vf4 */
10478 3, /* vzext_vf8 */
10479 3, /* wfi */
10480 3, /* wrs_nto */
10481 3, /* wrs_sto */
10482 3, /* xnor */
10483 3, /* xor */
10484 3, /* xori */
10485 3, /* xperm4 */
10486 3, /* xperm8 */
10487 3, /* zext_b */
10488 2, /* zext_h */
10489 1, /* zext_h_rv32 */
10490 2, /* zext_w */
10491 1, /* zip */
10492];
10493
10494pub static ALL_OPCODES: [Opcode; 1039] = [
10495 Opcode::ADD,
10496 Opcode::ADDUW,
10497 Opcode::ADDI,
10498 Opcode::ADDIW,
10499 Opcode::ADDW,
10500 Opcode::AES32DSI,
10501 Opcode::AES32DSMI,
10502 Opcode::AES32ESI,
10503 Opcode::AES32ESMI,
10504 Opcode::AES64DS,
10505 Opcode::AES64DSM,
10506 Opcode::AES64ES,
10507 Opcode::AES64ESM,
10508 Opcode::AES64IM,
10509 Opcode::AES64KS1I,
10510 Opcode::AES64KS2,
10511 Opcode::AMOADDB,
10512 Opcode::AMOADDD,
10513 Opcode::AMOADDH,
10514 Opcode::AMOADDW,
10515 Opcode::AMOANDB,
10516 Opcode::AMOANDD,
10517 Opcode::AMOANDH,
10518 Opcode::AMOANDW,
10519 Opcode::AMOCASB,
10520 Opcode::AMOCASD,
10521 Opcode::AMOCASH,
10522 Opcode::AMOCASQ,
10523 Opcode::AMOCASW,
10524 Opcode::AMOMAXB,
10525 Opcode::AMOMAXD,
10526 Opcode::AMOMAXH,
10527 Opcode::AMOMAXW,
10528 Opcode::AMOMAXUB,
10529 Opcode::AMOMAXUD,
10530 Opcode::AMOMAXUH,
10531 Opcode::AMOMAXUW,
10532 Opcode::AMOMINB,
10533 Opcode::AMOMIND,
10534 Opcode::AMOMINH,
10535 Opcode::AMOMINW,
10536 Opcode::AMOMINUB,
10537 Opcode::AMOMINUD,
10538 Opcode::AMOMINUH,
10539 Opcode::AMOMINUW,
10540 Opcode::AMOORB,
10541 Opcode::AMOORD,
10542 Opcode::AMOORH,
10543 Opcode::AMOORW,
10544 Opcode::AMOSWAPB,
10545 Opcode::AMOSWAPD,
10546 Opcode::AMOSWAPH,
10547 Opcode::AMOSWAPW,
10548 Opcode::AMOXORB,
10549 Opcode::AMOXORD,
10550 Opcode::AMOXORH,
10551 Opcode::AMOXORW,
10552 Opcode::AND,
10553 Opcode::ANDI,
10554 Opcode::ANDN,
10555 Opcode::AUIPC,
10556 Opcode::BCLR,
10557 Opcode::BCLRI,
10558 Opcode::BCLRIRV32,
10559 Opcode::BEQ,
10560 Opcode::BEQZ,
10561 Opcode::BEXT,
10562 Opcode::BEXTI,
10563 Opcode::BEXTIRV32,
10564 Opcode::BGE,
10565 Opcode::BGEU,
10566 Opcode::BGEZ,
10567 Opcode::BGT,
10568 Opcode::BGTU,
10569 Opcode::BGTZ,
10570 Opcode::BINV,
10571 Opcode::BINVI,
10572 Opcode::BINVIRV32,
10573 Opcode::BLE,
10574 Opcode::BLEU,
10575 Opcode::BLEZ,
10576 Opcode::BLT,
10577 Opcode::BLTU,
10578 Opcode::BLTZ,
10579 Opcode::BNE,
10580 Opcode::BNEZ,
10581 Opcode::BREV8,
10582 Opcode::BSET,
10583 Opcode::BSETI,
10584 Opcode::BSETIRV32,
10585 Opcode::CADD,
10586 Opcode::CADDI,
10587 Opcode::CADDI16SP,
10588 Opcode::CADDI4SPN,
10589 Opcode::CADDIW,
10590 Opcode::CADDW,
10591 Opcode::CAND,
10592 Opcode::CANDI,
10593 Opcode::CBEQZ,
10594 Opcode::CBNEZ,
10595 Opcode::CEBREAK,
10596 Opcode::CFLD,
10597 Opcode::CFLDSP,
10598 Opcode::CFLW,
10599 Opcode::CFLWSP,
10600 Opcode::CFSD,
10601 Opcode::CFSDSP,
10602 Opcode::CFSW,
10603 Opcode::CFSWSP,
10604 Opcode::CJ,
10605 Opcode::CJAL,
10606 Opcode::CJALR,
10607 Opcode::CJR,
10608 Opcode::CLBU,
10609 Opcode::CLD,
10610 Opcode::CLDSP,
10611 Opcode::CLH,
10612 Opcode::CLHU,
10613 Opcode::CLI,
10614 Opcode::CLUI,
10615 Opcode::CLW,
10616 Opcode::CLWSP,
10617 Opcode::CMOP1,
10618 Opcode::CMOP11,
10619 Opcode::CMOP13,
10620 Opcode::CMOP15,
10621 Opcode::CMOP3,
10622 Opcode::CMOP5,
10623 Opcode::CMOP7,
10624 Opcode::CMOP9,
10625 Opcode::CMOPN,
10626 Opcode::CMUL,
10627 Opcode::CMV,
10628 Opcode::CNOP,
10629 Opcode::CNOT,
10630 Opcode::CNTLALL,
10631 Opcode::CNTLP1,
10632 Opcode::CNTLPALL,
10633 Opcode::CNTLS1,
10634 Opcode::COR,
10635 Opcode::CSB,
10636 Opcode::CSD,
10637 Opcode::CSDSP,
10638 Opcode::CSEXTB,
10639 Opcode::CSEXTH,
10640 Opcode::CSEXTW,
10641 Opcode::CSH,
10642 Opcode::CSLLI,
10643 Opcode::CSLLIRV32,
10644 Opcode::CSRAI,
10645 Opcode::CSRAIRV32,
10646 Opcode::CSRLI,
10647 Opcode::CSRLIRV32,
10648 Opcode::CSSPOPCHKX5,
10649 Opcode::CSSPUSHX1,
10650 Opcode::CSUB,
10651 Opcode::CSUBW,
10652 Opcode::CSW,
10653 Opcode::CSWSP,
10654 Opcode::CXOR,
10655 Opcode::CZEXTB,
10656 Opcode::CZEXTH,
10657 Opcode::CZEXTW,
10658 Opcode::CBOCLEAN,
10659 Opcode::CBOFLUSH,
10660 Opcode::CBOINVAL,
10661 Opcode::CBOZERO,
10662 Opcode::CLMUL,
10663 Opcode::CLMULH,
10664 Opcode::CLMULR,
10665 Opcode::CLZ,
10666 Opcode::CLZW,
10667 Opcode::CMJALT,
10668 Opcode::CMMVA01S,
10669 Opcode::CMMVSA01,
10670 Opcode::CMPOP,
10671 Opcode::CMPOPRET,
10672 Opcode::CMPOPRETZ,
10673 Opcode::CMPUSH,
10674 Opcode::CPOP,
10675 Opcode::CPOPW,
10676 Opcode::CSRC,
10677 Opcode::CSRCI,
10678 Opcode::CSRR,
10679 Opcode::CSRRC,
10680 Opcode::CSRRCI,
10681 Opcode::CSRRS,
10682 Opcode::CSRRSI,
10683 Opcode::CSRRW,
10684 Opcode::CSRRWI,
10685 Opcode::CSRS,
10686 Opcode::CSRSI,
10687 Opcode::CSRW,
10688 Opcode::CSRWI,
10689 Opcode::CTZ,
10690 Opcode::CTZW,
10691 Opcode::CZEROEQZ,
10692 Opcode::CZERONEZ,
10693 Opcode::DIV,
10694 Opcode::DIVU,
10695 Opcode::DIVUW,
10696 Opcode::DIVW,
10697 Opcode::DRET,
10698 Opcode::EBREAK,
10699 Opcode::ECALL,
10700 Opcode::FABSD,
10701 Opcode::FABSH,
10702 Opcode::FABSQ,
10703 Opcode::FABSS,
10704 Opcode::FADDD,
10705 Opcode::FADDH,
10706 Opcode::FADDQ,
10707 Opcode::FADDS,
10708 Opcode::FCLASSD,
10709 Opcode::FCLASSH,
10710 Opcode::FCLASSQ,
10711 Opcode::FCLASSS,
10712 Opcode::FCVTBF16S,
10713 Opcode::FCVTDH,
10714 Opcode::FCVTDL,
10715 Opcode::FCVTDLU,
10716 Opcode::FCVTDQ,
10717 Opcode::FCVTDS,
10718 Opcode::FCVTDW,
10719 Opcode::FCVTDWU,
10720 Opcode::FCVTHD,
10721 Opcode::FCVTHL,
10722 Opcode::FCVTHLU,
10723 Opcode::FCVTHQ,
10724 Opcode::FCVTHS,
10725 Opcode::FCVTHW,
10726 Opcode::FCVTHWU,
10727 Opcode::FCVTLD,
10728 Opcode::FCVTLH,
10729 Opcode::FCVTLQ,
10730 Opcode::FCVTLS,
10731 Opcode::FCVTLUD,
10732 Opcode::FCVTLUH,
10733 Opcode::FCVTLUQ,
10734 Opcode::FCVTLUS,
10735 Opcode::FCVTQD,
10736 Opcode::FCVTQH,
10737 Opcode::FCVTQL,
10738 Opcode::FCVTQLU,
10739 Opcode::FCVTQS,
10740 Opcode::FCVTQW,
10741 Opcode::FCVTQWU,
10742 Opcode::FCVTSBF16,
10743 Opcode::FCVTSD,
10744 Opcode::FCVTSH,
10745 Opcode::FCVTSL,
10746 Opcode::FCVTSLU,
10747 Opcode::FCVTSQ,
10748 Opcode::FCVTSW,
10749 Opcode::FCVTSWU,
10750 Opcode::FCVTWD,
10751 Opcode::FCVTWH,
10752 Opcode::FCVTWQ,
10753 Opcode::FCVTWS,
10754 Opcode::FCVTWUD,
10755 Opcode::FCVTWUH,
10756 Opcode::FCVTWUQ,
10757 Opcode::FCVTWUS,
10758 Opcode::FCVTMODWD,
10759 Opcode::FDIVD,
10760 Opcode::FDIVH,
10761 Opcode::FDIVQ,
10762 Opcode::FDIVS,
10763 Opcode::FENCE,
10764 Opcode::FENCEI,
10765 Opcode::FENCETSO,
10766 Opcode::FEQD,
10767 Opcode::FEQH,
10768 Opcode::FEQQ,
10769 Opcode::FEQS,
10770 Opcode::FLD,
10771 Opcode::FLED,
10772 Opcode::FLEH,
10773 Opcode::FLEQ,
10774 Opcode::FLES,
10775 Opcode::FLEQD,
10776 Opcode::FLEQH,
10777 Opcode::FLEQQ,
10778 Opcode::FLEQS,
10779 Opcode::FLH,
10780 Opcode::FLID,
10781 Opcode::FLIH,
10782 Opcode::FLIQ,
10783 Opcode::FLIS,
10784 Opcode::FLQ,
10785 Opcode::FLTD,
10786 Opcode::FLTH,
10787 Opcode::FLTQ,
10788 Opcode::FLTS,
10789 Opcode::FLTQD,
10790 Opcode::FLTQH,
10791 Opcode::FLTQQ,
10792 Opcode::FLTQS,
10793 Opcode::FLW,
10794 Opcode::FMADDD,
10795 Opcode::FMADDH,
10796 Opcode::FMADDQ,
10797 Opcode::FMADDS,
10798 Opcode::FMAXD,
10799 Opcode::FMAXH,
10800 Opcode::FMAXQ,
10801 Opcode::FMAXS,
10802 Opcode::FMAXMD,
10803 Opcode::FMAXMH,
10804 Opcode::FMAXMQ,
10805 Opcode::FMAXMS,
10806 Opcode::FMIND,
10807 Opcode::FMINH,
10808 Opcode::FMINQ,
10809 Opcode::FMINS,
10810 Opcode::FMINMD,
10811 Opcode::FMINMH,
10812 Opcode::FMINMQ,
10813 Opcode::FMINMS,
10814 Opcode::FMSUBD,
10815 Opcode::FMSUBH,
10816 Opcode::FMSUBQ,
10817 Opcode::FMSUBS,
10818 Opcode::FMULD,
10819 Opcode::FMULH,
10820 Opcode::FMULQ,
10821 Opcode::FMULS,
10822 Opcode::FMVD,
10823 Opcode::FMVDX,
10824 Opcode::FMVH,
10825 Opcode::FMVHX,
10826 Opcode::FMVQ,
10827 Opcode::FMVS,
10828 Opcode::FMVSX,
10829 Opcode::FMVWX,
10830 Opcode::FMVXD,
10831 Opcode::FMVXH,
10832 Opcode::FMVXS,
10833 Opcode::FMVXW,
10834 Opcode::FMVHXD,
10835 Opcode::FMVHXQ,
10836 Opcode::FMVPDX,
10837 Opcode::FMVPQX,
10838 Opcode::FNEGD,
10839 Opcode::FNEGH,
10840 Opcode::FNEGQ,
10841 Opcode::FNEGS,
10842 Opcode::FNMADDD,
10843 Opcode::FNMADDH,
10844 Opcode::FNMADDQ,
10845 Opcode::FNMADDS,
10846 Opcode::FNMSUBD,
10847 Opcode::FNMSUBH,
10848 Opcode::FNMSUBQ,
10849 Opcode::FNMSUBS,
10850 Opcode::FRCSR,
10851 Opcode::FRFLAGS,
10852 Opcode::FROUNDD,
10853 Opcode::FROUNDH,
10854 Opcode::FROUNDQ,
10855 Opcode::FROUNDS,
10856 Opcode::FROUNDNXD,
10857 Opcode::FROUNDNXH,
10858 Opcode::FROUNDNXQ,
10859 Opcode::FROUNDNXS,
10860 Opcode::FRRM,
10861 Opcode::FSCSR,
10862 Opcode::FSD,
10863 Opcode::FSFLAGS,
10864 Opcode::FSFLAGSI,
10865 Opcode::FSGNJD,
10866 Opcode::FSGNJH,
10867 Opcode::FSGNJQ,
10868 Opcode::FSGNJS,
10869 Opcode::FSGNJND,
10870 Opcode::FSGNJNH,
10871 Opcode::FSGNJNQ,
10872 Opcode::FSGNJNS,
10873 Opcode::FSGNJXD,
10874 Opcode::FSGNJXH,
10875 Opcode::FSGNJXQ,
10876 Opcode::FSGNJXS,
10877 Opcode::FSH,
10878 Opcode::FSQ,
10879 Opcode::FSQRTD,
10880 Opcode::FSQRTH,
10881 Opcode::FSQRTQ,
10882 Opcode::FSQRTS,
10883 Opcode::FSRM,
10884 Opcode::FSRMI,
10885 Opcode::FSUBD,
10886 Opcode::FSUBH,
10887 Opcode::FSUBQ,
10888 Opcode::FSUBS,
10889 Opcode::FSW,
10890 Opcode::HFENCEGVMA,
10891 Opcode::HFENCEVVMA,
10892 Opcode::HINVALGVMA,
10893 Opcode::HINVALVVMA,
10894 Opcode::HLVB,
10895 Opcode::HLVBU,
10896 Opcode::HLVD,
10897 Opcode::HLVH,
10898 Opcode::HLVHU,
10899 Opcode::HLVW,
10900 Opcode::HLVWU,
10901 Opcode::HLVXHU,
10902 Opcode::HLVXWU,
10903 Opcode::HSVB,
10904 Opcode::HSVD,
10905 Opcode::HSVH,
10906 Opcode::HSVW,
10907 Opcode::J,
10908 Opcode::JAL,
10909 Opcode::JALPSEUDO,
10910 Opcode::JALR,
10911 Opcode::JALRPSEUDO,
10912 Opcode::JR,
10913 Opcode::LB,
10914 Opcode::LBU,
10915 Opcode::LD,
10916 Opcode::LH,
10917 Opcode::LHU,
10918 Opcode::LPAD,
10919 Opcode::LRD,
10920 Opcode::LRW,
10921 Opcode::LUI,
10922 Opcode::LW,
10923 Opcode::LWU,
10924 Opcode::MAX,
10925 Opcode::MAXU,
10926 Opcode::MIN,
10927 Opcode::MINU,
10928 Opcode::MNRET,
10929 Opcode::MOPR0,
10930 Opcode::MOPR1,
10931 Opcode::MOPR10,
10932 Opcode::MOPR11,
10933 Opcode::MOPR12,
10934 Opcode::MOPR13,
10935 Opcode::MOPR14,
10936 Opcode::MOPR15,
10937 Opcode::MOPR16,
10938 Opcode::MOPR17,
10939 Opcode::MOPR18,
10940 Opcode::MOPR19,
10941 Opcode::MOPR2,
10942 Opcode::MOPR20,
10943 Opcode::MOPR21,
10944 Opcode::MOPR22,
10945 Opcode::MOPR23,
10946 Opcode::MOPR24,
10947 Opcode::MOPR25,
10948 Opcode::MOPR26,
10949 Opcode::MOPR27,
10950 Opcode::MOPR28,
10951 Opcode::MOPR29,
10952 Opcode::MOPR3,
10953 Opcode::MOPR30,
10954 Opcode::MOPR31,
10955 Opcode::MOPR4,
10956 Opcode::MOPR5,
10957 Opcode::MOPR6,
10958 Opcode::MOPR7,
10959 Opcode::MOPR8,
10960 Opcode::MOPR9,
10961 Opcode::MOPRN,
10962 Opcode::MOPRR0,
10963 Opcode::MOPRR1,
10964 Opcode::MOPRR2,
10965 Opcode::MOPRR3,
10966 Opcode::MOPRR4,
10967 Opcode::MOPRR5,
10968 Opcode::MOPRR6,
10969 Opcode::MOPRR7,
10970 Opcode::MOPRRN,
10971 Opcode::MRET,
10972 Opcode::MUL,
10973 Opcode::MULH,
10974 Opcode::MULHSU,
10975 Opcode::MULHU,
10976 Opcode::MULW,
10977 Opcode::MV,
10978 Opcode::NEG,
10979 Opcode::NOP,
10980 Opcode::NTLALL,
10981 Opcode::NTLP1,
10982 Opcode::NTLPALL,
10983 Opcode::NTLS1,
10984 Opcode::OR,
10985 Opcode::ORCB,
10986 Opcode::ORI,
10987 Opcode::ORN,
10988 Opcode::PACK,
10989 Opcode::PACKH,
10990 Opcode::PACKW,
10991 Opcode::PAUSE,
10992 Opcode::PREFETCHI,
10993 Opcode::PREFETCHR,
10994 Opcode::PREFETCHW,
10995 Opcode::RDCYCLE,
10996 Opcode::RDCYCLEH,
10997 Opcode::RDINSTRET,
10998 Opcode::RDINSTRETH,
10999 Opcode::RDTIME,
11000 Opcode::RDTIMEH,
11001 Opcode::REM,
11002 Opcode::REMU,
11003 Opcode::REMUW,
11004 Opcode::REMW,
11005 Opcode::RET,
11006 Opcode::REV8,
11007 Opcode::REV8RV32,
11008 Opcode::ROL,
11009 Opcode::ROLW,
11010 Opcode::ROR,
11011 Opcode::RORI,
11012 Opcode::RORIRV32,
11013 Opcode::RORIW,
11014 Opcode::RORW,
11015 Opcode::SB,
11016 Opcode::SBREAK,
11017 Opcode::SCD,
11018 Opcode::SCW,
11019 Opcode::SCALL,
11020 Opcode::SCTRCLR,
11021 Opcode::SD,
11022 Opcode::SEQZ,
11023 Opcode::SEXTB,
11024 Opcode::SEXTH,
11025 Opcode::SEXTW,
11026 Opcode::SFENCEINVALIR,
11027 Opcode::SFENCEVMA,
11028 Opcode::SFENCEWINVAL,
11029 Opcode::SGTZ,
11030 Opcode::SH,
11031 Opcode::SH1ADD,
11032 Opcode::SH1ADDUW,
11033 Opcode::SH2ADD,
11034 Opcode::SH2ADDUW,
11035 Opcode::SH3ADD,
11036 Opcode::SH3ADDUW,
11037 Opcode::SHA256SIG0,
11038 Opcode::SHA256SIG1,
11039 Opcode::SHA256SUM0,
11040 Opcode::SHA256SUM1,
11041 Opcode::SHA512SIG0,
11042 Opcode::SHA512SIG0H,
11043 Opcode::SHA512SIG0L,
11044 Opcode::SHA512SIG1,
11045 Opcode::SHA512SIG1H,
11046 Opcode::SHA512SIG1L,
11047 Opcode::SHA512SUM0,
11048 Opcode::SHA512SUM0R,
11049 Opcode::SHA512SUM1,
11050 Opcode::SHA512SUM1R,
11051 Opcode::SINVALVMA,
11052 Opcode::SLL,
11053 Opcode::SLLI,
11054 Opcode::SLLIRV32,
11055 Opcode::SLLIUW,
11056 Opcode::SLLIW,
11057 Opcode::SLLW,
11058 Opcode::SLT,
11059 Opcode::SLTI,
11060 Opcode::SLTIU,
11061 Opcode::SLTU,
11062 Opcode::SLTZ,
11063 Opcode::SM3P0,
11064 Opcode::SM3P1,
11065 Opcode::SM4ED,
11066 Opcode::SM4KS,
11067 Opcode::SNEZ,
11068 Opcode::SRA,
11069 Opcode::SRAI,
11070 Opcode::SRAIRV32,
11071 Opcode::SRAIW,
11072 Opcode::SRAW,
11073 Opcode::SRET,
11074 Opcode::SRL,
11075 Opcode::SRLI,
11076 Opcode::SRLIRV32,
11077 Opcode::SRLIW,
11078 Opcode::SRLW,
11079 Opcode::SSAMOSWAPD,
11080 Opcode::SSAMOSWAPW,
11081 Opcode::SSPOPCHKX1,
11082 Opcode::SSPOPCHKX5,
11083 Opcode::SSPUSHX1,
11084 Opcode::SSPUSHX5,
11085 Opcode::SSRDP,
11086 Opcode::SUB,
11087 Opcode::SUBW,
11088 Opcode::SW,
11089 Opcode::UNZIP,
11090 Opcode::VAADDVV,
11091 Opcode::VAADDVX,
11092 Opcode::VAADDUVV,
11093 Opcode::VAADDUVX,
11094 Opcode::VADCVIM,
11095 Opcode::VADCVVM,
11096 Opcode::VADCVXM,
11097 Opcode::VADDVI,
11098 Opcode::VADDVV,
11099 Opcode::VADDVX,
11100 Opcode::VAESDFVS,
11101 Opcode::VAESDFVV,
11102 Opcode::VAESDMVS,
11103 Opcode::VAESDMVV,
11104 Opcode::VAESEFVS,
11105 Opcode::VAESEFVV,
11106 Opcode::VAESEMVS,
11107 Opcode::VAESEMVV,
11108 Opcode::VAESKF1VI,
11109 Opcode::VAESKF2VI,
11110 Opcode::VAESZVS,
11111 Opcode::VANDVI,
11112 Opcode::VANDVV,
11113 Opcode::VANDVX,
11114 Opcode::VANDNVV,
11115 Opcode::VANDNVX,
11116 Opcode::VASUBVV,
11117 Opcode::VASUBVX,
11118 Opcode::VASUBUVV,
11119 Opcode::VASUBUVX,
11120 Opcode::VBREV8V,
11121 Opcode::VBREVV,
11122 Opcode::VCLMULVV,
11123 Opcode::VCLMULVX,
11124 Opcode::VCLMULHVV,
11125 Opcode::VCLMULHVX,
11126 Opcode::VCLZV,
11127 Opcode::VCOMPRESSVM,
11128 Opcode::VCPOPM,
11129 Opcode::VCPOPV,
11130 Opcode::VCTZV,
11131 Opcode::VDIVVV,
11132 Opcode::VDIVVX,
11133 Opcode::VDIVUVV,
11134 Opcode::VDIVUVX,
11135 Opcode::VFADDVF,
11136 Opcode::VFADDVV,
11137 Opcode::VFCLASSV,
11138 Opcode::VFCVTFXV,
11139 Opcode::VFCVTFXUV,
11140 Opcode::VFCVTRTZXFV,
11141 Opcode::VFCVTRTZXUFV,
11142 Opcode::VFCVTXFV,
11143 Opcode::VFCVTXUFV,
11144 Opcode::VFDIVVF,
11145 Opcode::VFDIVVV,
11146 Opcode::VFIRSTM,
11147 Opcode::VFMACCVF,
11148 Opcode::VFMACCVV,
11149 Opcode::VFMADDVF,
11150 Opcode::VFMADDVV,
11151 Opcode::VFMAXVF,
11152 Opcode::VFMAXVV,
11153 Opcode::VFMERGEVFM,
11154 Opcode::VFMINVF,
11155 Opcode::VFMINVV,
11156 Opcode::VFMSACVF,
11157 Opcode::VFMSACVV,
11158 Opcode::VFMSUBVF,
11159 Opcode::VFMSUBVV,
11160 Opcode::VFMULVF,
11161 Opcode::VFMULVV,
11162 Opcode::VFMVFS,
11163 Opcode::VFMVSF,
11164 Opcode::VFMVVF,
11165 Opcode::VFNCVTFFW,
11166 Opcode::VFNCVTFXW,
11167 Opcode::VFNCVTFXUW,
11168 Opcode::VFNCVTRODFFW,
11169 Opcode::VFNCVTRTZXFW,
11170 Opcode::VFNCVTRTZXUFW,
11171 Opcode::VFNCVTXFW,
11172 Opcode::VFNCVTXUFW,
11173 Opcode::VFNCVTBF16FFW,
11174 Opcode::VFNMACCVF,
11175 Opcode::VFNMACCVV,
11176 Opcode::VFNMADDVF,
11177 Opcode::VFNMADDVV,
11178 Opcode::VFNMSACVF,
11179 Opcode::VFNMSACVV,
11180 Opcode::VFNMSUBVF,
11181 Opcode::VFNMSUBVV,
11182 Opcode::VFRDIVVF,
11183 Opcode::VFREC7V,
11184 Opcode::VFREDMAXVS,
11185 Opcode::VFREDMINVS,
11186 Opcode::VFREDOSUMVS,
11187 Opcode::VFREDSUMVS,
11188 Opcode::VFREDUSUMVS,
11189 Opcode::VFRSQRT7V,
11190 Opcode::VFRSUBVF,
11191 Opcode::VFSGNJVF,
11192 Opcode::VFSGNJVV,
11193 Opcode::VFSGNJNVF,
11194 Opcode::VFSGNJNVV,
11195 Opcode::VFSGNJXVF,
11196 Opcode::VFSGNJXVV,
11197 Opcode::VFSLIDE1DOWNVF,
11198 Opcode::VFSLIDE1UPVF,
11199 Opcode::VFSQRTV,
11200 Opcode::VFSUBVF,
11201 Opcode::VFSUBVV,
11202 Opcode::VFWADDVF,
11203 Opcode::VFWADDVV,
11204 Opcode::VFWADDWF,
11205 Opcode::VFWADDWV,
11206 Opcode::VFWCVTFFV,
11207 Opcode::VFWCVTFXV,
11208 Opcode::VFWCVTFXUV,
11209 Opcode::VFWCVTRTZXFV,
11210 Opcode::VFWCVTRTZXUFV,
11211 Opcode::VFWCVTXFV,
11212 Opcode::VFWCVTXUFV,
11213 Opcode::VFWCVTBF16FFV,
11214 Opcode::VFWMACCVF,
11215 Opcode::VFWMACCVV,
11216 Opcode::VFWMACCBF16VF,
11217 Opcode::VFWMACCBF16VV,
11218 Opcode::VFWMSACVF,
11219 Opcode::VFWMSACVV,
11220 Opcode::VFWMULVF,
11221 Opcode::VFWMULVV,
11222 Opcode::VFWNMACCVF,
11223 Opcode::VFWNMACCVV,
11224 Opcode::VFWNMSACVF,
11225 Opcode::VFWNMSACVV,
11226 Opcode::VFWREDOSUMVS,
11227 Opcode::VFWREDSUMVS,
11228 Opcode::VFWREDUSUMVS,
11229 Opcode::VFWSUBVF,
11230 Opcode::VFWSUBVV,
11231 Opcode::VFWSUBWF,
11232 Opcode::VFWSUBWV,
11233 Opcode::VGHSHVV,
11234 Opcode::VGMULVV,
11235 Opcode::VIDV,
11236 Opcode::VIOTAM,
11237 Opcode::VL1RV,
11238 Opcode::VL1RE16V,
11239 Opcode::VL1RE32V,
11240 Opcode::VL1RE64V,
11241 Opcode::VL1RE8V,
11242 Opcode::VL2RV,
11243 Opcode::VL2RE16V,
11244 Opcode::VL2RE32V,
11245 Opcode::VL2RE64V,
11246 Opcode::VL2RE8V,
11247 Opcode::VL4RV,
11248 Opcode::VL4RE16V,
11249 Opcode::VL4RE32V,
11250 Opcode::VL4RE64V,
11251 Opcode::VL4RE8V,
11252 Opcode::VL8RV,
11253 Opcode::VL8RE16V,
11254 Opcode::VL8RE32V,
11255 Opcode::VL8RE64V,
11256 Opcode::VL8RE8V,
11257 Opcode::VLE16V,
11258 Opcode::VLE16FFV,
11259 Opcode::VLE1V,
11260 Opcode::VLE32V,
11261 Opcode::VLE32FFV,
11262 Opcode::VLE64V,
11263 Opcode::VLE64FFV,
11264 Opcode::VLE8V,
11265 Opcode::VLE8FFV,
11266 Opcode::VLMV,
11267 Opcode::VLOXEI16V,
11268 Opcode::VLOXEI32V,
11269 Opcode::VLOXEI64V,
11270 Opcode::VLOXEI8V,
11271 Opcode::VLSE16V,
11272 Opcode::VLSE32V,
11273 Opcode::VLSE64V,
11274 Opcode::VLSE8V,
11275 Opcode::VLUXEI16V,
11276 Opcode::VLUXEI32V,
11277 Opcode::VLUXEI64V,
11278 Opcode::VLUXEI8V,
11279 Opcode::VMACCVV,
11280 Opcode::VMACCVX,
11281 Opcode::VMADCVI,
11282 Opcode::VMADCVIM,
11283 Opcode::VMADCVV,
11284 Opcode::VMADCVVM,
11285 Opcode::VMADCVX,
11286 Opcode::VMADCVXM,
11287 Opcode::VMADDVV,
11288 Opcode::VMADDVX,
11289 Opcode::VMANDMM,
11290 Opcode::VMANDNMM,
11291 Opcode::VMANDNOTMM,
11292 Opcode::VMAXVV,
11293 Opcode::VMAXVX,
11294 Opcode::VMAXUVV,
11295 Opcode::VMAXUVX,
11296 Opcode::VMERGEVIM,
11297 Opcode::VMERGEVVM,
11298 Opcode::VMERGEVXM,
11299 Opcode::VMFEQVF,
11300 Opcode::VMFEQVV,
11301 Opcode::VMFGEVF,
11302 Opcode::VMFGTVF,
11303 Opcode::VMFLEVF,
11304 Opcode::VMFLEVV,
11305 Opcode::VMFLTVF,
11306 Opcode::VMFLTVV,
11307 Opcode::VMFNEVF,
11308 Opcode::VMFNEVV,
11309 Opcode::VMINVV,
11310 Opcode::VMINVX,
11311 Opcode::VMINUVV,
11312 Opcode::VMINUVX,
11313 Opcode::VMNANDMM,
11314 Opcode::VMNORMM,
11315 Opcode::VMORMM,
11316 Opcode::VMORNMM,
11317 Opcode::VMORNOTMM,
11318 Opcode::VMSBCVV,
11319 Opcode::VMSBCVVM,
11320 Opcode::VMSBCVX,
11321 Opcode::VMSBCVXM,
11322 Opcode::VMSBFM,
11323 Opcode::VMSEQVI,
11324 Opcode::VMSEQVV,
11325 Opcode::VMSEQVX,
11326 Opcode::VMSGTVI,
11327 Opcode::VMSGTVX,
11328 Opcode::VMSGTUVI,
11329 Opcode::VMSGTUVX,
11330 Opcode::VMSIFM,
11331 Opcode::VMSLEVI,
11332 Opcode::VMSLEVV,
11333 Opcode::VMSLEVX,
11334 Opcode::VMSLEUVI,
11335 Opcode::VMSLEUVV,
11336 Opcode::VMSLEUVX,
11337 Opcode::VMSLTVV,
11338 Opcode::VMSLTVX,
11339 Opcode::VMSLTUVV,
11340 Opcode::VMSLTUVX,
11341 Opcode::VMSNEVI,
11342 Opcode::VMSNEVV,
11343 Opcode::VMSNEVX,
11344 Opcode::VMSOFM,
11345 Opcode::VMULVV,
11346 Opcode::VMULVX,
11347 Opcode::VMULHVV,
11348 Opcode::VMULHVX,
11349 Opcode::VMULHSUVV,
11350 Opcode::VMULHSUVX,
11351 Opcode::VMULHUVV,
11352 Opcode::VMULHUVX,
11353 Opcode::VMV1RV,
11354 Opcode::VMV2RV,
11355 Opcode::VMV4RV,
11356 Opcode::VMV8RV,
11357 Opcode::VMVSX,
11358 Opcode::VMVVI,
11359 Opcode::VMVVV,
11360 Opcode::VMVVX,
11361 Opcode::VMVXS,
11362 Opcode::VMXNORMM,
11363 Opcode::VMXORMM,
11364 Opcode::VNCLIPWI,
11365 Opcode::VNCLIPWV,
11366 Opcode::VNCLIPWX,
11367 Opcode::VNCLIPUWI,
11368 Opcode::VNCLIPUWV,
11369 Opcode::VNCLIPUWX,
11370 Opcode::VNMSACVV,
11371 Opcode::VNMSACVX,
11372 Opcode::VNMSUBVV,
11373 Opcode::VNMSUBVX,
11374 Opcode::VNSRAWI,
11375 Opcode::VNSRAWV,
11376 Opcode::VNSRAWX,
11377 Opcode::VNSRLWI,
11378 Opcode::VNSRLWV,
11379 Opcode::VNSRLWX,
11380 Opcode::VORVI,
11381 Opcode::VORVV,
11382 Opcode::VORVX,
11383 Opcode::VPOPCM,
11384 Opcode::VREDANDVS,
11385 Opcode::VREDMAXVS,
11386 Opcode::VREDMAXUVS,
11387 Opcode::VREDMINVS,
11388 Opcode::VREDMINUVS,
11389 Opcode::VREDORVS,
11390 Opcode::VREDSUMVS,
11391 Opcode::VREDXORVS,
11392 Opcode::VREMVV,
11393 Opcode::VREMVX,
11394 Opcode::VREMUVV,
11395 Opcode::VREMUVX,
11396 Opcode::VREV8V,
11397 Opcode::VRGATHERVI,
11398 Opcode::VRGATHERVV,
11399 Opcode::VRGATHERVX,
11400 Opcode::VRGATHEREI16VV,
11401 Opcode::VROLVV,
11402 Opcode::VROLVX,
11403 Opcode::VRORVI,
11404 Opcode::VRORVV,
11405 Opcode::VRORVX,
11406 Opcode::VRSUBVI,
11407 Opcode::VRSUBVX,
11408 Opcode::VS1RV,
11409 Opcode::VS2RV,
11410 Opcode::VS4RV,
11411 Opcode::VS8RV,
11412 Opcode::VSADDVI,
11413 Opcode::VSADDVV,
11414 Opcode::VSADDVX,
11415 Opcode::VSADDUVI,
11416 Opcode::VSADDUVV,
11417 Opcode::VSADDUVX,
11418 Opcode::VSBCVVM,
11419 Opcode::VSBCVXM,
11420 Opcode::VSE16V,
11421 Opcode::VSE1V,
11422 Opcode::VSE32V,
11423 Opcode::VSE64V,
11424 Opcode::VSE8V,
11425 Opcode::VSETIVLI,
11426 Opcode::VSETVL,
11427 Opcode::VSETVLI,
11428 Opcode::VSEXTVF2,
11429 Opcode::VSEXTVF4,
11430 Opcode::VSEXTVF8,
11431 Opcode::VSHA2CHVV,
11432 Opcode::VSHA2CLVV,
11433 Opcode::VSHA2MSVV,
11434 Opcode::VSLIDE1DOWNVX,
11435 Opcode::VSLIDE1UPVX,
11436 Opcode::VSLIDEDOWNVI,
11437 Opcode::VSLIDEDOWNVX,
11438 Opcode::VSLIDEUPVI,
11439 Opcode::VSLIDEUPVX,
11440 Opcode::VSLLVI,
11441 Opcode::VSLLVV,
11442 Opcode::VSLLVX,
11443 Opcode::VSM3CVI,
11444 Opcode::VSM3MEVV,
11445 Opcode::VSM4KVI,
11446 Opcode::VSM4RVS,
11447 Opcode::VSM4RVV,
11448 Opcode::VSMV,
11449 Opcode::VSMULVV,
11450 Opcode::VSMULVX,
11451 Opcode::VSOXEI16V,
11452 Opcode::VSOXEI32V,
11453 Opcode::VSOXEI64V,
11454 Opcode::VSOXEI8V,
11455 Opcode::VSRAVI,
11456 Opcode::VSRAVV,
11457 Opcode::VSRAVX,
11458 Opcode::VSRLVI,
11459 Opcode::VSRLVV,
11460 Opcode::VSRLVX,
11461 Opcode::VSSE16V,
11462 Opcode::VSSE32V,
11463 Opcode::VSSE64V,
11464 Opcode::VSSE8V,
11465 Opcode::VSSRAVI,
11466 Opcode::VSSRAVV,
11467 Opcode::VSSRAVX,
11468 Opcode::VSSRLVI,
11469 Opcode::VSSRLVV,
11470 Opcode::VSSRLVX,
11471 Opcode::VSSUBVV,
11472 Opcode::VSSUBVX,
11473 Opcode::VSSUBUVV,
11474 Opcode::VSSUBUVX,
11475 Opcode::VSUBVV,
11476 Opcode::VSUBVX,
11477 Opcode::VSUXEI16V,
11478 Opcode::VSUXEI32V,
11479 Opcode::VSUXEI64V,
11480 Opcode::VSUXEI8V,
11481 Opcode::VWADDVV,
11482 Opcode::VWADDVX,
11483 Opcode::VWADDWV,
11484 Opcode::VWADDWX,
11485 Opcode::VWADDUVV,
11486 Opcode::VWADDUVX,
11487 Opcode::VWADDUWV,
11488 Opcode::VWADDUWX,
11489 Opcode::VWMACCVV,
11490 Opcode::VWMACCVX,
11491 Opcode::VWMACCSUVV,
11492 Opcode::VWMACCSUVX,
11493 Opcode::VWMACCUVV,
11494 Opcode::VWMACCUVX,
11495 Opcode::VWMACCUSVX,
11496 Opcode::VWMULVV,
11497 Opcode::VWMULVX,
11498 Opcode::VWMULSUVV,
11499 Opcode::VWMULSUVX,
11500 Opcode::VWMULUVV,
11501 Opcode::VWMULUVX,
11502 Opcode::VWREDSUMVS,
11503 Opcode::VWREDSUMUVS,
11504 Opcode::VWSLLVI,
11505 Opcode::VWSLLVV,
11506 Opcode::VWSLLVX,
11507 Opcode::VWSUBVV,
11508 Opcode::VWSUBVX,
11509 Opcode::VWSUBWV,
11510 Opcode::VWSUBWX,
11511 Opcode::VWSUBUVV,
11512 Opcode::VWSUBUVX,
11513 Opcode::VWSUBUWV,
11514 Opcode::VWSUBUWX,
11515 Opcode::VXORVI,
11516 Opcode::VXORVV,
11517 Opcode::VXORVX,
11518 Opcode::VZEXTVF2,
11519 Opcode::VZEXTVF4,
11520 Opcode::VZEXTVF8,
11521 Opcode::WFI,
11522 Opcode::WRSNTO,
11523 Opcode::WRSSTO,
11524 Opcode::XNOR,
11525 Opcode::XOR,
11526 Opcode::XORI,
11527 Opcode::XPERM4,
11528 Opcode::XPERM8,
11529 Opcode::ZEXTB,
11530 Opcode::ZEXTH,
11531 Opcode::ZEXTHRV32,
11532 Opcode::ZEXTW,
11533 Opcode::ZIP,
11534];
11535
11536pub static SHORT_OPCODE: [bool; 1039] = [
11537 false, false, false, false, false, false, false, false, false, false, false, false, false,
11538 false, false, false, false, false, false, false, false, false, false, false, false, false,
11539 false, false, false, false, false, false, false, false, false, false, false, false, false,
11540 false, false, false, false, false, false, false, false, false, false, false, false, false,
11541 false, false, false, false, false, false, false, false, false, false, false, false, false,
11542 false, false, false, false, false, false, false, false, false, false, false, false, false,
11543 false, false, false, false, false, false, false, false, false, false, false, false, true, true,
11544 true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
11545 true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
11546 true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
11547 true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
11548 true, true, true, true, true, true, true, false, false, false, false, false, false, false,
11549 false, false, true, true, true, true, true, true, true, false, false, false, false, false,
11550 false, false, false, false, false, false, false, false, false, false, false, false, false,
11551 false, false, false, false, false, false, false, false, false, false, false, false, false,
11552 false, false, false, false, false, false, false, false, false, false, false, false, false,
11553 false, false, false, false, false, false, false, false, false, false, false, false, false,
11554 false, false, false, false, false, false, false, false, false, false, false, false, false,
11555 false, false, false, false, false, false, false, false, false, false, false, false, false,
11556 false, false, false, false, false, false, false, false, false, false, false, false, false,
11557 false, false, false, false, false, false, false, false, false, false, false, false, false,
11558 false, false, false, false, false, false, false, false, false, false, false, false, false,
11559 false, false, false, false, false, false, false, false, false, false, false, false, false,
11560 false, false, false, false, false, false, false, false, false, false, false, false, false,
11561 false, false, false, false, false, false, false, false, false, false, false, false, false,
11562 false, false, false, false, false, false, false, false, false, false, false, false, false,
11563 false, false, false, false, false, false, false, false, false, false, false, false, false,
11564 false, false, false, false, false, false, false, false, false, false, false, false, false,
11565 false, false, false, false, false, false, false, false, false, false, false, false, false,
11566 false, false, false, false, false, false, false, false, false, false, false, false, false,
11567 false, false, false, false, false, false, false, false, false, false, false, false, false,
11568 false, false, false, false, false, false, false, false, false, false, false, false, false,
11569 false, false, false, false, false, false, false, false, false, false, false, false, false,
11570 false, false, false, false, false, false, false, false, false, false, false, false, false,
11571 false, false, false, false, false, false, false, false, false, false, false, false, false,
11572 false, false, false, false, false, false, false, false, false, false, false, false, false,
11573 false, false, false, false, false, false, false, false, false, false, false, false, false,
11574 false, false, false, false, false, false, false, false, false, false, false, false, false,
11575 false, false, false, false, false, false, false, false, false, false, false, false, false,
11576 false, false, false, false, false, false, false, false, false, false, false, false, false,
11577 false, false, false, false, false, false, false, false, false, false, false, false, false,
11578 false, false, false, false, false, false, false, false, false, false, false, false, false,
11579 false, false, false, false, false, false, false, false, false, false, false, false, false,
11580 false, false, false, false, false, false, false, false, false, false, false, false, false,
11581 false, false, false, false, false, false, false, false, false, false, false, false, false,
11582 false, false, false, false, false, false, false, false, false, false, false, false, false,
11583 false, false, false, false, false, false, false, false, false, false, false, false, false,
11584 false, false, false, false, false, false, false, false, false, false, false, false, false,
11585 false, false, false, false, false, false, false, false, false, false, false, false, false,
11586 false, false, false, false, false, false, false, false, false, false, false, false, false,
11587 false, false, false, false, false, false, false, false, false, false, false, false, false,
11588 false, false, false, false, false, false, false, false, false, false, false, false, false,
11589 false, false, false, false, false, false, false, false, false, false, false, false, false,
11590 false, false, false, false, false, false, false, false, false, false, false, false, false,
11591 false, false, false, false, false, false, false, false, false, false, false, false, false,
11592 false, false, false, false, false, false, false, false, false, false, false, false, false,
11593 false, false, false, false, false, false, false, false, false, false, false, false, false,
11594 false, false, false, false, false, false, false, false, false, false, false, false, false,
11595 false, false, false, false, false, false, false, false, false, false, false, false, false,
11596 false, false, false, false, false, false, false, false, false, false, false, false, false,
11597 false, false, false, false, false, false, false, false, false, false, false, false, false,
11598 false, false, false, false, false, false, false, false, false, false, false, false, false,
11599 false, false, false, false, false, false, false, false, false, false, false, false, false,
11600 false, false, false, false, false, false, false, false, false, false, false, false, false,
11601 false, false, false, false, false, false, false, false, false, false, false, false, false,
11602 false, false, false, false, false, false, false, false, false, false, false, false, false,
11603 false, false, false, false, false, false, false, false, false, false, false, false, false,
11604 false, false, false, false, false, false, false, false, false, false, false, false, false,
11605 false, false, false, false, false, false, false, false, false, false, false, false, false,
11606 false, false, false, false, false, false, false, false, false, false, false, false, false,
11607 false, false, false, false, false, false, false, false, false, false, false, false, false,
11608 false, false, false, false, false, false, false, false, false, false, false, false, false,
11609 false, false, false, false, false, false, false, false, false, false, false, false, false,
11610 false, false, false, false, false, false, false, false, false, false, false, false, false,
11611 false, false, false, false, false, false, false, false, false, false, false, false, false,
11612 false, false, false, false, false, false, false, false, false, false, false, false, false,
11613 false, false, false, false, false, false, false, false, false, false, false, false, false,
11614 false, false, false, false, false, false, false, false, false, false, false, false, false,
11615 false, false, false, false, false, false, false, false, false, false,
11616];
11617pub const SHORT_OPCODES: [Opcode; 80] = [
11618 Opcode::CADD,
11619 Opcode::CADDI,
11620 Opcode::CADDI16SP,
11621 Opcode::CADDI4SPN,
11622 Opcode::CADDIW,
11623 Opcode::CADDW,
11624 Opcode::CAND,
11625 Opcode::CANDI,
11626 Opcode::CBEQZ,
11627 Opcode::CBNEZ,
11628 Opcode::CEBREAK,
11629 Opcode::CFLD,
11630 Opcode::CFLDSP,
11631 Opcode::CFLW,
11632 Opcode::CFLWSP,
11633 Opcode::CFSD,
11634 Opcode::CFSDSP,
11635 Opcode::CFSW,
11636 Opcode::CFSWSP,
11637 Opcode::CJ,
11638 Opcode::CJAL,
11639 Opcode::CJALR,
11640 Opcode::CJR,
11641 Opcode::CLBU,
11642 Opcode::CLD,
11643 Opcode::CLDSP,
11644 Opcode::CLH,
11645 Opcode::CLHU,
11646 Opcode::CLI,
11647 Opcode::CLUI,
11648 Opcode::CLW,
11649 Opcode::CLWSP,
11650 Opcode::CMOP1,
11651 Opcode::CMOP11,
11652 Opcode::CMOP13,
11653 Opcode::CMOP15,
11654 Opcode::CMOP3,
11655 Opcode::CMOP5,
11656 Opcode::CMOP7,
11657 Opcode::CMOP9,
11658 Opcode::CMOPN,
11659 Opcode::CMUL,
11660 Opcode::CMV,
11661 Opcode::CNOP,
11662 Opcode::CNOT,
11663 Opcode::CNTLALL,
11664 Opcode::CNTLP1,
11665 Opcode::CNTLPALL,
11666 Opcode::CNTLS1,
11667 Opcode::COR,
11668 Opcode::CSB,
11669 Opcode::CSD,
11670 Opcode::CSDSP,
11671 Opcode::CSEXTB,
11672 Opcode::CSEXTH,
11673 Opcode::CSEXTW,
11674 Opcode::CSH,
11675 Opcode::CSLLI,
11676 Opcode::CSLLIRV32,
11677 Opcode::CSRAI,
11678 Opcode::CSRAIRV32,
11679 Opcode::CSRLI,
11680 Opcode::CSRLIRV32,
11681 Opcode::CSSPOPCHKX5,
11682 Opcode::CSSPUSHX1,
11683 Opcode::CSUB,
11684 Opcode::CSUBW,
11685 Opcode::CSW,
11686 Opcode::CSWSP,
11687 Opcode::CXOR,
11688 Opcode::CZEXTB,
11689 Opcode::CZEXTH,
11690 Opcode::CZEXTW,
11691 Opcode::CMJALT,
11692 Opcode::CMMVA01S,
11693 Opcode::CMMVSA01,
11694 Opcode::CMPOP,
11695 Opcode::CMPOPRET,
11696 Opcode::CMPOPRETZ,
11697 Opcode::CMPUSH,
11698];
11699#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)]
11700#[repr(u32)]
11701pub enum Opcode {
11702 /// Integer add
11703 ///
11704 /// Add the value in rs1 to rs2, and store the result in rd.
11705 /// Any overflow is thrown away.
11706 ///
11707 /// # Forms
11708 /// Assembly: `add xd, xs1, xs2`
11709 ADD,
11710 /// Add unsigned word
11711 ///
11712 /// This instruction performs an XLEN-wide addition between rs2 and the
11713 /// zero-extended least-significant word of rs1.
11714 ///
11715 /// # Forms
11716 /// Assembly: `add.uw xd, xs1, xs2`
11717 ADDUW,
11718 /// Add immediate
11719 ///
11720 /// Add an immediate to the value in rs1, and store the result in rd
11721 ///
11722 /// # Forms
11723 /// Assembly: `addi xd, xs1, imm`
11724 ADDI,
11725 /// Add immediate word
11726 ///
11727 /// Add an immediate to the 32-bit value in rs1, and store the sign extended result in rd
11728 ///
11729 /// # Forms
11730 /// Assembly: `addiw xd, xs1, imm`
11731 ADDIW,
11732 /// Add word
11733 ///
11734 /// Add the 32-bit values in rs1 to rs2, and store the sign-extended result in rd.
11735 /// Any overflow is thrown away.
11736 ///
11737 /// # Forms
11738 /// Assembly: `addw xd, xs1, xs2`
11739 ADDW,
11740 /// RISC-V `aes32dsi` instruction.
11741 ///
11742 /// # Forms
11743 /// Assembly: `aes32dsi xd, xs1, xs2, bs`
11744 AES32DSI,
11745 /// RISC-V `aes32dsmi` instruction.
11746 ///
11747 /// # Forms
11748 /// Assembly: `aes32dsmi xd, xs1, xs2, bs`
11749 AES32DSMI,
11750 /// RISC-V `aes32esi` instruction.
11751 ///
11752 /// # Forms
11753 /// Assembly: `aes32esi xd, xs1, xs2, bs`
11754 AES32ESI,
11755 /// RISC-V `aes32esmi` instruction.
11756 ///
11757 /// # Forms
11758 /// Assembly: `aes32esmi xd, xs1, xs2, bs`
11759 AES32ESMI,
11760 /// RISC-V `aes64ds` instruction.
11761 ///
11762 /// # Forms
11763 /// Assembly: `aes64ds xd, xs1, xs2`
11764 AES64DS,
11765 /// RISC-V `aes64dsm` instruction.
11766 ///
11767 /// # Forms
11768 /// Assembly: `aes64dsm xd, xs1, xs2`
11769 AES64DSM,
11770 /// RISC-V `aes64es` instruction.
11771 ///
11772 /// # Forms
11773 /// Assembly: `aes64es xd, xs1, xs2`
11774 AES64ES,
11775 /// RISC-V `aes64esm` instruction.
11776 ///
11777 /// # Forms
11778 /// Assembly: `aes64esm xd, xs1, xs2`
11779 AES64ESM,
11780 /// RISC-V `aes64im` instruction.
11781 ///
11782 /// # Forms
11783 /// Assembly: `aes64im xd, xs1`
11784 AES64IM,
11785 /// RISC-V `aes64ks1i` instruction.
11786 ///
11787 /// # Forms
11788 /// Assembly: `aes64ks1i xd, xs1, rnum`
11789 AES64KS1I,
11790 /// RISC-V `aes64ks2` instruction.
11791 ///
11792 /// # Forms
11793 /// Assembly: `aes64ks2 xd, xs1, xs2`
11794 AES64KS2,
11795 /// RISC-V `amoadd.b` instruction.
11796 ///
11797 /// # Forms
11798 /// Assembly: `amoadd.b xd, xs1, xs2, aq, rl`
11799 AMOADDB,
11800 /// Atomic fetch-and-add doubleword
11801 ///
11802 /// Atomically:
11803 ///
11804 /// * Load the doubleword at address _rs1_
11805 /// * Write the loaded value into _rd_
11806 /// * Add the value of register _rs2_ to the loaded value
11807 /// * Write the sum to the address in _rs1_
11808 ///
11809 /// # Forms
11810 /// Assembly: `amoadd.d xd, xs2, (xs1)`
11811 AMOADDD,
11812 /// RISC-V `amoadd.h` instruction.
11813 ///
11814 /// # Forms
11815 /// Assembly: `amoadd.h xd, xs1, xs2, aq, rl`
11816 AMOADDH,
11817 /// Atomic fetch-and-add word
11818 ///
11819 /// Atomically:
11820 ///
11821 /// * Load the word at address _rs1_
11822 /// * Write the sign-extended value into _rd_
11823 /// * Add the least-significant word of register _rs2_ to the loaded value
11824 /// * Write the sum to the address in _rs1_
11825 ///
11826 /// # Forms
11827 /// Assembly: `amoadd.w xd, xs2, (xrs1)`
11828 AMOADDW,
11829 /// RISC-V `amoand.b` instruction.
11830 ///
11831 /// # Forms
11832 /// Assembly: `amoand.b xd, xs1, xs2, aq, rl`
11833 AMOANDB,
11834 /// Atomic fetch-and-and doubleword
11835 ///
11836 /// Atomically:
11837 ///
11838 /// * Load the doubleword at address _rs1_
11839 /// * Write the loaded value into _rd_
11840 /// * AND the value of register _rs2_ to the loaded value
11841 /// * Write the result to the address in _rs1_
11842 ///
11843 /// # Forms
11844 /// Assembly: `amoand.d xd, xs2, (xrs1)`
11845 AMOANDD,
11846 /// RISC-V `amoand.h` instruction.
11847 ///
11848 /// # Forms
11849 /// Assembly: `amoand.h xd, xs1, xs2, aq, rl`
11850 AMOANDH,
11851 /// Atomic fetch-and-and word
11852 ///
11853 /// Atomically:
11854 ///
11855 /// * Load the word at address _rs1_
11856 /// * Write the sign-extended value into _rd_
11857 /// * AND the least-significant word of register _rs2_ to the loaded value
11858 /// * Write the result to the address in _rs1_
11859 ///
11860 /// # Forms
11861 /// Assembly: `amoand.w xd, xs2, (xrs1)`
11862 AMOANDW,
11863 /// RISC-V `amocas.b` instruction.
11864 ///
11865 /// # Forms
11866 /// Assembly: `amocas.b xd, xs1, xs2, aq, rl`
11867 AMOCASB,
11868 /// RISC-V `amocas.d` instruction.
11869 ///
11870 /// # Forms
11871 /// Assembly: `amocas.d xd, xs1, xs2, aq, rl`
11872 AMOCASD,
11873 /// RISC-V `amocas.h` instruction.
11874 ///
11875 /// # Forms
11876 /// Assembly: `amocas.h xd, xs1, xs2, aq, rl`
11877 AMOCASH,
11878 /// RISC-V `amocas.q` instruction.
11879 ///
11880 /// # Forms
11881 /// Assembly: `amocas.q xd, xs1, xs2, aq, rl`
11882 AMOCASQ,
11883 /// RISC-V `amocas.w` instruction.
11884 ///
11885 /// # Forms
11886 /// Assembly: `amocas.w xd, xs1, xs2, aq, rl`
11887 AMOCASW,
11888 /// RISC-V `amomax.b` instruction.
11889 ///
11890 /// # Forms
11891 /// Assembly: `amomax.b xd, xs1, xs2, aq, rl`
11892 AMOMAXB,
11893 /// Atomic MAX doubleword
11894 ///
11895 /// Atomically:
11896 ///
11897 /// * Load the doubleword at address _rs1_
11898 /// * Write the loaded value into _rd_
11899 /// * Signed compare the value of register _rs2_ to the loaded value, and select the maximum value
11900 /// * Write the maximum to the address in _rs1_
11901 ///
11902 /// # Forms
11903 /// Assembly: `amomax.d xd, xs2, (xrs1)`
11904 AMOMAXD,
11905 /// RISC-V `amomax.h` instruction.
11906 ///
11907 /// # Forms
11908 /// Assembly: `amomax.h xd, xs1, xs2, aq, rl`
11909 AMOMAXH,
11910 /// Atomic MAX word
11911 ///
11912 /// Atomically:
11913 ///
11914 /// * Load the word at address _rs1_
11915 /// * Write the sign-extended value into _rd_
11916 /// * Signed compare the least-significant word of register _rs2_ to the loaded value, and select the maximum value
11917 /// * Write the maximum to the address in _rs1_
11918 ///
11919 /// # Forms
11920 /// Assembly: `amomax.w xd, xs2, (xrs1)`
11921 AMOMAXW,
11922 /// RISC-V `amomaxu.b` instruction.
11923 ///
11924 /// # Forms
11925 /// Assembly: `amomaxu.b xd, xs1, xs2, aq, rl`
11926 AMOMAXUB,
11927 /// Atomic MAX unsigned doubleword
11928 ///
11929 /// Atomically:
11930 ///
11931 /// * Load the doubleword at address _rs1_
11932 /// * Write the loaded value into _rd_
11933 /// * Unsigned compare the value of register _rs2_ to the loaded value, and select the maximum value
11934 /// * Write the maximum to the address in _rs1_
11935 ///
11936 /// # Forms
11937 /// Assembly: `amomaxu.d xd, xs2, (xrs1)`
11938 AMOMAXUD,
11939 /// RISC-V `amomaxu.h` instruction.
11940 ///
11941 /// # Forms
11942 /// Assembly: `amomaxu.h xd, xs1, xs2, aq, rl`
11943 AMOMAXUH,
11944 /// Atomic MAX unsigned word
11945 ///
11946 /// Atomically:
11947 ///
11948 /// * Load the word at address _rs1_
11949 /// * Write the sign-extended value into _rd_
11950 /// * Unsigned compare the least-significant word of register _rs2_ to the loaded value, and select the maximum value
11951 /// * Write the maximum to the address in _rs1_
11952 ///
11953 /// # Forms
11954 /// Assembly: `amomaxu.w xd, xs2, (xrs1)`
11955 AMOMAXUW,
11956 /// RISC-V `amomin.b` instruction.
11957 ///
11958 /// # Forms
11959 /// Assembly: `amomin.b xd, xs1, xs2, aq, rl`
11960 AMOMINB,
11961 /// Atomic MIN doubleword
11962 ///
11963 /// Atomically:
11964 ///
11965 /// * Load the doubleword at address _rs1_
11966 /// * Write the loaded value into _rd_
11967 /// * Signed compare the value of register _rs2_ to the loaded value, and select the minimum value
11968 /// * Write the minimum to the address in _rs1_
11969 ///
11970 /// # Forms
11971 /// Assembly: `amomin.d xd, xs2, (xrs1)`
11972 AMOMIND,
11973 /// RISC-V `amomin.h` instruction.
11974 ///
11975 /// # Forms
11976 /// Assembly: `amomin.h xd, xs1, xs2, aq, rl`
11977 AMOMINH,
11978 /// Atomic MIN word
11979 ///
11980 /// Atomically:
11981 ///
11982 /// * Load the word at address _rs1_
11983 /// * Write the sign-extended value into _rd_
11984 /// * Signed compare the least-significant word of register _rs2_ to the loaded value, and select the minimum value
11985 /// * Write the result to the address in _rs1_
11986 ///
11987 /// # Forms
11988 /// Assembly: `amomin.w xd, xs2, (xrs1)`
11989 AMOMINW,
11990 /// RISC-V `amominu.b` instruction.
11991 ///
11992 /// # Forms
11993 /// Assembly: `amominu.b xd, xs1, xs2, aq, rl`
11994 AMOMINUB,
11995 /// Atomic MIN unsigned doubleword
11996 ///
11997 /// Atomically:
11998 ///
11999 /// * Load the doubleword at address _rs1_
12000 /// * Write the loaded value into _rd_
12001 /// * Unsigned compare the value of register _rs2_ to the loaded value, and select the minimum value
12002 /// * Write the minimum to the address in _rs1_
12003 ///
12004 /// # Forms
12005 /// Assembly: `amominu.d xd, xs2, (xrs1)`
12006 AMOMINUD,
12007 /// RISC-V `amominu.h` instruction.
12008 ///
12009 /// # Forms
12010 /// Assembly: `amominu.h xd, xs1, xs2, aq, rl`
12011 AMOMINUH,
12012 /// Atomic MIN unsigned word
12013 ///
12014 /// Atomically:
12015 ///
12016 /// * Load the word at address _rs1_
12017 /// * Write the sign-extended value into _rd_
12018 /// * Unsigned compare the least-significant word of register _rs2_ to the loaded word, and select the minimum value
12019 /// * Write the result to the address in _rs1_
12020 ///
12021 /// # Forms
12022 /// Assembly: `amominu.w xd, xs2, (xrs1)`
12023 AMOMINUW,
12024 /// RISC-V `amoor.b` instruction.
12025 ///
12026 /// # Forms
12027 /// Assembly: `amoor.b xd, xs1, xs2, aq, rl`
12028 AMOORB,
12029 /// Atomic fetch-and-or doubleword
12030 ///
12031 /// Atomically:
12032 ///
12033 /// * Load the doubleword at address _rs1_
12034 /// * Write the loaded value into _rd_
12035 /// * OR the value of register _rs2_ to the loaded value
12036 /// * Write the result to the address in _rs1_
12037 ///
12038 /// # Forms
12039 /// Assembly: `amoor.d xd, xs2, (xrs1)`
12040 AMOORD,
12041 /// RISC-V `amoor.h` instruction.
12042 ///
12043 /// # Forms
12044 /// Assembly: `amoor.h xd, xs1, xs2, aq, rl`
12045 AMOORH,
12046 /// Atomic fetch-and-or word
12047 ///
12048 /// Atomically:
12049 ///
12050 /// * Load the word at address _rs1_
12051 /// * Write the sign-extended value into _rd_
12052 /// * OR the least-significant word of register _rs2_ to the loaded value
12053 /// * Write the result to the address in _rs1_
12054 ///
12055 /// # Forms
12056 /// Assembly: `amoor.w xd, xs2, (xrs1)`
12057 AMOORW,
12058 /// RISC-V `amoswap.b` instruction.
12059 ///
12060 /// # Forms
12061 /// Assembly: `amoswap.b xd, xs1, xs2, aq, rl`
12062 AMOSWAPB,
12063 /// Atomic SWAP doubleword
12064 ///
12065 /// Atomically:
12066 ///
12067 /// * Load the doubleword at address _rs1_
12068 /// * Write the value into _rd_
12069 /// * Store the value of register _rs2_ to the address in _rs1_
12070 ///
12071 /// # Forms
12072 /// Assembly: `amoswap.d xd, xs2, (xrs1)`
12073 AMOSWAPD,
12074 /// RISC-V `amoswap.h` instruction.
12075 ///
12076 /// # Forms
12077 /// Assembly: `amoswap.h xd, xs1, xs2, aq, rl`
12078 AMOSWAPH,
12079 /// Atomic SWAP word
12080 ///
12081 /// Atomically:
12082 ///
12083 /// * Load the word at address _rs1_
12084 /// * Write the sign-extended value into _rd_
12085 /// * Store the least-significant word of register _rs2_ to the address in _rs1_
12086 ///
12087 /// # Forms
12088 /// Assembly: `amoswap.w xd, xs2, (xrs1)`
12089 AMOSWAPW,
12090 /// RISC-V `amoxor.b` instruction.
12091 ///
12092 /// # Forms
12093 /// Assembly: `amoxor.b xd, xs1, xs2, aq, rl`
12094 AMOXORB,
12095 /// Atomic fetch-and-xor doubleword
12096 ///
12097 /// Atomically:
12098 ///
12099 /// * Load the doubleword at address _rs1_
12100 /// * Write the loaded value into _rd_
12101 /// * XOR the value of register _rs2_ to the loaded value
12102 /// * Write the result to the address in _rs1_
12103 ///
12104 /// # Forms
12105 /// Assembly: `amoxor.d xd, xs2, (xrs1)`
12106 AMOXORD,
12107 /// RISC-V `amoxor.h` instruction.
12108 ///
12109 /// # Forms
12110 /// Assembly: `amoxor.h xd, xs1, xs2, aq, rl`
12111 AMOXORH,
12112 /// Atomic fetch-and-xor word
12113 ///
12114 /// Atomically:
12115 ///
12116 /// * Load the word at address _rs1_
12117 /// * Write the sign-extended value into _rd_
12118 /// * XOR the least-significant word of register _rs2_ to the loaded value
12119 /// * Write the result to the address in _rs1_
12120 ///
12121 /// # Forms
12122 /// Assembly: `amoxor.w xd, xs2, (xrs1)`
12123 AMOXORW,
12124 /// And
12125 ///
12126 /// And rs1 with rs2, and store the result in rd
12127 ///
12128 /// # Forms
12129 /// Assembly: `and xd, xs1, xs2`
12130 AND,
12131 /// And immediate
12132 ///
12133 /// And an immediate to the value in rs1, and store the result in rd
12134 ///
12135 /// # Forms
12136 /// Assembly: `andi xd, xs1, imm`
12137 ANDI,
12138 /// AND with inverted operand
12139 ///
12140 /// This instruction performs the bitwise logical AND operation between `rs1` and the
12141 /// bitwise inversion of `rs2`.
12142 ///
12143 /// # Forms
12144 /// Assembly: `andn xd, xs1, xs2`
12145 ANDN,
12146 /// Add upper immediate to pc
12147 ///
12148 /// Add an immediate to the current PC.
12149 ///
12150 /// # Forms
12151 /// Assembly: `auipc xd, imm`
12152 AUIPC,
12153 /// Single-Bit clear (Register)
12154 ///
12155 /// This instruction returns rs1 with a single bit cleared at the index specified in rs2.
12156 /// The index is read from the lower log2(XLEN) bits of rs2.
12157 ///
12158 /// # Forms
12159 /// Assembly: `bclr xd, xs1, xs2`
12160 BCLR,
12161 /// Single-Bit clear (Immediate)
12162 ///
12163 /// This instruction returns rs1 with a single bit cleared at the index specified in shamt. The
12164 /// index is read from the lower log2(XLEN) bits of shamt. For RV32, the encodings corresponding
12165 /// to shamt\[5\]=1 are reserved.
12166 ///
12167 /// # Forms
12168 /// Assembly: `bclri xd, xs1, shamt`
12169 BCLRI,
12170 /// Single-Bit clear (Immediate)
12171 ///
12172 /// This instruction returns rs1 with a single bit cleared at the index specified in shamt. The
12173 /// index is read from the lower log2(XLEN) bits of shamt. For RV32, the encodings corresponding
12174 /// to shamt\[5\]=1 are reserved.
12175 ///
12176 /// # Forms
12177 /// Assembly: `bclri.rv32 xd, xs1, shamt`
12178 BCLRIRV32,
12179 /// Branch if equal
12180 ///
12181 /// Branch to PC + imm if
12182 /// the value in register rs1 is equal to the value in register rs2.
12183 ///
12184 /// Raise a `MisalignedAddress` exception if PC + imm is misaligned.
12185 ///
12186 /// # Forms
12187 /// Assembly: `beq xs1, xs2, imm`
12188 BEQ,
12189 /// RISC-V `beqz` instruction.
12190 ///
12191 /// # Forms
12192 /// Assembly: `beqz rs1 bimm12lohi`
12193 BEQZ,
12194 /// Single-Bit extract (Register)
12195 ///
12196 /// This instruction returns a single bit extracted from rs1 at the index specified in rs2.
12197 /// The index is read from the lower log2(XLEN) bits of rs2.
12198 ///
12199 /// # Forms
12200 /// Assembly: `bext xd, xs1, xs2`
12201 BEXT,
12202 /// Single-Bit extract (Immediate)
12203 ///
12204 /// This instruction returns a single bit extracted from rs1 at the index specified in rs2.
12205 /// The index is read from the lower log2(XLEN) bits of shamt. For RV32, the encodings
12206 /// corresponding to shamt\[5\]=1 are reserved.
12207 ///
12208 /// # Forms
12209 /// Assembly: `bexti xd, xs1, shamt`
12210 BEXTI,
12211 /// Single-Bit extract (Immediate)
12212 ///
12213 /// This instruction returns a single bit extracted from rs1 at the index specified in rs2.
12214 /// The index is read from the lower log2(XLEN) bits of shamt. For RV32, the encodings
12215 /// corresponding to shamt\[5\]=1 are reserved.
12216 ///
12217 /// # Forms
12218 /// Assembly: `bexti.rv32 xd, xs1, shamt`
12219 BEXTIRV32,
12220 /// Branch if greater than or equal
12221 ///
12222 /// Branch to PC + imm if
12223 /// the signed value in register rs1 is greater than or equal to the signed value in register rs2.
12224 ///
12225 /// Raise a `MisalignedAddress` exception if PC + imm is misaligned.
12226 ///
12227 /// # Forms
12228 /// Assembly: `bge xs1, xs2, imm`
12229 BGE,
12230 /// Branch if greater than or equal unsigned
12231 ///
12232 /// Branch to PC + imm if
12233 /// the unsigned value in register rs1 is greater than or equal to the unsigned value in register rs2.
12234 ///
12235 /// Raise a `MisalignedAddress` exception if PC + imm is misaligned.
12236 ///
12237 /// # Forms
12238 /// Assembly: `bgeu xs1, xs2, imm`
12239 BGEU,
12240 /// RISC-V `bgez` instruction.
12241 ///
12242 /// # Forms
12243 /// Assembly: `bgez rs1 bimm12lohi`
12244 BGEZ,
12245 /// RISC-V `bgt` instruction.
12246 ///
12247 /// # Forms
12248 /// Assembly: `bgt rs1 rs2 bimm12lohi`
12249 BGT,
12250 /// RISC-V `bgtu` instruction.
12251 ///
12252 /// # Forms
12253 /// Assembly: `bgtu rs1 rs2 bimm12lohi`
12254 BGTU,
12255 /// RISC-V `bgtz` instruction.
12256 ///
12257 /// # Forms
12258 /// Assembly: `bgtz rs2 bimm12lohi`
12259 BGTZ,
12260 /// Single-Bit invert (Register)
12261 ///
12262 /// This instruction returns rs1 with a single bit inverted at the index specified in rs2.
12263 /// The index is read from the lower log2(XLEN) bits of rs2.
12264 ///
12265 /// # Forms
12266 /// Assembly: `binv xd, xs1, xs2`
12267 BINV,
12268 /// Single-Bit invert (Immediate)
12269 ///
12270 /// This instruction returns rs1 with a single bit inverted at the index specified in shamt.
12271 /// The index is read from the lower log2(XLEN) bits of shamt.
12272 /// For RV32, the encodings corresponding to shamt\[5\]=1 are reserved.
12273 ///
12274 /// # Forms
12275 /// Assembly: `binvi xd, xs1, shamt`
12276 BINVI,
12277 /// Single-Bit invert (Immediate)
12278 ///
12279 /// This instruction returns rs1 with a single bit inverted at the index specified in shamt.
12280 /// The index is read from the lower log2(XLEN) bits of shamt.
12281 /// For RV32, the encodings corresponding to shamt\[5\]=1 are reserved.
12282 ///
12283 /// # Forms
12284 /// Assembly: `binvi.rv32 xd, xs1, shamt`
12285 BINVIRV32,
12286 /// RISC-V `ble` instruction.
12287 ///
12288 /// # Forms
12289 /// Assembly: `ble rs1 rs2 bimm12lohi`
12290 BLE,
12291 /// RISC-V `bleu` instruction.
12292 ///
12293 /// # Forms
12294 /// Assembly: `bleu rs1 rs2 bimm12lohi`
12295 BLEU,
12296 /// RISC-V `blez` instruction.
12297 ///
12298 /// # Forms
12299 /// Assembly: `blez rs2 bimm12lohi`
12300 BLEZ,
12301 /// Branch if less than
12302 ///
12303 /// Branch to PC + imm if
12304 /// the signed value in register rs1 is less than the signed value in register rs2.
12305 ///
12306 /// Raise a `MisalignedAddress` exception if PC + imm is misaligned.
12307 ///
12308 /// # Forms
12309 /// Assembly: `blt xs1, xs2, imm`
12310 BLT,
12311 /// Branch if less than unsigned
12312 ///
12313 /// Branch to PC + imm if
12314 /// the unsigned value in register rs1 is less than the unsigned value in register rs2.
12315 ///
12316 /// Raise a `MisalignedAddress` exception if PC + imm is misaligned.
12317 ///
12318 /// # Forms
12319 /// Assembly: `bltu xs1, xs2, imm`
12320 BLTU,
12321 /// RISC-V `bltz` instruction.
12322 ///
12323 /// # Forms
12324 /// Assembly: `bltz rs1 bimm12lohi`
12325 BLTZ,
12326 /// Branch if not equal
12327 ///
12328 /// Branch to PC + imm if
12329 /// the value in register rs1 is not equal to the value in register rs2.
12330 ///
12331 /// Raise a `MisalignedAddress` exception if PC + imm is misaligned.
12332 ///
12333 /// # Forms
12334 /// Assembly: `bne xs1, xs2, imm`
12335 BNE,
12336 /// RISC-V `bnez` instruction.
12337 ///
12338 /// # Forms
12339 /// Assembly: `bnez rs1 bimm12lohi`
12340 BNEZ,
12341 /// Reverse bits in bytes
12342 ///
12343 /// This instruction reverses the order of the bits in every byte of a register.
12344 ///
12345 /// # Forms
12346 /// Assembly: `brev8 xd, xs1`
12347 BREV8,
12348 /// Single-Bit set (Register)
12349 ///
12350 /// This instruction returns rs1 with a single bit set at the index specified in rs2.
12351 /// The index is read from the lower log2(XLEN) bits of rs2.
12352 ///
12353 /// # Forms
12354 /// Assembly: `bset xd, xs1, xs2`
12355 BSET,
12356 /// Single-Bit set (Immediate)
12357 ///
12358 /// This instruction returns rs1 with a single bit set at the index specified in shamt.
12359 /// The index is read from the lower log2(XLEN) bits of shamt.
12360 /// For RV32, the encodings corresponding to shamt\[5\]=1 are reserved.
12361 ///
12362 /// # Forms
12363 /// Assembly: `bseti xd, xs1, shamt`
12364 BSETI,
12365 /// Single-Bit set (Immediate)
12366 ///
12367 /// This instruction returns rs1 with a single bit set at the index specified in shamt.
12368 /// The index is read from the lower log2(XLEN) bits of shamt.
12369 /// For RV32, the encodings corresponding to shamt\[5\]=1 are reserved.
12370 ///
12371 /// # Forms
12372 /// Assembly: `bseti.rv32 xd, xs1, shamt`
12373 BSETIRV32,
12374 /// Add
12375 ///
12376 /// Add the value in rs2 to rd, and store the result in rd.
12377 /// C.ADD expands into `add rd, rd, rs2`.
12378 ///
12379 /// # Forms
12380 /// Assembly: `c.add xd, rs2`
12381 CADD,
12382 /// Add a sign-extended non-zero immediate
12383 ///
12384 /// C.ADDI adds the non-zero sign-extended 6-bit immediate to the value in register rd then writes the result to rd.
12385 /// C.ADDI expands into `addi rd, rd, imm`.
12386 /// C.ADDI is only valid when rd ≠ x0 and imm ≠ 0.
12387 /// The code points with rd=x0 encode the C.NOP instruction; the remaining code points with imm=0 encode HINTs.
12388 ///
12389 /// # Forms
12390 /// Assembly: `c.addi xd, imm`
12391 CADDI,
12392 /// Add a sign-extended non-zero immediate
12393 ///
12394 /// C.ADDI16SP adds the non-zero sign-extended 6-bit immediate to the value in the stack pointer (sp=x2), where the immediate is scaled to represent multiples of 16 in the range (-512,496).
12395 /// C.ADDI16SP is used to adjust the stack pointer in procedure prologues and epilogues.
12396 /// It expands into `addi x2, x2, nzimm\[9:4\]`.
12397 /// C.ADDI16SP is only valid when nzimm ≠ 0; the code point with nzimm=0 is reserved.
12398 ///
12399 /// # Forms
12400 /// Assembly: `c.addi16sp imm`
12401 CADDI16SP,
12402 /// Add a zero-extended non-zero immediate, scaled by 4, to the stack pointer
12403 ///
12404 /// Adds a zero-extended non-zero immediate, scaled by 4, to the stack pointer, x2, and writes the result to rd'.
12405 /// This instruction is used to generate pointers to stack-allocated variables.
12406 /// It expands to `addi rd', x2, nzuimm\[9:2\]`.
12407 /// C.ADDI4SPN is only valid when nzuimm ≠ 0; the code points with nzuimm=0 are reserved.
12408 ///
12409 /// # Forms
12410 /// Assembly: `c.addi4spn xd, imm`
12411 CADDI4SPN,
12412 /// Add a sign-extended non-zero immediate
12413 ///
12414 /// C.ADDIW is an RV64C/RV128C-only instruction that performs the same computation as C.ADDI but produces a 32-bit result, then sign-extends result to 64 bits.
12415 /// C.ADDIW expands into `addiw rd, rd, imm`.
12416 /// The immediate can be zero for C.ADDIW, where this corresponds to `sext.w rd`.
12417 /// C.ADDIW is only valid when rd ≠ x0; the code points with rd=x0 are reserved.
12418 ///
12419 /// # Forms
12420 /// Assembly: `c.addiw xd, imm`
12421 CADDIW,
12422 /// Add word
12423 ///
12424 /// Add the 32-bit values in rs2 from rd, and store the result in rd.
12425 /// The rd and rs2 register indexes should be used as rd+8 and rs2+8 (registers x8-x15).
12426 /// C.ADDW expands into `addw rd, rd, rs2`.
12427 ///
12428 /// # Forms
12429 /// Assembly: `c.addw xd, rs2`
12430 CADDW,
12431 /// And
12432 ///
12433 /// And rd with rs2, and store the result in rd
12434 /// The rd and rs2 register indexes should be used as rd+8 and rs2+8 (registers x8-x15).
12435 /// C.AND expands into `and rd, rd, rs2`.
12436 ///
12437 /// # Forms
12438 /// Assembly: `c.and xd, rs2`
12439 CAND,
12440 /// And immediate
12441 ///
12442 /// And an immediate to the value in rd, and store the result in rd.
12443 /// The rd register index should be used as rd+8 (registers x8-x15).
12444 /// C.ANDI expands into `andi rd, rd, imm`.
12445 ///
12446 /// # Forms
12447 /// Assembly: `c.andi xd, imm`
12448 CANDI,
12449 /// Branch if Equal Zero
12450 ///
12451 /// C.BEQZ performs conditional control transfers. The offset is sign-extended and added to the pc to form the branch target address. It can therefore target a ±256 B range. C.BEQZ takes the branch if the value in register rs1' is zero.
12452 /// It expands to `beq` `rs1, x0, offset`.
12453 ///
12454 /// # Forms
12455 /// Assembly: `c.beqz xs1, imm`
12456 CBEQZ,
12457 /// Branch if NOT Equal Zero
12458 ///
12459 /// C.BEQZ performs conditional control transfers. The offset is sign-extended and added to the pc to form the branch target address. It can therefore target a ±256 B range. C.BEQZ takes the branch if the value in register rs1' is NOT zero.
12460 /// It expands to `beq` `rs1, x0, offset`.
12461 ///
12462 /// # Forms
12463 /// Assembly: `c.bnez xs1, imm`
12464 CBNEZ,
12465 /// Breakpoint exception.
12466 ///
12467 /// The C.EBREAK instruction is used by debuggers to cause control to be transferred back to
12468 /// a debugging environment. Unless overridden by an external debug environment,
12469 /// C.EBREAK raises a breakpoint exception and performs no other operation.
12470 ///
12471 /// \[NOTE\]
12472 /// As described in the `C` Standard Extension for Compressed Instructions, the `c.ebreak`
12473 /// instruction performs the same operation as the EBREAK instruction.
12474 ///
12475 /// EBREAK causes the receiving privilege mode's epc register to be set to the address of
12476 /// the EBREAK instruction itself, not the address of the following instruction.
12477 /// As EBREAK causes a synchronous exception, it is not considered to retire,
12478 /// and should not increment the `minstret` CSR.
12479 ///
12480 /// # Forms
12481 /// Assembly: `c.ebreak " "`
12482 CEBREAK,
12483 /// Load double-precision
12484 ///
12485 /// Loads a double precision floating-point value from memory into register rd.
12486 /// It computes an effective address by adding the zero-extended offset, scaled by 8,
12487 /// to the base address in register rs1.
12488 /// It expands to `fld` `rd, offset(rs1)`.
12489 ///
12490 /// # Forms
12491 /// Assembly: `c.fld xd, imm(xs1)`
12492 CFLD,
12493 /// Load doubleword into floating-point register from stack
12494 ///
12495 /// Loads a double-precision floating-point value from memory into floating-point register rd.
12496 /// It computes its effective address by adding the zero-extended offset, scaled by 8,
12497 /// to the stack pointer, x2.
12498 /// It expands to `fld` `rd, offset(x2)`.
12499 ///
12500 /// # Forms
12501 /// Assembly: `c.fldsp fd, imm(sp)`
12502 CFLDSP,
12503 /// Load single-precision
12504 ///
12505 /// Loads a single precision floating-point value from memory into register rd.
12506 /// It computes an effective address by adding the zero-extended offset, scaled by 4,
12507 /// to the base address in register rs1.
12508 /// It expands to `flw` `rd, offset(rs1)`.
12509 ///
12510 /// # Forms
12511 /// Assembly: `c.flw xd, imm(xs1)`
12512 CFLW,
12513 /// Load word into floating-point register from stack
12514 ///
12515 /// Loads a single-precision floating-point value from memory into floating-point register rd.
12516 /// It computes its effective address by adding the zero-extended offset, scaled by 4,
12517 /// to the stack pointer, x2.
12518 /// It expands to `flw` `rd, offset(x2)`.
12519 ///
12520 /// # Forms
12521 /// Assembly: `c.flwsp fd, imm(sp)`
12522 CFLWSP,
12523 /// Store double-precision
12524 ///
12525 /// Stores a double precision floating-point value in register rs2 to memory.
12526 /// It computes an effective address by adding the zero-extended offset, scaled by 8,
12527 /// to the base address in register rs1.
12528 /// It expands to `fsd` `rs2, offset(rs1)`.
12529 ///
12530 /// # Forms
12531 /// Assembly: `c.fsd xs2, imm(xs1)`
12532 CFSD,
12533 /// Store double-precision value to stack
12534 ///
12535 /// Stores a double-precision floating-point value in floating-point register rs2 to memory.
12536 /// It computes an effective address by adding the zero-extended offset, scaled by 8,
12537 /// to the stack pointer, x2.
12538 /// It expands to `fsd` `rs2, offset(x2)`.
12539 ///
12540 /// # Forms
12541 /// Assembly: `c.fsdsp fs2, imm(sp)`
12542 CFSDSP,
12543 /// Store single-precision
12544 ///
12545 /// Stores a single precision floating-point value in register rs2 to memory.
12546 /// It computes an effective address by adding the zero-extended offset, scaled by 4,
12547 /// to the base address in register rs1.
12548 /// It expands to `fsw` `rs2, offset(rs1)`.
12549 ///
12550 /// # Forms
12551 /// Assembly: `c.fsw xs2, imm(xs1)`
12552 CFSW,
12553 /// Store single-precision value to stack
12554 ///
12555 /// Stores a single-precision floating-point value in floating-point register rs2 to memory.
12556 /// It computes an effective address by adding the zero-extended offset, scaled by 4,
12557 /// to the stack pointer, x2.
12558 /// It expands to `fsw` `rs2, offset(x2)`.
12559 ///
12560 /// # Forms
12561 /// Assembly: `c.fswsp fs2, imm(sp)`
12562 CFSWSP,
12563 /// Jump
12564 ///
12565 /// C.J performs an unconditional control transfer. The offset is sign-extended and added to the pc to form the jump target address. C.J can therefore target a ±2 KiB range.
12566 /// It expands to `jal` `x0, offset`.
12567 ///
12568 /// # Forms
12569 /// Assembly: `c.j imm`
12570 CJ,
12571 /// Jump and Link
12572 ///
12573 /// C.JAL is an RV32C-only instruction that performs the same operation as C.J, but additionally writes the address of the instruction following the jump (pc+2) to the link register, x1.
12574 /// It expands to `jal` `x1, offset`.
12575 ///
12576 /// # Forms
12577 /// Assembly: `c.jal imm`
12578 CJAL,
12579 /// Jump and Link Register.
12580 ///
12581 /// C.JALR (jump and link register) performs the same operation as C.JR, but additionally writes the address of the instruction following the jump (pc+2) to the link register, x1.
12582 /// C.JALR expands to jalr x1, 0(rs1).
12583 ///
12584 /// # Forms
12585 /// Assembly: `c.jalr xs1`
12586 CJALR,
12587 /// Jump Register
12588 ///
12589 /// C.JR (jump register) performs an unconditional control transfer to the address in register rs1.
12590 /// C.JR expands to jalr x0, 0(rs1).
12591 ///
12592 /// # Forms
12593 /// Assembly: `c.jr xs1`
12594 CJR,
12595 /// Load unsigned byte, 16-bit encoding
12596 ///
12597 /// Loads a 8-bit value from memory into register rd.
12598 /// It computes an effective address by adding the zero-extended offset, to the base address in register rs1.
12599 /// It expands to `lbu` `rd, offset(rs1)`.
12600 ///
12601 /// # Forms
12602 /// Assembly: `c.lbu xd, imm(xs1)`
12603 CLBU,
12604 /// Load double
12605 ///
12606 /// Loads a 64-bit value from memory into register rd.
12607 /// It computes an effective address by adding the zero-extended offset, scaled by 8,
12608 /// to the base address in register rs1.
12609 /// It expands to `ld` `rd, offset(rs1)`.
12610 ///
12611 /// # Forms
12612 /// Assembly: `c.ld xd, imm(xs1)`
12613 CLD,
12614 /// Load doubleword from stack pointer
12615 ///
12616 /// C.LDSP is an RV64C/RV128C-only instruction that loads a 64-bit value from memory
12617 /// into register rd.
12618 /// It computes its effective address by adding the zero-extended offset, scaled by 8,
12619 /// to the stack pointer, x2.
12620 /// It expands to `ld` `rd, offset(x2)`.
12621 /// C.LDSP is only valid when rd ≠ x0 the code points with rd=x0 are reserved.
12622 ///
12623 /// # Forms
12624 /// Assembly: `c.ldsp xd, imm(sp)`
12625 CLDSP,
12626 /// Load signed halfword, 16-bit encoding
12627 ///
12628 /// Loads a 16-bit value from memory into register rd.
12629 /// It computes an effective address by adding the zero-extended offset, to the base address in register rs1.
12630 /// It expands to `lh` `rd, offset(rs1)`.
12631 ///
12632 /// # Forms
12633 /// Assembly: `c.lh xd, imm(xs1)`
12634 CLH,
12635 /// Load unsigned halfword, 16-bit encoding
12636 ///
12637 /// Loads a 16-bit value from memory into register rd.
12638 /// It computes an effective address by adding the zero-extended offset, to the base address in register rs1.
12639 /// It expands to `lhu` `rd, offset(rs1)`.
12640 ///
12641 /// # Forms
12642 /// Assembly: `c.lhu xd, imm(xs1)`
12643 CLHU,
12644 /// Load the sign-extended 6-bit immediate
12645 ///
12646 /// C.LI loads the sign-extended 6-bit immediate, imm, into register rd.
12647 /// C.LI expands into `addi rd, x0, imm`.
12648 /// C.LI is only valid when rd ≠ x0; the code points with rd=x0 encode HINTs.
12649 ///
12650 /// # Forms
12651 /// Assembly: `c.li xd, imm`
12652 CLI,
12653 /// Load the non-zero 6-bit immediate field into bits 17-12 of the destination register
12654 ///
12655 /// C.LUI loads the non-zero 6-bit immediate field into bits 17-12 of the destination register, clears the bottom 12 bits, and sign-extends bit 17 into all higher bits of the destination.
12656 /// C.LUI expands into `lui rd, imm`.
12657 /// C.LUI is only valid when rd≠x0 and rd≠x2, and when the immediate is not equal to zero.
12658 /// The code points with imm=0 are reserved; the remaining code points with rd=x0 are HINTs; and the remaining code points with rd=x2 correspond to the C.ADDI16SP instruction
12659 ///
12660 /// # Forms
12661 /// Assembly: `c.lui xd, imm`
12662 CLUI,
12663 /// Load word
12664 ///
12665 /// Loads a 32-bit value from memory into register rd.
12666 /// It computes an effective address by adding the zero-extended offset, scaled by 4,
12667 /// to the base address in register rs1.
12668 /// It expands to `lw` `rd, offset(rs1)`.
12669 ///
12670 /// # Forms
12671 /// Assembly: `c.lw xd, imm(xs1)`
12672 CLW,
12673 /// Load word from stack pointer
12674 ///
12675 /// Loads a 32-bit value from memory into register rd.
12676 /// It computes an effective address by adding the zero-extended offset, scaled by 4,
12677 /// to the stack pointer, x2.
12678 /// It expands to `lw` `rd, offset(x2)`.
12679 /// C.LWSP is only valid when rd ≠ x0. The code points with rd=x0 are reserved.
12680 ///
12681 /// # Forms
12682 /// Assembly: `c.lwsp xd, imm(sp)`
12683 CLWSP,
12684 /// RISC-V `c.mop.1` instruction.
12685 ///
12686 /// # Forms
12687 /// Assembly: `c.mop.1`
12688 CMOP1,
12689 /// RISC-V `c.mop.11` instruction.
12690 ///
12691 /// # Forms
12692 /// Assembly: `c.mop.11`
12693 CMOP11,
12694 /// RISC-V `c.mop.13` instruction.
12695 ///
12696 /// # Forms
12697 /// Assembly: `c.mop.13`
12698 CMOP13,
12699 /// RISC-V `c.mop.15` instruction.
12700 ///
12701 /// # Forms
12702 /// Assembly: `c.mop.15`
12703 CMOP15,
12704 /// RISC-V `c.mop.3` instruction.
12705 ///
12706 /// # Forms
12707 /// Assembly: `c.mop.3`
12708 CMOP3,
12709 /// RISC-V `c.mop.5` instruction.
12710 ///
12711 /// # Forms
12712 /// Assembly: `c.mop.5`
12713 CMOP5,
12714 /// RISC-V `c.mop.7` instruction.
12715 ///
12716 /// # Forms
12717 /// Assembly: `c.mop.7`
12718 CMOP7,
12719 /// RISC-V `c.mop.9` instruction.
12720 ///
12721 /// # Forms
12722 /// Assembly: `c.mop.9`
12723 CMOP9,
12724 /// RISC-V `c.mop.n` instruction.
12725 ///
12726 /// # Forms
12727 /// Assembly: `c.mop.n c_mop_t`
12728 CMOPN,
12729 /// Multiply, 16-bit encoding
12730 ///
12731 /// This instruction multiplies XLEN bits of the source operands from rsd' and rs2' and writes the lowest XLEN bits of the result to rsd'.
12732 ///
12733 /// # Forms
12734 /// Assembly: `c.mul xd, xs2`
12735 CMUL,
12736 /// Move Register
12737 ///
12738 /// C.MV (move register) performs copy of the data in register rs2 to register rd
12739 /// C.MV expands to addi rd, x0, rs2.
12740 ///
12741 /// # Forms
12742 /// Assembly: `c.mv xd, xs2`
12743 CMV,
12744 /// Non-operation
12745 ///
12746 /// C.NOP expands into `addi x0, x0, imm`.
12747 ///
12748 /// # Forms
12749 /// Assembly: `c.nop imm`
12750 CNOP,
12751 /// Bitwise not, 16-bit encoding
12752 ///
12753 /// This instruction takes a single source/destination operand.
12754 /// This instruction takes the one's complement of rd'/rs1' and writes the result to the same register.
12755 ///
12756 /// # Forms
12757 /// Assembly: `c.not xd`
12758 CNOT,
12759 /// RISC-V `c.ntl.all` instruction.
12760 ///
12761 /// # Forms
12762 /// Assembly: `c.ntl.all`
12763 CNTLALL,
12764 /// RISC-V `c.ntl.p1` instruction.
12765 ///
12766 /// # Forms
12767 /// Assembly: `c.ntl.p1`
12768 CNTLP1,
12769 /// RISC-V `c.ntl.pall` instruction.
12770 ///
12771 /// # Forms
12772 /// Assembly: `c.ntl.pall`
12773 CNTLPALL,
12774 /// RISC-V `c.ntl.s1` instruction.
12775 ///
12776 /// # Forms
12777 /// Assembly: `c.ntl.s1`
12778 CNTLS1,
12779 /// Or
12780 ///
12781 /// Or rd with rs2, and store the result in rd
12782 /// The rd and rs2 register indexes should be used as rd+8 and rs2+8 (registers x8-x15).
12783 /// C.OR expands into `or rd, rd, rs2`.
12784 ///
12785 /// # Forms
12786 /// Assembly: `c.or xd, rs2`
12787 COR,
12788 /// Store unsigned byte, 16-bit encoding
12789 ///
12790 /// Stores a 8-bit value from register rs2 into memory.
12791 /// It computes an effective address by adding the zero-extended offset, to the base address in register rs1.
12792 /// It expands to `sb` `rs2, offset(rs1)`.
12793 ///
12794 /// # Forms
12795 /// Assembly: `c.sb xs2, imm(xs1)`
12796 CSB,
12797 /// Store double
12798 ///
12799 /// Stores a 64-bit value in register rs2 to memory.
12800 /// It computes an effective address by adding the zero-extended offset, scaled by 8,
12801 /// to the base address in register rs1.
12802 /// It expands to `sd` `rs2, offset(rs1)`.
12803 ///
12804 /// # Forms
12805 /// Assembly: `c.sd xs2, imm(xs1)`
12806 CSD,
12807 /// Store doubleword to stack
12808 ///
12809 /// Stores a 64-bit value in register rs2 to memory.
12810 /// It computes an effective address by adding the zero-extended offset, scaled by 8,
12811 /// to the stack pointer, x2.
12812 /// It expands to `sd` `rs2, offset(x2)`.
12813 ///
12814 /// # Forms
12815 /// Assembly: `c.sdsp xs2, imm(sp)`
12816 CSDSP,
12817 /// Sign-extend byte, 16-bit encoding
12818 ///
12819 /// This instruction takes a single source/destination operand.
12820 /// This instruction sign-extends the least-significant byte of the source to XLEN by copying
12821 /// the most-significant bit in the byte (i.e., bit 7) to all of the more-significant bits.
12822 ///
12823 /// # Forms
12824 /// Assembly: `c.sext.b xd`
12825 CSEXTB,
12826 /// Sign-extend halfword, 16-bit encoding
12827 ///
12828 /// This instruction takes a single source/destination operand.
12829 /// This instruction sign-extends the least-significant halfword of the source to XLEN by copying
12830 /// the most-significant bit in the halfword (i.e., bit 15) to all of the more-significant bits.
12831 ///
12832 /// # Forms
12833 /// Assembly: `c.sext.h xd`
12834 CSEXTH,
12835 /// RISC-V `c.sext.w` instruction.
12836 ///
12837 /// # Forms
12838 /// Assembly: `c.sext.w rd_rs1_n0`
12839 CSEXTW,
12840 /// Store unsigned halfword, 16-bit encoding
12841 ///
12842 /// Stores a 16-bit value from register rs2 into memory.
12843 /// It computes an effective address by adding the zero-extended offset, to the base address in register rs1.
12844 /// It expands to `sh` `rs2, offset(rs1)`.
12845 ///
12846 /// # Forms
12847 /// Assembly: `c.sh xs2, imm(xs1)`
12848 CSH,
12849 /// Shift left logical immediate
12850 ///
12851 /// Shift the value in rd left by shamt, and store the result back in rd.
12852 /// C.SLLI expands into `slli rd, rd, shamt`.
12853 ///
12854 /// # Forms
12855 /// Assembly: `c.slli xd, shamt`
12856 CSLLI,
12857 /// Shift left logical immediate
12858 ///
12859 /// Shift the value in rd left by shamt, and store the result back in rd.
12860 /// C.SLLI expands into `slli rd, rd, shamt`.
12861 ///
12862 /// # Forms
12863 /// Assembly: `c.slli.rv32 xd, shamt`
12864 CSLLIRV32,
12865 /// Shift right arithmetical immediate
12866 ///
12867 /// Arithmetic shift (the original sign bit is copied into the vacated upper bits) the value in rd right by shamt, and store the result in rd.
12868 /// The rd register index should be used as rd+8 (registers x8-x15).
12869 /// C.SRAI expands into `srai rd, rd, shamt`.
12870 ///
12871 /// # Forms
12872 /// Assembly: `c.srai xd, shamt`
12873 CSRAI,
12874 /// Shift right arithmetical immediate
12875 ///
12876 /// Arithmetic shift (the original sign bit is copied into the vacated upper bits) the value in rd right by shamt, and store the result in rd.
12877 /// The rd register index should be used as rd+8 (registers x8-x15).
12878 /// C.SRAI expands into `srai rd, rd, shamt`.
12879 ///
12880 /// # Forms
12881 /// Assembly: `c.srai.rv32 xd, shamt`
12882 CSRAIRV32,
12883 /// Shift right logical immediate
12884 ///
12885 /// Shift the value in rd right by shamt, and store the result back in rd.
12886 /// The rd register index should be used as rd+8 (registers x8-x15).
12887 /// C.SRLI expands into `srli rd, rd, shamt`.
12888 ///
12889 /// # Forms
12890 /// Assembly: `c.srli xd, shamt`
12891 CSRLI,
12892 /// Shift right logical immediate
12893 ///
12894 /// Shift the value in rd right by shamt, and store the result back in rd.
12895 /// The rd register index should be used as rd+8 (registers x8-x15).
12896 /// C.SRLI expands into `srli rd, rd, shamt`.
12897 ///
12898 /// # Forms
12899 /// Assembly: `c.srli.rv32 xd, shamt`
12900 CSRLIRV32,
12901 /// RISC-V `c.sspopchk.x5` instruction.
12902 ///
12903 /// # Forms
12904 /// Assembly: `c.sspopchk.x5`
12905 CSSPOPCHKX5,
12906 /// RISC-V `c.sspush.x1` instruction.
12907 ///
12908 /// # Forms
12909 /// Assembly: `c.sspush.x1`
12910 CSSPUSHX1,
12911 /// Subtract
12912 ///
12913 /// Subtract the value in rs2 from rd, and store the result in rd.
12914 /// The rd and rs2 register indexes should be used as rd+8 and rs2+8 (registers x8-x15).
12915 /// C.SUB expands into `sub rd, rd, rs2`.
12916 ///
12917 /// # Forms
12918 /// Assembly: `c.sub xd, rs2`
12919 CSUB,
12920 /// Subtract word
12921 ///
12922 /// Subtract the 32-bit values in rs2 from rd, and store the result in rd.
12923 /// The rd and rs2 register indexes should be used as rd+8 and rs2+8 (registers x8-x15).
12924 /// C.SUBW expands into `subw rd, rd, rs2`.
12925 ///
12926 /// # Forms
12927 /// Assembly: `c.subw xd, rs2`
12928 CSUBW,
12929 /// Store word
12930 ///
12931 /// Stores a 32-bit value in register rs2 to memory.
12932 /// It computes an effective address by adding the zero-extended offset, scaled by 4,
12933 /// to the base address in register rs1.
12934 /// It expands to `sw` `rs2, offset(rs1)`.
12935 ///
12936 /// # Forms
12937 /// Assembly: `c.sw xs2, imm(xs1)`
12938 CSW,
12939 /// Store word to stack
12940 ///
12941 /// Stores a 32-bit value in register rs2 to memory.
12942 /// It computes an effective address by adding the zero-extended offset, scaled by 4,
12943 /// to the stack pointer, x2.
12944 /// It expands to `sw` `rs2, offset(x2)`.
12945 ///
12946 /// # Forms
12947 /// Assembly: `c.swsp xs2, imm(sp)`
12948 CSWSP,
12949 /// Exclusive Or
12950 ///
12951 /// Exclusive or rd with rs2, and store the result in rd
12952 /// The rd and rs2 register indexes should be used as rd+8 and rs2+8 (registers x8-x15).
12953 /// C.XOR expands into `xor rd, rd, rs2`.
12954 ///
12955 /// # Forms
12956 /// Assembly: `c.xor xd, rs2`
12957 CXOR,
12958 /// Zero-extend byte, 16-bit encoding
12959 ///
12960 /// This instruction takes a single source/destination operand.
12961 /// This instruction zero-extends the least-significant byte of the source to XLEN by inserting
12962 /// 0's into all of the bits more significant than 7.
12963 ///
12964 /// # Forms
12965 /// Assembly: `c.zext.b xd`
12966 CZEXTB,
12967 /// Zero-extend halfword, 16-bit encoding
12968 ///
12969 /// This instruction takes a single source/destination operand.
12970 /// This instruction zero-extends the least-significant halfword of the source to XLEN by inserting
12971 /// 0's into all of the bits more significant than 15.
12972 ///
12973 /// # Forms
12974 /// Assembly: `c.zext.h xd`
12975 CZEXTH,
12976 /// Zero-extend word, 16-bit encoding
12977 ///
12978 /// This instruction takes a single source/destination operand.
12979 /// It zero-extends the least-significant word of the operand to XLEN bits by inserting zeros into all of the bits more significant than 31.
12980 ///
12981 /// # Forms
12982 /// Assembly: `c.zext.w xd`
12983 CZEXTW,
12984 /// Cache Block Clean
12985 ///
12986 /// Cleans an entire cache block globally throughout the system.
12987 ///
12988 /// Exactly what happens is coherence protocol-dependent, but in general it is expected that after this
12989 /// operation():
12990 ///
12991 /// * The cache block will be in the clean (not dirty) state in any coherent cache holding a valid copy of the line.
12992 /// * The data will be cleaned to a point such that an incoherent load can observe the cleaned data.
12993 ///
12994 /// `cbo.clean` is ordered by `FENCE` instructions but not `FENCE.I` or `SFENCE.VMA`.
12995 ///
12996 /// <%- if CACHE_BLOCK_SIZE.bit_length > \[PMP_GRANULARITY, PMA_GRANULARITY\].min -%>
12997 /// Both PMP and PMA access control must be the same for all bytes in the block; otherwise, `cbo.clean` has UNSPECIFIED behavior.
12998 /// <%- end -%>
12999 ///
13000 /// Clean operations are treated as stores for page and access permissions. If permission checks fail,
13001 /// one of the following exceptions will occur:
13002 ///
13003 /// <%- if ext?(:H) -%>
13004 /// * `Store/AMO Guest-Page Fault` if virtual memory translation fails during G-stage translation.
13005 /// <%- end -%>
13006 /// * `Store/AMO Page Fault` if virtual memory translation fails <% if ext?(:H) %>when V=0 or during VS-stage translation<% end %>
13007 /// * `Store/AMO Access Fault` if a PMP or PMA access check fails
13008 ///
13009 /// <%- if CACHE_BLOCK_SIZE.bit_length <= \[PMP_GRANULARITY, PMA_GRANULARITY\].min -%>
13010 /// Because cache blocks are naturally aligned and always fit in a single PMP or PMA regions, the PMP
13011 /// and PMA access checks only need to check a single address in the line.
13012 /// <%- end -%>
13013 ///
13014 /// CBO operations never raise a misaligned address fault.
13015 ///
13016 /// # Forms
13017 /// Assembly: `cbo.clean "TODO"`
13018 CBOCLEAN,
13019 /// Cache Block Flush
13020 ///
13021 /// Flushes an entire cache block by cleaning it and then invalidating it in all caches.
13022 ///
13023 /// `cbo.flush` is ordered by `FENCE` instructions but not `FENCE.I` or `SFENCE.VMA`.
13024 ///
13025 /// <%- if CACHE_BLOCK_SIZE.bit_length > \[PMP_GRANULARITY, PMA_GRANULARITY\].min -%>
13026 /// Both PMP and PMA access control must be the same for all bytes in the block; otherwise, `cbo.flush` has UNSPECIFIED behavior.
13027 /// <%- end -%>
13028 ///
13029 /// Flush operations are treated as stores for page and access permissions. If permission checks fail,
13030 /// one of the following exceptions will occur:
13031 ///
13032 /// <%- if ext?(:H) -%>
13033 /// * `Store/AMO Guest-Page Fault` if virtual memory translation fails during G-stage translation.
13034 /// <%- end -%>
13035 /// * `Store/AMO Page Fault` if virtual memory translation fails <% if ext?(:H) %>when V=0 or during VS-stage translation<% end %>
13036 /// * `Store/AMO Access Fault` if a PMP or PMA access check fails.
13037 ///
13038 /// <%- if CACHE_BLOCK_SIZE.bit_length <= \[PMP_GRANULARITY, PMA_GRANULARITY\].min -%>
13039 /// Because cache blocks are naturally aligned and always fit in a single PMP or PMA regions, the PMP
13040 /// and PMA access checks only need to check a single address in the line.
13041 /// <%- end -%>
13042 ///
13043 /// CBO operations never raise a misaligned address fault.
13044 ///
13045 /// # Forms
13046 /// Assembly: `cbo.flush "TODO"`
13047 CBOFLUSH,
13048 /// Cache Block Invalidate
13049 ///
13050 /// Either invalidates or flushes (clean + invalidate) a cache block, depending on the current mode and value of
13051 /// `menvcfg.CBIE`, `senvcfg.CBIE`, and/or `henvcfg.CBIE`.
13052 ///
13053 /// The instruction is an invalidate (without a clean) when:
13054 ///
13055 /// * In M-mode
13056 /// * In (H)S-mode and `menvcfg.CBIE` == 11
13057 /// * In U-mode and `menvcfg.CBIE` == 11 and `senvcfg.CBIE` == 11
13058 /// * In VS-mode and `menvcfg.CBIE` == 11 and `henvcfg.CBIE` == 11
13059 /// * In VU-mode and `menvcfg.CBIE` == 11 and `henvcfg.CBIE` == 11 and `senvcfg.CBIE` == 11
13060 ///
13061 /// Otherwise, if the instruction does not trap (see Access section), the operation is a flush.
13062 /// The table below summarizes the options.
13063 ///
13064 /// \[%autowidth,cols="1,1,1,1,1,1,1,1",separator="!"\]
13065 /// !===
13066 /// .2+h!\[.rotate\]#`menvcfg.CBIE`# .2+h! \[.rotate\]#`senvcfg.CBIE`# .2+h! \[.rotate\]#`henvcfg.CBIE`#
13067 /// 5+^.>h! `cbe.inval` Operation
13068 /// .^h! M-mode .^h! S-mode .^h! U-mode .^h! VS-mode .^h! VU-mode
13069 ///
13070 /// ! 00 ! - ! - ! Invalidate ! `Illegal Instruction` ! `Illegal Instruction` ! `Virtual Instruction` ! `Virtual Instruction`
13071 /// ! 01 ! 00 ! 00 ! Invalidate ! Flush ! `Illegal Instruction` ! `Virtual Instruction` ! `Virtual Instruction`
13072 /// ! 01 ! 00 ! 01 ! Invalidate ! Flush ! `Illegal Instruction` ! Flush ! `Virtual Instruction`
13073 /// ! 01 ! 00 ! 11 ! Invalidate ! Flush ! `Illegal Instruction` ! Flush ! `Virtual Instruction`
13074 /// ! 01 ! 01 ! 00 ! Invalidate ! Flush ! Flush ! `Virtual Instruction` ! `Virtual Instruction`
13075 /// ! 01 ! 01 ! 01 ! Invalidate ! Flush ! Flush ! Flush ! Flush
13076 /// ! 01 ! 01 ! 11 ! Invalidate ! Flush ! Flush ! Flush ! Flush
13077 /// ! 01 ! 11 ! 00 ! Invalidate ! Flush ! Flush ! `Virtual Instruction` ! `Virtual Instruction`
13078 /// ! 01 ! 11 ! 01 ! Invalidate ! Flush ! Flush ! Flush ! Flush
13079 /// ! 01 ! 11 ! 11 ! Invalidate ! Flush ! Flush ! Flush ! Flush
13080 /// ! 11 ! 00 ! 00 ! Invalidate ! Invalidate ! `Illegal Instruction` ! `Virtual Instruction` ! `Virtual Instruction`
13081 /// ! 11 ! 00 ! 01 ! Invalidate ! Invalidate ! `Illegal Instruction` ! Flush ! `Virtual Instruction`
13082 /// ! 11 ! 00 ! 11 ! Invalidate ! Invalidate ! `Illegal Instruction` ! Invalidate ! `Virtual Instruction`
13083 /// ! 11 ! 01 ! 00 ! Invalidate ! Invalidate ! Flush ! `Virtual Instruction` ! `Virtual Instruction`
13084 /// ! 11 ! 01 ! 01 ! Invalidate ! Invalidate ! Flush ! Flush ! Flush
13085 /// ! 11 ! 01 ! 11 ! Invalidate ! Invalidate ! Flush ! Invalidate ! Flush
13086 /// ! 11 ! 11 ! 00 ! Invalidate ! Invalidate ! Invalidate ! `Virtual Instruction` ! `Virtual Instruction`
13087 /// ! 11 ! 11 ! 01 ! Invalidate ! Invalidate ! Invalidate ! Flush ! Flush
13088 /// ! 11 ! 11 ! 11 ! Invalidate ! Invalidate ! Invalidate ! Invalidate ! Invalidate
13089 /// !===
13090 ///
13091 /// `cbo.inval` is ordered by `FENCE` instructions but not `FENCE.I` or `SFENCE.VMA`.
13092 ///
13093 /// <%- if CACHE_BLOCK_SIZE.bit_length > \[PMP_GRANULARITY, PMA_GRANULARITY\].min -%>
13094 /// Both PMP and PMA access control must be the same for all bytes in the block; otherwise, `cbo.zero` has UNSPECIFIED behavior.
13095 /// <%- end -%>
13096 ///
13097 /// Invalidate operations are treated as stores for page and access permissions. If permission checks fail,
13098 /// one of the following exceptions will occur:
13099 ///
13100 /// <%- if ext?(:H) -%>
13101 /// * `Store/AMO Guest-Page Fault` if virtual memory translation fails during G-stage translation.
13102 /// <%- end -%>
13103 /// * `Store/AMO Page Fault` if virtual memory translation fails <% if ext?(:H) %>when V=0 or during VS-stage translation<% end %>
13104 /// * `Store/AMO Access Fault` if a PMP or PMA access check fails.
13105 ///
13106 /// <%- if CACHE_BLOCK_SIZE.bit_length <= \[PMP_GRANULARITY, PMA_GRANULARITY\].min -%>
13107 /// Because cache blocks are naturally aligned and always fit in a single PMP or PMA regions, the PMP
13108 /// and PMA access checks only need to check a single address in the line.
13109 /// <%- end -%>
13110 ///
13111 /// CBO operations never raise a misaligned address fault.
13112 ///
13113 /// # Forms
13114 /// Assembly: `cbo.inval "TODO"`
13115 CBOINVAL,
13116 /// Cache Block Zero
13117 ///
13118 /// Zeros an entire cache block
13119 ///
13120 /// The block zeroing does not need to be atomic.
13121 ///
13122 /// `cbo.zero` is ordered by `FENCE` instructions but not `FENCE.I` or `SFENCE.VMA`.
13123 ///
13124 /// <%- if CACHE_BLOCK_SIZE.bit_length > \[PMP_GRANULARITY, PMA_GRANULARITY\].min -%>
13125 /// Both PMP and PMA access control must be the same for all bytes in the block; otherwise, `cbo.zero` has UNSPECIFIED behavior.
13126 /// <%- end -%>
13127 ///
13128 /// Clean operations are treated as stores for page and access permissions. If permission checks fail,
13129 /// one of the following exceptions will occur:
13130 ///
13131 /// <%- if ext?(:H) -%>
13132 /// * `Store/AMO Guest-Page Fault` if virtual memory translation fails during G-stage translation.
13133 /// <%- end -%>
13134 /// * `Store/AMO Page Fault` if virtual memory translation fails <% if ext?(:H) %>when V=0 or during VS-stage translation<% end %>
13135 /// * `Store/AMO Access Fault` if a PMP or PMA access check fails.
13136 ///
13137 /// <%- if CACHE_BLOCK_SIZE.bit_length <= \[PMP_GRANULARITY, PMA_GRANULARITY\].min -%>
13138 /// Because cache blocks are naturally aligned and always fit in a single PMP or PMA regions, the PMP
13139 /// and PMA access checks only need to check a single address in the line.
13140 /// <%- end -%>
13141 ///
13142 /// CBO operations never raise a misaligned address fault.
13143 ///
13144 /// # Forms
13145 /// Assembly: `cbo.zero "TODO"`
13146 CBOZERO,
13147 /// Carry-less multiply (low-part)
13148 ///
13149 /// `clmul` produces the lower half of the 2*XLEN carry-less product
13150 ///
13151 /// # Forms
13152 /// Assembly: `clmul xd, xs1, xs2`
13153 CLMUL,
13154 /// Carry-less multiply (high-part)
13155 ///
13156 /// `clmulh` produces the upper half of the 2*XLEN carry-less product
13157 ///
13158 /// # Forms
13159 /// Assembly: `clmulh xd, xs1, xs2`
13160 CLMULH,
13161 /// Carry-less multiply (reversed)
13162 ///
13163 /// `clmulr` produces bits 2*XLEN-2:XLEN-1 of the 2*XLEN carry-less product
13164 ///
13165 /// # Forms
13166 /// Assembly: `clmulr xd, xs1, xs2`
13167 CLMULR,
13168 /// Count leading zero bits
13169 ///
13170 /// This instruction counts the number of 0's before the first 1,
13171 /// starting at the most-significant bit (i.e., XLEN-1) and progressing to bit 0.
13172 /// Accordingly, if the input is 0, the output is XLEN, and if the most-significant
13173 /// bit of the input is a 1, the output is 0.
13174 ///
13175 /// # Forms
13176 /// Assembly: `clz xd, xs1`
13177 CLZ,
13178 /// Count leading zero bits in word
13179 ///
13180 /// This instruction counts the number of 0's before the first 1 starting at bit 31 and progressing to bit 0.
13181 /// Accordingly, if the least-significant word is 0, the output is 32, and if the most-significant
13182 /// bit of the word (_i.e._, bit 31) is a 1, the output is 0.
13183 ///
13184 /// # Forms
13185 /// Assembly: `clzw xd, xs1`
13186 CLZW,
13187 /// RISC-V `cm.jalt` instruction.
13188 ///
13189 /// # Forms
13190 /// Assembly: `cm.jalt c_index`
13191 CMJALT,
13192 /// Move two s0-s7 registers into a0-a1
13193 ///
13194 /// This instruction moves r1s' into a0 and r2s' into a1. The execution is atomic, so it is not possible to observe state where only one of a0 or a1 have been updated.
13195 /// The encoding uses sreg number specifiers instead of xreg number specifiers to save encoding space. The mapping between them is specified in the pseudo-code below.
13196 ///
13197 /// # Forms
13198 /// Assembly: `cm.mva01s r1s, r2s`
13199 CMMVA01S,
13200 /// Move a0-a1 into two registers of s0-s7
13201 ///
13202 /// This instruction moves a0 into r1s' and a1 into r2s'. r1s' and r2s' must be different.
13203 /// The execution is atomic, so it is not possible to observe state where only one of r1s' or r2s' has been updated.
13204 /// The encoding uses sreg number specifiers instead of xreg number specifiers to save encoding space.
13205 /// The mapping between them is specified in the pseudo-code below.
13206 ///
13207 /// # Forms
13208 /// Assembly: `cm.mvsa01 r1s, r2s`
13209 CMMVSA01,
13210 /// Destroy function call stack frame
13211 ///
13212 /// Destroy stack frame: load `ra` and 0 to 12 saved registers from the stack frame, deallocate the stack frame.
13213 /// This instruction pops (loads) the registers in `reg_list` from stack memory, and then adjusts the stack pointer by `stack_adj`.
13214 ///
13215 /// Restrictions on stack_adj:
13216 ///
13217 /// * it must be enough to store all of the listed registers
13218 /// * it must be a multiple of 16 (bytes):
13219 /// ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112
13220 /// ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160
13221 ///
13222 /// # Forms
13223 /// Assembly: `cm.pop reg_list, stack_adj`
13224 CMPOP,
13225 /// Destroy function call stack frame and return to `ra`.
13226 ///
13227 /// Destroy stack frame: load `ra` and 0 to 12 saved registers from the stack frame, deallocate the stack frame, return to `ra`.
13228 /// This instruction pops (loads) the registers in `reg_list` from stack memory, and then adjusts the stack pointer by `stack_adj` and then return to `ra`.
13229 ///
13230 /// Restrictions on stack_adj:
13231 ///
13232 /// * it must be enough to store all of the listed registers
13233 /// * it must be a multiple of 16 (bytes):
13234 /// ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112
13235 /// ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160
13236 ///
13237 /// # Forms
13238 /// Assembly: `cm.popret reg_list, stack_adj`
13239 CMPOPRET,
13240 /// Destroy function call stack frame, move zero to `a0` and return to `ra`.
13241 ///
13242 /// Destroy stack frame: load `ra` and 0 to 12 saved registers from the stack frame, deallocate the stack frame, move zero to `a0`, return to `ra`.
13243 /// This instruction pops (loads) the registers in `reg_list` from stack memory, and then adjusts the stack pointer by `stack_adj`, move zero to `a0` and then return to `ra`.
13244 ///
13245 /// Restrictions on stack_adj:
13246 ///
13247 /// * it must be enough to store all of the listed registers
13248 /// * it must be a multiple of 16 (bytes):
13249 /// ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112
13250 /// ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160
13251 ///
13252 /// # Forms
13253 /// Assembly: `cm.popretz reg_list, stack_adj`
13254 CMPOPRETZ,
13255 /// Create function call stack frame
13256 ///
13257 /// Create stack frame: store `ra` and 0 to 12 saved registers to the stack frame, optionally allocate additional stack space.
13258 /// This instruction pushes (stores) the registers in `reg_list` to the memory below the stack pointer,
13259 /// and then creates the stack frame by decrementing the stack pointer by `stack_adj`.
13260 ///
13261 /// Restrictions on stack_adj:
13262 ///
13263 /// * it must be enough to store all of the listed registers
13264 /// * it must be a multiple of 16 (bytes):
13265 /// ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112
13266 /// ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160
13267 ///
13268 /// # Forms
13269 /// Assembly: `cm.push reg_list, -stack_adj`
13270 CMPUSH,
13271 /// Count set bits
13272 ///
13273 /// This instructions counts the number of 1's (i.e., set bits) in the source register.
13274 ///
13275 /// .Software Hint
13276 /// \[NOTE\]
13277 /// ----
13278 /// This operations is known as population count, popcount, sideways sum,
13279 /// bit summation, or Hamming weight.
13280 ///
13281 /// The GCC builtin function `__builtin_popcount (unsigned int x)` is
13282 /// implemented by cpop on RV32 and by cpopw on RV64. The GCC builtin
13283 /// function `__builtin_popcountl (unsigned long x)` for LP64 is
13284 /// implemented by cpop on RV64.
13285 /// ----
13286 ///
13287 /// # Forms
13288 /// Assembly: `cpop xd, xs1`
13289 CPOP,
13290 /// Count set bits in word
13291 ///
13292 /// This instructions counts the number of 1's (i.e., set bits) in the least-significant word of the source register.
13293 ///
13294 /// .Software Hint
13295 /// \[NOTE\]
13296 /// ----
13297 /// This operations is known as population count, popcount, sideways sum,
13298 /// bit summation, or Hamming weight.
13299 ///
13300 /// The GCC builtin function `__builtin_popcount (unsigned int x)` is
13301 /// implemented by cpop on RV32 and by cpopw on RV64. The GCC builtin
13302 /// function `__builtin_popcountl (unsigned long x)` for LP64 is
13303 /// implemented by cpop on RV64.
13304 /// ----
13305 ///
13306 /// # Forms
13307 /// Assembly: `cpopw xd, xs1`
13308 CPOPW,
13309 /// RISC-V `csrc` instruction.
13310 ///
13311 /// # Forms
13312 /// Assembly: `csrc rs1 csr`
13313 CSRC,
13314 /// RISC-V `csrci` instruction.
13315 ///
13316 /// # Forms
13317 /// Assembly: `csrci csr zimm5`
13318 CSRCI,
13319 /// RISC-V `csrr` instruction.
13320 ///
13321 /// # Forms
13322 /// Assembly: `csrr rd csr`
13323 CSRR,
13324 /// RISC-V `csrrc` instruction.
13325 ///
13326 /// # Forms
13327 /// Assembly: `csrrc xd, xs1, csr`
13328 CSRRC,
13329 /// RISC-V `csrrci` instruction.
13330 ///
13331 /// # Forms
13332 /// Assembly: `csrrci xd, csr, imm`
13333 CSRRCI,
13334 /// Atomic Read and Set Bits in CSR
13335 ///
13336 /// Atomically read and set bits in a CSR.
13337 ///
13338 /// Reads the value of the CSR, zero-extends the value to `XLEN` bits,
13339 /// and writes it to integer register `rd`. The initial value in integer
13340 /// register `rs1` is treated as a bit mask that specifies bit positions
13341 /// to be set in the CSR. Any bit that is high in `rs1` will cause the
13342 /// corresponding bit to be set in the CSR, if that CSR bit is writable.
13343 /// Other bits in the CSR are not explicitly written.
13344 ///
13345 /// # Forms
13346 /// Assembly: `csrrs xd, xs1, csr`
13347 CSRRS,
13348 /// RISC-V `csrrsi` instruction.
13349 ///
13350 /// # Forms
13351 /// Assembly: `csrrsi xd, csr, imm`
13352 CSRRSI,
13353 /// Atomic Read/Write CSR
13354 ///
13355 /// Atomically swap values in the CSRs and integer registers.
13356 ///
13357 /// Read the old value of the CSR, zero-extends the value to `XLEN` bits,
13358 /// and then write it to integer register rd.
13359 /// The initial value in rs1 is written to the CSR.
13360 /// If `rd=x0`, then the instruction shall not read the CSR and shall not
13361 /// cause any of the side effects that might occur on a CSR read.
13362 ///
13363 /// # Forms
13364 /// Assembly: `csrrw xd, xs1, csr`
13365 CSRRW,
13366 /// Atomic Read/Write CSR Immediate
13367 ///
13368 /// Atomically write CSR using a 5-bit immediate, and load the previous value into 'rd'.
13369 ///
13370 /// Read the old value of the CSR, zero-extends the value to `XLEN` bits,
13371 /// and then write it to integer register rd.
13372 /// The 5-bit uimm field is zero-extended and written to the CSR.
13373 /// If `rd=x0`, then the instruction shall not read the CSR and shall not
13374 /// cause any of the side effects that might occur on a CSR read.
13375 ///
13376 /// # Forms
13377 /// Assembly: `csrrwi xd, zimm, csr`
13378 CSRRWI,
13379 /// RISC-V `csrs` instruction.
13380 ///
13381 /// # Forms
13382 /// Assembly: `csrs rs1 csr`
13383 CSRS,
13384 /// RISC-V `csrsi` instruction.
13385 ///
13386 /// # Forms
13387 /// Assembly: `csrsi csr zimm5`
13388 CSRSI,
13389 /// RISC-V `csrw` instruction.
13390 ///
13391 /// # Forms
13392 /// Assembly: `csrw rs1 csr`
13393 CSRW,
13394 /// RISC-V `csrwi` instruction.
13395 ///
13396 /// # Forms
13397 /// Assembly: `csrwi csr zimm5`
13398 CSRWI,
13399 /// Count trailing zero bits
13400 ///
13401 /// This instruction counts the number of 0's before the first 1,
13402 /// starting at the least-significant bit (i.e., 0) and progressing
13403 /// to the most-significant bit (i.e., XLEN-1). Accordingly, if the
13404 /// input is 0, the output is XLEN, and if the least-significant bit
13405 /// of the input is a 1, the output is 0.
13406 ///
13407 /// # Forms
13408 /// Assembly: `ctz xd, xs1`
13409 CTZ,
13410 /// Count trailing zero bits in word
13411 ///
13412 /// This instruction counts the number of 0's before the first 1,
13413 /// starting at the least-significant bit (i.e., 0) and progressing
13414 /// to the most-significant bit of the least-significant word (i.e., 31). Accordingly, if the
13415 /// least-significant word is 0, the output is 32, and if the least-significant bit
13416 /// of the input is a 1, the output is 0.
13417 ///
13418 /// # Forms
13419 /// Assembly: `ctzw xd, xs1`
13420 CTZW,
13421 /// RISC-V `czero.eqz` instruction.
13422 ///
13423 /// # Forms
13424 /// Assembly: `czero.eqz xd, xs1, xs2`
13425 CZEROEQZ,
13426 /// RISC-V `czero.nez` instruction.
13427 ///
13428 /// # Forms
13429 /// Assembly: `czero.nez xd, xs1, xs2`
13430 CZERONEZ,
13431 /// Signed division
13432 ///
13433 /// Divide rs1 by rs2, and store the result in rd. The remainder is discarded.
13434 ///
13435 /// Division by zero will put -1 into rd.
13436 ///
13437 /// Division resulting in signed overflow (when most negative number is divided by -1)
13438 /// will put the most negative number into rd;
13439 ///
13440 /// # Forms
13441 /// Assembly: `div xd, xs1, xs2`
13442 DIV,
13443 /// Unsigned division
13444 ///
13445 /// Divide unsigned values in rs1 by rs2, and store the result in rd.
13446 ///
13447 /// The remainder is discarded.
13448 ///
13449 /// If the value in rs2 is zero, rd gets the largest unsigned value.
13450 ///
13451 /// # Forms
13452 /// Assembly: `divu xd, xs1, xs2`
13453 DIVU,
13454 /// Unsigned 32-bit division
13455 ///
13456 /// Divide the unsigned 32-bit values in rs1 and rs2, and store the sign-extended result in rd.
13457 ///
13458 /// The remainder is discarded.
13459 ///
13460 /// If the value in rs2 is zero, rd is written with all 1s.
13461 ///
13462 /// # Forms
13463 /// Assembly: `divuw xd, xs1, xs2`
13464 DIVUW,
13465 /// Signed 32-bit division
13466 ///
13467 /// Divide the lower 32-bits of register rs1 by the lower 32-bits of register rs2,
13468 /// and store the sign-extended result in rd.
13469 ///
13470 /// The remainder is discarded.
13471 ///
13472 /// Division by zero will put -1 into rd.
13473 ///
13474 /// Division resulting in signed overflow (when most negative number is divided by -1)
13475 /// will put the most negative number into rd;
13476 ///
13477 /// # Forms
13478 /// Assembly: `divw xd, xs1, xs2`
13479 DIVW,
13480 /// RISC-V `dret` instruction.
13481 ///
13482 /// # Forms
13483 /// Assembly: `dret dret`
13484 DRET,
13485 /// Breakpoint exception
13486 ///
13487 /// The EBREAK instruction is used by debuggers to cause control to be transferred back to
13488 /// a debugging environment. Unless overridden by an external debug environment,
13489 /// EBREAK raises a breakpoint exception and performs no other operation.
13490 ///
13491 /// \[NOTE\]
13492 /// As described in the `C` Standard Extension for Compressed Instructions, the `c.ebreak`
13493 /// instruction performs the same operation as the EBREAK instruction.
13494 ///
13495 /// EBREAK causes the receiving privilege mode's epc register to be set to the address of
13496 /// the EBREAK instruction itself, not the address of the following instruction.
13497 /// As EBREAK causes a synchronous exception, it is not considered to retire,
13498 /// and should not increment the `minstret` CSR.
13499 ///
13500 /// # Forms
13501 /// Assembly: `ebreak ""`
13502 EBREAK,
13503 /// Environment call
13504 ///
13505 /// The ECALL instruction is used to make a request to the supporting execution environment.
13506 /// When executed in U-mode, S-mode, or M-mode, it generates an environment-call-from-U-mode
13507 /// exception, environment-call-from-S-mode exception, or environment-call-from-M-mode
13508 /// exception, respectively, and performs no other operation.
13509 ///
13510 /// \[NOTE\]
13511 /// ECALL generates a different exception for each originating privilege mode so that
13512 /// environment call exceptions can be selectively delegated.
13513 /// A typical use case for Unix-like operating systems is to delegate to S-mode
13514 /// the environment-call-from-U-mode exception but not the others.
13515 ///
13516 /// ECALL causes the receiving privilege mode's epc register to be set to the address of
13517 /// the ECALL instruction itself, not the address of the following instruction.
13518 /// As ECALL causes a synchronous exception, it is not considered to retire,
13519 /// and should not increment the `minstret` CSR.
13520 ///
13521 /// # Forms
13522 /// Assembly: `ecall ""`
13523 ECALL,
13524 /// RISC-V `fabs.d` instruction.
13525 ///
13526 /// # Forms
13527 /// Assembly: `fabs.d rd rs1 rs2_eq_rs1`
13528 FABSD,
13529 /// RISC-V `fabs.h` instruction.
13530 ///
13531 /// # Forms
13532 /// Assembly: `fabs.h rd rs1 rs2_eq_rs1`
13533 FABSH,
13534 /// RISC-V `fabs.q` instruction.
13535 ///
13536 /// # Forms
13537 /// Assembly: `fabs.q rd rs1 rs2_eq_rs1`
13538 FABSQ,
13539 /// RISC-V `fabs.s` instruction.
13540 ///
13541 /// # Forms
13542 /// Assembly: `fabs.s rd rs1 rs2_eq_rs1`
13543 FABSS,
13544 /// RISC-V `fadd.d` instruction.
13545 ///
13546 /// # Forms
13547 /// Assembly: `fadd.d xd, xs1, xs2, rm`
13548 FADDD,
13549 /// RISC-V `fadd.h` instruction.
13550 ///
13551 /// # Forms
13552 /// Assembly: `fadd.h xd, xs1, xs2, rm`
13553 FADDH,
13554 /// RISC-V `fadd.q` instruction.
13555 ///
13556 /// # Forms
13557 /// Assembly: `fadd.q qd, qs1, qs2, rm`
13558 FADDQ,
13559 /// Single-precision floating-point addition
13560 ///
13561 /// Do the single-precision floating-point addition of fs1 and fs2 and store the result in fd.
13562 /// rm is the dynamic Rounding Mode.
13563 ///
13564 /// # Forms
13565 /// Assembly: `fadd.s fd, fs1, fs2, rm`
13566 FADDS,
13567 /// RISC-V `fclass.d` instruction.
13568 ///
13569 /// # Forms
13570 /// Assembly: `fclass.d xd, xs1`
13571 FCLASSD,
13572 /// RISC-V `fclass.h` instruction.
13573 ///
13574 /// # Forms
13575 /// Assembly: `fclass.h xd, xs1`
13576 FCLASSH,
13577 /// RISC-V `fclass.q` instruction.
13578 ///
13579 /// # Forms
13580 /// Assembly: `fclass.q xd, qs1`
13581 FCLASSQ,
13582 /// Single-precision floating-point classify.
13583 ///
13584 /// The `fclass.s` instruction examines the value in floating-point register
13585 /// _fs1_ and writes to integer register _rd_ a 10-bit mask that indicates
13586 /// the class of the floating-point number.
13587 /// The format of the mask is described in the table below.
13588 /// The corresponding bit in _rd_ will be set if the property is true and
13589 /// clear otherwise.
13590 /// All other bits in _rd_ are cleared.
13591 /// Note that exactly one bit in rd will be set.
13592 /// `fclass.s` does not set the floating-point exception flags.
13593 ///
13594 /// .Format of result of `fclass` instruction.
13595 /// \[%autowidth,float="center",align="center",cols="^,<",options="header",\]
13596 /// |===
13597 /// |_rd_ bit |Meaning
13598 /// |0 |_rs1_ is latexmath:\[$-\infty$\].
13599 /// |1 |_rs1_ is a negative normal number.
13600 /// |2 |_rs1_ is a negative subnormal number.
13601 /// |3 |_rs1_ is latexmath:\[$-0$\].
13602 /// |4 |_rs1_ is latexmath:\[$+0$\].
13603 /// |5 |_rs1_ is a positive subnormal number.
13604 /// |6 |_rs1_ is a positive normal number.
13605 /// |7 |_rs1_ is latexmath:\[$+\infty$\].
13606 /// |8 |_rs1_ is a signaling NaN.
13607 /// |9 |_rs1_ is a quiet NaN.
13608 /// |===
13609 ///
13610 /// # Forms
13611 /// Assembly: `fclass.s xd, fs1`
13612 FCLASSS,
13613 /// RISC-V `fcvt.bf16.s` instruction.
13614 ///
13615 /// # Forms
13616 /// Assembly: `fcvt.bf16.s xd, xs1, rm`
13617 FCVTBF16S,
13618 /// RISC-V `fcvt.d.h` instruction.
13619 ///
13620 /// # Forms
13621 /// Assembly: `fcvt.d.h xd, xs1, rm`
13622 FCVTDH,
13623 /// RISC-V `fcvt.d.l` instruction.
13624 ///
13625 /// # Forms
13626 /// Assembly: `fcvt.d.l xd, xs1, rm`
13627 FCVTDL,
13628 /// RISC-V `fcvt.d.lu` instruction.
13629 ///
13630 /// # Forms
13631 /// Assembly: `fcvt.d.lu xd, xs1, rm`
13632 FCVTDLU,
13633 /// RISC-V `fcvt.d.q` instruction.
13634 ///
13635 /// # Forms
13636 /// Assembly: `fcvt.d.q xd, qs1, rm`
13637 FCVTDQ,
13638 /// RISC-V `fcvt.d.s` instruction.
13639 ///
13640 /// # Forms
13641 /// Assembly: `fcvt.d.s xd, xs1, rm`
13642 FCVTDS,
13643 /// RISC-V `fcvt.d.w` instruction.
13644 ///
13645 /// # Forms
13646 /// Assembly: `fcvt.d.w xd, xs1, rm`
13647 FCVTDW,
13648 /// RISC-V `fcvt.d.wu` instruction.
13649 ///
13650 /// # Forms
13651 /// Assembly: `fcvt.d.wu xd, xs1, rm`
13652 FCVTDWU,
13653 /// RISC-V `fcvt.h.d` instruction.
13654 ///
13655 /// # Forms
13656 /// Assembly: `fcvt.h.d xd, xs1, rm`
13657 FCVTHD,
13658 /// RISC-V `fcvt.h.l` instruction.
13659 ///
13660 /// # Forms
13661 /// Assembly: `fcvt.h.l xd, xs1, rm`
13662 FCVTHL,
13663 /// RISC-V `fcvt.h.lu` instruction.
13664 ///
13665 /// # Forms
13666 /// Assembly: `fcvt.h.lu xd, xs1, rm`
13667 FCVTHLU,
13668 /// RISC-V `fcvt.h.q` instruction.
13669 ///
13670 /// # Forms
13671 /// Assembly: `fcvt.h.q xd, qs1, rm`
13672 FCVTHQ,
13673 /// Convert half-precision float to a single-precision float
13674 ///
13675 /// Converts a half-precision number in floating-point register _fs1_ into a single-precision floating-point number in
13676 /// floating-point register _fd_.
13677 ///
13678 /// `fcvt.h.s` rounds according to the _rm_ field.
13679 ///
13680 /// All floating-point conversion instructions set the Inexact exception flag if the rounded
13681 /// result differs from the operand value and the Invalid exception flag is not set.
13682 ///
13683 /// # Forms
13684 /// Assembly: `fcvt.h.s fd, xs1`
13685 FCVTHS,
13686 /// RISC-V `fcvt.h.w` instruction.
13687 ///
13688 /// # Forms
13689 /// Assembly: `fcvt.h.w xd, xs1, rm`
13690 FCVTHW,
13691 /// RISC-V `fcvt.h.wu` instruction.
13692 ///
13693 /// # Forms
13694 /// Assembly: `fcvt.h.wu xd, xs1, rm`
13695 FCVTHWU,
13696 /// RISC-V `fcvt.l.d` instruction.
13697 ///
13698 /// # Forms
13699 /// Assembly: `fcvt.l.d xd, xs1, rm`
13700 FCVTLD,
13701 /// RISC-V `fcvt.l.h` instruction.
13702 ///
13703 /// # Forms
13704 /// Assembly: `fcvt.l.h xd, xs1, rm`
13705 FCVTLH,
13706 /// RISC-V `fcvt.l.q` instruction.
13707 ///
13708 /// # Forms
13709 /// Assembly: `fcvt.l.q xd, qs1, rm`
13710 FCVTLQ,
13711 /// RISC-V `fcvt.l.s` instruction.
13712 ///
13713 /// # Forms
13714 /// Assembly: `fcvt.l.s xd, fs1, rm`
13715 FCVTLS,
13716 /// RISC-V `fcvt.lu.d` instruction.
13717 ///
13718 /// # Forms
13719 /// Assembly: `fcvt.lu.d xd, xs1, rm`
13720 FCVTLUD,
13721 /// RISC-V `fcvt.lu.h` instruction.
13722 ///
13723 /// # Forms
13724 /// Assembly: `fcvt.lu.h xd, xs1, rm`
13725 FCVTLUH,
13726 /// RISC-V `fcvt.lu.q` instruction.
13727 ///
13728 /// # Forms
13729 /// Assembly: `fcvt.lu.q qd, hs1, rm`
13730 FCVTLUQ,
13731 /// RISC-V `fcvt.lu.s` instruction.
13732 ///
13733 /// # Forms
13734 /// Assembly: `fcvt.lu.s xd, fs1, rm`
13735 FCVTLUS,
13736 /// RISC-V `fcvt.q.d` instruction.
13737 ///
13738 /// # Forms
13739 /// Assembly: `fcvt.q.d dd, fs1, rm`
13740 FCVTQD,
13741 /// RISC-V `fcvt.q.h` instruction.
13742 ///
13743 /// # Forms
13744 /// Assembly: `fcvt.q.h hd, qs1, rm`
13745 FCVTQH,
13746 /// RISC-V `fcvt.q.l` instruction.
13747 ///
13748 /// # Forms
13749 /// Assembly: `fcvt.q.l qd, xs1, rm`
13750 FCVTQL,
13751 /// RISC-V `fcvt.q.lu` instruction.
13752 ///
13753 /// # Forms
13754 /// Assembly: `fcvt.q.lu qd, xs1, rm`
13755 FCVTQLU,
13756 /// RISC-V `fcvt.q.s` instruction.
13757 ///
13758 /// # Forms
13759 /// Assembly: `fcvt.q.s qd, fs1, rm`
13760 FCVTQS,
13761 /// RISC-V `fcvt.q.w` instruction.
13762 ///
13763 /// # Forms
13764 /// Assembly: `fcvt.q.w fd, xs1, rm`
13765 FCVTQW,
13766 /// RISC-V `fcvt.q.wu` instruction.
13767 ///
13768 /// # Forms
13769 /// Assembly: `fcvt.q.wu qd, xs1, rm`
13770 FCVTQWU,
13771 /// RISC-V `fcvt.s.bf16` instruction.
13772 ///
13773 /// # Forms
13774 /// Assembly: `fcvt.s.bf16 xd, xs1, rm`
13775 FCVTSBF16,
13776 /// RISC-V `fcvt.s.d` instruction.
13777 ///
13778 /// # Forms
13779 /// Assembly: `fcvt.s.d xd, xs1, rm`
13780 FCVTSD,
13781 /// Convert single-precision float to a half-precision float
13782 ///
13783 /// Converts a single-precision number in floating-point register _fs1_ into a half-precision floating-point number in
13784 /// floating-point register _fd_.
13785 ///
13786 /// `fcvt.s.h` will never round, and so the 'rm' field is effectively ignored.
13787 ///
13788 /// # Forms
13789 /// Assembly: `fcvt.s.h fd, xs1`
13790 FCVTSH,
13791 /// RISC-V `fcvt.s.l` instruction.
13792 ///
13793 /// # Forms
13794 /// Assembly: `fcvt.s.l fd, xs1, rm`
13795 FCVTSL,
13796 /// RISC-V `fcvt.s.lu` instruction.
13797 ///
13798 /// # Forms
13799 /// Assembly: `fcvt.s.lu fd, xs1, rm`
13800 FCVTSLU,
13801 /// RISC-V `fcvt.s.q` instruction.
13802 ///
13803 /// # Forms
13804 /// Assembly: `fcvt.s.q fd, qs1, rm`
13805 FCVTSQ,
13806 /// Convert signed 32-bit integer to single-precision float
13807 ///
13808 /// Converts a 32-bit signed integer in integer register _rs1_ into a floating-point number in
13809 /// floating-point register _fd_.
13810 ///
13811 /// All floating-point to integer and integer to floating-point conversion instructions round
13812 /// according to the _rm_ field.
13813 /// A floating-point register can be initialized to floating-point positive zero using
13814 /// `fcvt.s.w rd, x0`, which will never set any exception flags.
13815 ///
13816 /// All floating-point conversion instructions set the Inexact exception flag if the rounded
13817 /// result differs from the operand value and the Invalid exception flag is not set.
13818 ///
13819 /// # Forms
13820 /// Assembly: `fcvt.s.w fd, xs1`
13821 FCVTSW,
13822 /// RISC-V `fcvt.s.wu` instruction.
13823 ///
13824 /// # Forms
13825 /// Assembly: `fcvt.s.wu fd, xs1, rm`
13826 FCVTSWU,
13827 /// RISC-V `fcvt.w.d` instruction.
13828 ///
13829 /// # Forms
13830 /// Assembly: `fcvt.w.d xd, xs1, rm`
13831 FCVTWD,
13832 /// RISC-V `fcvt.w.h` instruction.
13833 ///
13834 /// # Forms
13835 /// Assembly: `fcvt.w.h xd, xs1, rm`
13836 FCVTWH,
13837 /// RISC-V `fcvt.w.q` instruction.
13838 ///
13839 /// # Forms
13840 /// Assembly: `fcvt.w.q xd, qs1, rm`
13841 FCVTWQ,
13842 /// Convert single-precision float to integer word to signed 32-bit integer.
13843 ///
13844 /// Converts a floating-point number in floating-point register _fs1_ to a signed 32-bit integer indicates
13845 /// integer register _rd_.
13846 ///
13847 /// For XLEN >32, `fcvt.w.s` sign-extends the 32-bit result to the destination register width.
13848 ///
13849 /// If the rounded result is not representable as a 32-bit signed integer, it is clipped to the
13850 /// nearest value and the invalid flag is set.
13851 ///
13852 /// The range of valid inputs and behavior for invalid inputs are:
13853 ///
13854 /// \[separator="!"\]
13855 /// !===
13856 /// ! ! Value
13857 ///
13858 /// h! Minimum valid input (after rounding) ! `-2^31`
13859 /// h! Maximum valid input (after rounding) ! `2^31 - 1`
13860 /// h! Output for out-of-range negative input ! `-2^31`
13861 /// h! Output for `-∞` ! `-2^31`
13862 /// h! Output for out-of-range positive input ! `2^31 - 1`
13863 /// h! Output for `+∞` for `NaN` ! `2^31 - 1`
13864 /// !===
13865 ///
13866 /// All floating-point to integer and integer to floating-point conversion instructions round
13867 /// according to the _rm_ field.
13868 /// A floating-point register can be initialized to floating-point positive zero using
13869 /// `fcvt.s.w rd, x0`, which will never set any exception flags.
13870 ///
13871 /// All floating-point conversion instructions set the Inexact exception flag if the rounded
13872 /// result differs from the operand value and the Invalid exception flag is not set.
13873 ///
13874 /// # Forms
13875 /// Assembly: `fcvt.w.s xd, fs1`
13876 FCVTWS,
13877 /// RISC-V `fcvt.wu.d` instruction.
13878 ///
13879 /// # Forms
13880 /// Assembly: `fcvt.wu.d xd, xs1, rm`
13881 FCVTWUD,
13882 /// RISC-V `fcvt.wu.h` instruction.
13883 ///
13884 /// # Forms
13885 /// Assembly: `fcvt.wu.h xd, xs1, rm`
13886 FCVTWUH,
13887 /// RISC-V `fcvt.wu.q` instruction.
13888 ///
13889 /// # Forms
13890 /// Assembly: `fcvt.wu.q xd, xs1, rm`
13891 FCVTWUQ,
13892 /// RISC-V `fcvt.wu.s` instruction.
13893 ///
13894 /// # Forms
13895 /// Assembly: `fcvt.wu.s xd, fs1, rm`
13896 FCVTWUS,
13897 /// RISC-V `fcvtmod.w.d` instruction.
13898 ///
13899 /// # Forms
13900 /// Assembly: `fcvtmod.w.d xd, xs1`
13901 FCVTMODWD,
13902 /// RISC-V `fdiv.d` instruction.
13903 ///
13904 /// # Forms
13905 /// Assembly: `fdiv.d xd, xs1, xs2, rm`
13906 FDIVD,
13907 /// RISC-V `fdiv.h` instruction.
13908 ///
13909 /// # Forms
13910 /// Assembly: `fdiv.h xd, xs1, xs2, rm`
13911 FDIVH,
13912 /// RISC-V `fdiv.q` instruction.
13913 ///
13914 /// # Forms
13915 /// Assembly: `fdiv.q qd, qs1, qs2, rm`
13916 FDIVQ,
13917 /// RISC-V `fdiv.s` instruction.
13918 ///
13919 /// # Forms
13920 /// Assembly: `fdiv.s fd, fs1, fs2, rm`
13921 FDIVS,
13922 /// Memory ordering fence
13923 ///
13924 /// Orders memory operations.
13925 ///
13926 /// The `fence` instruction is used to order device I/O and memory accesses as
13927 /// viewed by other RISC-V harts and external devices or coprocessors. Any
13928 /// combination of device input (I), device output (O), memory reads \(R),
13929 /// and memory writes (W) may be ordered with respect to any combination of
13930 /// the same. Informally, no other RISC-V hart or external device can
13931 /// observe any operation in the _successor_ set following a `fence` before
13932 /// any operation in the _predecessor_ set preceding the `fence`.
13933 ///
13934 /// The predecessor and successor fields have the same format to specify operation types:
13935 ///
13936 /// \[%autowidth\]
13937 /// |===
13938 /// 4+| `pred` 4+| `succ`
13939 ///
13940 /// | 27 | 26 |25 | 24 | 23 | 22 | 21| 20
13941 /// | PI | PO |PR | PW | SI | SO |SR | SW
13942 /// |===
13943 ///
13944 /// \[%autowidth,align="center",cols="^1,^1,<3",options="header"\]
13945 /// .Fence mode encoding
13946 /// |===
13947 /// |_fm_ field |Mnemonic |Meaning
13948 /// |0000 |_none_ |Normal Fence
13949 /// |1000 |TSO |With `FENCE RW,RW`: exclude write-to-read ordering; otherwise: _Reserved for future use._
13950 /// 2+|_other_ |_Reserved for future use._
13951 /// |===
13952 ///
13953 /// When the mode field _fm_ is `0001` and both the predecessor and successor sets are 'RW',
13954 /// then the instruction acts as a special-case `fence.tso`. `fence.tso` orders all load operations
13955 /// in its predecessor set before all memory operations in its successor set, and all store operations
13956 /// in its predecessor set before all store operations in its successor set. This leaves non-AMO store
13957 /// operations in the 'fence.tso's predecessor set unordered with non-AMO loads in its successor set.
13958 ///
13959 /// When mode field _fm_ is not `0001`, or when mode field _fm_ is `0001` but the _pred_ and
13960 /// _succ_ fields are not both 'RW' (0x3), then the fence acts as a baseline fence (_e.g._, _fm_ is
13961 /// effectively `0000`). This is unaffected by the FIOM bits, described below (implicit promotion does
13962 /// not change how `fence.tso` is decoded).
13963 ///
13964 /// The `rs1` and `rd` fields are unused and ignored.
13965 ///
13966 /// In modes other than M-mode, `fence` is further affected by `menvcfg.FIOM`,
13967 /// `senvcfg.FIOM`<% if ext?(:H) %>, and/or `henvcfg.FIOM`<% end %>
13968 /// as follows:
13969 ///
13970 /// .Effective PR/PW/SR/SW in (H)S-mode
13971 /// \[%autowidth,cols=",,,",options="header",separator="!"\]
13972 /// !===
13973 /// ! \[.rotate\]#`menvcfg.FIOM`# ! `pred.PI` +
13974 /// `pred.PO` +
13975 /// `succ.SI` +
13976 /// `succ.SO`
13977 /// ! -> +
13978 /// -> +
13979 /// -> +
13980 /// ->
13981 /// ! effective `PR` +
13982 /// effective `PW` +
13983 /// effective `SR` +
13984 /// effective `SW`
13985 ///
13986 /// ! 0 ! - ! ! from encoding
13987 /// ! 1 ! 0 ! ! from encoding
13988 /// ! 1 ! 1 ! ! 1
13989 /// !===
13990 ///
13991 /// .Effective PR/PW/SR/SW in U-mode
13992 /// \[%autowidth,options="header",separator="!",cols=",,,,"\]
13993 /// !===
13994 /// ! \[.rotate\]#`menvcfg.FIOM`# ! \[.rotate\]#`senvcfg.FIOM`# ! `pred.PI` +
13995 /// `pred.PO` +
13996 /// `succ.SI` +
13997 /// `succ.SO`
13998 /// ! -> +
13999 /// -> +
14000 /// -> +
14001 /// ->
14002 /// ! effective `PR` +
14003 /// effective `PW` +
14004 /// effective `SR` +
14005 /// effective `SW`
14006 ///
14007 /// ! 0 ! 0 ! - ! ! from encoding
14008 /// ! 0 ! 1 ! 0 ! ! from encoding
14009 /// ! 0 ! 1 ! 1 ! ! 1
14010 /// ! 1 ! - ! 0 ! ! from encoding
14011 /// ! 1 ! - ! 1 ! ! 1
14012 /// !===
14013 ///
14014 /// <%- if ext?(:H) -%>
14015 /// .Effective PR/PW/SR/SW in VS-mode and VU-mode
14016 /// \[%autowidth,options="header",separator="!",cols=",,,,"\]
14017 /// !===
14018 /// ! \[.rotate\]#`menvcfg.FIOM`# ! \[.rotate\]#`henvcfg.FIOM`# ! `pred.PI` +
14019 /// `pred.PO` +
14020 /// `succ.SI` +
14021 /// `succ.SO`
14022 /// ! -> +
14023 /// -> +
14024 /// -> +
14025 /// ->
14026 /// ! effective `PR` +
14027 /// effective `PW` +
14028 /// effective `SR` +
14029 /// effective `SW`
14030 ///
14031 /// ! 0 ! 0 ! - ! ! from encoding
14032 /// ! 0 ! 1 ! 0 ! ! from encoding
14033 /// ! 0 ! 1 ! 1 ! ! 1
14034 /// ! 1 ! - ! 0 ! ! from encoding
14035 /// ! 1 ! - ! 1 ! ! 1
14036 /// !===
14037 /// <%- end -%>
14038 ///
14039 /// # Forms
14040 /// Assembly: `fence "TODO"`
14041 FENCE,
14042 /// Instruction fence
14043 ///
14044 /// The FENCE.I instruction is used to synchronize the instruction and data
14045 /// streams. RISC-V does not guarantee that stores to instruction memory
14046 /// will be made visible to instruction fetches on a RISC-V hart until that
14047 /// hart executes a FENCE.I instruction. A FENCE.I instruction ensures that
14048 /// a subsequent instruction fetch on a RISC-V hart will see any previous
14049 /// data stores already visible to the same RISC-V hart. FENCE.I does _not_
14050 /// ensure that other RISC-V harts' instruction fetches will observe the
14051 /// local hart's stores in a multiprocessor system. To make a store to
14052 /// instruction memory visible to all RISC-V harts, the writing hart also
14053 /// has to execute a data FENCE before requesting that all remote RISC-V
14054 /// harts execute a FENCE.I.
14055 ///
14056 /// The unused fields in the FENCE.I instruction, _imm\[11:0\]_, _rs1_, and
14057 /// _rd_, are reserved for finer-grain fences in future extensions. For
14058 /// forward compatibility, base implementations shall ignore these fields,
14059 /// and standard software shall zero these fields.
14060 /// (((FENCE.I, finer-grained)))
14061 /// (((FENCE.I, forward compatibility)))
14062 ///
14063 /// \[NOTE\]
14064 /// ====
14065 /// Because FENCE.I only orders stores with a hart's own instruction
14066 /// fetches, application code should only rely upon FENCE.I if the
14067 /// application thread will not be migrated to a different hart. The EEI can
14068 /// provide mechanisms for efficient multiprocessor instruction-stream
14069 /// synchronization.
14070 /// ====
14071 ///
14072 /// # Forms
14073 /// Assembly: `fence.i ""`
14074 FENCEI,
14075 /// RISC-V `fence.tso` instruction.
14076 ///
14077 /// # Forms
14078 /// Assembly: `fence.tso`
14079 FENCETSO,
14080 /// RISC-V `feq.d` instruction.
14081 ///
14082 /// # Forms
14083 /// Assembly: `feq.d xd, xs1, xs2`
14084 FEQD,
14085 /// RISC-V `feq.h` instruction.
14086 ///
14087 /// # Forms
14088 /// Assembly: `feq.h xd, xs1, xs2`
14089 FEQH,
14090 /// RISC-V `feq.q` instruction.
14091 ///
14092 /// # Forms
14093 /// Assembly: `feq.q xd, qs1, qs2`
14094 FEQQ,
14095 /// Single-precision floating-point equal
14096 ///
14097 /// Writes 1 to _rd_ if _fs1_ and _fs2_ are equal, and 0 otherwise.
14098 ///
14099 /// If either operand is NaN, the result is 0 (not equal). If either operand is a signaling NaN, the invalid flag is set.
14100 ///
14101 /// Positive zero is considered equal to negative zero.
14102 ///
14103 /// # Forms
14104 /// Assembly: `feq.s xd, fs1, fs2`
14105 FEQS,
14106 /// RISC-V `fld` instruction.
14107 ///
14108 /// # Forms
14109 /// Assembly: `fld xd, xs1, imm`
14110 FLD,
14111 /// RISC-V `fle.d` instruction.
14112 ///
14113 /// # Forms
14114 /// Assembly: `fle.d xd, xs1, xs2`
14115 FLED,
14116 /// RISC-V `fle.h` instruction.
14117 ///
14118 /// # Forms
14119 /// Assembly: `fle.h xd, xs1, xs2`
14120 FLEH,
14121 /// RISC-V `fle.q` instruction.
14122 ///
14123 /// # Forms
14124 /// Assembly: `fle.q xd, qs1, qs2`
14125 FLEQ,
14126 /// Single-precision floating-point less than or equal
14127 ///
14128 /// Writes 1 to _rd_ if _fs1_ is less than or equal to _fs2_, and 0 otherwise.
14129 ///
14130 /// If either operand is NaN, the result is 0 (not equal).
14131 /// If either operand is a NaN (signaling or quiet), the invalid flag is set.
14132 ///
14133 /// Positive zero and negative zero are considered equal.
14134 ///
14135 /// # Forms
14136 /// Assembly: `fle.s xd, fs1, fs2`
14137 FLES,
14138 /// RISC-V `fleq.d` instruction.
14139 ///
14140 /// # Forms
14141 /// Assembly: `fleq.d xd, xs1, xs2`
14142 FLEQD,
14143 /// RISC-V `fleq.h` instruction.
14144 ///
14145 /// # Forms
14146 /// Assembly: `fleq.h xd, xs1, xs2`
14147 FLEQH,
14148 /// RISC-V `fleq.q` instruction.
14149 ///
14150 /// # Forms
14151 /// Assembly: `fleq.q xd, qs1, qs2`
14152 FLEQQ,
14153 /// RISC-V `fleq.s` instruction.
14154 ///
14155 /// # Forms
14156 /// Assembly: `fleq.s xd, fs1, fs2`
14157 FLEQS,
14158 /// Half-precision floating-point load
14159 ///
14160 /// The `flh` instruction loads a single-precision floating-point value from memory at address _rs1_ + _imm_ into floating-point register _rd_.
14161 ///
14162 /// `flh` does not modify the bits being transferred; in particular, the payloads of non-canonical NaNs are preserved.
14163 ///
14164 /// `flh` is only guaranteed to execute atomically if the effective address is naturally aligned.
14165 ///
14166 /// # Forms
14167 /// Assembly: `flh fd, imm(xs1)`
14168 FLH,
14169 /// RISC-V `fli.d` instruction.
14170 ///
14171 /// # Forms
14172 /// Assembly: `fli.d xd, xs1`
14173 FLID,
14174 /// RISC-V `fli.h` instruction.
14175 ///
14176 /// # Forms
14177 /// Assembly: `fli.h xd, xs1`
14178 FLIH,
14179 /// RISC-V `fli.q` instruction.
14180 ///
14181 /// # Forms
14182 /// Assembly: `fli.q fd, qs1`
14183 FLIQ,
14184 /// RISC-V `fli.s` instruction.
14185 ///
14186 /// # Forms
14187 /// Assembly: `fli.s fd, fs1`
14188 FLIS,
14189 /// RISC-V `flq` instruction.
14190 ///
14191 /// # Forms
14192 /// Assembly: `flq qd, xs1, imm`
14193 FLQ,
14194 /// RISC-V `flt.d` instruction.
14195 ///
14196 /// # Forms
14197 /// Assembly: `flt.d xd, xs1, xs2`
14198 FLTD,
14199 /// RISC-V `flt.h` instruction.
14200 ///
14201 /// # Forms
14202 /// Assembly: `flt.h xd, xs1, xs2`
14203 FLTH,
14204 /// RISC-V `flt.q` instruction.
14205 ///
14206 /// # Forms
14207 /// Assembly: `flt.q xd, qs1, qs2`
14208 FLTQ,
14209 /// Single-precision floating-point less than
14210 ///
14211 /// Writes 1 to _rd_ if _fs1_ is less than _fs2_, and 0 otherwise.
14212 ///
14213 /// If either operand is NaN, the result is 0 (not equal).
14214 /// If either operand is a NaN (signaling or quiet), the invalid flag is set.
14215 ///
14216 /// # Forms
14217 /// Assembly: `flt.s xd, fs1, fs2`
14218 FLTS,
14219 /// RISC-V `fltq.d` instruction.
14220 ///
14221 /// # Forms
14222 /// Assembly: `fltq.d xd, xs1, xs2`
14223 FLTQD,
14224 /// RISC-V `fltq.h` instruction.
14225 ///
14226 /// # Forms
14227 /// Assembly: `fltq.h xd, xs1, xs2`
14228 FLTQH,
14229 /// RISC-V `fltq.q` instruction.
14230 ///
14231 /// # Forms
14232 /// Assembly: `fltq.q qd, qs1, qs2`
14233 FLTQQ,
14234 /// RISC-V `fltq.s` instruction.
14235 ///
14236 /// # Forms
14237 /// Assembly: `fltq.s xd, fs1, fs2`
14238 FLTQS,
14239 /// Single-precision floating-point load
14240 ///
14241 /// The `flw` instruction loads a single-precision floating-point value from memory at address _rs1_ + _imm_ into floating-point register _fd_.
14242 ///
14243 /// `flw` does not modify the bits being transferred; in particular, the payloads of non-canonical NaNs are preserved.
14244 ///
14245 /// # Forms
14246 /// Assembly: `flw fd, xs1, imm`
14247 FLW,
14248 /// RISC-V `fmadd.d` instruction.
14249 ///
14250 /// # Forms
14251 /// Assembly: `fmadd.d xd, xs1, xs2, xs3, rm`
14252 FMADDD,
14253 /// RISC-V `fmadd.h` instruction.
14254 ///
14255 /// # Forms
14256 /// Assembly: `fmadd.h xd, xs1, xs2, xs3, rm`
14257 FMADDH,
14258 /// RISC-V `fmadd.q` instruction.
14259 ///
14260 /// # Forms
14261 /// Assembly: `fmadd.q qd, qs1, qs2, qs3, rm`
14262 FMADDQ,
14263 /// RISC-V `fmadd.s` instruction.
14264 ///
14265 /// # Forms
14266 /// Assembly: `fmadd.s fd, fs1, fs2, fs3, rm`
14267 FMADDS,
14268 /// RISC-V `fmax.d` instruction.
14269 ///
14270 /// # Forms
14271 /// Assembly: `fmax.d xd, xs1, xs2`
14272 FMAXD,
14273 /// RISC-V `fmax.h` instruction.
14274 ///
14275 /// # Forms
14276 /// Assembly: `fmax.h xd, xs1, xs2`
14277 FMAXH,
14278 /// RISC-V `fmax.q` instruction.
14279 ///
14280 /// # Forms
14281 /// Assembly: `fmax.q qd, qs1, qs2`
14282 FMAXQ,
14283 /// RISC-V `fmax.s` instruction.
14284 ///
14285 /// # Forms
14286 /// Assembly: `fmax.s fd, fs1, fs2`
14287 FMAXS,
14288 /// RISC-V `fmaxm.d` instruction.
14289 ///
14290 /// # Forms
14291 /// Assembly: `fmaxm.d xd, xs1, xs2`
14292 FMAXMD,
14293 /// RISC-V `fmaxm.h` instruction.
14294 ///
14295 /// # Forms
14296 /// Assembly: `fmaxm.h xd, xs1, xs2`
14297 FMAXMH,
14298 /// RISC-V `fmaxm.q` instruction.
14299 ///
14300 /// # Forms
14301 /// Assembly: `fmaxm.q qd, qs1, qs2`
14302 FMAXMQ,
14303 /// RISC-V `fmaxm.s` instruction.
14304 ///
14305 /// # Forms
14306 /// Assembly: `fmaxm.s xd, xs1, xs2`
14307 FMAXMS,
14308 /// RISC-V `fmin.d` instruction.
14309 ///
14310 /// # Forms
14311 /// Assembly: `fmin.d xd, xs1, xs2`
14312 FMIND,
14313 /// RISC-V `fmin.h` instruction.
14314 ///
14315 /// # Forms
14316 /// Assembly: `fmin.h xd, xs1, xs2`
14317 FMINH,
14318 /// RISC-V `fmin.q` instruction.
14319 ///
14320 /// # Forms
14321 /// Assembly: `fmin.q xd, xs1, xs2`
14322 FMINQ,
14323 /// RISC-V `fmin.s` instruction.
14324 ///
14325 /// # Forms
14326 /// Assembly: `fmin.s xd, xs1, xs2`
14327 FMINS,
14328 /// RISC-V `fminm.d` instruction.
14329 ///
14330 /// # Forms
14331 /// Assembly: `fminm.d xd, xs1, xs2`
14332 FMINMD,
14333 /// RISC-V `fminm.h` instruction.
14334 ///
14335 /// # Forms
14336 /// Assembly: `fminm.h xd, xs1, xs2`
14337 FMINMH,
14338 /// RISC-V `fminm.q` instruction.
14339 ///
14340 /// # Forms
14341 /// Assembly: `fminm.q qd, qs1, qs2`
14342 FMINMQ,
14343 /// RISC-V `fminm.s` instruction.
14344 ///
14345 /// # Forms
14346 /// Assembly: `fminm.s fd, fs1, fs2`
14347 FMINMS,
14348 /// RISC-V `fmsub.d` instruction.
14349 ///
14350 /// # Forms
14351 /// Assembly: `fmsub.d xd, xs1, xs2, xs3, rm`
14352 FMSUBD,
14353 /// RISC-V `fmsub.h` instruction.
14354 ///
14355 /// # Forms
14356 /// Assembly: `fmsub.h xd, xs1, xs2, xs3, rm`
14357 FMSUBH,
14358 /// RISC-V `fmsub.q` instruction.
14359 ///
14360 /// # Forms
14361 /// Assembly: `fmsub.q qd, qs1, qs2, qs3, rm`
14362 FMSUBQ,
14363 /// RISC-V `fmsub.s` instruction.
14364 ///
14365 /// # Forms
14366 /// Assembly: `fmsub.s fd, fs1, fs2, fs3, rm`
14367 FMSUBS,
14368 /// RISC-V `fmul.d` instruction.
14369 ///
14370 /// # Forms
14371 /// Assembly: `fmul.d xd, xs1, xs2, rm`
14372 FMULD,
14373 /// RISC-V `fmul.h` instruction.
14374 ///
14375 /// # Forms
14376 /// Assembly: `fmul.h xd, xs1, xs2, rm`
14377 FMULH,
14378 /// RISC-V `fmul.q` instruction.
14379 ///
14380 /// # Forms
14381 /// Assembly: `fmul.q qd, qs1, qs2, rm`
14382 FMULQ,
14383 /// RISC-V `fmul.s` instruction.
14384 ///
14385 /// # Forms
14386 /// Assembly: `fmul.s fd, fs1, fs2, rm`
14387 FMULS,
14388 /// RISC-V `fmv.d` instruction.
14389 ///
14390 /// # Forms
14391 /// Assembly: `fmv.d rd rs1 rs2_eq_rs1`
14392 FMVD,
14393 /// RISC-V `fmv.d.x` instruction.
14394 ///
14395 /// # Forms
14396 /// Assembly: `fmv.d.x xd, xs1`
14397 FMVDX,
14398 /// RISC-V `fmv.h` instruction.
14399 ///
14400 /// # Forms
14401 /// Assembly: `fmv.h rd rs1 rs2_eq_rs1`
14402 FMVH,
14403 /// Half-precision floating-point move from integer
14404 ///
14405 /// Moves the half-precision value encoded in IEEE 754-2008 standard encoding
14406 /// from the lower 16 bits of integer register `rs1` to the floating-point
14407 /// register `fd`. The bits are not modified in the transfer, and in particular,
14408 /// the payloads of non-canonical NaNs are preserved.
14409 ///
14410 /// # Forms
14411 /// Assembly: `fmv.h.x fd, xs1`
14412 FMVHX,
14413 /// RISC-V `fmv.q` instruction.
14414 ///
14415 /// # Forms
14416 /// Assembly: `fmv.q rd rs1 rs2_eq_rs1`
14417 FMVQ,
14418 /// RISC-V `fmv.s` instruction.
14419 ///
14420 /// # Forms
14421 /// Assembly: `fmv.s rd rs1 rs2_eq_rs1`
14422 FMVS,
14423 /// RISC-V `fmv.s.x` instruction.
14424 ///
14425 /// # Forms
14426 /// Assembly: `fmv.s.x rd rs1`
14427 FMVSX,
14428 /// Single-precision floating-point move from integer
14429 ///
14430 /// Moves the single-precision value encoded in IEEE 754-2008 standard encoding
14431 /// from the lower 32 bits of integer register `rs1` to the floating-point
14432 /// register `fd`. The bits are not modified in the transfer, and in particular,
14433 /// the payloads of non-canonical NaNs are preserved.
14434 ///
14435 /// # Forms
14436 /// Assembly: `fmv.w.x fd, xs1`
14437 FMVWX,
14438 /// RISC-V `fmv.x.d` instruction.
14439 ///
14440 /// # Forms
14441 /// Assembly: `fmv.x.d xd, xs1`
14442 FMVXD,
14443 /// Move half-precision value from floating-point to integer register
14444 ///
14445 /// Moves the half-precision value in floating-point register rs1 represented in IEEE 754-2008
14446 /// encoding to the lower 16 bits of integer register rd.
14447 ///
14448 /// The bits are not modified in the transfer, and in particular, the payloads of non-canonical
14449 /// NaNs are preserved.
14450 ///
14451 /// The highest XLEN-16 bits of the destination register are filled with copies of the
14452 /// floating-point number's sign bit.
14453 ///
14454 /// # Forms
14455 /// Assembly: `fmv.x.h rd, fs1`
14456 FMVXH,
14457 /// RISC-V `fmv.x.s` instruction.
14458 ///
14459 /// # Forms
14460 /// Assembly: `fmv.x.s rd rs1`
14461 FMVXS,
14462 /// Move single-precision value from floating-point to integer register
14463 ///
14464 /// Moves the single-precision value in floating-point register rs1 represented in IEEE 754-2008
14465 /// encoding to the lower 32 bits of integer register rd.
14466 /// The bits are not modified in the transfer, and in particular, the payloads of non-canonical
14467 /// NaNs are preserved.
14468 /// For RV64, the higher 32 bits of the destination register are filled with copies of the
14469 /// floating-point number's sign bit.
14470 ///
14471 /// # Forms
14472 /// Assembly: `fmv.x.w xd, fs1`
14473 FMVXW,
14474 /// RISC-V `fmvh.x.d` instruction.
14475 ///
14476 /// # Forms
14477 /// Assembly: `fmvh.x.d xd, xs1`
14478 FMVHXD,
14479 /// RISC-V `fmvh.x.q` instruction.
14480 ///
14481 /// # Forms
14482 /// Assembly: `fmvh.x.q xd, qs1`
14483 FMVHXQ,
14484 /// RISC-V `fmvp.d.x` instruction.
14485 ///
14486 /// # Forms
14487 /// Assembly: `fmvp.d.x xd, xs1, xs2`
14488 FMVPDX,
14489 /// RISC-V `fmvp.q.x` instruction.
14490 ///
14491 /// # Forms
14492 /// Assembly: `fmvp.q.x qd, xs1, xs2`
14493 FMVPQX,
14494 /// RISC-V `fneg.d` instruction.
14495 ///
14496 /// # Forms
14497 /// Assembly: `fneg.d rd rs1 rs2_eq_rs1`
14498 FNEGD,
14499 /// RISC-V `fneg.h` instruction.
14500 ///
14501 /// # Forms
14502 /// Assembly: `fneg.h rd rs1 rs2_eq_rs1`
14503 FNEGH,
14504 /// RISC-V `fneg.q` instruction.
14505 ///
14506 /// # Forms
14507 /// Assembly: `fneg.q rd rs1 rs2_eq_rs1`
14508 FNEGQ,
14509 /// RISC-V `fneg.s` instruction.
14510 ///
14511 /// # Forms
14512 /// Assembly: `fneg.s rd rs1 rs2_eq_rs1`
14513 FNEGS,
14514 /// RISC-V `fnmadd.d` instruction.
14515 ///
14516 /// # Forms
14517 /// Assembly: `fnmadd.d xd, xs1, xs2, xs3, rm`
14518 FNMADDD,
14519 /// RISC-V `fnmadd.h` instruction.
14520 ///
14521 /// # Forms
14522 /// Assembly: `fnmadd.h xd, xs1, xs2, xs3, rm`
14523 FNMADDH,
14524 /// RISC-V `fnmadd.q` instruction.
14525 ///
14526 /// # Forms
14527 /// Assembly: `fnmadd.q qd, qs1, qs2, qs3, rm`
14528 FNMADDQ,
14529 /// RISC-V `fnmadd.s` instruction.
14530 ///
14531 /// # Forms
14532 /// Assembly: `fnmadd.s fd, fs1, fs2, fs3, rm`
14533 FNMADDS,
14534 /// RISC-V `fnmsub.d` instruction.
14535 ///
14536 /// # Forms
14537 /// Assembly: `fnmsub.d xd, xs1, xs2, xs3, rm`
14538 FNMSUBD,
14539 /// RISC-V `fnmsub.h` instruction.
14540 ///
14541 /// # Forms
14542 /// Assembly: `fnmsub.h xd, xs1, xs2, xs3, rm`
14543 FNMSUBH,
14544 /// RISC-V `fnmsub.q` instruction.
14545 ///
14546 /// # Forms
14547 /// Assembly: `fnmsub.q qd, qs1, qs2, qs3, rm`
14548 FNMSUBQ,
14549 /// RISC-V `fnmsub.s` instruction.
14550 ///
14551 /// # Forms
14552 /// Assembly: `fnmsub.s xd, xs1, xs2, xs3, rm`
14553 FNMSUBS,
14554 /// RISC-V `frcsr` instruction.
14555 ///
14556 /// # Forms
14557 /// Assembly: `frcsr rd`
14558 FRCSR,
14559 /// RISC-V `frflags` instruction.
14560 ///
14561 /// # Forms
14562 /// Assembly: `frflags rd`
14563 FRFLAGS,
14564 /// RISC-V `fround.d` instruction.
14565 ///
14566 /// # Forms
14567 /// Assembly: `fround.d xd, xs1, rm`
14568 FROUNDD,
14569 /// RISC-V `fround.h` instruction.
14570 ///
14571 /// # Forms
14572 /// Assembly: `fround.h xd, xs1, rm`
14573 FROUNDH,
14574 /// RISC-V `fround.q` instruction.
14575 ///
14576 /// # Forms
14577 /// Assembly: `fround.q qd, qs1, rm`
14578 FROUNDQ,
14579 /// RISC-V `fround.s` instruction.
14580 ///
14581 /// # Forms
14582 /// Assembly: `fround.s fd, xs1, rm`
14583 FROUNDS,
14584 /// RISC-V `froundnx.d` instruction.
14585 ///
14586 /// # Forms
14587 /// Assembly: `froundnx.d xd, xs1, rm`
14588 FROUNDNXD,
14589 /// RISC-V `froundnx.h` instruction.
14590 ///
14591 /// # Forms
14592 /// Assembly: `froundnx.h xd, xs1, rm`
14593 FROUNDNXH,
14594 /// RISC-V `froundnx.q` instruction.
14595 ///
14596 /// # Forms
14597 /// Assembly: `froundnx.q qd, qs1, rm`
14598 FROUNDNXQ,
14599 /// RISC-V `froundnx.s` instruction.
14600 ///
14601 /// # Forms
14602 /// Assembly: `froundnx.s fd, rs1, rm`
14603 FROUNDNXS,
14604 /// RISC-V `frrm` instruction.
14605 ///
14606 /// # Forms
14607 /// Assembly: `frrm rd`
14608 FRRM,
14609 /// RISC-V `fscsr` instruction.
14610 ///
14611 /// # Forms
14612 /// Assembly: `fscsr rd rs1`
14613 FSCSR,
14614 /// RISC-V `fsd` instruction.
14615 ///
14616 /// # Forms
14617 /// Assembly: `fsd xs1, xs2, imm`
14618 FSD,
14619 /// RISC-V `fsflags` instruction.
14620 ///
14621 /// # Forms
14622 /// Assembly: `fsflags rd rs1`
14623 FSFLAGS,
14624 /// RISC-V `fsflagsi` instruction.
14625 ///
14626 /// # Forms
14627 /// Assembly: `fsflagsi rd zimm5`
14628 FSFLAGSI,
14629 /// RISC-V `fsgnj.d` instruction.
14630 ///
14631 /// # Forms
14632 /// Assembly: `fsgnj.d xd, xs1, xs2`
14633 FSGNJD,
14634 /// RISC-V `fsgnj.h` instruction.
14635 ///
14636 /// # Forms
14637 /// Assembly: `fsgnj.h xd, xs1, xs2`
14638 FSGNJH,
14639 /// RISC-V `fsgnj.q` instruction.
14640 ///
14641 /// # Forms
14642 /// Assembly: `fsgnj.q qd, qs1, qs2`
14643 FSGNJQ,
14644 /// Single-precision sign inject
14645 ///
14646 /// Writes _fd_ with sign bit of _fs2_ and the exponent and mantissa of _fs1_.
14647 ///
14648 /// Sign-injection instructions do not set floating-point exception flags, nor do they canonicalize NaNs.
14649 ///
14650 /// # Forms
14651 /// Assembly: `fsgnj.s fd, fs1, fs2`
14652 FSGNJS,
14653 /// RISC-V `fsgnjn.d` instruction.
14654 ///
14655 /// # Forms
14656 /// Assembly: `fsgnjn.d xd, xs1, xs2`
14657 FSGNJND,
14658 /// RISC-V `fsgnjn.h` instruction.
14659 ///
14660 /// # Forms
14661 /// Assembly: `fsgnjn.h xd, xs1, xs2`
14662 FSGNJNH,
14663 /// RISC-V `fsgnjn.q` instruction.
14664 ///
14665 /// # Forms
14666 /// Assembly: `fsgnjn.q qd, qs1, qs2`
14667 FSGNJNQ,
14668 /// Single-precision sign inject negate
14669 ///
14670 /// Writes _fd_ with the opposite of the sign bit of _fs2_ and the exponent and mantissa of _fs1_.
14671 ///
14672 /// Sign-injection instructions do not set floating-point exception flags, nor do they canonicalize NaNs.
14673 ///
14674 /// # Forms
14675 /// Assembly: `fsgnjn.s fd, fs1, fs2`
14676 FSGNJNS,
14677 /// RISC-V `fsgnjx.d` instruction.
14678 ///
14679 /// # Forms
14680 /// Assembly: `fsgnjx.d xd, xs1, xs2`
14681 FSGNJXD,
14682 /// RISC-V `fsgnjx.h` instruction.
14683 ///
14684 /// # Forms
14685 /// Assembly: `fsgnjx.h xd, xs1, xs2`
14686 FSGNJXH,
14687 /// RISC-V `fsgnjx.q` instruction.
14688 ///
14689 /// # Forms
14690 /// Assembly: `fsgnjx.q qd, qs1, qs2`
14691 FSGNJXQ,
14692 /// Single-precision sign inject exclusive or
14693 ///
14694 /// Writes _fd_ with the xor of the sign bits of _fs2_ and _fs1_ and the exponent and mantissa of _fs1_.
14695 ///
14696 /// Sign-injection instructions do not set floating-point exception flags, nor do they canonicalize NaNs.
14697 ///
14698 /// # Forms
14699 /// Assembly: `fsgnjx.s fd, fs1, fs2`
14700 FSGNJXS,
14701 /// Half-precision floating-point store
14702 ///
14703 /// The `fsh` instruction stores a half-precision floating-point value
14704 /// from register _rd_ to memory at address _rs1_ + _imm_.
14705 ///
14706 /// `fsh` does not modify the bits being transferred; in particular, the payloads of non-canonical NaNs are preserved.
14707 ///
14708 /// `fsh` ignores all but the lower 16 bits in _rs2_.
14709 ///
14710 /// `fsh` is only guaranteed to execute atomically if the effective address is naturally aligned.
14711 ///
14712 /// # Forms
14713 /// Assembly: `fsh fs2, imm(xs1)`
14714 FSH,
14715 /// RISC-V `fsq` instruction.
14716 ///
14717 /// # Forms
14718 /// Assembly: `fsq xs1, qs2, imm`
14719 FSQ,
14720 /// RISC-V `fsqrt.d` instruction.
14721 ///
14722 /// # Forms
14723 /// Assembly: `fsqrt.d xd, xs1, rm`
14724 FSQRTD,
14725 /// RISC-V `fsqrt.h` instruction.
14726 ///
14727 /// # Forms
14728 /// Assembly: `fsqrt.h xd, xs1, rm`
14729 FSQRTH,
14730 /// RISC-V `fsqrt.q` instruction.
14731 ///
14732 /// # Forms
14733 /// Assembly: `fsqrt.q qd, qs1, rm`
14734 FSQRTQ,
14735 /// RISC-V `fsqrt.s` instruction.
14736 ///
14737 /// # Forms
14738 /// Assembly: `fsqrt.s fd, fs1, rm`
14739 FSQRTS,
14740 /// RISC-V `fsrm` instruction.
14741 ///
14742 /// # Forms
14743 /// Assembly: `fsrm rd rs1`
14744 FSRM,
14745 /// RISC-V `fsrmi` instruction.
14746 ///
14747 /// # Forms
14748 /// Assembly: `fsrmi rd zimm5`
14749 FSRMI,
14750 /// RISC-V `fsub.d` instruction.
14751 ///
14752 /// # Forms
14753 /// Assembly: `fsub.d xd, xs1, xs2, rm`
14754 FSUBD,
14755 /// RISC-V `fsub.h` instruction.
14756 ///
14757 /// # Forms
14758 /// Assembly: `fsub.h xd, xs1, xs2, rm`
14759 FSUBH,
14760 /// RISC-V `fsub.q` instruction.
14761 ///
14762 /// # Forms
14763 /// Assembly: `fsub.q qd, qs1, qs2, rm`
14764 FSUBQ,
14765 /// Single-precision floating-point subtraction
14766 ///
14767 /// Do the single-precision floating-point subtraction of fs2 from fs1 and store the result in fd.
14768 /// rm is the dynamic Rounding Mode.
14769 ///
14770 /// # Forms
14771 /// Assembly: `fsub.s fd, fs1, fs2, rm`
14772 FSUBS,
14773 /// Single-precision floating-point store
14774 ///
14775 /// The `fsw` instruction stores a single-precision floating-point value in _fs2_ to memory at address _rs1_ + _imm_.
14776 ///
14777 /// `fsw` does not modify the bits being transferred; in particular, the payloads of non-canonical NaNs are preserved.
14778 ///
14779 /// # Forms
14780 /// Assembly: `fsw fs2, xs1, imm`
14781 FSW,
14782 /// RISC-V `hfence.gvma` instruction.
14783 ///
14784 /// # Forms
14785 /// Assembly: `hfence.gvma xs1, xs2`
14786 HFENCEGVMA,
14787 /// RISC-V `hfence.vvma` instruction.
14788 ///
14789 /// # Forms
14790 /// Assembly: `hfence.vvma xs1, xs2`
14791 HFENCEVVMA,
14792 /// Invalidate cached address translations
14793 ///
14794 /// `hinval.gvma` has the same semantics as `sinval.vma` except that it combines with
14795 /// `sfence.w.inval` and `sfence.inval.ir` to replace `hfence.gvma` and uses VMID instead of ASID.
14796 ///
14797 /// # Forms
14798 /// Assembly: `hinval.gvma xs1, xs2`
14799 HINVALGVMA,
14800 /// Invalidate cached address translations
14801 ///
14802 /// `hinval.vvma` has the same semantics as `sinval.vma` except that it combines with
14803 /// `sfence.w.inval` and `sfence.inval.ir` to replace `hfence.vvma`.
14804 ///
14805 /// # Forms
14806 /// Assembly: `hinval.vvma xs1, xs2`
14807 HINVALVVMA,
14808 /// RISC-V `hlv.b` instruction.
14809 ///
14810 /// # Forms
14811 /// Assembly: `hlv.b xd, xs1`
14812 HLVB,
14813 /// RISC-V `hlv.bu` instruction.
14814 ///
14815 /// # Forms
14816 /// Assembly: `hlv.bu xd, xs1`
14817 HLVBU,
14818 /// RISC-V `hlv.d` instruction.
14819 ///
14820 /// # Forms
14821 /// Assembly: `hlv.d xd, xs1`
14822 HLVD,
14823 /// RISC-V `hlv.h` instruction.
14824 ///
14825 /// # Forms
14826 /// Assembly: `hlv.h xd, xs1`
14827 HLVH,
14828 /// RISC-V `hlv.hu` instruction.
14829 ///
14830 /// # Forms
14831 /// Assembly: `hlv.hu xd, xs1`
14832 HLVHU,
14833 /// RISC-V `hlv.w` instruction.
14834 ///
14835 /// # Forms
14836 /// Assembly: `hlv.w xd, xs1`
14837 HLVW,
14838 /// RISC-V `hlv.wu` instruction.
14839 ///
14840 /// # Forms
14841 /// Assembly: `hlv.wu xd, xs1`
14842 HLVWU,
14843 /// RISC-V `hlvx.hu` instruction.
14844 ///
14845 /// # Forms
14846 /// Assembly: `hlvx.hu xd, xs1`
14847 HLVXHU,
14848 /// RISC-V `hlvx.wu` instruction.
14849 ///
14850 /// # Forms
14851 /// Assembly: `hlvx.wu xd, xs1`
14852 HLVXWU,
14853 /// RISC-V `hsv.b` instruction.
14854 ///
14855 /// # Forms
14856 /// Assembly: `hsv.b xs1, xs2`
14857 HSVB,
14858 /// RISC-V `hsv.d` instruction.
14859 ///
14860 /// # Forms
14861 /// Assembly: `hsv.d xs1, xs2`
14862 HSVD,
14863 /// RISC-V `hsv.h` instruction.
14864 ///
14865 /// # Forms
14866 /// Assembly: `hsv.h xs1, xs2`
14867 HSVH,
14868 /// RISC-V `hsv.w` instruction.
14869 ///
14870 /// # Forms
14871 /// Assembly: `hsv.w xs1, xs2`
14872 HSVW,
14873 /// RISC-V `j` instruction.
14874 ///
14875 /// # Forms
14876 /// Assembly: `j jimm20`
14877 J,
14878 /// Jump and link
14879 ///
14880 /// Jump to a PC-relative offset and store the return
14881 /// address in rd.
14882 ///
14883 /// # Forms
14884 /// Assembly: `jal xd, imm`
14885 JAL,
14886 /// RISC-V `jal.pseudo` instruction.
14887 ///
14888 /// # Forms
14889 /// Assembly: `jal.pseudo jimm20`
14890 JALPSEUDO,
14891 /// Jump and link register
14892 ///
14893 /// Jump to an address formed by adding rs1
14894 /// to a signed offset then clearing the least
14895 /// significant bit, and store the return address
14896 /// in rd.
14897 ///
14898 /// # Forms
14899 /// Assembly: `jalr xd, imm(rs1)`
14900 JALR,
14901 /// RISC-V `jalr.pseudo` instruction.
14902 ///
14903 /// # Forms
14904 /// Assembly: `jalr.pseudo rs1`
14905 JALRPSEUDO,
14906 /// RISC-V `jr` instruction.
14907 ///
14908 /// # Forms
14909 /// Assembly: `jr rs1`
14910 JR,
14911 /// Load byte
14912 ///
14913 /// Load 8 bits of data into register `rd` from an
14914 /// address formed by adding `rs1` to a signed offset.
14915 /// Sign extend the result.
14916 ///
14917 /// # Forms
14918 /// Assembly: `lb xd, imm(rs1)`
14919 LB,
14920 /// Load byte unsigned
14921 ///
14922 /// Load 8 bits of data into register `rd` from an
14923 /// address formed by adding `rs1` to a signed offset.
14924 /// Zero extend the result.
14925 ///
14926 /// # Forms
14927 /// Assembly: `lbu xd, imm(rs1)`
14928 LBU,
14929 /// Load doubleword
14930 ///
14931 /// Load 64 bits of data into register `rd` from an
14932 /// address formed by adding `rs1` to a signed offset.
14933 ///
14934 /// # Forms
14935 /// Assembly: `ld xd, imm(rs1)`
14936 LD,
14937 /// Load halfword
14938 ///
14939 /// Load 16 bits of data into register `rd` from an
14940 /// address formed by adding `rs1` to a signed offset.
14941 /// Sign extend the result.
14942 ///
14943 /// # Forms
14944 /// Assembly: `lh xd, imm(rs1)`
14945 LH,
14946 /// Load halfword unsigned
14947 ///
14948 /// Load 16 bits of data into register `rd` from an
14949 /// address formed by adding `rs1` to a signed offset.
14950 /// Zero extend the result.
14951 ///
14952 /// # Forms
14953 /// Assembly: `lhu xd, imm(rs1)`
14954 LHU,
14955 /// RISC-V `lpad` instruction.
14956 ///
14957 /// # Forms
14958 /// Assembly: `lpad imm`
14959 LPAD,
14960 /// Load reserved doubleword
14961 ///
14962 /// Loads a word from the address in rs1, places the value in rd,
14963 /// and registers a _reservation set_ -- a set of bytes that subsumes the bytes in the
14964 /// addressed word.
14965 ///
14966 /// The address in rs1 must be 8-byte aligned.
14967 ///
14968 /// If the address is not naturally aligned, a `LoadAddressMisaligned` exception or an
14969 /// `LoadAccessFault` exception will be generated. The access-fault exception can be generated
14970 /// for a memory access that would otherwise be able to complete except for the misalignment,
14971 /// if the misaligned access should not be emulated.
14972 ///
14973 /// An implementation can register an arbitrarily large reservation set on each LR, provided the
14974 /// reservation set includes all bytes of the addressed data word or doubleword.
14975 /// An SC can only pair with the most recent LR in program order.
14976 /// An SC may succeed only if no store from another hart to the reservation set can be
14977 /// observed to have occurred between the LR and the SC, and if there is no other SC between the
14978 /// LR and itself in program order.
14979 /// An SC may succeed only if no write from a device other than a hart to the bytes accessed by
14980 /// the LR instruction can be observed to have occurred between the LR and SC. Note this LR
14981 /// might have had a different effective address and data size, but reserved the SC's
14982 /// address as part of the reservation set.
14983 ///
14984 /// \[NOTE\]
14985 /// ----
14986 /// Following this model, in systems with memory translation, an SC is allowed to succeed if the
14987 /// earlier LR reserved the same location using an alias with a different virtual address, but is
14988 /// also allowed to fail if the virtual address is different.
14989 ///
14990 /// To accommodate legacy devices and buses, writes from devices other than RISC-V harts are only
14991 /// required to invalidate reservations when they overlap the bytes accessed by the LR.
14992 /// These writes are not required to invalidate the reservation when they access other bytes in
14993 /// the reservation set.
14994 /// ----
14995 ///
14996 /// Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set.
14997 /// LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those
14998 /// with both bits clear, but may result in lower performance.
14999 ///
15000 /// # Forms
15001 /// Assembly: `lr.d xd, xs1`
15002 LRD,
15003 /// Load reserved word
15004 ///
15005 /// Loads a word from the address in rs1, places the sign-extended value in rd,
15006 /// and registers a _reservation set_ -- a set of bytes that subsumes the bytes in the
15007 /// addressed word.
15008 ///
15009 /// <%- if XLEN == 64 -%>
15010 /// The 32-bit load result is sign-extended to 64-bits.
15011 /// <%- end -%>
15012 ///
15013 /// The address in rs1 must be naturally aligned to the size of the operand
15014 /// (_i.e._, eight-byte aligned for doublewords and four-byte aligned for words).
15015 ///
15016 /// If the address is not naturally aligned, a `LoadAddressMisaligned` exception or an
15017 /// `LoadAccessFault` exception will be generated. The access-fault exception can be generated
15018 /// for a memory access that would otherwise be able to complete except for the misalignment,
15019 /// if the misaligned access should not be emulated.
15020 ///
15021 /// An implementation can register an arbitrarily large reservation set on each LR, provided the
15022 /// reservation set includes all bytes of the addressed data word or doubleword.
15023 /// An SC can only pair with the most recent LR in program order.
15024 /// An SC may succeed only if no store from another hart to the reservation set can be
15025 /// observed to have occurred between the LR and the SC, and if there is no other SC between the
15026 /// LR and itself in program order.
15027 /// An SC may succeed only if no write from a device other than a hart to the bytes accessed by
15028 /// the LR instruction can be observed to have occurred between the LR and SC. Note this LR
15029 /// might have had a different effective address and data size, but reserved the SC's
15030 /// address as part of the reservation set.
15031 ///
15032 /// \[NOTE\]
15033 /// ----
15034 /// Following this model, in systems with memory translation, an SC is allowed to succeed if the
15035 /// earlier LR reserved the same location using an alias with a different virtual address, but is
15036 /// also allowed to fail if the virtual address is different.
15037 ///
15038 /// To accommodate legacy devices and buses, writes from devices other than RISC-V harts are only
15039 /// required to invalidate reservations when they overlap the bytes accessed by the LR.
15040 /// These writes are not required to invalidate the reservation when they access other bytes in
15041 /// the reservation set.
15042 /// ----
15043 ///
15044 /// Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set.
15045 /// LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those
15046 /// with both bits clear, but may result in lower performance.
15047 ///
15048 /// # Forms
15049 /// Assembly: `lr.w xd, xs1`
15050 LRW,
15051 /// Load upper immediate
15052 ///
15053 /// Load the zero-extended imm into rd.
15054 ///
15055 /// # Forms
15056 /// Assembly: `lui xd, imm`
15057 LUI,
15058 /// Load word
15059 ///
15060 /// Load 32 bits of data into register `rd` from an
15061 /// address formed by adding `rs1` to a signed offset.
15062 /// Sign extend the result.
15063 ///
15064 /// # Forms
15065 /// Assembly: `lw xd, imm(rs1)`
15066 LW,
15067 /// Load word unsigned
15068 ///
15069 /// Load 64 bits of data into register `rd` from an
15070 /// address formed by adding `rs1` to a signed offset.
15071 /// Zero extend the result.
15072 ///
15073 /// # Forms
15074 /// Assembly: `lwu xd, imm(rs1)`
15075 LWU,
15076 /// Maximum
15077 ///
15078 /// This instruction returns the larger of two signed integers.
15079 ///
15080 /// .Software Hint
15081 /// \[NOTE\]
15082 /// Calculating the absolute value of a signed integer can be performed using the
15083 /// following sequence: `neg rD,rS` followed by `max rD,rS,rD. When using this
15084 /// common sequence, it is suggested that they are scheduled with no intervening
15085 /// instructions so that implementations that are so optimized can fuse them
15086 /// together.
15087 ///
15088 /// # Forms
15089 /// Assembly: `max xd, xs1, xs2`
15090 MAX,
15091 /// Unsigned maximum
15092 ///
15093 /// This instruction returns the larger of two unsigned integers.
15094 ///
15095 /// # Forms
15096 /// Assembly: `maxu xd, xs1, xs2`
15097 MAXU,
15098 /// Minimum
15099 ///
15100 /// This instruction returns the smaller of two signed integers.
15101 ///
15102 /// # Forms
15103 /// Assembly: `min xd, xs1, xs2`
15104 MIN,
15105 /// Unsigned minimum
15106 ///
15107 /// This instruction returns the smaller of two unsigned integers.
15108 ///
15109 /// # Forms
15110 /// Assembly: `minu xd, xs1, xs2`
15111 MINU,
15112 /// RISC-V `mnret` instruction.
15113 ///
15114 /// # Forms
15115 /// Assembly: `mnret mnret`
15116 MNRET,
15117 /// RISC-V `mop.r.0` instruction.
15118 ///
15119 /// # Forms
15120 /// Assembly: `mop.r.0 rd rs1`
15121 MOPR0,
15122 /// RISC-V `mop.r.1` instruction.
15123 ///
15124 /// # Forms
15125 /// Assembly: `mop.r.1 rd rs1`
15126 MOPR1,
15127 /// RISC-V `mop.r.10` instruction.
15128 ///
15129 /// # Forms
15130 /// Assembly: `mop.r.10 rd rs1`
15131 MOPR10,
15132 /// RISC-V `mop.r.11` instruction.
15133 ///
15134 /// # Forms
15135 /// Assembly: `mop.r.11 rd rs1`
15136 MOPR11,
15137 /// RISC-V `mop.r.12` instruction.
15138 ///
15139 /// # Forms
15140 /// Assembly: `mop.r.12 rd rs1`
15141 MOPR12,
15142 /// RISC-V `mop.r.13` instruction.
15143 ///
15144 /// # Forms
15145 /// Assembly: `mop.r.13 rd rs1`
15146 MOPR13,
15147 /// RISC-V `mop.r.14` instruction.
15148 ///
15149 /// # Forms
15150 /// Assembly: `mop.r.14 rd rs1`
15151 MOPR14,
15152 /// RISC-V `mop.r.15` instruction.
15153 ///
15154 /// # Forms
15155 /// Assembly: `mop.r.15 rd rs1`
15156 MOPR15,
15157 /// RISC-V `mop.r.16` instruction.
15158 ///
15159 /// # Forms
15160 /// Assembly: `mop.r.16 rd rs1`
15161 MOPR16,
15162 /// RISC-V `mop.r.17` instruction.
15163 ///
15164 /// # Forms
15165 /// Assembly: `mop.r.17 rd rs1`
15166 MOPR17,
15167 /// RISC-V `mop.r.18` instruction.
15168 ///
15169 /// # Forms
15170 /// Assembly: `mop.r.18 rd rs1`
15171 MOPR18,
15172 /// RISC-V `mop.r.19` instruction.
15173 ///
15174 /// # Forms
15175 /// Assembly: `mop.r.19 rd rs1`
15176 MOPR19,
15177 /// RISC-V `mop.r.2` instruction.
15178 ///
15179 /// # Forms
15180 /// Assembly: `mop.r.2 rd rs1`
15181 MOPR2,
15182 /// RISC-V `mop.r.20` instruction.
15183 ///
15184 /// # Forms
15185 /// Assembly: `mop.r.20 rd rs1`
15186 MOPR20,
15187 /// RISC-V `mop.r.21` instruction.
15188 ///
15189 /// # Forms
15190 /// Assembly: `mop.r.21 rd rs1`
15191 MOPR21,
15192 /// RISC-V `mop.r.22` instruction.
15193 ///
15194 /// # Forms
15195 /// Assembly: `mop.r.22 rd rs1`
15196 MOPR22,
15197 /// RISC-V `mop.r.23` instruction.
15198 ///
15199 /// # Forms
15200 /// Assembly: `mop.r.23 rd rs1`
15201 MOPR23,
15202 /// RISC-V `mop.r.24` instruction.
15203 ///
15204 /// # Forms
15205 /// Assembly: `mop.r.24 rd rs1`
15206 MOPR24,
15207 /// RISC-V `mop.r.25` instruction.
15208 ///
15209 /// # Forms
15210 /// Assembly: `mop.r.25 rd rs1`
15211 MOPR25,
15212 /// RISC-V `mop.r.26` instruction.
15213 ///
15214 /// # Forms
15215 /// Assembly: `mop.r.26 rd rs1`
15216 MOPR26,
15217 /// RISC-V `mop.r.27` instruction.
15218 ///
15219 /// # Forms
15220 /// Assembly: `mop.r.27 rd rs1`
15221 MOPR27,
15222 /// RISC-V `mop.r.28` instruction.
15223 ///
15224 /// # Forms
15225 /// Assembly: `mop.r.28 rd rs1`
15226 MOPR28,
15227 /// RISC-V `mop.r.29` instruction.
15228 ///
15229 /// # Forms
15230 /// Assembly: `mop.r.29 rd rs1`
15231 MOPR29,
15232 /// RISC-V `mop.r.3` instruction.
15233 ///
15234 /// # Forms
15235 /// Assembly: `mop.r.3 rd rs1`
15236 MOPR3,
15237 /// RISC-V `mop.r.30` instruction.
15238 ///
15239 /// # Forms
15240 /// Assembly: `mop.r.30 rd rs1`
15241 MOPR30,
15242 /// RISC-V `mop.r.31` instruction.
15243 ///
15244 /// # Forms
15245 /// Assembly: `mop.r.31 rd rs1`
15246 MOPR31,
15247 /// RISC-V `mop.r.4` instruction.
15248 ///
15249 /// # Forms
15250 /// Assembly: `mop.r.4 rd rs1`
15251 MOPR4,
15252 /// RISC-V `mop.r.5` instruction.
15253 ///
15254 /// # Forms
15255 /// Assembly: `mop.r.5 rd rs1`
15256 MOPR5,
15257 /// RISC-V `mop.r.6` instruction.
15258 ///
15259 /// # Forms
15260 /// Assembly: `mop.r.6 rd rs1`
15261 MOPR6,
15262 /// RISC-V `mop.r.7` instruction.
15263 ///
15264 /// # Forms
15265 /// Assembly: `mop.r.7 rd rs1`
15266 MOPR7,
15267 /// RISC-V `mop.r.8` instruction.
15268 ///
15269 /// # Forms
15270 /// Assembly: `mop.r.8 rd rs1`
15271 MOPR8,
15272 /// RISC-V `mop.r.9` instruction.
15273 ///
15274 /// # Forms
15275 /// Assembly: `mop.r.9 rd rs1`
15276 MOPR9,
15277 /// RISC-V `mop.r.n` instruction.
15278 ///
15279 /// # Forms
15280 /// Assembly: `mop.r.n mop_r_t_30, mop_r_t_27_26, mop_r_t_21_20, xd, xs1`
15281 MOPRN,
15282 /// RISC-V `mop.rr.0` instruction.
15283 ///
15284 /// # Forms
15285 /// Assembly: `mop.rr.0 rd rs1 rs2`
15286 MOPRR0,
15287 /// RISC-V `mop.rr.1` instruction.
15288 ///
15289 /// # Forms
15290 /// Assembly: `mop.rr.1 rd rs1 rs2`
15291 MOPRR1,
15292 /// RISC-V `mop.rr.2` instruction.
15293 ///
15294 /// # Forms
15295 /// Assembly: `mop.rr.2 rd rs1 rs2`
15296 MOPRR2,
15297 /// RISC-V `mop.rr.3` instruction.
15298 ///
15299 /// # Forms
15300 /// Assembly: `mop.rr.3 rd rs1 rs2`
15301 MOPRR3,
15302 /// RISC-V `mop.rr.4` instruction.
15303 ///
15304 /// # Forms
15305 /// Assembly: `mop.rr.4 rd rs1 rs2`
15306 MOPRR4,
15307 /// RISC-V `mop.rr.5` instruction.
15308 ///
15309 /// # Forms
15310 /// Assembly: `mop.rr.5 rd rs1 rs2`
15311 MOPRR5,
15312 /// RISC-V `mop.rr.6` instruction.
15313 ///
15314 /// # Forms
15315 /// Assembly: `mop.rr.6 rd rs1 rs2`
15316 MOPRR6,
15317 /// RISC-V `mop.rr.7` instruction.
15318 ///
15319 /// # Forms
15320 /// Assembly: `mop.rr.7 rd rs1 rs2`
15321 MOPRR7,
15322 /// RISC-V `mop.rr.n` instruction.
15323 ///
15324 /// # Forms
15325 /// Assembly: `mop.rr.n mop_rr_t_30, mop_rr_t_27_26, xd, xs1, xs2`
15326 MOPRRN,
15327 /// Machine Exception Return
15328 ///
15329 /// Returns from an exception in M-mode.
15330 ///
15331 /// # Forms
15332 /// Assembly: `mret ""`
15333 MRET,
15334 /// Signed multiply
15335 ///
15336 /// MUL performs an XLEN-bitxXLEN-bit multiplication of `rs1` by `rs2` and places the lower
15337 /// XLEN bits in the destination register.
15338 /// Any overflow is thrown away.
15339 ///
15340 /// \[NOTE\]
15341 /// If both the high and low bits of the same product are required, then the recommended code
15342 /// sequence is:
15343 /// MULH\[\[S\]U\] rdh, rs1, rs2; MUL rdl, rs1, rs2
15344 /// (source register specifiers must be in same order and rdh cannot be the same as rs1 or rs2).
15345 /// Microarchitectures can then fuse these into a single multiply operation instead of
15346 /// performing two separate multiplies.
15347 ///
15348 /// # Forms
15349 /// Assembly: `mul xd, xs1, xs2`
15350 MUL,
15351 /// Signed multiply high
15352 ///
15353 /// Multiply the signed values in rs1 to rs2, and store the upper half of the result in rd.
15354 /// The lower half is thrown away.
15355 ///
15356 /// If both the upper and lower halves are needed, it suggested to use the sequence:
15357 ///
15358 /// ---
15359 /// mulh rdh, rs1, rs2
15360 /// mul rdl, rs1, rs2
15361 /// ---
15362 ///
15363 /// Microarchitectures may look for that sequence and fuse the operations.
15364 ///
15365 /// # Forms
15366 /// Assembly: `mulh xd, xs1, xs2`
15367 MULH,
15368 /// Signed/unsigned multiply high
15369 ///
15370 /// Multiply the signed value in rs1 by the unsigned value in rs2, and store the upper half of the result in rd.
15371 /// The lower half is thrown away.
15372 ///
15373 /// If both the upper and lower halves are needed, it suggested to use the sequence:
15374 ///
15375 /// ---
15376 /// mulhsu rdh, rs1, rs2
15377 /// mul rdl, rs1, rs2
15378 /// ---
15379 ///
15380 /// Microarchitectures may look for that sequence and fuse the operations.
15381 ///
15382 /// # Forms
15383 /// Assembly: `mulhsu xd, xs1, xs2`
15384 MULHSU,
15385 /// Unsigned multiply high
15386 ///
15387 /// Multiply the unsigned values in rs1 to rs2, and store the upper half of the result in rd.
15388 /// The lower half is thrown away.
15389 ///
15390 /// If both the upper and lower halves are needed, it suggested to use the sequence:
15391 ///
15392 /// ---
15393 /// mulhu rdh, rs1, rs2
15394 /// mul rdl, rs1, rs2
15395 /// ---
15396 ///
15397 /// Microarchitectures may look for that sequence and fuse the operations.
15398 ///
15399 /// # Forms
15400 /// Assembly: `mulhu xd, xs1, xs2`
15401 MULHU,
15402 /// Signed 32-bit multiply
15403 ///
15404 /// Multiplies the lower 32 bits of the source registers, placing the sign-extension of the
15405 /// lower 32 bits of the result into the destination register.
15406 ///
15407 /// Any overflow is thrown away.
15408 ///
15409 /// \[NOTE\]
15410 /// In RV64, MUL can be used to obtain the upper 32 bits of the 64-bit product,
15411 /// but signed arguments must be proper 32-bit signed values, whereas unsigned arguments
15412 /// must have their upper 32 bits clear. If the arguments are not known to be sign- or zero-extended,
15413 /// an alternative is to shift both arguments left by 32 bits, then use MULH\[\[S\]U\].
15414 ///
15415 /// # Forms
15416 /// Assembly: `mulw xd, xs1, xs2`
15417 MULW,
15418 /// RISC-V `mv` instruction.
15419 ///
15420 /// # Forms
15421 /// Assembly: `mv rd rs1`
15422 MV,
15423 /// RISC-V `neg` instruction.
15424 ///
15425 /// # Forms
15426 /// Assembly: `neg rd rs1`
15427 NEG,
15428 /// RISC-V `nop` instruction.
15429 ///
15430 /// # Forms
15431 /// Assembly: `nop`
15432 NOP,
15433 /// RISC-V `ntl.all` instruction.
15434 ///
15435 /// # Forms
15436 /// Assembly: `ntl.all`
15437 NTLALL,
15438 /// RISC-V `ntl.p1` instruction.
15439 ///
15440 /// # Forms
15441 /// Assembly: `ntl.p1`
15442 NTLP1,
15443 /// RISC-V `ntl.pall` instruction.
15444 ///
15445 /// # Forms
15446 /// Assembly: `ntl.pall`
15447 NTLPALL,
15448 /// RISC-V `ntl.s1` instruction.
15449 ///
15450 /// # Forms
15451 /// Assembly: `ntl.s1`
15452 NTLS1,
15453 /// Or
15454 ///
15455 /// Or rs1 with rs2, and store the result in rd
15456 ///
15457 /// # Forms
15458 /// Assembly: `or xd, xs1, xs2`
15459 OR,
15460 /// Bitware OR-combine, byte granule
15461 ///
15462 /// Combines the bits within each byte using bitwise logical OR. This sets the bits
15463 /// of each byte in the result rd to all zeros if no bit within the respective byte
15464 /// of rs is set, or to all ones if any bit within the respective byte of rs is set.
15465 ///
15466 /// # Forms
15467 /// Assembly: `orc.b xd, xs1, xs2`
15468 ORCB,
15469 /// Or immediate
15470 ///
15471 /// Or an immediate to the value in rs1, and store the result in rd
15472 ///
15473 /// # Forms
15474 /// Assembly: `ori xd, xs1, imm`
15475 ORI,
15476 /// OR with inverted operand
15477 ///
15478 /// This instruction performs the bitwise logical OR operation between rs1 and the bitwise inversion of rs2.
15479 ///
15480 /// # Forms
15481 /// Assembly: `orn xd, xs1, xs2`
15482 ORN,
15483 /// RISC-V `pack` instruction.
15484 ///
15485 /// # Forms
15486 /// Assembly: `pack xd, xs1, xs2`
15487 PACK,
15488 /// RISC-V `packh` instruction.
15489 ///
15490 /// # Forms
15491 /// Assembly: `packh xd, xs1, xs2`
15492 PACKH,
15493 /// RISC-V `packw` instruction.
15494 ///
15495 /// # Forms
15496 /// Assembly: `packw xd, xs1, xs2`
15497 PACKW,
15498 /// RISC-V `pause` instruction.
15499 ///
15500 /// # Forms
15501 /// Assembly: `pause`
15502 PAUSE,
15503 /// RISC-V `prefetch.i` instruction.
15504 ///
15505 /// # Forms
15506 /// Assembly: `prefetch.i rs1 imm12lohi`
15507 PREFETCHI,
15508 /// RISC-V `prefetch.r` instruction.
15509 ///
15510 /// # Forms
15511 /// Assembly: `prefetch.r rs1 imm12lohi`
15512 PREFETCHR,
15513 /// RISC-V `prefetch.w` instruction.
15514 ///
15515 /// # Forms
15516 /// Assembly: `prefetch.w rs1 imm12lohi`
15517 PREFETCHW,
15518 /// RISC-V `rdcycle` instruction.
15519 ///
15520 /// # Forms
15521 /// Assembly: `rdcycle rd`
15522 RDCYCLE,
15523 /// RISC-V `rdcycleh` instruction.
15524 ///
15525 /// # Forms
15526 /// Assembly: `rdcycleh rd`
15527 RDCYCLEH,
15528 /// RISC-V `rdinstret` instruction.
15529 ///
15530 /// # Forms
15531 /// Assembly: `rdinstret rd`
15532 RDINSTRET,
15533 /// RISC-V `rdinstreth` instruction.
15534 ///
15535 /// # Forms
15536 /// Assembly: `rdinstreth rd`
15537 RDINSTRETH,
15538 /// RISC-V `rdtime` instruction.
15539 ///
15540 /// # Forms
15541 /// Assembly: `rdtime rd`
15542 RDTIME,
15543 /// RISC-V `rdtimeh` instruction.
15544 ///
15545 /// # Forms
15546 /// Assembly: `rdtimeh rd`
15547 RDTIMEH,
15548 /// Signed remainder
15549 ///
15550 /// Calculate the remainder of signed division of rs1 by rs2, and store the result in rd.
15551 ///
15552 /// If the value in register rs2 is zero, write the value in rs1 into rd;
15553 ///
15554 /// If the result of the division overflows, write zero into rd;
15555 ///
15556 /// # Forms
15557 /// Assembly: `rem xd, xs1, xs2`
15558 REM,
15559 /// Unsigned remainder
15560 ///
15561 /// Calculate the remainder of unsigned division of rs1 by rs2, and store the result in rd.
15562 ///
15563 /// # Forms
15564 /// Assembly: `remu xd, xs1, xs2`
15565 REMU,
15566 /// Unsigned 32-bit remainder
15567 ///
15568 /// Calculate the remainder of unsigned division of the 32-bit values in rs1 by rs2,
15569 /// and store the sign-extended result in rd.
15570 ///
15571 /// If the value in rs2 is zero, rd gets the sign-extended value in rs1.
15572 ///
15573 /// # Forms
15574 /// Assembly: `remuw xd, xs1, xs2`
15575 REMUW,
15576 /// Signed 32-bit remainder
15577 ///
15578 /// Calculate the remainder of signed division of the 32-bit values rs1 by rs2,
15579 /// and store the sign-extended result in rd.
15580 ///
15581 /// If the value in register rs2 is zero, write the sign-extended 32-bit value in rs1 into rd;
15582 ///
15583 /// If the result of the division overflows, write zero into rd;
15584 ///
15585 /// # Forms
15586 /// Assembly: `remw xd, xs1, xs2`
15587 REMW,
15588 /// RISC-V `ret` instruction.
15589 ///
15590 /// # Forms
15591 /// Assembly: `ret`
15592 RET,
15593 /// Byte-reverse register (RV64 encoding)
15594 ///
15595 /// This instruction reverses the order of the bytes in rs1.
15596 ///
15597 /// \[NOTE\]
15598 /// The rev8 mnemonic corresponds to different instruction encodings in RV32 and RV64.
15599 ///
15600 /// \[NOTE\]
15601 /// The byte-reverse operation is only available for the full register width. To emulate word-sized
15602 /// and halfword-sized byte-reversal, perform a `rev8 rd,rs` followed by a `srai rd,rd,K`, where K
15603 /// is XLEN-32 and XLEN-16, respectively.
15604 ///
15605 /// # Forms
15606 /// Assembly: `rev8 xd, xs1`
15607 REV8,
15608 /// Byte-reverse register (RV64 encoding)
15609 ///
15610 /// This instruction reverses the order of the bytes in rs1.
15611 ///
15612 /// \[NOTE\]
15613 /// The rev8 mnemonic corresponds to different instruction encodings in RV32 and RV64.
15614 ///
15615 /// \[NOTE\]
15616 /// The byte-reverse operation is only available for the full register width. To emulate word-sized
15617 /// and halfword-sized byte-reversal, perform a `rev8 rd,rs` followed by a `srai rd,rd,K`, where K
15618 /// is XLEN-32 and XLEN-16, respectively.
15619 ///
15620 /// # Forms
15621 /// Assembly: `rev8.rv32 xd, xs1`
15622 REV8RV32,
15623 /// Rotate left (Register)
15624 ///
15625 /// This instruction performs a rotate left of rs1 by the amount in least-significant `log2(XLEN)` bits of rs2.
15626 ///
15627 /// # Forms
15628 /// Assembly: `rol xd, xs1, xs2`
15629 ROL,
15630 /// Rotate left word (Register)
15631 ///
15632 /// This instruction performs a rotate left of the least-significant word of rs1 by the amount in least-significant 5 bits of rs2.
15633 /// The resulting word value is sign-extended by copying bit 31 to all of the more-significant bits.
15634 ///
15635 /// # Forms
15636 /// Assembly: `rolw xd, xs1, xs2`
15637 ROLW,
15638 /// Rotate right (Register)
15639 ///
15640 /// This instruction performs a rotate right of rs1 by the amount in least-significant `log2(XLEN)` bits of rs2.
15641 ///
15642 /// # Forms
15643 /// Assembly: `ror xd, xs1, xs2`
15644 ROR,
15645 /// Rotate right (Immediate)
15646 ///
15647 /// This instruction performs a rotate right of rs1 by the amount in the least-significant log2(XLEN) bits of shamt.
15648 /// For RV32, the encodings corresponding to shamt\[5\]=1 are reserved.
15649 ///
15650 /// # Forms
15651 /// Assembly: `rori xd, xs1, shamt`
15652 RORI,
15653 /// Rotate right (Immediate)
15654 ///
15655 /// This instruction performs a rotate right of rs1 by the amount in the least-significant log2(XLEN) bits of shamt.
15656 /// For RV32, the encodings corresponding to shamt\[5\]=1 are reserved.
15657 ///
15658 /// # Forms
15659 /// Assembly: `rori.rv32 xd, xs1, shamt`
15660 RORIRV32,
15661 /// Rotate right word (Immediate)
15662 ///
15663 /// This instruction performs a rotate right on the least-significant word of rs1 by the amount in
15664 /// the least-significant log2(XLEN) bits of shamt. The resulting word value is sign-extended by
15665 /// copying bit 31 to all of the more-significant bits.
15666 ///
15667 /// # Forms
15668 /// Assembly: `roriw xd, xs1, shamt`
15669 RORIW,
15670 /// Rotate right word (Register)
15671 ///
15672 /// This instruction performs a rotate right on the least-significant word of rs1 by the amount in
15673 /// least-significant 5 bits of rs2. The resultant word is sign-extended by copying bit 31 to all
15674 /// of the more-significant bits.
15675 ///
15676 /// # Forms
15677 /// Assembly: `rorw xd, xs1, xs2`
15678 RORW,
15679 /// Store byte
15680 ///
15681 /// Store 8 bits of data from register `rs2` to an
15682 /// address formed by adding `rs1` to a signed offset.
15683 ///
15684 /// # Forms
15685 /// Assembly: `sb xs2, imm(xs1)`
15686 SB,
15687 /// RISC-V `sbreak` instruction.
15688 ///
15689 /// # Forms
15690 /// Assembly: `sbreak`
15691 SBREAK,
15692 /// Store conditional doubleword
15693 ///
15694 /// `sc.d` conditionally writes a doubleword in _rs2_ to the address in _rs1_:
15695 /// the `sc.d` succeeds only if the reservation is still valid and the
15696 /// reservation set contains the bytes being written. If the `sc.d` succeeds,
15697 /// the instruction writes the doubleword in _rs2_ to memory, and it writes zero to _rd_.
15698 /// If the `sc.d` fails, the instruction does not write to memory, and it writes a
15699 /// nonzero value to _rd_. For the purposes of memory protection, a failed `sc.d`
15700 /// may be treated like a store. Regardless of success or failure, executing an
15701 /// `sc.d` instruction invalidates any reservation held by this hart.
15702 ///
15703 /// The failure code with value 1 encodes an unspecified failure.
15704 /// Other failure codes are reserved at this time.
15705 /// Portable software should only assume the failure code will be non-zero.
15706 ///
15707 /// The address held in _rs1_ must be naturally aligned to the size of the operand
15708 /// (_i.e._, eight-byte aligned).
15709 /// If the address is not naturally aligned, an address-misaligned exception or an
15710 /// access-fault exception will be generated.
15711 /// The access-fault exception can be generated for a memory access that would otherwise
15712 /// be able to complete except for the misalignment,
15713 /// if the misaligned access should not be emulated.
15714 ///
15715 /// \[NOTE\]
15716 /// --
15717 /// Emulating misaligned LR/SC sequences is impractical in most systems.
15718 ///
15719 /// Misaligned LR/SC sequences also raise the possibility of accessing multiple
15720 /// reservation sets at once, which present definitions do not provide for.
15721 /// --
15722 ///
15723 /// An implementation can register an arbitrarily large reservation set on each LR,
15724 /// provided the reservation set includes all bytes of the addressed data word or
15725 /// doubleword.
15726 /// An SC can only pair with the most recent LR in program order.
15727 /// An SC may succeed only if no store from another hart to the reservation set
15728 /// can be observed to have occurred between the LR and the SC,
15729 /// and if there is no other SC between the LR and itself in program order.
15730 /// An SC may succeed only if no write from a device other than a hart to the bytes
15731 /// accessed by the LR instruction can be observed to have occurred between the LR
15732 /// and SC.
15733 /// Note this LR might have had a different effective address and data size,
15734 /// but reserved the SC's address as part of the reservation set.
15735 ///
15736 /// \[NOTE\]
15737 /// ----
15738 /// Following this model, in systems with memory translation, an SC is allowed to succeed if the
15739 /// earlier LR reserved the same location using an alias with a different virtual address, but is
15740 /// also allowed to fail if the virtual address is different.
15741 ///
15742 /// To accommodate legacy devices and buses, writes from devices other than RISC-V harts are only
15743 /// required to invalidate reservations when they overlap the bytes accessed by the LR.
15744 /// These writes are not required to invalidate the reservation when they access other bytes in
15745 /// the reservation set.
15746 /// ----
15747 ///
15748 /// The SC must fail if the address is not within the reservation set of the most
15749 /// recent LR in program order.
15750 /// The SC must fail if a store to the reservation set from another hart can be
15751 /// observed to occur between the LR and SC.
15752 /// The SC must fail if a write from some other device to the bytes accessed by the
15753 /// LR can be observed to occur between the LR and SC.
15754 /// (If such a device writes the reservation set but does not write the bytes accessed
15755 /// by the LR, the SC may or may not fail.)
15756 /// An SC must fail if there is another SC (to any address) between the LR and the SC
15757 /// in program order.
15758 /// The precise statement of the atomicity requirements for successful LR/SC sequences
15759 /// is defined by the Atomicity Axiom of the memory model.
15760 ///
15761 /// \[NOTE\]
15762 /// --
15763 /// The platform should provide a means to determine the size and shape of the reservation set.
15764 ///
15765 /// A platform specification may constrain the size and shape of the reservation set.
15766 ///
15767 /// A store-conditional instruction to a scratch word of memory should be used to forcibly invalidate any existing load reservation:
15768 ///
15769 /// * during a preemptive context switch, and
15770 /// * if necessary when changing virtual to physical address mappings, such as when migrating pages that might contain an active reservation.
15771 ///
15772 /// The invalidation of a hart's reservation when it executes an LR or SC imply that a hart can only hold one reservation at a time, and that an SC can only pair with the most recent LR, and LR with the next following SC, in program order. This is a restriction to the Atomicity Axiom in Section 18.1 that ensures software runs correctly on expected common implementations that operate in this manner.
15773 /// --
15774 ///
15775 /// An SC instruction can never be observed by another RISC-V hart before the LR instruction that established the reservation.
15776 ///
15777 /// \[NOTE\]
15778 /// --
15779 /// The LR/SC sequence can be given acquire semantics by setting the aq bit on the LR instruction. The LR/SC sequence can be given release semantics by by setting the rl bit on the SC instruction. Assuming suitable mappings for other atomic operations, setting the aq bit on the LR instruction, and setting the rl bit on the SC instruction makes the LR/SC sequence sequentially consistent in the C++ memory_order_seq_cst sense. Such a sequence does not act as a fence for ordering ordinary load and store instructions before and after the sequence. Specific instruction mappings for other C++ atomic operations, or stronger notions of "sequential consistency", may require both bits to be set on either or both of the LR or SC instruction.
15780 ///
15781 /// If neither bit is set on either LR or SC, the LR/SC sequence can be observed to occur before or after surrounding memory operations from the same RISC-V hart. This can be appropriate when the LR/SC sequence is used to implement a parallel reduction operation.
15782 /// --
15783 ///
15784 /// Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set.
15785 /// LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those
15786 /// with both bits clear, but may result in lower performance.
15787 ///
15788 /// # Forms
15789 /// Assembly: `sc.d xd, xs2, xs1`
15790 SCD,
15791 /// Store conditional word
15792 ///
15793 /// `sc.w` conditionally writes a word in _rs2_ to the address in _rs1_:
15794 /// the `sc.w` succeeds only if the reservation is still valid and the
15795 /// reservation set contains the bytes being written. If the `sc.w` succeeds,
15796 /// the instruction writes the word in _rs2_ to memory, and it writes zero to _rd_.
15797 /// If the `sc.w` fails, the instruction does not write to memory, and it writes a
15798 /// nonzero value to _rd_. For the purposes of memory protection, a failed `sc.w`
15799 /// may be treated like a store. Regardless of success or failure, executing an
15800 /// `sc.w` instruction invalidates any reservation held by this hart.
15801 ///
15802 /// <%- if XLEN == 64 -%>
15803 /// \[NOTE\]
15804 /// If a value other than 0 or 1 is defined as a result for `sc.w`, the value will before
15805 /// sign-extended into _rd_.
15806 /// <%- end -%>
15807 ///
15808 /// The failure code with value 1 encodes an unspecified failure.
15809 /// Other failure codes are reserved at this time.
15810 /// Portable software should only assume the failure code will be non-zero.
15811 ///
15812 /// The address held in _rs1_ must be naturally aligned to the size of the operand
15813 /// (_i.e._, eight-byte aligned for doublewords and four-byte aligned for words).
15814 /// If the address is not naturally aligned, an address-misaligned exception or an
15815 /// access-fault exception will be generated.
15816 /// The access-fault exception can be generated for a memory access that would otherwise
15817 /// be able to complete except for the misalignment,
15818 /// if the misaligned access should not be emulated.
15819 ///
15820 /// \[NOTE\]
15821 /// --
15822 /// Emulating misaligned LR/SC sequences is impractical in most systems.
15823 ///
15824 /// Misaligned LR/SC sequences also raise the possibility of accessing multiple
15825 /// reservation sets at once, which present definitions do not provide for.
15826 /// --
15827 ///
15828 /// An implementation can register an arbitrarily large reservation set on each LR,
15829 /// provided the reservation set includes all bytes of the addressed data word or
15830 /// doubleword.
15831 /// An SC can only pair with the most recent LR in program order.
15832 /// An SC may succeed only if no store from another hart to the reservation set
15833 /// can be observed to have occurred between the LR and the SC,
15834 /// and if there is no other SC between the LR and itself in program order.
15835 /// An SC may succeed only if no write from a device other than a hart to the bytes
15836 /// accessed by the LR instruction can be observed to have occurred between the LR
15837 /// and SC.
15838 /// Note this LR might have had a different effective address and data size,
15839 /// but reserved the SC's address as part of the reservation set.
15840 ///
15841 /// \[NOTE\]
15842 /// ----
15843 /// Following this model, in systems with memory translation, an SC is allowed to succeed if the
15844 /// earlier LR reserved the same location using an alias with a different virtual address, but is
15845 /// also allowed to fail if the virtual address is different.
15846 ///
15847 /// To accommodate legacy devices and buses, writes from devices other than RISC-V harts are only
15848 /// required to invalidate reservations when they overlap the bytes accessed by the LR.
15849 /// These writes are not required to invalidate the reservation when they access other bytes in
15850 /// the reservation set.
15851 /// ----
15852 ///
15853 /// The SC must fail if the address is not within the reservation set of the most
15854 /// recent LR in program order.
15855 /// The SC must fail if a store to the reservation set from another hart can be
15856 /// observed to occur between the LR and SC.
15857 /// The SC must fail if a write from some other device to the bytes accessed by the
15858 /// LR can be observed to occur between the LR and SC.
15859 /// (If such a device writes the reservation set but does not write the bytes accessed
15860 /// by the LR, the SC may or may not fail.)
15861 /// An SC must fail if there is another SC (to any address) between the LR and the SC
15862 /// in program order.
15863 /// The precise statement of the atomicity requirements for successful LR/SC sequences
15864 /// is defined by the Atomicity Axiom of the memory model.
15865 ///
15866 /// \[NOTE\]
15867 /// --
15868 /// The platform should provide a means to determine the size and shape of the reservation set.
15869 ///
15870 /// A platform specification may constrain the size and shape of the reservation set.
15871 ///
15872 /// A store-conditional instruction to a scratch word of memory should be used to forcibly invalidate any existing load reservation:
15873 ///
15874 /// * during a preemptive context switch, and
15875 /// * if necessary when changing virtual to physical address mappings, such as when migrating pages that might contain an active reservation.
15876 ///
15877 /// The invalidation of a hart's reservation when it executes an LR or SC imply that a hart can only hold one reservation at a time, and that an SC can only pair with the most recent LR, and LR with the next following SC, in program order. This is a restriction to the Atomicity Axiom in Section 18.1 that ensures software runs correctly on expected common implementations that operate in this manner.
15878 /// --
15879 ///
15880 /// An SC instruction can never be observed by another RISC-V hart before the LR instruction that established the reservation.
15881 ///
15882 /// \[NOTE\]
15883 /// --
15884 /// The LR/SC sequence can be given acquire semantics by setting the aq bit on the LR instruction. The LR/SC sequence can be given release semantics by by setting the rl bit on the SC instruction. Assuming suitable mappings for other atomic operations, setting the aq bit on the LR instruction, and setting the rl bit on the SC instruction makes the LR/SC sequence sequentially consistent in the C++ memory_order_seq_cst sense. Such a sequence does not act as a fence for ordering ordinary load and store instructions before and after the sequence. Specific instruction mappings for other C++ atomic operations, or stronger notions of "sequential consistency", may require both bits to be set on either or both of the LR or SC instruction.
15885 ///
15886 /// If neither bit is set on either LR or SC, the LR/SC sequence can be observed to occur before or after surrounding memory operations from the same RISC-V hart. This can be appropriate when the LR/SC sequence is used to implement a parallel reduction operation.
15887 /// --
15888 ///
15889 /// Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set.
15890 /// LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those
15891 /// with both bits clear, but may result in lower performance.
15892 ///
15893 /// # Forms
15894 /// Assembly: `sc.w xd, xs2, xs1`
15895 SCW,
15896 /// RISC-V `scall` instruction.
15897 ///
15898 /// # Forms
15899 /// Assembly: `scall`
15900 SCALL,
15901 /// RISC-V `sctrclr` instruction.
15902 ///
15903 /// # Forms
15904 /// Assembly: `sctrclr sctrclr`
15905 SCTRCLR,
15906 /// Store doubleword
15907 ///
15908 /// Store 64 bits of data from register `rs2` to an
15909 /// address formed by adding `rs1` to a signed offset.
15910 ///
15911 /// # Forms
15912 /// Assembly: `sd xs2, imm(xs1)`
15913 SD,
15914 /// RISC-V `seqz` instruction.
15915 ///
15916 /// # Forms
15917 /// Assembly: `seqz rd rs1`
15918 SEQZ,
15919 /// Sign-extend byte
15920 ///
15921 /// This instruction sign-extends the least-significant byte in the source to XLEN by copying the
15922 /// most-significant bit in the byte (i.e., bit 7) to all of the more-significant bits.
15923 ///
15924 /// # Forms
15925 /// Assembly: `sext.b xd, xs1`
15926 SEXTB,
15927 /// Sign-extend halfword
15928 ///
15929 /// This instruction sign-extends the least-significant halfword in the source to XLEN by copying the
15930 /// most-significant bit in the halfword (i.e., bit 15) to all of the more-significant bits.
15931 ///
15932 /// # Forms
15933 /// Assembly: `sext.h xd, xs1`
15934 SEXTH,
15935 /// RISC-V `sext.w` instruction.
15936 ///
15937 /// # Forms
15938 /// Assembly: `sext.w rd rs1`
15939 SEXTW,
15940 /// Order implicit page table reads after invalidation
15941 ///
15942 /// The `sfence.inval.ir` instruction guarantees that any previous `sinval.vma`
15943 /// instructions executed by the current hart are ordered before subsequent implicit references by
15944 /// that hart to the memory-management data structures.
15945 ///
15946 /// # Forms
15947 /// Assembly: `sfence.inval.ir ""`
15948 SFENCEINVALIR,
15949 /// Supervisor memory-management fence
15950 ///
15951 /// The supervisor memory-management fence instruction `SFENCE.VMA` is used to
15952 /// synchronize updates to in-memory memory-management data structures with
15953 /// current execution. Instruction execution causes implicit reads and
15954 /// writes to these data structures; however, these implicit references are
15955 /// ordinarily not ordered with respect to explicit loads and stores.
15956 /// Executing an SFENCE.VMA instruction guarantees that any previous stores
15957 /// already visible to the current RISC-V hart are ordered before certain
15958 /// implicit references by subsequent instructions in that hart to the
15959 /// memory-management data structures. The specific set of operations
15960 /// ordered by SFENCE.VMA is determined by _rs1_ and _rs2_, as described
15961 /// below. SFENCE.VMA is also used to invalidate entries in the
15962 /// address-translation cache associated with a hart (see <<sv32algorithm>>). Further details on the behavior of this instruction are described in <<virt-control>> and <<pmp-vmem>>.
15963 ///
15964 /// \[NOTE\]
15965 /// ====
15966 /// The SFENCE.VMA is used to flush any local hardware caches related to
15967 /// address translation. It is specified as a fence rather than a TLB flush
15968 /// to provide cleaner semantics with respect to which instructions are
15969 /// affected by the flush operation and to support a wider variety of
15970 /// dynamic caching structures and memory-management schemes. SFENCE.VMA is
15971 /// also used by higher privilege levels to synchronize page table writes
15972 /// and the address translation hardware.
15973 /// ====
15974 ///
15975 /// SFENCE.VMA orders only the local hart's implicit references to the
15976 /// memory-management data structures.
15977 ///
15978 /// \[NOTE\]
15979 /// ====
15980 /// Consequently, other harts must be notified separately when the
15981 /// memory-management data structures have been modified. One approach is to
15982 /// use 1) a local data fence to ensure local writes are visible globally,
15983 /// then 2) an interprocessor interrupt to the other thread, then 3) a local
15984 /// SFENCE.VMA in the interrupt handler of the remote thread, and finally 4)
15985 /// signal back to originating thread that operation is complete. This is,
15986 /// of course, the RISC-V analog to a TLB shootdown.
15987 /// ====
15988 ///
15989 /// For the common case that the translation data structures have only been
15990 /// modified for a single address mapping (i.e., one page or superpage),
15991 /// _rs1_ can specify a virtual address within that mapping to effect a
15992 /// translation fence for that mapping only. Furthermore, for the common
15993 /// case that the translation data structures have only been modified for a
15994 /// single address-space identifier, _rs2_ can specify the address space.
15995 /// The behavior of SFENCE.VMA depends on _rs1_ and _rs2_ as follows:
15996 ///
15997 /// * If __rs1__=`x0` and __rs2__=`x0`, the fence orders all reads and writes
15998 /// made to any level of the page tables, for all address spaces. The fence
15999 /// also invalidates all address-translation cache entries, for all address
16000 /// spaces.
16001 /// * If __rs1__=`x0` and __rs2__≠``x0``, the fence orders all
16002 /// reads and writes made to any level of the page tables, but only for the
16003 /// address space identified by integer register _rs2_. Accesses to _global_
16004 /// mappings (see <<translation>>) are not ordered. The
16005 /// fence also invalidates all address-translation cache entries matching
16006 /// the address space identified by integer register _rs2_, except for
16007 /// entries containing global mappings.
16008 /// * If __rs1__≠``x0`` and __rs2__=`x0`, the fence orders only
16009 /// reads and writes made to leaf page table entries corresponding to the
16010 /// virtual address in __rs1__, for all address spaces. The fence also
16011 /// invalidates all address-translation cache entries that contain leaf page
16012 /// table entries corresponding to the virtual address in _rs1_, for all
16013 /// address spaces.
16014 /// * If __rs1__≠``x0`` and __rs2__≠``x0``, the
16015 /// fence orders only reads and writes made to leaf page table entries
16016 /// corresponding to the virtual address in _rs1_, for the address space
16017 /// identified by integer register _rs2_. Accesses to global mappings are
16018 /// not ordered. The fence also invalidates all address-translation cache
16019 /// entries that contain leaf page table entries corresponding to the
16020 /// virtual address in _rs1_ and that match the address space identified by
16021 /// integer register _rs2_, except for entries containing global mappings.
16022 ///
16023 /// If the value held in _rs1_ is not a valid virtual address, then the
16024 /// SFENCE.VMA instruction has no effect. No exception is raised in this
16025 /// case.
16026 ///
16027 /// When __rs2__≠``x0``, bits SXLEN-1:ASIDMAX of the value held
16028 /// in _rs2_ are reserved for future standard use. Until their use is
16029 /// defined by a standard extension, they should be zeroed by software and
16030 /// ignored by current implementations. Furthermore, if
16031 /// ASIDLEN<ASIDMAX, the implementation shall ignore bits
16032 /// ASIDMAX-1:ASIDLEN of the value held in _rs2_.
16033 ///
16034 /// \[NOTE\]
16035 /// ====
16036 /// It is always legal to over-fence, e.g., by fencing only based on a
16037 /// subset of the bits in _rs1_ and/or _rs2_, and/or by simply treating all
16038 /// SFENCE.VMA instructions as having _rs1_=`x0` and/or _rs2_=`x0`. For
16039 /// example, simpler implementations can ignore the virtual address in _rs1_
16040 /// and the ASID value in _rs2_ and always perform a global fence. The
16041 /// choice not to raise an exception when an invalid virtual address is held
16042 /// in _rs1_ facilitates this type of simplification.
16043 /// ====
16044 ///
16045 /// An implicit read of the memory-management data structures may return any
16046 /// translation for an address that was valid at any time since the most
16047 /// recent SFENCE.VMA that subsumes that address. The ordering implied by
16048 /// SFENCE.VMA does not place implicit reads and writes to the
16049 /// memory-management data structures into the global memory order in a way
16050 /// that interacts cleanly with the standard RVWMO ordering rules. In
16051 /// particular, even though an SFENCE.VMA orders prior explicit accesses
16052 /// before subsequent implicit accesses, and those implicit accesses are
16053 /// ordered before their associated explicit accesses, SFENCE.VMA does not
16054 /// necessarily place prior explicit accesses before subsequent explicit
16055 /// accesses in the global memory order. These implicit loads also need not
16056 /// otherwise obey normal program order semantics with respect to prior
16057 /// loads or stores to the same address.
16058 ///
16059 /// \[NOTE\]
16060 /// ====
16061 /// A consequence of this specification is that an implementation may use
16062 /// any translation for an address that was valid at any time since the most
16063 /// recent SFENCE.VMA that subsumes that address. In particular, if a leaf
16064 /// PTE is modified but a subsuming SFENCE.VMA is not executed, either the
16065 /// old translation or the new translation will be used, but the choice is
16066 /// unpredictable. The behavior is otherwise well-defined.
16067 ///
16068 /// In a conventional TLB design, it is possible for multiple entries to
16069 /// match a single address if, for example, a page is upgraded to a
16070 /// superpage without first clearing the original non-leaf PTE's valid bit
16071 /// and executing an SFENCE.VMA with __rs1__=`x0`. In this case, a similar
16072 /// remark applies: it is unpredictable whether the old non-leaf PTE or the
16073 /// new leaf PTE is used, but the behavior is otherwise well defined.
16074 ///
16075 /// Another consequence of this specification is that it is generally unsafe
16076 /// to update a PTE using a set of stores of a width less than the width of
16077 /// the PTE, as it is legal for the implementation to read the PTE at any
16078 /// time, including when only some of the partial stores have taken effect.
16079 ///
16080 /// ***
16081 ///
16082 /// This specification permits the caching of PTEs whose V (Valid) bit is
16083 /// clear. Operating systems must be written to cope with this possibility,
16084 /// but implementers are reminded that eagerly caching invalid PTEs will
16085 /// reduce performance by causing additional page faults.
16086 /// ====
16087 ///
16088 /// Implementations must only perform implicit reads of the translation data
16089 /// structures pointed to by the current contents of the `satp` register or
16090 /// a subsequent valid (V=1) translation data structure entry, and must only
16091 /// raise exceptions for implicit accesses that are generated as a result of
16092 /// instruction execution, not those that are performed speculatively.
16093 ///
16094 /// Changes to the `sstatus` fields SUM and MXR take effect immediately,
16095 /// without the need to execute an SFENCE.VMA instruction. Changing
16096 /// `satp`.MODE from Bare to other modes and vice versa also takes effect
16097 /// immediately, without the need to execute an SFENCE.VMA instruction.
16098 /// Likewise, changes to `satp`.ASID take effect immediately.
16099 ///
16100 /// \[TIP\]
16101 /// ====
16102 /// The following common situations typically require executing an
16103 /// SFENCE.VMA instruction:
16104 ///
16105 /// * When software recycles an ASID (i.e., reassociates it with a different
16106 /// page table), it should _first_ change `satp` to point to the new page
16107 /// table using the recycled ASID, _then_ execute SFENCE.VMA with __rs1__=`x0`
16108 /// and _rs2_ set to the recycled ASID. Alternatively, software can execute
16109 /// the same SFENCE.VMA instruction while a different ASID is loaded into
16110 /// `satp`, provided the next time `satp` is loaded with the recycled ASID,
16111 /// it is simultaneously loaded with the new page table.
16112 /// * If the implementation does not provide ASIDs, or software chooses to
16113 /// always use ASID 0, then after every `satp` write, software should
16114 /// execute SFENCE.VMA with __rs1__=`x0`. In the common case that no global
16115 /// translations have been modified, _rs2_ should be set to a register other
16116 /// than `x0` but which contains the value zero, so that global translations
16117 /// are not flushed.
16118 /// * If software modifies a non-leaf PTE, it should execute SFENCE.VMA with
16119 /// __rs1__=`x0`. If any PTE along the traversal path had its G bit set, _rs2_
16120 /// must be `x0`; otherwise, _rs2_ should be set to the ASID for which the
16121 /// translation is being modified.
16122 /// * If software modifies a leaf PTE, it should execute SFENCE.VMA with
16123 /// _rs1_ set to a virtual address within the page. If any PTE along the
16124 /// traversal path had its G bit set, _rs2_ must be `x0`; otherwise, _rs2_
16125 /// should be set to the ASID for which the translation is being modified.
16126 /// * For the special cases of increasing the permissions on a leaf PTE and
16127 /// changing an invalid PTE to a valid leaf, software may choose to execute
16128 /// the SFENCE.VMA lazily. After modifying the PTE but before executing
16129 /// SFENCE.VMA, either the new or old permissions will be used. In the
16130 /// latter case, a page-fault exception might occur, at which point software
16131 /// should execute SFENCE.VMA in accordance with the previous bullet point.
16132 /// ====
16133 ///
16134 /// If a hart employs an address-translation cache, that cache must appear
16135 /// to be private to that hart. In particular, the meaning of an ASID is
16136 /// local to a hart; software may choose to use the same ASID to refer to
16137 /// different address spaces on different harts.
16138 ///
16139 /// \[NOTE\]
16140 /// ====
16141 /// A future extension could redefine ASIDs to be global across the SEE,
16142 /// enabling such options as shared translation caches and hardware support
16143 /// for broadcast TLB shootdown. However, as OSes have evolved to
16144 /// significantly reduce the scope of TLB shootdowns using novel
16145 /// ASID-management techniques, we expect the local-ASID scheme to remain
16146 /// attractive for its simplicity and possibly better scalability.
16147 /// ====
16148 ///
16149 /// For implementations that make `satp`.MODE read-only zero (always Bare),
16150 /// attempts to execute an SFENCE.VMA instruction might raise an
16151 /// illegal-instruction exception.
16152 ///
16153 /// # Forms
16154 /// Assembly: `sfence.vma xs1, xs2`
16155 SFENCEVMA,
16156 /// Order writes before sfence
16157 ///
16158 /// The `sfence.w.inval` instruction guarantees that any previous stores already visible to the
16159 /// current RISC-V hart are ordered before subsequent `sinval.vma` instructions executed by the
16160 /// same hart.
16161 ///
16162 /// # Forms
16163 /// Assembly: `sfence.w.inval ""`
16164 SFENCEWINVAL,
16165 /// RISC-V `sgtz` instruction.
16166 ///
16167 /// # Forms
16168 /// Assembly: `sgtz rd rs2`
16169 SGTZ,
16170 /// Store halfword
16171 ///
16172 /// Store 16 bits of data from register `rs2` to an
16173 /// address formed by adding `rs1` to a signed offset.
16174 ///
16175 /// # Forms
16176 /// Assembly: `sh xs2, imm(xs1)`
16177 SH,
16178 /// Shift left by 1 and add
16179 ///
16180 /// This instruction shifts `rs1` to the left by 1 bit and adds it to `rs2`.
16181 ///
16182 /// # Forms
16183 /// Assembly: `sh1add xd, xs1, xs2`
16184 SH1ADD,
16185 /// Shift unsigned word left by 1 and add
16186 ///
16187 /// This instruction performs an XLEN-wide addition of two addends. The first addend is rs2.
16188 /// The second addend is the unsigned value formed by extracting the least-significant word of rs1
16189 /// and shifting it left by 1 place.
16190 ///
16191 /// # Forms
16192 /// Assembly: `sh1add.uw xd, xs1, xs2`
16193 SH1ADDUW,
16194 /// Shift left by 2 and add
16195 ///
16196 /// This instruction shifts `rs1` to the left by 2 places and adds it to `rs2`.
16197 ///
16198 /// # Forms
16199 /// Assembly: `sh2add xd, xs1, xs2`
16200 SH2ADD,
16201 /// Shift unsigned word left by 2 and add
16202 ///
16203 /// This instruction performs an XLEN-wide addition of two addends. The first addend is rs2.
16204 /// The second addend is the unsigned value formed by extracting the least-significant word of rs1
16205 /// and shifting it left by 2 places.
16206 ///
16207 /// # Forms
16208 /// Assembly: `sh2add.uw xd, xs1, xs2`
16209 SH2ADDUW,
16210 /// Shift left by 3 and add
16211 ///
16212 /// This instruction shifts `rs1` to the left by 3 places and adds it to `rs2`.
16213 ///
16214 /// # Forms
16215 /// Assembly: `sh3add xd, xs1, xs2`
16216 SH3ADD,
16217 /// Shift unsigned word left by 3 and add
16218 ///
16219 /// This instruction performs an XLEN-wide addition of two addends. The first addend is rs2.
16220 /// The second addend is the unsigned value formed by extracting the least-significant word of rs1
16221 /// and shifting it left by 3 places.
16222 ///
16223 /// # Forms
16224 /// Assembly: `sh3add.uw xd, xs1, xs2`
16225 SH3ADDUW,
16226 /// RISC-V `sha256sig0` instruction.
16227 ///
16228 /// # Forms
16229 /// Assembly: `sha256sig0 xd, xs1`
16230 SHA256SIG0,
16231 /// RISC-V `sha256sig1` instruction.
16232 ///
16233 /// # Forms
16234 /// Assembly: `sha256sig1 xd, xs1`
16235 SHA256SIG1,
16236 /// RISC-V `sha256sum0` instruction.
16237 ///
16238 /// # Forms
16239 /// Assembly: `sha256sum0 xd, xs1`
16240 SHA256SUM0,
16241 /// RISC-V `sha256sum1` instruction.
16242 ///
16243 /// # Forms
16244 /// Assembly: `sha256sum1 xd, xs1`
16245 SHA256SUM1,
16246 /// RISC-V `sha512sig0` instruction.
16247 ///
16248 /// # Forms
16249 /// Assembly: `sha512sig0 xd, xs1`
16250 SHA512SIG0,
16251 /// RISC-V `sha512sig0h` instruction.
16252 ///
16253 /// # Forms
16254 /// Assembly: `sha512sig0h xd, xs1, xs2`
16255 SHA512SIG0H,
16256 /// RISC-V `sha512sig0l` instruction.
16257 ///
16258 /// # Forms
16259 /// Assembly: `sha512sig0l xd, xs1, xs2`
16260 SHA512SIG0L,
16261 /// RISC-V `sha512sig1` instruction.
16262 ///
16263 /// # Forms
16264 /// Assembly: `sha512sig1 xd, xs1`
16265 SHA512SIG1,
16266 /// RISC-V `sha512sig1h` instruction.
16267 ///
16268 /// # Forms
16269 /// Assembly: `sha512sig1h xd, xs1, xs2`
16270 SHA512SIG1H,
16271 /// RISC-V `sha512sig1l` instruction.
16272 ///
16273 /// # Forms
16274 /// Assembly: `sha512sig1l xd, xs1, xs2`
16275 SHA512SIG1L,
16276 /// RISC-V `sha512sum0` instruction.
16277 ///
16278 /// # Forms
16279 /// Assembly: `sha512sum0 xd, xs1`
16280 SHA512SUM0,
16281 /// RISC-V `sha512sum0r` instruction.
16282 ///
16283 /// # Forms
16284 /// Assembly: `sha512sum0r xd, xs1, xs2`
16285 SHA512SUM0R,
16286 /// RISC-V `sha512sum1` instruction.
16287 ///
16288 /// # Forms
16289 /// Assembly: `sha512sum1 xd, xs1`
16290 SHA512SUM1,
16291 /// RISC-V `sha512sum1r` instruction.
16292 ///
16293 /// # Forms
16294 /// Assembly: `sha512sum1r xd, xs1, xs2`
16295 SHA512SUM1R,
16296 /// Invalidate cached address translations
16297 ///
16298 /// # Forms
16299 /// Assembly: `sinval.vma xs1, xs2`
16300 SINVALVMA,
16301 /// Shift left logical
16302 ///
16303 /// Shift the value in `rs1` left by the value in the lower 6 bits of `rs2`, and store the result in `rd`.
16304 ///
16305 /// # Forms
16306 /// Assembly: `sll xd, xs1, xs2`
16307 SLL,
16308 /// Shift left logical immediate
16309 ///
16310 /// Shift the value in rs1 left by shamt, and store the result in rd
16311 ///
16312 /// # Forms
16313 /// Assembly: `slli xd, xs1, shamt`
16314 SLLI,
16315 /// Shift left logical immediate
16316 ///
16317 /// Shift the value in rs1 left by shamt, and store the result in rd
16318 ///
16319 /// # Forms
16320 /// Assembly: `slli.rv32 xd, xs1, shamt`
16321 SLLIRV32,
16322 /// Shift left unsigned word (Immediate)
16323 ///
16324 /// This instruction takes the least-significant word of rs1, zero-extends it, and shifts it
16325 /// left by the immediate.
16326 ///
16327 /// \[NOTE\]
16328 /// This instruction is the same as `slli` with `zext.w` performed on rs1 before shifting.
16329 ///
16330 /// # Forms
16331 /// Assembly: `slli.uw xd, xs1, shamt`
16332 SLLIUW,
16333 /// Shift left logical immediate word
16334 ///
16335 /// Shift the 32-bit value in rs1 left by shamt, and store the sign-extended result in rd
16336 ///
16337 /// # Forms
16338 /// Assembly: `slliw xd, xs1, shamt`
16339 SLLIW,
16340 /// Shift left logical word
16341 ///
16342 /// Shift the 32-bit value in `rs1` left by the value in the lower 5 bits of `rs2`, and store the sign-extended result in `rd`.
16343 ///
16344 /// # Forms
16345 /// Assembly: `sllw xd, xs1, xs2`
16346 SLLW,
16347 /// Set on less than
16348 ///
16349 /// Places the value 1 in register `rd` if register `rs1` is less than the value in register `rs2`, where
16350 /// both sources are treated as signed numbers, else 0 is written to `rd`.
16351 ///
16352 /// # Forms
16353 /// Assembly: `slt xd, xs1, rs2`
16354 SLT,
16355 /// Set on less than immediate
16356 ///
16357 /// Places the value 1 in register `rd` if register `rs1` is less than the sign-extended immediate
16358 /// when both are treated as signed numbers, else 0 is written to `rd`.
16359 ///
16360 /// # Forms
16361 /// Assembly: `slti xd, xs1, imm`
16362 SLTI,
16363 /// Set on less than immediate unsigned
16364 ///
16365 /// Places the value 1 in register `rd` if register `rs1` is less than the sign-extended immediate
16366 /// when both are treated as unsigned numbers (_i.e._, the immediate is first sign-extended to
16367 /// XLEN bits then treated as an unsigned number), else 0 is written to `rd`.
16368 ///
16369 /// NOTE: `sltiu rd, rs1, 1` sets `rd` to 1 if `rs1` equals zero, otherwise sets `rd` to 0
16370 /// (assembler pseudoinstruction `SEQZ rd, rs`).
16371 ///
16372 /// # Forms
16373 /// Assembly: `sltiu xd, xs1, imm`
16374 SLTIU,
16375 /// Set on less than unsigned
16376 ///
16377 /// Places the value 1 in register `rd` if register `rs1` is less than the value in register `rs2`, where
16378 /// both sources are treated as unsigned numbers, else 0 is written to `rd`.
16379 ///
16380 /// # Forms
16381 /// Assembly: `sltu xd, xs1, xs2`
16382 SLTU,
16383 /// RISC-V `sltz` instruction.
16384 ///
16385 /// # Forms
16386 /// Assembly: `sltz rd rs1`
16387 SLTZ,
16388 /// RISC-V `sm3p0` instruction.
16389 ///
16390 /// # Forms
16391 /// Assembly: `sm3p0 xd, xs1`
16392 SM3P0,
16393 /// RISC-V `sm3p1` instruction.
16394 ///
16395 /// # Forms
16396 /// Assembly: `sm3p1 xd, xs1`
16397 SM3P1,
16398 /// RISC-V `sm4ed` instruction.
16399 ///
16400 /// # Forms
16401 /// Assembly: `sm4ed xd, xs1, xs2, bs`
16402 SM4ED,
16403 /// RISC-V `sm4ks` instruction.
16404 ///
16405 /// # Forms
16406 /// Assembly: `sm4ks xd, xs1, xs2, bs`
16407 SM4KS,
16408 /// RISC-V `snez` instruction.
16409 ///
16410 /// # Forms
16411 /// Assembly: `snez rd rs2`
16412 SNEZ,
16413 /// Shift right arithmetic
16414 ///
16415 /// Arithmetic shift the value in `rs1` right by the value in the lower 5 bits of `rs2`, and store the result in `rd`.
16416 ///
16417 /// # Forms
16418 /// Assembly: `sra xd, xs1, xs2`
16419 SRA,
16420 /// Shift right arithmetic immediate
16421 ///
16422 /// Arithmetic shift (the original sign bit is copied into the vacated upper bits) the
16423 /// value in rs1 right by shamt, and store the result in rd.
16424 ///
16425 /// # Forms
16426 /// Assembly: `srai xd, xs1, shamt`
16427 SRAI,
16428 /// Shift right arithmetic immediate
16429 ///
16430 /// Arithmetic shift (the original sign bit is copied into the vacated upper bits) the
16431 /// value in rs1 right by shamt, and store the result in rd.
16432 ///
16433 /// # Forms
16434 /// Assembly: `srai.rv32 xd, xs1, shamt`
16435 SRAIRV32,
16436 /// Shift right arithmetic immediate word
16437 ///
16438 /// Arithmetic shift (the original sign bit is copied into the vacated upper bits) the
16439 /// 32-bit value in rs1 right by shamt, and store the sign-extended result in rd.
16440 ///
16441 /// # Forms
16442 /// Assembly: `sraiw xd, xs1, shamt`
16443 SRAIW,
16444 /// Shift right arithmetic word
16445 ///
16446 /// Arithmetic shift the 32-bit value in `rs1` right by the value in the lower 5 bits of `rs2`, and store the sign-extended result in `rd`.
16447 ///
16448 /// # Forms
16449 /// Assembly: `sraw xd, xs1, xs2`
16450 SRAW,
16451 /// Supervisor Exception Return
16452 ///
16453 /// Returns from an exception.
16454 ///
16455 /// When `sret` is allowed to execute, its behavior depends on whether or not the current privilege
16456 /// mode is virtualized.
16457 ///
16458 /// *When the current privilege mode is (H)S-mode or M-mode*
16459 ///
16460 /// `sret` sets `hstatus.HPV` = 0, `mstatus.SPP` = 0,
16461 /// `mstatus.SIE` = `mstatus.SPIE`, and `mstatus.SPIE` = 1,
16462 /// changes the privilege mode according to the table below,
16463 /// and then jumps to the address in `sepc`.
16464 ///
16465 /// .Next privilege mode following an `sret` in (H)S-mode or M-mode
16466 /// \[%autowidth\]
16467 /// |===
16468 /// | \[.rotate\]#`mstatus.SPP`# | \[.rotate\]#`hstatus.SPV`# .>| Mode after `sret`
16469 ///
16470 /// | 0 | 0 | U-mode
16471 /// | 0 | 1 | VU-mode
16472 /// | 1 | 0 | (H)S-mode
16473 /// | 1 | 1 | VS-mode
16474 /// |===
16475 ///
16476 /// *When the current privilege mode is VS-mode*
16477 ///
16478 /// `sret` sets
16479 /// `vsstatus.SPP` = 0, `vsstatus.SIE` = `vstatus.SPIE`, and `vsstatus.SPIE` = 1,
16480 /// changes the privilege mode according to the table below,
16481 /// and then jumps to the address in `vsepc`.
16482 ///
16483 /// .Next privilege mode following an `sret` in (H)S-mode or M-mode
16484 /// \[%autowidth\]
16485 /// |===
16486 /// | \[.rotate\]#`vsstatus.SPP`# .>| Mode after `sret`
16487 ///
16488 /// | 0 | VU-mode
16489 /// | 1 | VS-mode
16490 /// |===
16491 ///
16492 /// # Forms
16493 /// Assembly: `sret ""`
16494 SRET,
16495 /// Shift right logical
16496 ///
16497 /// Logical shift the value in `rs1` right by the value in the lower bits of `rs2`, and store the result in `rd`.
16498 ///
16499 /// # Forms
16500 /// Assembly: `srl xd, xs1, xs2`
16501 SRL,
16502 /// Shift right logical immediate
16503 ///
16504 /// Shift the value in rs1 right by shamt, and store the result in rd
16505 ///
16506 /// # Forms
16507 /// Assembly: `srli xd, xs1, shamt`
16508 SRLI,
16509 /// Shift right logical immediate
16510 ///
16511 /// Shift the value in rs1 right by shamt, and store the result in rd
16512 ///
16513 /// # Forms
16514 /// Assembly: `srli.rv32 xd, xs1, shamt`
16515 SRLIRV32,
16516 /// Shift right logical immediate word
16517 ///
16518 /// Shift the 32-bit value in rs1 right by shamt, and store the sign-extended result in rd
16519 ///
16520 /// # Forms
16521 /// Assembly: `srliw xd, xs1, shamt`
16522 SRLIW,
16523 /// Shift right logical word
16524 ///
16525 /// Logical shift the 32-bit value in `rs1` right by the value in the lower 5 bits of `rs2`, and store the sign-extended result in `rd`.
16526 ///
16527 /// # Forms
16528 /// Assembly: `srlw xd, xs1, xs2`
16529 SRLW,
16530 /// RISC-V `ssamoswap.d` instruction.
16531 ///
16532 /// # Forms
16533 /// Assembly: `ssamoswap.d xd, xs1, xs2, aq, rl`
16534 SSAMOSWAPD,
16535 /// RISC-V `ssamoswap.w` instruction.
16536 ///
16537 /// # Forms
16538 /// Assembly: `ssamoswap.w xd, xs1, xs2, aq, rl`
16539 SSAMOSWAPW,
16540 /// RISC-V `sspopchk.x1` instruction.
16541 ///
16542 /// # Forms
16543 /// Assembly: `sspopchk.x1 sspopchk_x1`
16544 SSPOPCHKX1,
16545 /// RISC-V `sspopchk.x5` instruction.
16546 ///
16547 /// # Forms
16548 /// Assembly: `sspopchk.x5 sspopchk_x5`
16549 SSPOPCHKX5,
16550 /// RISC-V `sspush.x1` instruction.
16551 ///
16552 /// # Forms
16553 /// Assembly: `sspush.x1 sspush_x1`
16554 SSPUSHX1,
16555 /// RISC-V `sspush.x5` instruction.
16556 ///
16557 /// # Forms
16558 /// Assembly: `sspush.x5 sspush_x5`
16559 SSPUSHX5,
16560 /// RISC-V `ssrdp` instruction.
16561 ///
16562 /// # Forms
16563 /// Assembly: `ssrdp xd`
16564 SSRDP,
16565 /// Subtract
16566 ///
16567 /// Subtract the value in rs2 from rs1, and store the result in rd
16568 ///
16569 /// # Forms
16570 /// Assembly: `sub xd, xs1, xs2`
16571 SUB,
16572 /// Subtract word
16573 ///
16574 /// Subtract the 32-bit values in rs2 from rs1, and store the sign-extended result in rd
16575 ///
16576 /// # Forms
16577 /// Assembly: `subw xd, xs1, xs2`
16578 SUBW,
16579 /// Store word
16580 ///
16581 /// Store 32 bits of data from register `rs2` to an
16582 /// address formed by adding `rs1` to a signed offset.
16583 ///
16584 /// # Forms
16585 /// Assembly: `sw xs2, imm(xs1)`
16586 SW,
16587 /// Bit deinterleave
16588 ///
16589 /// This instruction gathers bits from the high and low halves of the source word into odd/even bit
16590 /// positions in the destination word. It is the inverse of the zip instruction. This instruction is
16591 /// available only on RV32.
16592 ///
16593 /// # Forms
16594 /// Assembly: `unzip xd, xs1`
16595 UNZIP,
16596 /// RISC-V `vaadd.vv` instruction.
16597 ///
16598 /// # Forms
16599 /// Assembly: `vaadd.vv vm, vs2, vs1, vd`
16600 VAADDVV,
16601 /// RISC-V `vaadd.vx` instruction.
16602 ///
16603 /// # Forms
16604 /// Assembly: `vaadd.vx vm, vs2, xs1, vd`
16605 VAADDVX,
16606 /// RISC-V `vaaddu.vv` instruction.
16607 ///
16608 /// # Forms
16609 /// Assembly: `vaaddu.vv vm, vs2, vs1, vd`
16610 VAADDUVV,
16611 /// RISC-V `vaaddu.vx` instruction.
16612 ///
16613 /// # Forms
16614 /// Assembly: `vaaddu.vx vm, vs2, xs1, vd`
16615 VAADDUVX,
16616 /// RISC-V `vadc.vim` instruction.
16617 ///
16618 /// # Forms
16619 /// Assembly: `vadc.vim vs2, vd, imm`
16620 VADCVIM,
16621 /// RISC-V `vadc.vvm` instruction.
16622 ///
16623 /// # Forms
16624 /// Assembly: `vadc.vvm vs2, vs1, vd`
16625 VADCVVM,
16626 /// RISC-V `vadc.vxm` instruction.
16627 ///
16628 /// # Forms
16629 /// Assembly: `vadc.vxm vs2, xs1, vd`
16630 VADCVXM,
16631 /// RISC-V `vadd.vi` instruction.
16632 ///
16633 /// # Forms
16634 /// Assembly: `vadd.vi vm, vs2, vd, imm`
16635 VADDVI,
16636 /// RISC-V `vadd.vv` instruction.
16637 ///
16638 /// # Forms
16639 /// Assembly: `vadd.vv vm, vs2, vs1, vd`
16640 VADDVV,
16641 /// RISC-V `vadd.vx` instruction.
16642 ///
16643 /// # Forms
16644 /// Assembly: `vadd.vx vm, vs2, xs1, vd`
16645 VADDVX,
16646 /// RISC-V `vaesdf.vs` instruction.
16647 ///
16648 /// # Forms
16649 /// Assembly: `vaesdf.vs vs2, vd`
16650 VAESDFVS,
16651 /// RISC-V `vaesdf.vv` instruction.
16652 ///
16653 /// # Forms
16654 /// Assembly: `vaesdf.vv vs2, vd`
16655 VAESDFVV,
16656 /// RISC-V `vaesdm.vs` instruction.
16657 ///
16658 /// # Forms
16659 /// Assembly: `vaesdm.vs vs2, vd`
16660 VAESDMVS,
16661 /// RISC-V `vaesdm.vv` instruction.
16662 ///
16663 /// # Forms
16664 /// Assembly: `vaesdm.vv vs2, vd`
16665 VAESDMVV,
16666 /// RISC-V `vaesef.vs` instruction.
16667 ///
16668 /// # Forms
16669 /// Assembly: `vaesef.vs vs2, vd`
16670 VAESEFVS,
16671 /// RISC-V `vaesef.vv` instruction.
16672 ///
16673 /// # Forms
16674 /// Assembly: `vaesef.vv vs2, vd`
16675 VAESEFVV,
16676 /// RISC-V `vaesem.vs` instruction.
16677 ///
16678 /// # Forms
16679 /// Assembly: `vaesem.vs vs2, vd`
16680 VAESEMVS,
16681 /// RISC-V `vaesem.vv` instruction.
16682 ///
16683 /// # Forms
16684 /// Assembly: `vaesem.vv vs2, vd`
16685 VAESEMVV,
16686 /// RISC-V `vaeskf1.vi` instruction.
16687 ///
16688 /// # Forms
16689 /// Assembly: `vaeskf1.vi vs2, vd, imm`
16690 VAESKF1VI,
16691 /// RISC-V `vaeskf2.vi` instruction.
16692 ///
16693 /// # Forms
16694 /// Assembly: `vaeskf2.vi vs2, vd, imm`
16695 VAESKF2VI,
16696 /// Vector AES round zero
16697 ///
16698 /// # Forms
16699 /// Assembly: `vaesz.vs vs2, vd`
16700 VAESZVS,
16701 /// RISC-V `vand.vi` instruction.
16702 ///
16703 /// # Forms
16704 /// Assembly: `vand.vi vm, vs2, vd, imm`
16705 VANDVI,
16706 /// RISC-V `vand.vv` instruction.
16707 ///
16708 /// # Forms
16709 /// Assembly: `vand.vv vm, vs2, vs1, vd`
16710 VANDVV,
16711 /// RISC-V `vand.vx` instruction.
16712 ///
16713 /// # Forms
16714 /// Assembly: `vand.vx vm, vs2, xs1, vd`
16715 VANDVX,
16716 /// RISC-V `vandn.vv` instruction.
16717 ///
16718 /// # Forms
16719 /// Assembly: `vandn.vv vm, vs2, vs1, vd`
16720 VANDNVV,
16721 /// RISC-V `vandn.vx` instruction.
16722 ///
16723 /// # Forms
16724 /// Assembly: `vandn.vx vm, vs2, xs1, vd`
16725 VANDNVX,
16726 /// RISC-V `vasub.vv` instruction.
16727 ///
16728 /// # Forms
16729 /// Assembly: `vasub.vv vm, vs2, vs1, vd`
16730 VASUBVV,
16731 /// RISC-V `vasub.vx` instruction.
16732 ///
16733 /// # Forms
16734 /// Assembly: `vasub.vx vm, vs2, xs1, vd`
16735 VASUBVX,
16736 /// RISC-V `vasubu.vv` instruction.
16737 ///
16738 /// # Forms
16739 /// Assembly: `vasubu.vv vm, vs2, vs1, vd`
16740 VASUBUVV,
16741 /// RISC-V `vasubu.vx` instruction.
16742 ///
16743 /// # Forms
16744 /// Assembly: `vasubu.vx vm, vs2, xs1, vd`
16745 VASUBUVX,
16746 /// RISC-V `vbrev8.v` instruction.
16747 ///
16748 /// # Forms
16749 /// Assembly: `vbrev8.v vm, vs2, vd`
16750 VBREV8V,
16751 /// RISC-V `vbrev.v` instruction.
16752 ///
16753 /// # Forms
16754 /// Assembly: `vbrev.v vm, vs2, vd`
16755 VBREVV,
16756 /// RISC-V `vclmul.vv` instruction.
16757 ///
16758 /// # Forms
16759 /// Assembly: `vclmul.vv vm, vs2, vs1, vd`
16760 VCLMULVV,
16761 /// RISC-V `vclmul.vx` instruction.
16762 ///
16763 /// # Forms
16764 /// Assembly: `vclmul.vx vm, vs2, xs1, vd`
16765 VCLMULVX,
16766 /// RISC-V `vclmulh.vv` instruction.
16767 ///
16768 /// # Forms
16769 /// Assembly: `vclmulh.vv vm, vs2, vs1, vd`
16770 VCLMULHVV,
16771 /// RISC-V `vclmulh.vx` instruction.
16772 ///
16773 /// # Forms
16774 /// Assembly: `vclmulh.vx vm, vs2, xs1, vd`
16775 VCLMULHVX,
16776 /// RISC-V `vclz.v` instruction.
16777 ///
16778 /// # Forms
16779 /// Assembly: `vclz.v vm, vs2, vd`
16780 VCLZV,
16781 /// RISC-V `vcompress.vm` instruction.
16782 ///
16783 /// # Forms
16784 /// Assembly: `vcompress.vm vs2, vs1, vd`
16785 VCOMPRESSVM,
16786 /// RISC-V `vcpop.m` instruction.
16787 ///
16788 /// # Forms
16789 /// Assembly: `vcpop.m vm, vs2, xd`
16790 VCPOPM,
16791 /// RISC-V `vcpop.v` instruction.
16792 ///
16793 /// # Forms
16794 /// Assembly: `vcpop.v vm, vs2, vd`
16795 VCPOPV,
16796 /// RISC-V `vctz.v` instruction.
16797 ///
16798 /// # Forms
16799 /// Assembly: `vctz.v vm, vs2, vd`
16800 VCTZV,
16801 /// RISC-V `vdiv.vv` instruction.
16802 ///
16803 /// # Forms
16804 /// Assembly: `vdiv.vv vm, vs2, vs1, vd`
16805 VDIVVV,
16806 /// RISC-V `vdiv.vx` instruction.
16807 ///
16808 /// # Forms
16809 /// Assembly: `vdiv.vx vm, vs2, xs1, vd`
16810 VDIVVX,
16811 /// RISC-V `vdivu.vv` instruction.
16812 ///
16813 /// # Forms
16814 /// Assembly: `vdivu.vv vm, vs2, vs1, vd`
16815 VDIVUVV,
16816 /// RISC-V `vdivu.vx` instruction.
16817 ///
16818 /// # Forms
16819 /// Assembly: `vdivu.vx vm, vs2, xs1, vd`
16820 VDIVUVX,
16821 /// RISC-V `vfadd.vf` instruction.
16822 ///
16823 /// # Forms
16824 /// Assembly: `vfadd.vf vm, vs2, xs1, vd`
16825 VFADDVF,
16826 /// RISC-V `vfadd.vv` instruction.
16827 ///
16828 /// # Forms
16829 /// Assembly: `vfadd.vv vm, vs2, vs1, vd`
16830 VFADDVV,
16831 /// RISC-V `vfclass.v` instruction.
16832 ///
16833 /// # Forms
16834 /// Assembly: `vfclass.v vm, vs2, vd`
16835 VFCLASSV,
16836 /// RISC-V `vfcvt.f.x.v` instruction.
16837 ///
16838 /// # Forms
16839 /// Assembly: `vfcvt.f.x.v vm, vs2, vd`
16840 VFCVTFXV,
16841 /// RISC-V `vfcvt.f.xu.v` instruction.
16842 ///
16843 /// # Forms
16844 /// Assembly: `vfcvt.f.xu.v vm, vs2, vd`
16845 VFCVTFXUV,
16846 /// RISC-V `vfcvt.rtz.x.f.v` instruction.
16847 ///
16848 /// # Forms
16849 /// Assembly: `vfcvt.rtz.x.f.v vm, vs2, vd`
16850 VFCVTRTZXFV,
16851 /// RISC-V `vfcvt.rtz.xu.f.v` instruction.
16852 ///
16853 /// # Forms
16854 /// Assembly: `vfcvt.rtz.xu.f.v vm, vs2, vd`
16855 VFCVTRTZXUFV,
16856 /// RISC-V `vfcvt.x.f.v` instruction.
16857 ///
16858 /// # Forms
16859 /// Assembly: `vfcvt.x.f.v vm, vs2, vd`
16860 VFCVTXFV,
16861 /// RISC-V `vfcvt.xu.f.v` instruction.
16862 ///
16863 /// # Forms
16864 /// Assembly: `vfcvt.xu.f.v vm, vs2, vd`
16865 VFCVTXUFV,
16866 /// RISC-V `vfdiv.vf` instruction.
16867 ///
16868 /// # Forms
16869 /// Assembly: `vfdiv.vf vm, vs2, xs1, vd`
16870 VFDIVVF,
16871 /// RISC-V `vfdiv.vv` instruction.
16872 ///
16873 /// # Forms
16874 /// Assembly: `vfdiv.vv vm, vs2, vs1, vd`
16875 VFDIVVV,
16876 /// RISC-V `vfirst.m` instruction.
16877 ///
16878 /// # Forms
16879 /// Assembly: `vfirst.m vm, vs2, xd`
16880 VFIRSTM,
16881 /// RISC-V `vfmacc.vf` instruction.
16882 ///
16883 /// # Forms
16884 /// Assembly: `vfmacc.vf vm, vs2, xs1, vd`
16885 VFMACCVF,
16886 /// RISC-V `vfmacc.vv` instruction.
16887 ///
16888 /// # Forms
16889 /// Assembly: `vfmacc.vv vm, vs2, vs1, vd`
16890 VFMACCVV,
16891 /// RISC-V `vfmadd.vf` instruction.
16892 ///
16893 /// # Forms
16894 /// Assembly: `vfmadd.vf vm, vs2, xs1, vd`
16895 VFMADDVF,
16896 /// RISC-V `vfmadd.vv` instruction.
16897 ///
16898 /// # Forms
16899 /// Assembly: `vfmadd.vv vm, vs2, vs1, vd`
16900 VFMADDVV,
16901 /// RISC-V `vfmax.vf` instruction.
16902 ///
16903 /// # Forms
16904 /// Assembly: `vfmax.vf vm, vs2, xs1, vd`
16905 VFMAXVF,
16906 /// RISC-V `vfmax.vv` instruction.
16907 ///
16908 /// # Forms
16909 /// Assembly: `vfmax.vv vm, vs2, vs1, vd`
16910 VFMAXVV,
16911 /// RISC-V `vfmerge.vfm` instruction.
16912 ///
16913 /// # Forms
16914 /// Assembly: `vfmerge.vfm vs2, xs1, vd`
16915 VFMERGEVFM,
16916 /// RISC-V `vfmin.vf` instruction.
16917 ///
16918 /// # Forms
16919 /// Assembly: `vfmin.vf vm, vs2, xs1, vd`
16920 VFMINVF,
16921 /// RISC-V `vfmin.vv` instruction.
16922 ///
16923 /// # Forms
16924 /// Assembly: `vfmin.vv vm, vs2, vs1, vd`
16925 VFMINVV,
16926 /// RISC-V `vfmsac.vf` instruction.
16927 ///
16928 /// # Forms
16929 /// Assembly: `vfmsac.vf vm, vs2, xs1, vd`
16930 VFMSACVF,
16931 /// RISC-V `vfmsac.vv` instruction.
16932 ///
16933 /// # Forms
16934 /// Assembly: `vfmsac.vv vm, vs2, vs1, vd`
16935 VFMSACVV,
16936 /// RISC-V `vfmsub.vf` instruction.
16937 ///
16938 /// # Forms
16939 /// Assembly: `vfmsub.vf vm, vs2, xs1, vd`
16940 VFMSUBVF,
16941 /// RISC-V `vfmsub.vv` instruction.
16942 ///
16943 /// # Forms
16944 /// Assembly: `vfmsub.vv vm, vs2, vs1, vd`
16945 VFMSUBVV,
16946 /// RISC-V `vfmul.vf` instruction.
16947 ///
16948 /// # Forms
16949 /// Assembly: `vfmul.vf vm, vs2, xs1, vd`
16950 VFMULVF,
16951 /// RISC-V `vfmul.vv` instruction.
16952 ///
16953 /// # Forms
16954 /// Assembly: `vfmul.vv vm, vs2, vs1, vd`
16955 VFMULVV,
16956 /// RISC-V `vfmv.f.s` instruction.
16957 ///
16958 /// # Forms
16959 /// Assembly: `vfmv.f.s vs2, xd`
16960 VFMVFS,
16961 /// RISC-V `vfmv.s.f` instruction.
16962 ///
16963 /// # Forms
16964 /// Assembly: `vfmv.s.f xs1, vd`
16965 VFMVSF,
16966 /// RISC-V `vfmv.v.f` instruction.
16967 ///
16968 /// # Forms
16969 /// Assembly: `vfmv.v.f xs1, vd`
16970 VFMVVF,
16971 /// RISC-V `vfncvt.f.f.w` instruction.
16972 ///
16973 /// # Forms
16974 /// Assembly: `vfncvt.f.f.w vm, vs2, vd`
16975 VFNCVTFFW,
16976 /// RISC-V `vfncvt.f.x.w` instruction.
16977 ///
16978 /// # Forms
16979 /// Assembly: `vfncvt.f.x.w vm, vs2, vd`
16980 VFNCVTFXW,
16981 /// RISC-V `vfncvt.f.xu.w` instruction.
16982 ///
16983 /// # Forms
16984 /// Assembly: `vfncvt.f.xu.w vm, vs2, vd`
16985 VFNCVTFXUW,
16986 /// RISC-V `vfncvt.rod.f.f.w` instruction.
16987 ///
16988 /// # Forms
16989 /// Assembly: `vfncvt.rod.f.f.w vm, vs2, vd`
16990 VFNCVTRODFFW,
16991 /// RISC-V `vfncvt.rtz.x.f.w` instruction.
16992 ///
16993 /// # Forms
16994 /// Assembly: `vfncvt.rtz.x.f.w vm, vs2, vd`
16995 VFNCVTRTZXFW,
16996 /// RISC-V `vfncvt.rtz.xu.f.w` instruction.
16997 ///
16998 /// # Forms
16999 /// Assembly: `vfncvt.rtz.xu.f.w vm, vs2, vd`
17000 VFNCVTRTZXUFW,
17001 /// RISC-V `vfncvt.x.f.w` instruction.
17002 ///
17003 /// # Forms
17004 /// Assembly: `vfncvt.x.f.w vm, vs2, vd`
17005 VFNCVTXFW,
17006 /// RISC-V `vfncvt.xu.f.w` instruction.
17007 ///
17008 /// # Forms
17009 /// Assembly: `vfncvt.xu.f.w vm, vs2, vd`
17010 VFNCVTXUFW,
17011 /// RISC-V `vfncvtbf16.f.f.w` instruction.
17012 ///
17013 /// # Forms
17014 /// Assembly: `vfncvtbf16.f.f.w vm, vs2, vd`
17015 VFNCVTBF16FFW,
17016 /// RISC-V `vfnmacc.vf` instruction.
17017 ///
17018 /// # Forms
17019 /// Assembly: `vfnmacc.vf vm, vs2, xs1, vd`
17020 VFNMACCVF,
17021 /// RISC-V `vfnmacc.vv` instruction.
17022 ///
17023 /// # Forms
17024 /// Assembly: `vfnmacc.vv vm, vs2, vs1, vd`
17025 VFNMACCVV,
17026 /// RISC-V `vfnmadd.vf` instruction.
17027 ///
17028 /// # Forms
17029 /// Assembly: `vfnmadd.vf vm, vs2, xs1, vd`
17030 VFNMADDVF,
17031 /// RISC-V `vfnmadd.vv` instruction.
17032 ///
17033 /// # Forms
17034 /// Assembly: `vfnmadd.vv vm, vs2, vs1, vd`
17035 VFNMADDVV,
17036 /// RISC-V `vfnmsac.vf` instruction.
17037 ///
17038 /// # Forms
17039 /// Assembly: `vfnmsac.vf vm, vs2, xs1, vd`
17040 VFNMSACVF,
17041 /// RISC-V `vfnmsac.vv` instruction.
17042 ///
17043 /// # Forms
17044 /// Assembly: `vfnmsac.vv vm, vs2, vs1, vd`
17045 VFNMSACVV,
17046 /// RISC-V `vfnmsub.vf` instruction.
17047 ///
17048 /// # Forms
17049 /// Assembly: `vfnmsub.vf vm, vs2, xs1, vd`
17050 VFNMSUBVF,
17051 /// RISC-V `vfnmsub.vv` instruction.
17052 ///
17053 /// # Forms
17054 /// Assembly: `vfnmsub.vv vm, vs2, vs1, vd`
17055 VFNMSUBVV,
17056 /// RISC-V `vfrdiv.vf` instruction.
17057 ///
17058 /// # Forms
17059 /// Assembly: `vfrdiv.vf vm, vs2, xs1, vd`
17060 VFRDIVVF,
17061 /// RISC-V `vfrec7.v` instruction.
17062 ///
17063 /// # Forms
17064 /// Assembly: `vfrec7.v vm, vs2, vd`
17065 VFREC7V,
17066 /// RISC-V `vfredmax.vs` instruction.
17067 ///
17068 /// # Forms
17069 /// Assembly: `vfredmax.vs vm, vs2, vs1, vd`
17070 VFREDMAXVS,
17071 /// RISC-V `vfredmin.vs` instruction.
17072 ///
17073 /// # Forms
17074 /// Assembly: `vfredmin.vs vm, vs2, vs1, vd`
17075 VFREDMINVS,
17076 /// RISC-V `vfredosum.vs` instruction.
17077 ///
17078 /// # Forms
17079 /// Assembly: `vfredosum.vs vm, vs2, vs1, vd`
17080 VFREDOSUMVS,
17081 /// RISC-V `vfredsum.vs` instruction.
17082 ///
17083 /// # Forms
17084 /// Assembly: `vfredsum.vs vd vs1 vs2 vm`
17085 VFREDSUMVS,
17086 /// RISC-V `vfredusum.vs` instruction.
17087 ///
17088 /// # Forms
17089 /// Assembly: `vfredusum.vs vm, vs2, vs1, vd`
17090 VFREDUSUMVS,
17091 /// RISC-V `vfrsqrt7.v` instruction.
17092 ///
17093 /// # Forms
17094 /// Assembly: `vfrsqrt7.v vm, vs2, vd`
17095 VFRSQRT7V,
17096 /// RISC-V `vfrsub.vf` instruction.
17097 ///
17098 /// # Forms
17099 /// Assembly: `vfrsub.vf vm, vs2, xs1, vd`
17100 VFRSUBVF,
17101 /// RISC-V `vfsgnj.vf` instruction.
17102 ///
17103 /// # Forms
17104 /// Assembly: `vfsgnj.vf vm, vs2, xs1, vd`
17105 VFSGNJVF,
17106 /// RISC-V `vfsgnj.vv` instruction.
17107 ///
17108 /// # Forms
17109 /// Assembly: `vfsgnj.vv vm, vs2, vs1, vd`
17110 VFSGNJVV,
17111 /// RISC-V `vfsgnjn.vf` instruction.
17112 ///
17113 /// # Forms
17114 /// Assembly: `vfsgnjn.vf vm, vs2, xs1, vd`
17115 VFSGNJNVF,
17116 /// RISC-V `vfsgnjn.vv` instruction.
17117 ///
17118 /// # Forms
17119 /// Assembly: `vfsgnjn.vv vm, vs2, vs1, vd`
17120 VFSGNJNVV,
17121 /// RISC-V `vfsgnjx.vf` instruction.
17122 ///
17123 /// # Forms
17124 /// Assembly: `vfsgnjx.vf vm, vs2, xs1, vd`
17125 VFSGNJXVF,
17126 /// RISC-V `vfsgnjx.vv` instruction.
17127 ///
17128 /// # Forms
17129 /// Assembly: `vfsgnjx.vv vm, vs2, vs1, vd`
17130 VFSGNJXVV,
17131 /// RISC-V `vfslide1down.vf` instruction.
17132 ///
17133 /// # Forms
17134 /// Assembly: `vfslide1down.vf vm, vs2, xs1, vd`
17135 VFSLIDE1DOWNVF,
17136 /// RISC-V `vfslide1up.vf` instruction.
17137 ///
17138 /// # Forms
17139 /// Assembly: `vfslide1up.vf vm, vs2, xs1, vd`
17140 VFSLIDE1UPVF,
17141 /// RISC-V `vfsqrt.v` instruction.
17142 ///
17143 /// # Forms
17144 /// Assembly: `vfsqrt.v vm, vs2, vd`
17145 VFSQRTV,
17146 /// RISC-V `vfsub.vf` instruction.
17147 ///
17148 /// # Forms
17149 /// Assembly: `vfsub.vf vm, vs2, xs1, vd`
17150 VFSUBVF,
17151 /// RISC-V `vfsub.vv` instruction.
17152 ///
17153 /// # Forms
17154 /// Assembly: `vfsub.vv vm, vs2, vs1, vd`
17155 VFSUBVV,
17156 /// RISC-V `vfwadd.vf` instruction.
17157 ///
17158 /// # Forms
17159 /// Assembly: `vfwadd.vf vm, vs2, xs1, vd`
17160 VFWADDVF,
17161 /// RISC-V `vfwadd.vv` instruction.
17162 ///
17163 /// # Forms
17164 /// Assembly: `vfwadd.vv vm, vs2, vs1, vd`
17165 VFWADDVV,
17166 /// RISC-V `vfwadd.wf` instruction.
17167 ///
17168 /// # Forms
17169 /// Assembly: `vfwadd.wf vm, vs2, xs1, vd`
17170 VFWADDWF,
17171 /// RISC-V `vfwadd.wv` instruction.
17172 ///
17173 /// # Forms
17174 /// Assembly: `vfwadd.wv vm, vs2, vs1, vd`
17175 VFWADDWV,
17176 /// RISC-V `vfwcvt.f.f.v` instruction.
17177 ///
17178 /// # Forms
17179 /// Assembly: `vfwcvt.f.f.v vm, vs2, vd`
17180 VFWCVTFFV,
17181 /// RISC-V `vfwcvt.f.x.v` instruction.
17182 ///
17183 /// # Forms
17184 /// Assembly: `vfwcvt.f.x.v vm, vs2, vd`
17185 VFWCVTFXV,
17186 /// RISC-V `vfwcvt.f.xu.v` instruction.
17187 ///
17188 /// # Forms
17189 /// Assembly: `vfwcvt.f.xu.v vm, vs2, vd`
17190 VFWCVTFXUV,
17191 /// RISC-V `vfwcvt.rtz.x.f.v` instruction.
17192 ///
17193 /// # Forms
17194 /// Assembly: `vfwcvt.rtz.x.f.v vm, vs2, vd`
17195 VFWCVTRTZXFV,
17196 /// RISC-V `vfwcvt.rtz.xu.f.v` instruction.
17197 ///
17198 /// # Forms
17199 /// Assembly: `vfwcvt.rtz.xu.f.v vm, vs2, vd`
17200 VFWCVTRTZXUFV,
17201 /// RISC-V `vfwcvt.x.f.v` instruction.
17202 ///
17203 /// # Forms
17204 /// Assembly: `vfwcvt.x.f.v vm, vs2, vd`
17205 VFWCVTXFV,
17206 /// RISC-V `vfwcvt.xu.f.v` instruction.
17207 ///
17208 /// # Forms
17209 /// Assembly: `vfwcvt.xu.f.v vm, vs2, vd`
17210 VFWCVTXUFV,
17211 /// RISC-V `vfwcvtbf16.f.f.v` instruction.
17212 ///
17213 /// # Forms
17214 /// Assembly: `vfwcvtbf16.f.f.v vm, vs2, vd`
17215 VFWCVTBF16FFV,
17216 /// RISC-V `vfwmacc.vf` instruction.
17217 ///
17218 /// # Forms
17219 /// Assembly: `vfwmacc.vf vm, vs2, xs1, vd`
17220 VFWMACCVF,
17221 /// RISC-V `vfwmacc.vv` instruction.
17222 ///
17223 /// # Forms
17224 /// Assembly: `vfwmacc.vv vm, vs2, vs1, vd`
17225 VFWMACCVV,
17226 /// RISC-V `vfwmaccbf16.vf` instruction.
17227 ///
17228 /// # Forms
17229 /// Assembly: `vfwmaccbf16.vf vm, vs2, xs1, vd`
17230 VFWMACCBF16VF,
17231 /// RISC-V `vfwmaccbf16.vv` instruction.
17232 ///
17233 /// # Forms
17234 /// Assembly: `vfwmaccbf16.vv vm, vs2, vs1, vd`
17235 VFWMACCBF16VV,
17236 /// RISC-V `vfwmsac.vf` instruction.
17237 ///
17238 /// # Forms
17239 /// Assembly: `vfwmsac.vf vm, vs2, xs1, vd`
17240 VFWMSACVF,
17241 /// RISC-V `vfwmsac.vv` instruction.
17242 ///
17243 /// # Forms
17244 /// Assembly: `vfwmsac.vv vm, vs2, vs1, vd`
17245 VFWMSACVV,
17246 /// RISC-V `vfwmul.vf` instruction.
17247 ///
17248 /// # Forms
17249 /// Assembly: `vfwmul.vf vm, vs2, xs1, vd`
17250 VFWMULVF,
17251 /// RISC-V `vfwmul.vv` instruction.
17252 ///
17253 /// # Forms
17254 /// Assembly: `vfwmul.vv vm, vs2, vs1, vd`
17255 VFWMULVV,
17256 /// RISC-V `vfwnmacc.vf` instruction.
17257 ///
17258 /// # Forms
17259 /// Assembly: `vfwnmacc.vf vm, vs2, xs1, vd`
17260 VFWNMACCVF,
17261 /// RISC-V `vfwnmacc.vv` instruction.
17262 ///
17263 /// # Forms
17264 /// Assembly: `vfwnmacc.vv vm, vs2, vs1, vd`
17265 VFWNMACCVV,
17266 /// RISC-V `vfwnmsac.vf` instruction.
17267 ///
17268 /// # Forms
17269 /// Assembly: `vfwnmsac.vf vm, vs2, xs1, vd`
17270 VFWNMSACVF,
17271 /// RISC-V `vfwnmsac.vv` instruction.
17272 ///
17273 /// # Forms
17274 /// Assembly: `vfwnmsac.vv vm, vs2, vs1, vd`
17275 VFWNMSACVV,
17276 /// RISC-V `vfwredosum.vs` instruction.
17277 ///
17278 /// # Forms
17279 /// Assembly: `vfwredosum.vs vm, vs2, vs1, vd`
17280 VFWREDOSUMVS,
17281 /// RISC-V `vfwredsum.vs` instruction.
17282 ///
17283 /// # Forms
17284 /// Assembly: `vfwredsum.vs vd vs1 vs2 vm`
17285 VFWREDSUMVS,
17286 /// RISC-V `vfwredusum.vs` instruction.
17287 ///
17288 /// # Forms
17289 /// Assembly: `vfwredusum.vs vm, vs2, vs1, vd`
17290 VFWREDUSUMVS,
17291 /// RISC-V `vfwsub.vf` instruction.
17292 ///
17293 /// # Forms
17294 /// Assembly: `vfwsub.vf vm, vs2, xs1, vd`
17295 VFWSUBVF,
17296 /// RISC-V `vfwsub.vv` instruction.
17297 ///
17298 /// # Forms
17299 /// Assembly: `vfwsub.vv vm, vs2, vs1, vd`
17300 VFWSUBVV,
17301 /// RISC-V `vfwsub.wf` instruction.
17302 ///
17303 /// # Forms
17304 /// Assembly: `vfwsub.wf vm, vs2, xs1, vd`
17305 VFWSUBWF,
17306 /// RISC-V `vfwsub.wv` instruction.
17307 ///
17308 /// # Forms
17309 /// Assembly: `vfwsub.wv vm, vs2, vs1, vd`
17310 VFWSUBWV,
17311 /// RISC-V `vghsh.vv` instruction.
17312 ///
17313 /// # Forms
17314 /// Assembly: `vghsh.vv vs2, vs1, vd`
17315 VGHSHVV,
17316 /// RISC-V `vgmul.vv` instruction.
17317 ///
17318 /// # Forms
17319 /// Assembly: `vgmul.vv vs2, vd`
17320 VGMULVV,
17321 /// RISC-V `vid.v` instruction.
17322 ///
17323 /// # Forms
17324 /// Assembly: `vid.v vm, vd`
17325 VIDV,
17326 /// RISC-V `viota.m` instruction.
17327 ///
17328 /// # Forms
17329 /// Assembly: `viota.m vm, vs2, vd`
17330 VIOTAM,
17331 /// RISC-V `vl1r.v` instruction.
17332 ///
17333 /// # Forms
17334 /// Assembly: `vl1r.v vd rs1`
17335 VL1RV,
17336 /// RISC-V `vl1re16.v` instruction.
17337 ///
17338 /// # Forms
17339 /// Assembly: `vl1re16.v xs1, vd`
17340 VL1RE16V,
17341 /// RISC-V `vl1re32.v` instruction.
17342 ///
17343 /// # Forms
17344 /// Assembly: `vl1re32.v xs1, vd`
17345 VL1RE32V,
17346 /// RISC-V `vl1re64.v` instruction.
17347 ///
17348 /// # Forms
17349 /// Assembly: `vl1re64.v xs1, vd`
17350 VL1RE64V,
17351 /// RISC-V `vl1re8.v` instruction.
17352 ///
17353 /// # Forms
17354 /// Assembly: `vl1re8.v xs1, vd`
17355 VL1RE8V,
17356 /// RISC-V `vl2r.v` instruction.
17357 ///
17358 /// # Forms
17359 /// Assembly: `vl2r.v vd rs1`
17360 VL2RV,
17361 /// RISC-V `vl2re16.v` instruction.
17362 ///
17363 /// # Forms
17364 /// Assembly: `vl2re16.v xs1, vd`
17365 VL2RE16V,
17366 /// RISC-V `vl2re32.v` instruction.
17367 ///
17368 /// # Forms
17369 /// Assembly: `vl2re32.v xs1, vd`
17370 VL2RE32V,
17371 /// RISC-V `vl2re64.v` instruction.
17372 ///
17373 /// # Forms
17374 /// Assembly: `vl2re64.v xs1, vd`
17375 VL2RE64V,
17376 /// RISC-V `vl2re8.v` instruction.
17377 ///
17378 /// # Forms
17379 /// Assembly: `vl2re8.v xs1, vd`
17380 VL2RE8V,
17381 /// RISC-V `vl4r.v` instruction.
17382 ///
17383 /// # Forms
17384 /// Assembly: `vl4r.v vd rs1`
17385 VL4RV,
17386 /// RISC-V `vl4re16.v` instruction.
17387 ///
17388 /// # Forms
17389 /// Assembly: `vl4re16.v xs1, vd`
17390 VL4RE16V,
17391 /// RISC-V `vl4re32.v` instruction.
17392 ///
17393 /// # Forms
17394 /// Assembly: `vl4re32.v xs1, vd`
17395 VL4RE32V,
17396 /// RISC-V `vl4re64.v` instruction.
17397 ///
17398 /// # Forms
17399 /// Assembly: `vl4re64.v xs1, vd`
17400 VL4RE64V,
17401 /// RISC-V `vl4re8.v` instruction.
17402 ///
17403 /// # Forms
17404 /// Assembly: `vl4re8.v xs1, vd`
17405 VL4RE8V,
17406 /// RISC-V `vl8r.v` instruction.
17407 ///
17408 /// # Forms
17409 /// Assembly: `vl8r.v vd rs1`
17410 VL8RV,
17411 /// RISC-V `vl8re16.v` instruction.
17412 ///
17413 /// # Forms
17414 /// Assembly: `vl8re16.v xs1, vd`
17415 VL8RE16V,
17416 /// RISC-V `vl8re32.v` instruction.
17417 ///
17418 /// # Forms
17419 /// Assembly: `vl8re32.v xs1, vd`
17420 VL8RE32V,
17421 /// RISC-V `vl8re64.v` instruction.
17422 ///
17423 /// # Forms
17424 /// Assembly: `vl8re64.v xs1, vd`
17425 VL8RE64V,
17426 /// RISC-V `vl8re8.v` instruction.
17427 ///
17428 /// # Forms
17429 /// Assembly: `vl8re8.v xs1, vd`
17430 VL8RE8V,
17431 /// RISC-V `vle16.v` instruction.
17432 ///
17433 /// # Forms
17434 /// Assembly: `vle16.v vm, xs1, vd`
17435 VLE16V,
17436 /// RISC-V `vle16ff.v` instruction.
17437 ///
17438 /// # Forms
17439 /// Assembly: `vle16ff.v vm, xs1, vd`
17440 VLE16FFV,
17441 /// RISC-V `vle1.v` instruction.
17442 ///
17443 /// # Forms
17444 /// Assembly: `vle1.v vd rs1`
17445 VLE1V,
17446 /// RISC-V `vle32.v` instruction.
17447 ///
17448 /// # Forms
17449 /// Assembly: `vle32.v vm, xs1, vd`
17450 VLE32V,
17451 /// RISC-V `vle32ff.v` instruction.
17452 ///
17453 /// # Forms
17454 /// Assembly: `vle32ff.v vm, xs1, vd`
17455 VLE32FFV,
17456 /// RISC-V `vle64.v` instruction.
17457 ///
17458 /// # Forms
17459 /// Assembly: `vle64.v vm, xs1, vd`
17460 VLE64V,
17461 /// RISC-V `vle64ff.v` instruction.
17462 ///
17463 /// # Forms
17464 /// Assembly: `vle64ff.v vm, xs1, vd`
17465 VLE64FFV,
17466 /// RISC-V `vle8.v` instruction.
17467 ///
17468 /// # Forms
17469 /// Assembly: `vle8.v vm, xs1, vd`
17470 VLE8V,
17471 /// RISC-V `vle8ff.v` instruction.
17472 ///
17473 /// # Forms
17474 /// Assembly: `vle8ff.v vm, xs1, vd`
17475 VLE8FFV,
17476 /// RISC-V `vlm.v` instruction.
17477 ///
17478 /// # Forms
17479 /// Assembly: `vlm.v xs1, vd`
17480 VLMV,
17481 /// RISC-V `vloxei16.v` instruction.
17482 ///
17483 /// # Forms
17484 /// Assembly: `vloxei16.v vm, vs2, xs1, vd`
17485 VLOXEI16V,
17486 /// RISC-V `vloxei32.v` instruction.
17487 ///
17488 /// # Forms
17489 /// Assembly: `vloxei32.v vm, vs2, xs1, vd`
17490 VLOXEI32V,
17491 /// RISC-V `vloxei64.v` instruction.
17492 ///
17493 /// # Forms
17494 /// Assembly: `vloxei64.v vm, vs2, xs1, vd`
17495 VLOXEI64V,
17496 /// RISC-V `vloxei8.v` instruction.
17497 ///
17498 /// # Forms
17499 /// Assembly: `vloxei8.v vm, vs2, xs1, vd`
17500 VLOXEI8V,
17501 /// RISC-V `vlse16.v` instruction.
17502 ///
17503 /// # Forms
17504 /// Assembly: `vlse16.v vm, xs2, xs1, vd`
17505 VLSE16V,
17506 /// RISC-V `vlse32.v` instruction.
17507 ///
17508 /// # Forms
17509 /// Assembly: `vlse32.v vm, xs2, xs1, vd`
17510 VLSE32V,
17511 /// RISC-V `vlse64.v` instruction.
17512 ///
17513 /// # Forms
17514 /// Assembly: `vlse64.v vm, xs2, xs1, vd`
17515 VLSE64V,
17516 /// RISC-V `vlse8.v` instruction.
17517 ///
17518 /// # Forms
17519 /// Assembly: `vlse8.v vm, xs2, xs1, vd`
17520 VLSE8V,
17521 /// RISC-V `vluxei16.v` instruction.
17522 ///
17523 /// # Forms
17524 /// Assembly: `vluxei16.v vm, vs2, xs1, vd`
17525 VLUXEI16V,
17526 /// RISC-V `vluxei32.v` instruction.
17527 ///
17528 /// # Forms
17529 /// Assembly: `vluxei32.v vm, vs2, xs1, vd`
17530 VLUXEI32V,
17531 /// RISC-V `vluxei64.v` instruction.
17532 ///
17533 /// # Forms
17534 /// Assembly: `vluxei64.v vm, vs2, xs1, vd`
17535 VLUXEI64V,
17536 /// RISC-V `vluxei8.v` instruction.
17537 ///
17538 /// # Forms
17539 /// Assembly: `vluxei8.v vm, vs2, xs1, vd`
17540 VLUXEI8V,
17541 /// RISC-V `vmacc.vv` instruction.
17542 ///
17543 /// # Forms
17544 /// Assembly: `vmacc.vv vm, vs2, vs1, vd`
17545 VMACCVV,
17546 /// RISC-V `vmacc.vx` instruction.
17547 ///
17548 /// # Forms
17549 /// Assembly: `vmacc.vx vm, vs2, xs1, vd`
17550 VMACCVX,
17551 /// RISC-V `vmadc.vi` instruction.
17552 ///
17553 /// # Forms
17554 /// Assembly: `vmadc.vi vs2, vd, imm`
17555 VMADCVI,
17556 /// RISC-V `vmadc.vim` instruction.
17557 ///
17558 /// # Forms
17559 /// Assembly: `vmadc.vim vs2, vd, imm`
17560 VMADCVIM,
17561 /// RISC-V `vmadc.vv` instruction.
17562 ///
17563 /// # Forms
17564 /// Assembly: `vmadc.vv vs2, vs1, vd`
17565 VMADCVV,
17566 /// RISC-V `vmadc.vvm` instruction.
17567 ///
17568 /// # Forms
17569 /// Assembly: `vmadc.vvm vs2, vs1, vd`
17570 VMADCVVM,
17571 /// RISC-V `vmadc.vx` instruction.
17572 ///
17573 /// # Forms
17574 /// Assembly: `vmadc.vx vs2, xs1, vd`
17575 VMADCVX,
17576 /// RISC-V `vmadc.vxm` instruction.
17577 ///
17578 /// # Forms
17579 /// Assembly: `vmadc.vxm vs2, xs1, vd`
17580 VMADCVXM,
17581 /// RISC-V `vmadd.vv` instruction.
17582 ///
17583 /// # Forms
17584 /// Assembly: `vmadd.vv vm, vs2, vs1, vd`
17585 VMADDVV,
17586 /// RISC-V `vmadd.vx` instruction.
17587 ///
17588 /// # Forms
17589 /// Assembly: `vmadd.vx vm, vs2, xs1, vd`
17590 VMADDVX,
17591 /// RISC-V `vmand.mm` instruction.
17592 ///
17593 /// # Forms
17594 /// Assembly: `vmand.mm vs2, vs1, vd`
17595 VMANDMM,
17596 /// RISC-V `vmandn.mm` instruction.
17597 ///
17598 /// # Forms
17599 /// Assembly: `vmandn.mm vs2, vs1, vd`
17600 VMANDNMM,
17601 /// RISC-V `vmandnot.mm` instruction.
17602 ///
17603 /// # Forms
17604 /// Assembly: `vmandnot.mm vd vs1 vs2 vm`
17605 VMANDNOTMM,
17606 /// RISC-V `vmax.vv` instruction.
17607 ///
17608 /// # Forms
17609 /// Assembly: `vmax.vv vm, vs2, vs1, vd`
17610 VMAXVV,
17611 /// RISC-V `vmax.vx` instruction.
17612 ///
17613 /// # Forms
17614 /// Assembly: `vmax.vx vm, vs2, xs1, vd`
17615 VMAXVX,
17616 /// RISC-V `vmaxu.vv` instruction.
17617 ///
17618 /// # Forms
17619 /// Assembly: `vmaxu.vv vm, vs2, vs1, vd`
17620 VMAXUVV,
17621 /// RISC-V `vmaxu.vx` instruction.
17622 ///
17623 /// # Forms
17624 /// Assembly: `vmaxu.vx vm, vs2, xs1, vd`
17625 VMAXUVX,
17626 /// RISC-V `vmerge.vim` instruction.
17627 ///
17628 /// # Forms
17629 /// Assembly: `vmerge.vim vs2, vd, imm`
17630 VMERGEVIM,
17631 /// RISC-V `vmerge.vvm` instruction.
17632 ///
17633 /// # Forms
17634 /// Assembly: `vmerge.vvm vs2, vs1, vd`
17635 VMERGEVVM,
17636 /// RISC-V `vmerge.vxm` instruction.
17637 ///
17638 /// # Forms
17639 /// Assembly: `vmerge.vxm vs2, xs1, vd`
17640 VMERGEVXM,
17641 /// RISC-V `vmfeq.vf` instruction.
17642 ///
17643 /// # Forms
17644 /// Assembly: `vmfeq.vf vm, vs2, xs1, vd`
17645 VMFEQVF,
17646 /// RISC-V `vmfeq.vv` instruction.
17647 ///
17648 /// # Forms
17649 /// Assembly: `vmfeq.vv vm, vs2, vs1, vd`
17650 VMFEQVV,
17651 /// RISC-V `vmfge.vf` instruction.
17652 ///
17653 /// # Forms
17654 /// Assembly: `vmfge.vf vm, vs2, xs1, vd`
17655 VMFGEVF,
17656 /// RISC-V `vmfgt.vf` instruction.
17657 ///
17658 /// # Forms
17659 /// Assembly: `vmfgt.vf vm, vs2, xs1, vd`
17660 VMFGTVF,
17661 /// RISC-V `vmfle.vf` instruction.
17662 ///
17663 /// # Forms
17664 /// Assembly: `vmfle.vf vm, vs2, xs1, vd`
17665 VMFLEVF,
17666 /// RISC-V `vmfle.vv` instruction.
17667 ///
17668 /// # Forms
17669 /// Assembly: `vmfle.vv vm, vs2, vs1, vd`
17670 VMFLEVV,
17671 /// RISC-V `vmflt.vf` instruction.
17672 ///
17673 /// # Forms
17674 /// Assembly: `vmflt.vf vm, vs2, xs1, vd`
17675 VMFLTVF,
17676 /// RISC-V `vmflt.vv` instruction.
17677 ///
17678 /// # Forms
17679 /// Assembly: `vmflt.vv vm, vs2, vs1, vd`
17680 VMFLTVV,
17681 /// RISC-V `vmfne.vf` instruction.
17682 ///
17683 /// # Forms
17684 /// Assembly: `vmfne.vf vm, vs2, xs1, vd`
17685 VMFNEVF,
17686 /// RISC-V `vmfne.vv` instruction.
17687 ///
17688 /// # Forms
17689 /// Assembly: `vmfne.vv vm, vs2, vs1, vd`
17690 VMFNEVV,
17691 /// RISC-V `vmin.vv` instruction.
17692 ///
17693 /// # Forms
17694 /// Assembly: `vmin.vv vm, vs2, vs1, vd`
17695 VMINVV,
17696 /// RISC-V `vmin.vx` instruction.
17697 ///
17698 /// # Forms
17699 /// Assembly: `vmin.vx vm, vs2, xs1, vd`
17700 VMINVX,
17701 /// RISC-V `vminu.vv` instruction.
17702 ///
17703 /// # Forms
17704 /// Assembly: `vminu.vv vm, vs2, vs1, vd`
17705 VMINUVV,
17706 /// RISC-V `vminu.vx` instruction.
17707 ///
17708 /// # Forms
17709 /// Assembly: `vminu.vx vm, vs2, xs1, vd`
17710 VMINUVX,
17711 /// RISC-V `vmnand.mm` instruction.
17712 ///
17713 /// # Forms
17714 /// Assembly: `vmnand.mm vs2, vs1, vd`
17715 VMNANDMM,
17716 /// RISC-V `vmnor.mm` instruction.
17717 ///
17718 /// # Forms
17719 /// Assembly: `vmnor.mm vs2, vs1, vd`
17720 VMNORMM,
17721 /// RISC-V `vmor.mm` instruction.
17722 ///
17723 /// # Forms
17724 /// Assembly: `vmor.mm vs2, vs1, vd`
17725 VMORMM,
17726 /// RISC-V `vmorn.mm` instruction.
17727 ///
17728 /// # Forms
17729 /// Assembly: `vmorn.mm vs2, vs1, vd`
17730 VMORNMM,
17731 /// RISC-V `vmornot.mm` instruction.
17732 ///
17733 /// # Forms
17734 /// Assembly: `vmornot.mm vd vs1 vs2 vm`
17735 VMORNOTMM,
17736 /// RISC-V `vmsbc.vv` instruction.
17737 ///
17738 /// # Forms
17739 /// Assembly: `vmsbc.vv vs2, vs1, vd`
17740 VMSBCVV,
17741 /// RISC-V `vmsbc.vvm` instruction.
17742 ///
17743 /// # Forms
17744 /// Assembly: `vmsbc.vvm vs2, vs1, vd`
17745 VMSBCVVM,
17746 /// RISC-V `vmsbc.vx` instruction.
17747 ///
17748 /// # Forms
17749 /// Assembly: `vmsbc.vx vs2, xs1, vd`
17750 VMSBCVX,
17751 /// RISC-V `vmsbc.vxm` instruction.
17752 ///
17753 /// # Forms
17754 /// Assembly: `vmsbc.vxm vs2, xs1, vd`
17755 VMSBCVXM,
17756 /// RISC-V `vmsbf.m` instruction.
17757 ///
17758 /// # Forms
17759 /// Assembly: `vmsbf.m vm, vs2, vd`
17760 VMSBFM,
17761 /// RISC-V `vmseq.vi` instruction.
17762 ///
17763 /// # Forms
17764 /// Assembly: `vmseq.vi vm, vs2, vd, imm`
17765 VMSEQVI,
17766 /// RISC-V `vmseq.vv` instruction.
17767 ///
17768 /// # Forms
17769 /// Assembly: `vmseq.vv vm, vs2, vs1, vd`
17770 VMSEQVV,
17771 /// RISC-V `vmseq.vx` instruction.
17772 ///
17773 /// # Forms
17774 /// Assembly: `vmseq.vx vm, vs2, xs1, vd`
17775 VMSEQVX,
17776 /// RISC-V `vmsgt.vi` instruction.
17777 ///
17778 /// # Forms
17779 /// Assembly: `vmsgt.vi vm, vs2, vd, imm`
17780 VMSGTVI,
17781 /// RISC-V `vmsgt.vx` instruction.
17782 ///
17783 /// # Forms
17784 /// Assembly: `vmsgt.vx vm, vs2, xs1, vd`
17785 VMSGTVX,
17786 /// RISC-V `vmsgtu.vi` instruction.
17787 ///
17788 /// # Forms
17789 /// Assembly: `vmsgtu.vi vm, vs2, vd, imm`
17790 VMSGTUVI,
17791 /// RISC-V `vmsgtu.vx` instruction.
17792 ///
17793 /// # Forms
17794 /// Assembly: `vmsgtu.vx vm, vs2, xs1, vd`
17795 VMSGTUVX,
17796 /// RISC-V `vmsif.m` instruction.
17797 ///
17798 /// # Forms
17799 /// Assembly: `vmsif.m vm, vs2, vd`
17800 VMSIFM,
17801 /// RISC-V `vmsle.vi` instruction.
17802 ///
17803 /// # Forms
17804 /// Assembly: `vmsle.vi vm, vs2, vd, imm`
17805 VMSLEVI,
17806 /// RISC-V `vmsle.vv` instruction.
17807 ///
17808 /// # Forms
17809 /// Assembly: `vmsle.vv vm, vs2, vs1, vd`
17810 VMSLEVV,
17811 /// RISC-V `vmsle.vx` instruction.
17812 ///
17813 /// # Forms
17814 /// Assembly: `vmsle.vx vm, vs2, xs1, vd`
17815 VMSLEVX,
17816 /// RISC-V `vmsleu.vi` instruction.
17817 ///
17818 /// # Forms
17819 /// Assembly: `vmsleu.vi vm, vs2, vd, imm`
17820 VMSLEUVI,
17821 /// RISC-V `vmsleu.vv` instruction.
17822 ///
17823 /// # Forms
17824 /// Assembly: `vmsleu.vv vm, vs2, vs1, vd`
17825 VMSLEUVV,
17826 /// RISC-V `vmsleu.vx` instruction.
17827 ///
17828 /// # Forms
17829 /// Assembly: `vmsleu.vx vm, vs2, xs1, vd`
17830 VMSLEUVX,
17831 /// RISC-V `vmslt.vv` instruction.
17832 ///
17833 /// # Forms
17834 /// Assembly: `vmslt.vv vm, vs2, vs1, vd`
17835 VMSLTVV,
17836 /// RISC-V `vmslt.vx` instruction.
17837 ///
17838 /// # Forms
17839 /// Assembly: `vmslt.vx vm, vs2, xs1, vd`
17840 VMSLTVX,
17841 /// RISC-V `vmsltu.vv` instruction.
17842 ///
17843 /// # Forms
17844 /// Assembly: `vmsltu.vv vm, vs2, vs1, vd`
17845 VMSLTUVV,
17846 /// RISC-V `vmsltu.vx` instruction.
17847 ///
17848 /// # Forms
17849 /// Assembly: `vmsltu.vx vm, vs2, xs1, vd`
17850 VMSLTUVX,
17851 /// RISC-V `vmsne.vi` instruction.
17852 ///
17853 /// # Forms
17854 /// Assembly: `vmsne.vi vm, vs2, vd, imm`
17855 VMSNEVI,
17856 /// RISC-V `vmsne.vv` instruction.
17857 ///
17858 /// # Forms
17859 /// Assembly: `vmsne.vv vm, vs2, vs1, vd`
17860 VMSNEVV,
17861 /// RISC-V `vmsne.vx` instruction.
17862 ///
17863 /// # Forms
17864 /// Assembly: `vmsne.vx vm, vs2, xs1, vd`
17865 VMSNEVX,
17866 /// RISC-V `vmsof.m` instruction.
17867 ///
17868 /// # Forms
17869 /// Assembly: `vmsof.m vm, vs2, vd`
17870 VMSOFM,
17871 /// RISC-V `vmul.vv` instruction.
17872 ///
17873 /// # Forms
17874 /// Assembly: `vmul.vv vm, vs2, vs1, vd`
17875 VMULVV,
17876 /// RISC-V `vmul.vx` instruction.
17877 ///
17878 /// # Forms
17879 /// Assembly: `vmul.vx vm, vs2, xs1, vd`
17880 VMULVX,
17881 /// RISC-V `vmulh.vv` instruction.
17882 ///
17883 /// # Forms
17884 /// Assembly: `vmulh.vv vm, vs2, vs1, vd`
17885 VMULHVV,
17886 /// RISC-V `vmulh.vx` instruction.
17887 ///
17888 /// # Forms
17889 /// Assembly: `vmulh.vx vm, vs2, xs1, vd`
17890 VMULHVX,
17891 /// RISC-V `vmulhsu.vv` instruction.
17892 ///
17893 /// # Forms
17894 /// Assembly: `vmulhsu.vv vm, vs2, vs1, vd`
17895 VMULHSUVV,
17896 /// RISC-V `vmulhsu.vx` instruction.
17897 ///
17898 /// # Forms
17899 /// Assembly: `vmulhsu.vx vm, vs2, xs1, vd`
17900 VMULHSUVX,
17901 /// RISC-V `vmulhu.vv` instruction.
17902 ///
17903 /// # Forms
17904 /// Assembly: `vmulhu.vv vm, vs2, vs1, vd`
17905 VMULHUVV,
17906 /// RISC-V `vmulhu.vx` instruction.
17907 ///
17908 /// # Forms
17909 /// Assembly: `vmulhu.vx vm, vs2, xs1, vd`
17910 VMULHUVX,
17911 /// RISC-V `vmv1r.v` instruction.
17912 ///
17913 /// # Forms
17914 /// Assembly: `vmv1r.v vs2, vd`
17915 VMV1RV,
17916 /// RISC-V `vmv2r.v` instruction.
17917 ///
17918 /// # Forms
17919 /// Assembly: `vmv2r.v vs2, vd`
17920 VMV2RV,
17921 /// RISC-V `vmv4r.v` instruction.
17922 ///
17923 /// # Forms
17924 /// Assembly: `vmv4r.v vs2, vd`
17925 VMV4RV,
17926 /// RISC-V `vmv8r.v` instruction.
17927 ///
17928 /// # Forms
17929 /// Assembly: `vmv8r.v vs2, vd`
17930 VMV8RV,
17931 /// RISC-V `vmv.s.x` instruction.
17932 ///
17933 /// # Forms
17934 /// Assembly: `vmv.s.x xs1, vd`
17935 VMVSX,
17936 /// RISC-V `vmv.v.i` instruction.
17937 ///
17938 /// # Forms
17939 /// Assembly: `vmv.v.i vd, imm`
17940 VMVVI,
17941 /// RISC-V `vmv.v.v` instruction.
17942 ///
17943 /// # Forms
17944 /// Assembly: `vmv.v.v vs1, vd`
17945 VMVVV,
17946 /// RISC-V `vmv.v.x` instruction.
17947 ///
17948 /// # Forms
17949 /// Assembly: `vmv.v.x xs1, vd`
17950 VMVVX,
17951 /// RISC-V `vmv.x.s` instruction.
17952 ///
17953 /// # Forms
17954 /// Assembly: `vmv.x.s vs2, xd`
17955 VMVXS,
17956 /// RISC-V `vmxnor.mm` instruction.
17957 ///
17958 /// # Forms
17959 /// Assembly: `vmxnor.mm vs2, vs1, vd`
17960 VMXNORMM,
17961 /// RISC-V `vmxor.mm` instruction.
17962 ///
17963 /// # Forms
17964 /// Assembly: `vmxor.mm vs2, vs1, vd`
17965 VMXORMM,
17966 /// RISC-V `vnclip.wi` instruction.
17967 ///
17968 /// # Forms
17969 /// Assembly: `vnclip.wi vm, vs2, vd, imm`
17970 VNCLIPWI,
17971 /// RISC-V `vnclip.wv` instruction.
17972 ///
17973 /// # Forms
17974 /// Assembly: `vnclip.wv vm, vs2, vs1, vd`
17975 VNCLIPWV,
17976 /// RISC-V `vnclip.wx` instruction.
17977 ///
17978 /// # Forms
17979 /// Assembly: `vnclip.wx vm, vs2, xs1, vd`
17980 VNCLIPWX,
17981 /// RISC-V `vnclipu.wi` instruction.
17982 ///
17983 /// # Forms
17984 /// Assembly: `vnclipu.wi vm, vs2, vd, imm`
17985 VNCLIPUWI,
17986 /// RISC-V `vnclipu.wv` instruction.
17987 ///
17988 /// # Forms
17989 /// Assembly: `vnclipu.wv vm, vs2, vs1, vd`
17990 VNCLIPUWV,
17991 /// RISC-V `vnclipu.wx` instruction.
17992 ///
17993 /// # Forms
17994 /// Assembly: `vnclipu.wx vm, vs2, xs1, vd`
17995 VNCLIPUWX,
17996 /// RISC-V `vnmsac.vv` instruction.
17997 ///
17998 /// # Forms
17999 /// Assembly: `vnmsac.vv vm, vs2, vs1, vd`
18000 VNMSACVV,
18001 /// RISC-V `vnmsac.vx` instruction.
18002 ///
18003 /// # Forms
18004 /// Assembly: `vnmsac.vx vm, vs2, xs1, vd`
18005 VNMSACVX,
18006 /// RISC-V `vnmsub.vv` instruction.
18007 ///
18008 /// # Forms
18009 /// Assembly: `vnmsub.vv vm, vs2, vs1, vd`
18010 VNMSUBVV,
18011 /// RISC-V `vnmsub.vx` instruction.
18012 ///
18013 /// # Forms
18014 /// Assembly: `vnmsub.vx vm, vs2, xs1, vd`
18015 VNMSUBVX,
18016 /// RISC-V `vnsra.wi` instruction.
18017 ///
18018 /// # Forms
18019 /// Assembly: `vnsra.wi vm, vs2, vd, imm`
18020 VNSRAWI,
18021 /// RISC-V `vnsra.wv` instruction.
18022 ///
18023 /// # Forms
18024 /// Assembly: `vnsra.wv vm, vs2, vs1, vd`
18025 VNSRAWV,
18026 /// RISC-V `vnsra.wx` instruction.
18027 ///
18028 /// # Forms
18029 /// Assembly: `vnsra.wx vm, vs2, xs1, vd`
18030 VNSRAWX,
18031 /// RISC-V `vnsrl.wi` instruction.
18032 ///
18033 /// # Forms
18034 /// Assembly: `vnsrl.wi vm, vs2, vd, imm`
18035 VNSRLWI,
18036 /// RISC-V `vnsrl.wv` instruction.
18037 ///
18038 /// # Forms
18039 /// Assembly: `vnsrl.wv vm, vs2, vs1, vd`
18040 VNSRLWV,
18041 /// RISC-V `vnsrl.wx` instruction.
18042 ///
18043 /// # Forms
18044 /// Assembly: `vnsrl.wx vm, vs2, xs1, vd`
18045 VNSRLWX,
18046 /// RISC-V `vor.vi` instruction.
18047 ///
18048 /// # Forms
18049 /// Assembly: `vor.vi vm, vs2, vd, imm`
18050 VORVI,
18051 /// RISC-V `vor.vv` instruction.
18052 ///
18053 /// # Forms
18054 /// Assembly: `vor.vv vm, vs2, vs1, vd`
18055 VORVV,
18056 /// RISC-V `vor.vx` instruction.
18057 ///
18058 /// # Forms
18059 /// Assembly: `vor.vx vm, vs2, xs1, vd`
18060 VORVX,
18061 /// RISC-V `vpopc.m` instruction.
18062 ///
18063 /// # Forms
18064 /// Assembly: `vpopc.m rd vs2 vm`
18065 VPOPCM,
18066 /// RISC-V `vredand.vs` instruction.
18067 ///
18068 /// # Forms
18069 /// Assembly: `vredand.vs vm, vs2, vs1, vd`
18070 VREDANDVS,
18071 /// RISC-V `vredmax.vs` instruction.
18072 ///
18073 /// # Forms
18074 /// Assembly: `vredmax.vs vm, vs2, vs1, vd`
18075 VREDMAXVS,
18076 /// RISC-V `vredmaxu.vs` instruction.
18077 ///
18078 /// # Forms
18079 /// Assembly: `vredmaxu.vs vm, vs2, vs1, vd`
18080 VREDMAXUVS,
18081 /// RISC-V `vredmin.vs` instruction.
18082 ///
18083 /// # Forms
18084 /// Assembly: `vredmin.vs vm, vs2, vs1, vd`
18085 VREDMINVS,
18086 /// RISC-V `vredminu.vs` instruction.
18087 ///
18088 /// # Forms
18089 /// Assembly: `vredminu.vs vm, vs2, vs1, vd`
18090 VREDMINUVS,
18091 /// RISC-V `vredor.vs` instruction.
18092 ///
18093 /// # Forms
18094 /// Assembly: `vredor.vs vm, vs2, vs1, vd`
18095 VREDORVS,
18096 /// RISC-V `vredsum.vs` instruction.
18097 ///
18098 /// # Forms
18099 /// Assembly: `vredsum.vs vm, vs2, vs1, vd`
18100 VREDSUMVS,
18101 /// RISC-V `vredxor.vs` instruction.
18102 ///
18103 /// # Forms
18104 /// Assembly: `vredxor.vs vm, vs2, vs1, vd`
18105 VREDXORVS,
18106 /// RISC-V `vrem.vv` instruction.
18107 ///
18108 /// # Forms
18109 /// Assembly: `vrem.vv vm, vs2, vs1, vd`
18110 VREMVV,
18111 /// RISC-V `vrem.vx` instruction.
18112 ///
18113 /// # Forms
18114 /// Assembly: `vrem.vx vm, vs2, xs1, vd`
18115 VREMVX,
18116 /// RISC-V `vremu.vv` instruction.
18117 ///
18118 /// # Forms
18119 /// Assembly: `vremu.vv vm, vs2, vs1, vd`
18120 VREMUVV,
18121 /// RISC-V `vremu.vx` instruction.
18122 ///
18123 /// # Forms
18124 /// Assembly: `vremu.vx vm, vs2, xs1, vd`
18125 VREMUVX,
18126 /// RISC-V `vrev8.v` instruction.
18127 ///
18128 /// # Forms
18129 /// Assembly: `vrev8.v vm, vs2, vd`
18130 VREV8V,
18131 /// RISC-V `vrgather.vi` instruction.
18132 ///
18133 /// # Forms
18134 /// Assembly: `vrgather.vi vm, vs2, vd, imm`
18135 VRGATHERVI,
18136 /// RISC-V `vrgather.vv` instruction.
18137 ///
18138 /// # Forms
18139 /// Assembly: `vrgather.vv vm, vs2, vs1, vd`
18140 VRGATHERVV,
18141 /// RISC-V `vrgather.vx` instruction.
18142 ///
18143 /// # Forms
18144 /// Assembly: `vrgather.vx vm, vs2, xs1, vd`
18145 VRGATHERVX,
18146 /// RISC-V `vrgatherei16.vv` instruction.
18147 ///
18148 /// # Forms
18149 /// Assembly: `vrgatherei16.vv vm, vs2, vs1, vd`
18150 VRGATHEREI16VV,
18151 /// RISC-V `vrol.vv` instruction.
18152 ///
18153 /// # Forms
18154 /// Assembly: `vrol.vv vm, vs2, vs1, vd`
18155 VROLVV,
18156 /// RISC-V `vrol.vx` instruction.
18157 ///
18158 /// # Forms
18159 /// Assembly: `vrol.vx vm, vs2, xs1, vd`
18160 VROLVX,
18161 /// RISC-V `vror.vi` instruction.
18162 ///
18163 /// # Forms
18164 /// Assembly: `vror.vi vm, vs2, vd, imm`
18165 VRORVI,
18166 /// RISC-V `vror.vv` instruction.
18167 ///
18168 /// # Forms
18169 /// Assembly: `vror.vv vm, vs2, vs1, vd`
18170 VRORVV,
18171 /// RISC-V `vror.vx` instruction.
18172 ///
18173 /// # Forms
18174 /// Assembly: `vror.vx vm, vs2, xs1, vd`
18175 VRORVX,
18176 /// RISC-V `vrsub.vi` instruction.
18177 ///
18178 /// # Forms
18179 /// Assembly: `vrsub.vi vm, vs2, vd, imm`
18180 VRSUBVI,
18181 /// RISC-V `vrsub.vx` instruction.
18182 ///
18183 /// # Forms
18184 /// Assembly: `vrsub.vx vm, vs2, xs1, vd`
18185 VRSUBVX,
18186 /// RISC-V `vs1r.v` instruction.
18187 ///
18188 /// # Forms
18189 /// Assembly: `vs1r.v xs1, vs3`
18190 VS1RV,
18191 /// RISC-V `vs2r.v` instruction.
18192 ///
18193 /// # Forms
18194 /// Assembly: `vs2r.v xs1, vs3`
18195 VS2RV,
18196 /// RISC-V `vs4r.v` instruction.
18197 ///
18198 /// # Forms
18199 /// Assembly: `vs4r.v xs1, vs3`
18200 VS4RV,
18201 /// RISC-V `vs8r.v` instruction.
18202 ///
18203 /// # Forms
18204 /// Assembly: `vs8r.v xs1, vs3`
18205 VS8RV,
18206 /// RISC-V `vsadd.vi` instruction.
18207 ///
18208 /// # Forms
18209 /// Assembly: `vsadd.vi vm, vs2, vd, imm`
18210 VSADDVI,
18211 /// RISC-V `vsadd.vv` instruction.
18212 ///
18213 /// # Forms
18214 /// Assembly: `vsadd.vv vm, vs2, vs1, vd`
18215 VSADDVV,
18216 /// RISC-V `vsadd.vx` instruction.
18217 ///
18218 /// # Forms
18219 /// Assembly: `vsadd.vx vm, vs2, xs1, vd`
18220 VSADDVX,
18221 /// RISC-V `vsaddu.vi` instruction.
18222 ///
18223 /// # Forms
18224 /// Assembly: `vsaddu.vi vm, vs2, vd, imm`
18225 VSADDUVI,
18226 /// RISC-V `vsaddu.vv` instruction.
18227 ///
18228 /// # Forms
18229 /// Assembly: `vsaddu.vv vm, vs2, vs1, vd`
18230 VSADDUVV,
18231 /// RISC-V `vsaddu.vx` instruction.
18232 ///
18233 /// # Forms
18234 /// Assembly: `vsaddu.vx vm, vs2, xs1, vd`
18235 VSADDUVX,
18236 /// RISC-V `vsbc.vvm` instruction.
18237 ///
18238 /// # Forms
18239 /// Assembly: `vsbc.vvm vs2, vs1, vd`
18240 VSBCVVM,
18241 /// RISC-V `vsbc.vxm` instruction.
18242 ///
18243 /// # Forms
18244 /// Assembly: `vsbc.vxm vs2, xs1, vd`
18245 VSBCVXM,
18246 /// RISC-V `vse16.v` instruction.
18247 ///
18248 /// # Forms
18249 /// Assembly: `vse16.v vm, xs1, vs3`
18250 VSE16V,
18251 /// RISC-V `vse1.v` instruction.
18252 ///
18253 /// # Forms
18254 /// Assembly: `vse1.v vs3 rs1`
18255 VSE1V,
18256 /// RISC-V `vse32.v` instruction.
18257 ///
18258 /// # Forms
18259 /// Assembly: `vse32.v vm, xs1, vs3`
18260 VSE32V,
18261 /// RISC-V `vse64.v` instruction.
18262 ///
18263 /// # Forms
18264 /// Assembly: `vse64.v vm, xs1, vs3`
18265 VSE64V,
18266 /// RISC-V `vse8.v` instruction.
18267 ///
18268 /// # Forms
18269 /// Assembly: `vse8.v vm, xs1, vs3`
18270 VSE8V,
18271 /// RISC-V `vsetivli` instruction.
18272 ///
18273 /// # Forms
18274 /// Assembly: `vsetivli xd, imm`
18275 VSETIVLI,
18276 /// RISC-V `vsetvl` instruction.
18277 ///
18278 /// # Forms
18279 /// Assembly: `vsetvl xs2, xs1, xd`
18280 VSETVL,
18281 /// RISC-V `vsetvli` instruction.
18282 ///
18283 /// # Forms
18284 /// Assembly: `vsetvli xs1, xd, imm`
18285 VSETVLI,
18286 /// RISC-V `vsext.vf2` instruction.
18287 ///
18288 /// # Forms
18289 /// Assembly: `vsext.vf2 vm, vs2, vd`
18290 VSEXTVF2,
18291 /// RISC-V `vsext.vf4` instruction.
18292 ///
18293 /// # Forms
18294 /// Assembly: `vsext.vf4 vm, vs2, vd`
18295 VSEXTVF4,
18296 /// RISC-V `vsext.vf8` instruction.
18297 ///
18298 /// # Forms
18299 /// Assembly: `vsext.vf8 vm, vs2, vd`
18300 VSEXTVF8,
18301 /// RISC-V `vsha2ch.vv` instruction.
18302 ///
18303 /// # Forms
18304 /// Assembly: `vsha2ch.vv vs2, vs1, vd`
18305 VSHA2CHVV,
18306 /// RISC-V `vsha2cl.vv` instruction.
18307 ///
18308 /// # Forms
18309 /// Assembly: `vsha2cl.vv vs2, vs1, vd`
18310 VSHA2CLVV,
18311 /// RISC-V `vsha2ms.vv` instruction.
18312 ///
18313 /// # Forms
18314 /// Assembly: `vsha2ms.vv vs2, vs1, vd`
18315 VSHA2MSVV,
18316 /// RISC-V `vslide1down.vx` instruction.
18317 ///
18318 /// # Forms
18319 /// Assembly: `vslide1down.vx vm, vs2, xs1, vd`
18320 VSLIDE1DOWNVX,
18321 /// RISC-V `vslide1up.vx` instruction.
18322 ///
18323 /// # Forms
18324 /// Assembly: `vslide1up.vx vm, vs2, xs1, vd`
18325 VSLIDE1UPVX,
18326 /// RISC-V `vslidedown.vi` instruction.
18327 ///
18328 /// # Forms
18329 /// Assembly: `vslidedown.vi vm, vs2, vd, imm`
18330 VSLIDEDOWNVI,
18331 /// RISC-V `vslidedown.vx` instruction.
18332 ///
18333 /// # Forms
18334 /// Assembly: `vslidedown.vx vm, vs2, xs1, vd`
18335 VSLIDEDOWNVX,
18336 /// RISC-V `vslideup.vi` instruction.
18337 ///
18338 /// # Forms
18339 /// Assembly: `vslideup.vi vm, vs2, vd, imm`
18340 VSLIDEUPVI,
18341 /// RISC-V `vslideup.vx` instruction.
18342 ///
18343 /// # Forms
18344 /// Assembly: `vslideup.vx vm, vs2, xs1, vd`
18345 VSLIDEUPVX,
18346 /// RISC-V `vsll.vi` instruction.
18347 ///
18348 /// # Forms
18349 /// Assembly: `vsll.vi vm, vs2, vd, imm`
18350 VSLLVI,
18351 /// RISC-V `vsll.vv` instruction.
18352 ///
18353 /// # Forms
18354 /// Assembly: `vsll.vv vm, vs2, vs1, vd`
18355 VSLLVV,
18356 /// RISC-V `vsll.vx` instruction.
18357 ///
18358 /// # Forms
18359 /// Assembly: `vsll.vx vm, vs2, xs1, vd`
18360 VSLLVX,
18361 /// RISC-V `vsm3c.vi` instruction.
18362 ///
18363 /// # Forms
18364 /// Assembly: `vsm3c.vi vs2, vd, imm`
18365 VSM3CVI,
18366 /// RISC-V `vsm3me.vv` instruction.
18367 ///
18368 /// # Forms
18369 /// Assembly: `vsm3me.vv vs2, vs1, vd`
18370 VSM3MEVV,
18371 /// RISC-V `vsm4k.vi` instruction.
18372 ///
18373 /// # Forms
18374 /// Assembly: `vsm4k.vi vs2, vd, imm`
18375 VSM4KVI,
18376 /// RISC-V `vsm4r.vs` instruction.
18377 ///
18378 /// # Forms
18379 /// Assembly: `vsm4r.vs vs2, vd`
18380 VSM4RVS,
18381 /// RISC-V `vsm4r.vv` instruction.
18382 ///
18383 /// # Forms
18384 /// Assembly: `vsm4r.vv vs2, vd`
18385 VSM4RVV,
18386 /// RISC-V `vsm.v` instruction.
18387 ///
18388 /// # Forms
18389 /// Assembly: `vsm.v xs1, vs3`
18390 VSMV,
18391 /// RISC-V `vsmul.vv` instruction.
18392 ///
18393 /// # Forms
18394 /// Assembly: `vsmul.vv vm, vs2, vs1, vd`
18395 VSMULVV,
18396 /// RISC-V `vsmul.vx` instruction.
18397 ///
18398 /// # Forms
18399 /// Assembly: `vsmul.vx vm, vs2, xs1, vd`
18400 VSMULVX,
18401 /// RISC-V `vsoxei16.v` instruction.
18402 ///
18403 /// # Forms
18404 /// Assembly: `vsoxei16.v vm, vs2, xs1, vs3`
18405 VSOXEI16V,
18406 /// RISC-V `vsoxei32.v` instruction.
18407 ///
18408 /// # Forms
18409 /// Assembly: `vsoxei32.v vm, vs2, xs1, vs3`
18410 VSOXEI32V,
18411 /// RISC-V `vsoxei64.v` instruction.
18412 ///
18413 /// # Forms
18414 /// Assembly: `vsoxei64.v vm, vs2, xs1, vs3`
18415 VSOXEI64V,
18416 /// RISC-V `vsoxei8.v` instruction.
18417 ///
18418 /// # Forms
18419 /// Assembly: `vsoxei8.v vm, vs2, xs1, vs3`
18420 VSOXEI8V,
18421 /// RISC-V `vsra.vi` instruction.
18422 ///
18423 /// # Forms
18424 /// Assembly: `vsra.vi vm, vs2, vd, imm`
18425 VSRAVI,
18426 /// RISC-V `vsra.vv` instruction.
18427 ///
18428 /// # Forms
18429 /// Assembly: `vsra.vv vm, vs2, vs1, vd`
18430 VSRAVV,
18431 /// RISC-V `vsra.vx` instruction.
18432 ///
18433 /// # Forms
18434 /// Assembly: `vsra.vx vm, vs2, xs1, vd`
18435 VSRAVX,
18436 /// RISC-V `vsrl.vi` instruction.
18437 ///
18438 /// # Forms
18439 /// Assembly: `vsrl.vi vm, vs2, vd, imm`
18440 VSRLVI,
18441 /// RISC-V `vsrl.vv` instruction.
18442 ///
18443 /// # Forms
18444 /// Assembly: `vsrl.vv vm, vs2, vs1, vd`
18445 VSRLVV,
18446 /// RISC-V `vsrl.vx` instruction.
18447 ///
18448 /// # Forms
18449 /// Assembly: `vsrl.vx vm, vs2, xs1, vd`
18450 VSRLVX,
18451 /// RISC-V `vsse16.v` instruction.
18452 ///
18453 /// # Forms
18454 /// Assembly: `vsse16.v vm, xs2, xs1, vs3`
18455 VSSE16V,
18456 /// RISC-V `vsse32.v` instruction.
18457 ///
18458 /// # Forms
18459 /// Assembly: `vsse32.v vm, xs2, xs1, vs3`
18460 VSSE32V,
18461 /// RISC-V `vsse64.v` instruction.
18462 ///
18463 /// # Forms
18464 /// Assembly: `vsse64.v vm, xs2, xs1, vs3`
18465 VSSE64V,
18466 /// RISC-V `vsse8.v` instruction.
18467 ///
18468 /// # Forms
18469 /// Assembly: `vsse8.v vm, xs2, xs1, vs3`
18470 VSSE8V,
18471 /// RISC-V `vssra.vi` instruction.
18472 ///
18473 /// # Forms
18474 /// Assembly: `vssra.vi vm, vs2, vd, imm`
18475 VSSRAVI,
18476 /// RISC-V `vssra.vv` instruction.
18477 ///
18478 /// # Forms
18479 /// Assembly: `vssra.vv vm, vs2, vs1, vd`
18480 VSSRAVV,
18481 /// RISC-V `vssra.vx` instruction.
18482 ///
18483 /// # Forms
18484 /// Assembly: `vssra.vx vm, vs2, xs1, vd`
18485 VSSRAVX,
18486 /// RISC-V `vssrl.vi` instruction.
18487 ///
18488 /// # Forms
18489 /// Assembly: `vssrl.vi vm, vs2, vd, imm`
18490 VSSRLVI,
18491 /// RISC-V `vssrl.vv` instruction.
18492 ///
18493 /// # Forms
18494 /// Assembly: `vssrl.vv vm, vs2, vs1, vd`
18495 VSSRLVV,
18496 /// RISC-V `vssrl.vx` instruction.
18497 ///
18498 /// # Forms
18499 /// Assembly: `vssrl.vx vm, vs2, xs1, vd`
18500 VSSRLVX,
18501 /// RISC-V `vssub.vv` instruction.
18502 ///
18503 /// # Forms
18504 /// Assembly: `vssub.vv vm, vs2, vs1, vd`
18505 VSSUBVV,
18506 /// RISC-V `vssub.vx` instruction.
18507 ///
18508 /// # Forms
18509 /// Assembly: `vssub.vx vm, vs2, xs1, vd`
18510 VSSUBVX,
18511 /// RISC-V `vssubu.vv` instruction.
18512 ///
18513 /// # Forms
18514 /// Assembly: `vssubu.vv vm, vs2, vs1, vd`
18515 VSSUBUVV,
18516 /// RISC-V `vssubu.vx` instruction.
18517 ///
18518 /// # Forms
18519 /// Assembly: `vssubu.vx vm, vs2, xs1, vd`
18520 VSSUBUVX,
18521 /// RISC-V `vsub.vv` instruction.
18522 ///
18523 /// # Forms
18524 /// Assembly: `vsub.vv vm, vs2, vs1, vd`
18525 VSUBVV,
18526 /// RISC-V `vsub.vx` instruction.
18527 ///
18528 /// # Forms
18529 /// Assembly: `vsub.vx vm, vs2, xs1, vd`
18530 VSUBVX,
18531 /// RISC-V `vsuxei16.v` instruction.
18532 ///
18533 /// # Forms
18534 /// Assembly: `vsuxei16.v vm, vs2, xs1, vs3`
18535 VSUXEI16V,
18536 /// RISC-V `vsuxei32.v` instruction.
18537 ///
18538 /// # Forms
18539 /// Assembly: `vsuxei32.v vm, vs2, xs1, vs3`
18540 VSUXEI32V,
18541 /// RISC-V `vsuxei64.v` instruction.
18542 ///
18543 /// # Forms
18544 /// Assembly: `vsuxei64.v vm, vs2, xs1, vs3`
18545 VSUXEI64V,
18546 /// RISC-V `vsuxei8.v` instruction.
18547 ///
18548 /// # Forms
18549 /// Assembly: `vsuxei8.v vm, vs2, xs1, vs3`
18550 VSUXEI8V,
18551 /// RISC-V `vwadd.vv` instruction.
18552 ///
18553 /// # Forms
18554 /// Assembly: `vwadd.vv vm, vs2, vs1, vd`
18555 VWADDVV,
18556 /// RISC-V `vwadd.vx` instruction.
18557 ///
18558 /// # Forms
18559 /// Assembly: `vwadd.vx vm, vs2, xs1, vd`
18560 VWADDVX,
18561 /// RISC-V `vwadd.wv` instruction.
18562 ///
18563 /// # Forms
18564 /// Assembly: `vwadd.wv vm, vs2, vs1, vd`
18565 VWADDWV,
18566 /// RISC-V `vwadd.wx` instruction.
18567 ///
18568 /// # Forms
18569 /// Assembly: `vwadd.wx vm, vs2, xs1, vd`
18570 VWADDWX,
18571 /// RISC-V `vwaddu.vv` instruction.
18572 ///
18573 /// # Forms
18574 /// Assembly: `vwaddu.vv vm, vs2, vs1, vd`
18575 VWADDUVV,
18576 /// RISC-V `vwaddu.vx` instruction.
18577 ///
18578 /// # Forms
18579 /// Assembly: `vwaddu.vx vm, vs2, xs1, vd`
18580 VWADDUVX,
18581 /// RISC-V `vwaddu.wv` instruction.
18582 ///
18583 /// # Forms
18584 /// Assembly: `vwaddu.wv vm, vs2, vs1, vd`
18585 VWADDUWV,
18586 /// RISC-V `vwaddu.wx` instruction.
18587 ///
18588 /// # Forms
18589 /// Assembly: `vwaddu.wx vm, vs2, xs1, vd`
18590 VWADDUWX,
18591 /// RISC-V `vwmacc.vv` instruction.
18592 ///
18593 /// # Forms
18594 /// Assembly: `vwmacc.vv vm, vs2, vs1, vd`
18595 VWMACCVV,
18596 /// RISC-V `vwmacc.vx` instruction.
18597 ///
18598 /// # Forms
18599 /// Assembly: `vwmacc.vx vm, vs2, xs1, vd`
18600 VWMACCVX,
18601 /// RISC-V `vwmaccsu.vv` instruction.
18602 ///
18603 /// # Forms
18604 /// Assembly: `vwmaccsu.vv vm, vs2, vs1, vd`
18605 VWMACCSUVV,
18606 /// RISC-V `vwmaccsu.vx` instruction.
18607 ///
18608 /// # Forms
18609 /// Assembly: `vwmaccsu.vx vm, vs2, xs1, vd`
18610 VWMACCSUVX,
18611 /// RISC-V `vwmaccu.vv` instruction.
18612 ///
18613 /// # Forms
18614 /// Assembly: `vwmaccu.vv vm, vs2, vs1, vd`
18615 VWMACCUVV,
18616 /// RISC-V `vwmaccu.vx` instruction.
18617 ///
18618 /// # Forms
18619 /// Assembly: `vwmaccu.vx vm, vs2, xs1, vd`
18620 VWMACCUVX,
18621 /// RISC-V `vwmaccus.vx` instruction.
18622 ///
18623 /// # Forms
18624 /// Assembly: `vwmaccus.vx vm, vs2, xs1, vd`
18625 VWMACCUSVX,
18626 /// RISC-V `vwmul.vv` instruction.
18627 ///
18628 /// # Forms
18629 /// Assembly: `vwmul.vv vm, vs2, vs1, vd`
18630 VWMULVV,
18631 /// RISC-V `vwmul.vx` instruction.
18632 ///
18633 /// # Forms
18634 /// Assembly: `vwmul.vx vm, vs2, xs1, vd`
18635 VWMULVX,
18636 /// RISC-V `vwmulsu.vv` instruction.
18637 ///
18638 /// # Forms
18639 /// Assembly: `vwmulsu.vv vm, vs2, vs1, vd`
18640 VWMULSUVV,
18641 /// RISC-V `vwmulsu.vx` instruction.
18642 ///
18643 /// # Forms
18644 /// Assembly: `vwmulsu.vx vm, vs2, xs1, vd`
18645 VWMULSUVX,
18646 /// RISC-V `vwmulu.vv` instruction.
18647 ///
18648 /// # Forms
18649 /// Assembly: `vwmulu.vv vm, vs2, vs1, vd`
18650 VWMULUVV,
18651 /// RISC-V `vwmulu.vx` instruction.
18652 ///
18653 /// # Forms
18654 /// Assembly: `vwmulu.vx vm, vs2, xs1, vd`
18655 VWMULUVX,
18656 /// RISC-V `vwredsum.vs` instruction.
18657 ///
18658 /// # Forms
18659 /// Assembly: `vwredsum.vs vm, vs2, vs1, vd`
18660 VWREDSUMVS,
18661 /// RISC-V `vwredsumu.vs` instruction.
18662 ///
18663 /// # Forms
18664 /// Assembly: `vwredsumu.vs vm, vs2, vs1, vd`
18665 VWREDSUMUVS,
18666 /// RISC-V `vwsll.vi` instruction.
18667 ///
18668 /// # Forms
18669 /// Assembly: `vwsll.vi vm, vs2, vd, imm`
18670 VWSLLVI,
18671 /// RISC-V `vwsll.vv` instruction.
18672 ///
18673 /// # Forms
18674 /// Assembly: `vwsll.vv vm, vs2, vs1, vd`
18675 VWSLLVV,
18676 /// RISC-V `vwsll.vx` instruction.
18677 ///
18678 /// # Forms
18679 /// Assembly: `vwsll.vx vm, vs2, xs1, vd`
18680 VWSLLVX,
18681 /// RISC-V `vwsub.vv` instruction.
18682 ///
18683 /// # Forms
18684 /// Assembly: `vwsub.vv vm, vs2, vs1, vd`
18685 VWSUBVV,
18686 /// RISC-V `vwsub.vx` instruction.
18687 ///
18688 /// # Forms
18689 /// Assembly: `vwsub.vx vm, vs2, xs1, vd`
18690 VWSUBVX,
18691 /// RISC-V `vwsub.wv` instruction.
18692 ///
18693 /// # Forms
18694 /// Assembly: `vwsub.wv vm, vs2, vs1, vd`
18695 VWSUBWV,
18696 /// RISC-V `vwsub.wx` instruction.
18697 ///
18698 /// # Forms
18699 /// Assembly: `vwsub.wx vm, vs2, xs1, vd`
18700 VWSUBWX,
18701 /// RISC-V `vwsubu.vv` instruction.
18702 ///
18703 /// # Forms
18704 /// Assembly: `vwsubu.vv vm, vs2, vs1, vd`
18705 VWSUBUVV,
18706 /// RISC-V `vwsubu.vx` instruction.
18707 ///
18708 /// # Forms
18709 /// Assembly: `vwsubu.vx vm, vs2, xs1, vd`
18710 VWSUBUVX,
18711 /// RISC-V `vwsubu.wv` instruction.
18712 ///
18713 /// # Forms
18714 /// Assembly: `vwsubu.wv vm, vs2, vs1, vd`
18715 VWSUBUWV,
18716 /// RISC-V `vwsubu.wx` instruction.
18717 ///
18718 /// # Forms
18719 /// Assembly: `vwsubu.wx vm, vs2, xs1, vd`
18720 VWSUBUWX,
18721 /// RISC-V `vxor.vi` instruction.
18722 ///
18723 /// # Forms
18724 /// Assembly: `vxor.vi vm, vs2, vd, imm`
18725 VXORVI,
18726 /// RISC-V `vxor.vv` instruction.
18727 ///
18728 /// # Forms
18729 /// Assembly: `vxor.vv vm, vs2, vs1, vd`
18730 VXORVV,
18731 /// RISC-V `vxor.vx` instruction.
18732 ///
18733 /// # Forms
18734 /// Assembly: `vxor.vx vm, vs2, xs1, vd`
18735 VXORVX,
18736 /// RISC-V `vzext.vf2` instruction.
18737 ///
18738 /// # Forms
18739 /// Assembly: `vzext.vf2 vm, vs2, vd`
18740 VZEXTVF2,
18741 /// RISC-V `vzext.vf4` instruction.
18742 ///
18743 /// # Forms
18744 /// Assembly: `vzext.vf4 vm, vs2, vd`
18745 VZEXTVF4,
18746 /// RISC-V `vzext.vf8` instruction.
18747 ///
18748 /// # Forms
18749 /// Assembly: `vzext.vf8 vm, vs2, vd`
18750 VZEXTVF8,
18751 /// Wait for interrupt
18752 ///
18753 /// Can causes the processor to enter a low-power state until the next interrupt occurs.
18754 ///
18755 /// <%- if ext?(:H) -%>
18756 /// The behavior of `wfi` is affected by the `mstatus.TW`
18757 /// and `hstatus.VTW` bits, as summarized below.
18758 ///
18759 /// \[%autowidth,%footer\]
18760 /// |===
18761 /// .2+| \[.rotate\]#`mstatus.TW`# .2+| \[.rotate\]#`hstatus.VTW`# 4+^.>| `wfi` behavior
18762 /// h| HS-mode h| U-mode h| VS-mode h| in VU-mode
18763 ///
18764 /// | 0 | 0 | Wait | Trap (I) | Wait | Trap (V)
18765 /// | 0 | 1 | Wait | Trap (I) | Trap (V) | Trap (V)
18766 /// | 1 | - | Trap (I) | Trap (I) | Trap (I) | Trap (I)
18767 ///
18768 /// 6+| Trap (I) - Trap with `Illegal Instruction` code +
18769 /// Trap (V) - Trap with `Virtual Instruction` code
18770 /// |===
18771 ///
18772 /// <%- else -%>
18773 /// The `wfi` instruction is also affected by `mstatus.TW`, as shown below:
18774 ///
18775 /// \[%autowidth,%footer\]
18776 /// |===
18777 /// .2+| \[.rotate\]#`mstatus.TW`# 2+^.>| `wfi` behavior
18778 /// h| S-mode h| U-mode
18779 ///
18780 /// | 0 | Wait | Trap (I)
18781 /// | 1 | Trap (I) | Trap (I)
18782 ///
18783 /// 3+| Trap (I) - Trap with `Illegal Instruction` code
18784 /// |===
18785 ///
18786 /// <%- end -%>
18787 ///
18788 /// When `wfi` is marked as causing a trap above, the implementation is allowed to wait
18789 /// for an unspecified period of time to see if an interrupt occurs before raising the trap.
18790 /// That period of time can be zero (_i.e._, `wfi` always causes a trap in the cases identified
18791 /// above).
18792 ///
18793 /// # Forms
18794 /// Assembly: `wfi ""`
18795 WFI,
18796 /// RISC-V `wrs.nto` instruction.
18797 ///
18798 /// # Forms
18799 /// Assembly: `wrs.nto wrs_nto`
18800 WRSNTO,
18801 /// RISC-V `wrs.sto` instruction.
18802 ///
18803 /// # Forms
18804 /// Assembly: `wrs.sto wrs_sto`
18805 WRSSTO,
18806 /// Exclusive NOR
18807 ///
18808 /// This instruction performs the bit-wise exclusive-NOR operation on rs1 and rs2.
18809 ///
18810 /// # Forms
18811 /// Assembly: `xnor xd, xs1, xs2`
18812 XNOR,
18813 /// Exclusive Or
18814 ///
18815 /// Exclusive or rs1 with rs2, and store the result in rd
18816 ///
18817 /// # Forms
18818 /// Assembly: `xor xd, xs1, xs2`
18819 XOR,
18820 /// Exclusive Or immediate
18821 ///
18822 /// Exclusive or an immediate to the value in rs1, and store the result in rd
18823 ///
18824 /// # Forms
18825 /// Assembly: `xori xd, xs1, imm`
18826 XORI,
18827 /// Crossbar permutation (nibbles)
18828 ///
18829 /// The xperm4 instruction operates on nibbles. The rs1 register contains a vector of XLEN/4 4-bit
18830 /// elements. The rs2 register contains a vector of XLEN/4 4-bit indexes. The result is each element in
18831 /// rs2 replaced by the indexed element in rs1, or zero if the index into rs2 is out of bounds.
18832 ///
18833 /// # Forms
18834 /// Assembly: `xperm4 xd, xs1, xs2`
18835 XPERM4,
18836 /// Crossbar permutation (bytes)
18837 ///
18838 /// The xperm8 instruction operates on bytes. The rs1 register contains a vector of XLEN/8 8-bit
18839 /// elements. The rs2 register contains a vector of XLEN/8 8-bit indexes. The result is each element in
18840 /// rs2 replaced by the indexed element in rs1, or zero if the index into rs2 is out of bounds.
18841 ///
18842 /// # Forms
18843 /// Assembly: `xperm8 xd, xs1, xs2`
18844 XPERM8,
18845 /// RISC-V `zext.b` instruction.
18846 ///
18847 /// # Forms
18848 /// Assembly: `zext.b rd rs1`
18849 ZEXTB,
18850 /// Zero-extend halfword
18851 ///
18852 /// This instruction zero-extends the least-significant halfword of the source to XLEN by inserting
18853 /// 0's into all of the bits more significant than 15.
18854 ///
18855 /// \[NOTE\]
18856 /// The *zext.h* instruction is a pseudo-op for `pack` when `Zbkb` is implemented and XLEN == 32.
18857 ///
18858 /// \[NOTE\]
18859 /// The *zext.h* instruction is a pseudo-op for `packw` when `Zbkb` is implemented and XLEN == 64.
18860 ///
18861 /// # Forms
18862 /// Assembly: `zext.h xd, xs1`
18863 ZEXTH,
18864 /// Zero-extend halfword
18865 ///
18866 /// This instruction zero-extends the least-significant halfword of the source to XLEN by inserting
18867 /// 0's into all of the bits more significant than 15.
18868 ///
18869 /// \[NOTE\]
18870 /// The *zext.h* instruction is a pseudo-op for `pack` when `Zbkb` is implemented and XLEN == 32.
18871 ///
18872 /// \[NOTE\]
18873 /// The *zext.h* instruction is a pseudo-op for `packw` when `Zbkb` is implemented and XLEN == 64.
18874 ///
18875 /// # Forms
18876 /// Assembly: `zext.h.rv32 xd, xs1`
18877 ZEXTHRV32,
18878 /// RISC-V `zext.w` instruction.
18879 ///
18880 /// # Forms
18881 /// Assembly: `zext.w rd rs1`
18882 ZEXTW,
18883 /// Bit interleave
18884 ///
18885 /// This instruction scatters all of the odd and even bits of a source word into the high and low halves
18886 /// of a destination word. It is the inverse of the unzip instruction. This instruction is available only on
18887 /// RV32.
18888 ///
18889 /// # Forms
18890 /// Assembly: `zip xd, xs1`
18891 ZIP,
18892 Invalid,
18893}
18894
18895pub const OPCODE_STR: &[&str] = &[
18896 "add",
18897 "add.uw",
18898 "addi",
18899 "addiw",
18900 "addw",
18901 "aes32dsi",
18902 "aes32dsmi",
18903 "aes32esi",
18904 "aes32esmi",
18905 "aes64ds",
18906 "aes64dsm",
18907 "aes64es",
18908 "aes64esm",
18909 "aes64im",
18910 "aes64ks1i",
18911 "aes64ks2",
18912 "amoadd.b",
18913 "amoadd.d",
18914 "amoadd.h",
18915 "amoadd.w",
18916 "amoand.b",
18917 "amoand.d",
18918 "amoand.h",
18919 "amoand.w",
18920 "amocas.b",
18921 "amocas.d",
18922 "amocas.h",
18923 "amocas.q",
18924 "amocas.w",
18925 "amomax.b",
18926 "amomax.d",
18927 "amomax.h",
18928 "amomax.w",
18929 "amomaxu.b",
18930 "amomaxu.d",
18931 "amomaxu.h",
18932 "amomaxu.w",
18933 "amomin.b",
18934 "amomin.d",
18935 "amomin.h",
18936 "amomin.w",
18937 "amominu.b",
18938 "amominu.d",
18939 "amominu.h",
18940 "amominu.w",
18941 "amoor.b",
18942 "amoor.d",
18943 "amoor.h",
18944 "amoor.w",
18945 "amoswap.b",
18946 "amoswap.d",
18947 "amoswap.h",
18948 "amoswap.w",
18949 "amoxor.b",
18950 "amoxor.d",
18951 "amoxor.h",
18952 "amoxor.w",
18953 "and",
18954 "andi",
18955 "andn",
18956 "auipc",
18957 "bclr",
18958 "bclri",
18959 "bclri.rv32",
18960 "beq",
18961 "beqz",
18962 "bext",
18963 "bexti",
18964 "bexti.rv32",
18965 "bge",
18966 "bgeu",
18967 "bgez",
18968 "bgt",
18969 "bgtu",
18970 "bgtz",
18971 "binv",
18972 "binvi",
18973 "binvi.rv32",
18974 "ble",
18975 "bleu",
18976 "blez",
18977 "blt",
18978 "bltu",
18979 "bltz",
18980 "bne",
18981 "bnez",
18982 "brev8",
18983 "bset",
18984 "bseti",
18985 "bseti.rv32",
18986 "c.add",
18987 "c.addi",
18988 "c.addi16sp",
18989 "c.addi4spn",
18990 "c.addiw",
18991 "c.addw",
18992 "c.and",
18993 "c.andi",
18994 "c.beqz",
18995 "c.bnez",
18996 "c.ebreak",
18997 "c.fld",
18998 "c.fldsp",
18999 "c.flw",
19000 "c.flwsp",
19001 "c.fsd",
19002 "c.fsdsp",
19003 "c.fsw",
19004 "c.fswsp",
19005 "c.j",
19006 "c.jal",
19007 "c.jalr",
19008 "c.jr",
19009 "c.lbu",
19010 "c.ld",
19011 "c.ldsp",
19012 "c.lh",
19013 "c.lhu",
19014 "c.li",
19015 "c.lui",
19016 "c.lw",
19017 "c.lwsp",
19018 "c.mop.1",
19019 "c.mop.11",
19020 "c.mop.13",
19021 "c.mop.15",
19022 "c.mop.3",
19023 "c.mop.5",
19024 "c.mop.7",
19025 "c.mop.9",
19026 "c.mop.n",
19027 "c.mul",
19028 "c.mv",
19029 "c.nop",
19030 "c.not",
19031 "c.ntl.all",
19032 "c.ntl.p1",
19033 "c.ntl.pall",
19034 "c.ntl.s1",
19035 "c.or",
19036 "c.sb",
19037 "c.sd",
19038 "c.sdsp",
19039 "c.sext.b",
19040 "c.sext.h",
19041 "c.sext.w",
19042 "c.sh",
19043 "c.slli",
19044 "c.slli.rv32",
19045 "c.srai",
19046 "c.srai.rv32",
19047 "c.srli",
19048 "c.srli.rv32",
19049 "c.sspopchk.x5",
19050 "c.sspush.x1",
19051 "c.sub",
19052 "c.subw",
19053 "c.sw",
19054 "c.swsp",
19055 "c.xor",
19056 "c.zext.b",
19057 "c.zext.h",
19058 "c.zext.w",
19059 "cbo.clean",
19060 "cbo.flush",
19061 "cbo.inval",
19062 "cbo.zero",
19063 "clmul",
19064 "clmulh",
19065 "clmulr",
19066 "clz",
19067 "clzw",
19068 "cm.jalt",
19069 "cm.mva01s",
19070 "cm.mvsa01",
19071 "cm.pop",
19072 "cm.popret",
19073 "cm.popretz",
19074 "cm.push",
19075 "cpop",
19076 "cpopw",
19077 "csrc",
19078 "csrci",
19079 "csrr",
19080 "csrrc",
19081 "csrrci",
19082 "csrrs",
19083 "csrrsi",
19084 "csrrw",
19085 "csrrwi",
19086 "csrs",
19087 "csrsi",
19088 "csrw",
19089 "csrwi",
19090 "ctz",
19091 "ctzw",
19092 "czero.eqz",
19093 "czero.nez",
19094 "div",
19095 "divu",
19096 "divuw",
19097 "divw",
19098 "dret",
19099 "ebreak",
19100 "ecall",
19101 "fabs.d",
19102 "fabs.h",
19103 "fabs.q",
19104 "fabs.s",
19105 "fadd.d",
19106 "fadd.h",
19107 "fadd.q",
19108 "fadd.s",
19109 "fclass.d",
19110 "fclass.h",
19111 "fclass.q",
19112 "fclass.s",
19113 "fcvt.bf16.s",
19114 "fcvt.d.h",
19115 "fcvt.d.l",
19116 "fcvt.d.lu",
19117 "fcvt.d.q",
19118 "fcvt.d.s",
19119 "fcvt.d.w",
19120 "fcvt.d.wu",
19121 "fcvt.h.d",
19122 "fcvt.h.l",
19123 "fcvt.h.lu",
19124 "fcvt.h.q",
19125 "fcvt.h.s",
19126 "fcvt.h.w",
19127 "fcvt.h.wu",
19128 "fcvt.l.d",
19129 "fcvt.l.h",
19130 "fcvt.l.q",
19131 "fcvt.l.s",
19132 "fcvt.lu.d",
19133 "fcvt.lu.h",
19134 "fcvt.lu.q",
19135 "fcvt.lu.s",
19136 "fcvt.q.d",
19137 "fcvt.q.h",
19138 "fcvt.q.l",
19139 "fcvt.q.lu",
19140 "fcvt.q.s",
19141 "fcvt.q.w",
19142 "fcvt.q.wu",
19143 "fcvt.s.bf16",
19144 "fcvt.s.d",
19145 "fcvt.s.h",
19146 "fcvt.s.l",
19147 "fcvt.s.lu",
19148 "fcvt.s.q",
19149 "fcvt.s.w",
19150 "fcvt.s.wu",
19151 "fcvt.w.d",
19152 "fcvt.w.h",
19153 "fcvt.w.q",
19154 "fcvt.w.s",
19155 "fcvt.wu.d",
19156 "fcvt.wu.h",
19157 "fcvt.wu.q",
19158 "fcvt.wu.s",
19159 "fcvtmod.w.d",
19160 "fdiv.d",
19161 "fdiv.h",
19162 "fdiv.q",
19163 "fdiv.s",
19164 "fence",
19165 "fence.i",
19166 "fence.tso",
19167 "feq.d",
19168 "feq.h",
19169 "feq.q",
19170 "feq.s",
19171 "fld",
19172 "fle.d",
19173 "fle.h",
19174 "fle.q",
19175 "fle.s",
19176 "fleq.d",
19177 "fleq.h",
19178 "fleq.q",
19179 "fleq.s",
19180 "flh",
19181 "fli.d",
19182 "fli.h",
19183 "fli.q",
19184 "fli.s",
19185 "flq",
19186 "flt.d",
19187 "flt.h",
19188 "flt.q",
19189 "flt.s",
19190 "fltq.d",
19191 "fltq.h",
19192 "fltq.q",
19193 "fltq.s",
19194 "flw",
19195 "fmadd.d",
19196 "fmadd.h",
19197 "fmadd.q",
19198 "fmadd.s",
19199 "fmax.d",
19200 "fmax.h",
19201 "fmax.q",
19202 "fmax.s",
19203 "fmaxm.d",
19204 "fmaxm.h",
19205 "fmaxm.q",
19206 "fmaxm.s",
19207 "fmin.d",
19208 "fmin.h",
19209 "fmin.q",
19210 "fmin.s",
19211 "fminm.d",
19212 "fminm.h",
19213 "fminm.q",
19214 "fminm.s",
19215 "fmsub.d",
19216 "fmsub.h",
19217 "fmsub.q",
19218 "fmsub.s",
19219 "fmul.d",
19220 "fmul.h",
19221 "fmul.q",
19222 "fmul.s",
19223 "fmv.d",
19224 "fmv.d.x",
19225 "fmv.h",
19226 "fmv.h.x",
19227 "fmv.q",
19228 "fmv.s",
19229 "fmv.s.x",
19230 "fmv.w.x",
19231 "fmv.x.d",
19232 "fmv.x.h",
19233 "fmv.x.s",
19234 "fmv.x.w",
19235 "fmvh.x.d",
19236 "fmvh.x.q",
19237 "fmvp.d.x",
19238 "fmvp.q.x",
19239 "fneg.d",
19240 "fneg.h",
19241 "fneg.q",
19242 "fneg.s",
19243 "fnmadd.d",
19244 "fnmadd.h",
19245 "fnmadd.q",
19246 "fnmadd.s",
19247 "fnmsub.d",
19248 "fnmsub.h",
19249 "fnmsub.q",
19250 "fnmsub.s",
19251 "frcsr",
19252 "frflags",
19253 "fround.d",
19254 "fround.h",
19255 "fround.q",
19256 "fround.s",
19257 "froundnx.d",
19258 "froundnx.h",
19259 "froundnx.q",
19260 "froundnx.s",
19261 "frrm",
19262 "fscsr",
19263 "fsd",
19264 "fsflags",
19265 "fsflagsi",
19266 "fsgnj.d",
19267 "fsgnj.h",
19268 "fsgnj.q",
19269 "fsgnj.s",
19270 "fsgnjn.d",
19271 "fsgnjn.h",
19272 "fsgnjn.q",
19273 "fsgnjn.s",
19274 "fsgnjx.d",
19275 "fsgnjx.h",
19276 "fsgnjx.q",
19277 "fsgnjx.s",
19278 "fsh",
19279 "fsq",
19280 "fsqrt.d",
19281 "fsqrt.h",
19282 "fsqrt.q",
19283 "fsqrt.s",
19284 "fsrm",
19285 "fsrmi",
19286 "fsub.d",
19287 "fsub.h",
19288 "fsub.q",
19289 "fsub.s",
19290 "fsw",
19291 "hfence.gvma",
19292 "hfence.vvma",
19293 "hinval.gvma",
19294 "hinval.vvma",
19295 "hlv.b",
19296 "hlv.bu",
19297 "hlv.d",
19298 "hlv.h",
19299 "hlv.hu",
19300 "hlv.w",
19301 "hlv.wu",
19302 "hlvx.hu",
19303 "hlvx.wu",
19304 "hsv.b",
19305 "hsv.d",
19306 "hsv.h",
19307 "hsv.w",
19308 "j",
19309 "jal",
19310 "jal.pseudo",
19311 "jalr",
19312 "jalr.pseudo",
19313 "jr",
19314 "lb",
19315 "lbu",
19316 "ld",
19317 "lh",
19318 "lhu",
19319 "lpad",
19320 "lr.d",
19321 "lr.w",
19322 "lui",
19323 "lw",
19324 "lwu",
19325 "max",
19326 "maxu",
19327 "min",
19328 "minu",
19329 "mnret",
19330 "mop.r.0",
19331 "mop.r.1",
19332 "mop.r.10",
19333 "mop.r.11",
19334 "mop.r.12",
19335 "mop.r.13",
19336 "mop.r.14",
19337 "mop.r.15",
19338 "mop.r.16",
19339 "mop.r.17",
19340 "mop.r.18",
19341 "mop.r.19",
19342 "mop.r.2",
19343 "mop.r.20",
19344 "mop.r.21",
19345 "mop.r.22",
19346 "mop.r.23",
19347 "mop.r.24",
19348 "mop.r.25",
19349 "mop.r.26",
19350 "mop.r.27",
19351 "mop.r.28",
19352 "mop.r.29",
19353 "mop.r.3",
19354 "mop.r.30",
19355 "mop.r.31",
19356 "mop.r.4",
19357 "mop.r.5",
19358 "mop.r.6",
19359 "mop.r.7",
19360 "mop.r.8",
19361 "mop.r.9",
19362 "mop.r.n",
19363 "mop.rr.0",
19364 "mop.rr.1",
19365 "mop.rr.2",
19366 "mop.rr.3",
19367 "mop.rr.4",
19368 "mop.rr.5",
19369 "mop.rr.6",
19370 "mop.rr.7",
19371 "mop.rr.n",
19372 "mret",
19373 "mul",
19374 "mulh",
19375 "mulhsu",
19376 "mulhu",
19377 "mulw",
19378 "mv",
19379 "neg",
19380 "nop",
19381 "ntl.all",
19382 "ntl.p1",
19383 "ntl.pall",
19384 "ntl.s1",
19385 "or",
19386 "orc.b",
19387 "ori",
19388 "orn",
19389 "pack",
19390 "packh",
19391 "packw",
19392 "pause",
19393 "prefetch.i",
19394 "prefetch.r",
19395 "prefetch.w",
19396 "rdcycle",
19397 "rdcycleh",
19398 "rdinstret",
19399 "rdinstreth",
19400 "rdtime",
19401 "rdtimeh",
19402 "rem",
19403 "remu",
19404 "remuw",
19405 "remw",
19406 "ret",
19407 "rev8",
19408 "rev8.rv32",
19409 "rol",
19410 "rolw",
19411 "ror",
19412 "rori",
19413 "rori.rv32",
19414 "roriw",
19415 "rorw",
19416 "sb",
19417 "sbreak",
19418 "sc.d",
19419 "sc.w",
19420 "scall",
19421 "sctrclr",
19422 "sd",
19423 "seqz",
19424 "sext.b",
19425 "sext.h",
19426 "sext.w",
19427 "sfence.inval.ir",
19428 "sfence.vma",
19429 "sfence.w.inval",
19430 "sgtz",
19431 "sh",
19432 "sh1add",
19433 "sh1add.uw",
19434 "sh2add",
19435 "sh2add.uw",
19436 "sh3add",
19437 "sh3add.uw",
19438 "sha256sig0",
19439 "sha256sig1",
19440 "sha256sum0",
19441 "sha256sum1",
19442 "sha512sig0",
19443 "sha512sig0h",
19444 "sha512sig0l",
19445 "sha512sig1",
19446 "sha512sig1h",
19447 "sha512sig1l",
19448 "sha512sum0",
19449 "sha512sum0r",
19450 "sha512sum1",
19451 "sha512sum1r",
19452 "sinval.vma",
19453 "sll",
19454 "slli",
19455 "slli.rv32",
19456 "slli.uw",
19457 "slliw",
19458 "sllw",
19459 "slt",
19460 "slti",
19461 "sltiu",
19462 "sltu",
19463 "sltz",
19464 "sm3p0",
19465 "sm3p1",
19466 "sm4ed",
19467 "sm4ks",
19468 "snez",
19469 "sra",
19470 "srai",
19471 "srai.rv32",
19472 "sraiw",
19473 "sraw",
19474 "sret",
19475 "srl",
19476 "srli",
19477 "srli.rv32",
19478 "srliw",
19479 "srlw",
19480 "ssamoswap.d",
19481 "ssamoswap.w",
19482 "sspopchk.x1",
19483 "sspopchk.x5",
19484 "sspush.x1",
19485 "sspush.x5",
19486 "ssrdp",
19487 "sub",
19488 "subw",
19489 "sw",
19490 "unzip",
19491 "vaadd.vv",
19492 "vaadd.vx",
19493 "vaaddu.vv",
19494 "vaaddu.vx",
19495 "vadc.vim",
19496 "vadc.vvm",
19497 "vadc.vxm",
19498 "vadd.vi",
19499 "vadd.vv",
19500 "vadd.vx",
19501 "vaesdf.vs",
19502 "vaesdf.vv",
19503 "vaesdm.vs",
19504 "vaesdm.vv",
19505 "vaesef.vs",
19506 "vaesef.vv",
19507 "vaesem.vs",
19508 "vaesem.vv",
19509 "vaeskf1.vi",
19510 "vaeskf2.vi",
19511 "vaesz.vs",
19512 "vand.vi",
19513 "vand.vv",
19514 "vand.vx",
19515 "vandn.vv",
19516 "vandn.vx",
19517 "vasub.vv",
19518 "vasub.vx",
19519 "vasubu.vv",
19520 "vasubu.vx",
19521 "vbrev8.v",
19522 "vbrev.v",
19523 "vclmul.vv",
19524 "vclmul.vx",
19525 "vclmulh.vv",
19526 "vclmulh.vx",
19527 "vclz.v",
19528 "vcompress.vm",
19529 "vcpop.m",
19530 "vcpop.v",
19531 "vctz.v",
19532 "vdiv.vv",
19533 "vdiv.vx",
19534 "vdivu.vv",
19535 "vdivu.vx",
19536 "vfadd.vf",
19537 "vfadd.vv",
19538 "vfclass.v",
19539 "vfcvt.f.x.v",
19540 "vfcvt.f.xu.v",
19541 "vfcvt.rtz.x.f.v",
19542 "vfcvt.rtz.xu.f.v",
19543 "vfcvt.x.f.v",
19544 "vfcvt.xu.f.v",
19545 "vfdiv.vf",
19546 "vfdiv.vv",
19547 "vfirst.m",
19548 "vfmacc.vf",
19549 "vfmacc.vv",
19550 "vfmadd.vf",
19551 "vfmadd.vv",
19552 "vfmax.vf",
19553 "vfmax.vv",
19554 "vfmerge.vfm",
19555 "vfmin.vf",
19556 "vfmin.vv",
19557 "vfmsac.vf",
19558 "vfmsac.vv",
19559 "vfmsub.vf",
19560 "vfmsub.vv",
19561 "vfmul.vf",
19562 "vfmul.vv",
19563 "vfmv.f.s",
19564 "vfmv.s.f",
19565 "vfmv.v.f",
19566 "vfncvt.f.f.w",
19567 "vfncvt.f.x.w",
19568 "vfncvt.f.xu.w",
19569 "vfncvt.rod.f.f.w",
19570 "vfncvt.rtz.x.f.w",
19571 "vfncvt.rtz.xu.f.w",
19572 "vfncvt.x.f.w",
19573 "vfncvt.xu.f.w",
19574 "vfncvtbf16.f.f.w",
19575 "vfnmacc.vf",
19576 "vfnmacc.vv",
19577 "vfnmadd.vf",
19578 "vfnmadd.vv",
19579 "vfnmsac.vf",
19580 "vfnmsac.vv",
19581 "vfnmsub.vf",
19582 "vfnmsub.vv",
19583 "vfrdiv.vf",
19584 "vfrec7.v",
19585 "vfredmax.vs",
19586 "vfredmin.vs",
19587 "vfredosum.vs",
19588 "vfredsum.vs",
19589 "vfredusum.vs",
19590 "vfrsqrt7.v",
19591 "vfrsub.vf",
19592 "vfsgnj.vf",
19593 "vfsgnj.vv",
19594 "vfsgnjn.vf",
19595 "vfsgnjn.vv",
19596 "vfsgnjx.vf",
19597 "vfsgnjx.vv",
19598 "vfslide1down.vf",
19599 "vfslide1up.vf",
19600 "vfsqrt.v",
19601 "vfsub.vf",
19602 "vfsub.vv",
19603 "vfwadd.vf",
19604 "vfwadd.vv",
19605 "vfwadd.wf",
19606 "vfwadd.wv",
19607 "vfwcvt.f.f.v",
19608 "vfwcvt.f.x.v",
19609 "vfwcvt.f.xu.v",
19610 "vfwcvt.rtz.x.f.v",
19611 "vfwcvt.rtz.xu.f.v",
19612 "vfwcvt.x.f.v",
19613 "vfwcvt.xu.f.v",
19614 "vfwcvtbf16.f.f.v",
19615 "vfwmacc.vf",
19616 "vfwmacc.vv",
19617 "vfwmaccbf16.vf",
19618 "vfwmaccbf16.vv",
19619 "vfwmsac.vf",
19620 "vfwmsac.vv",
19621 "vfwmul.vf",
19622 "vfwmul.vv",
19623 "vfwnmacc.vf",
19624 "vfwnmacc.vv",
19625 "vfwnmsac.vf",
19626 "vfwnmsac.vv",
19627 "vfwredosum.vs",
19628 "vfwredsum.vs",
19629 "vfwredusum.vs",
19630 "vfwsub.vf",
19631 "vfwsub.vv",
19632 "vfwsub.wf",
19633 "vfwsub.wv",
19634 "vghsh.vv",
19635 "vgmul.vv",
19636 "vid.v",
19637 "viota.m",
19638 "vl1r.v",
19639 "vl1re16.v",
19640 "vl1re32.v",
19641 "vl1re64.v",
19642 "vl1re8.v",
19643 "vl2r.v",
19644 "vl2re16.v",
19645 "vl2re32.v",
19646 "vl2re64.v",
19647 "vl2re8.v",
19648 "vl4r.v",
19649 "vl4re16.v",
19650 "vl4re32.v",
19651 "vl4re64.v",
19652 "vl4re8.v",
19653 "vl8r.v",
19654 "vl8re16.v",
19655 "vl8re32.v",
19656 "vl8re64.v",
19657 "vl8re8.v",
19658 "vle16.v",
19659 "vle16ff.v",
19660 "vle1.v",
19661 "vle32.v",
19662 "vle32ff.v",
19663 "vle64.v",
19664 "vle64ff.v",
19665 "vle8.v",
19666 "vle8ff.v",
19667 "vlm.v",
19668 "vloxei16.v",
19669 "vloxei32.v",
19670 "vloxei64.v",
19671 "vloxei8.v",
19672 "vlse16.v",
19673 "vlse32.v",
19674 "vlse64.v",
19675 "vlse8.v",
19676 "vluxei16.v",
19677 "vluxei32.v",
19678 "vluxei64.v",
19679 "vluxei8.v",
19680 "vmacc.vv",
19681 "vmacc.vx",
19682 "vmadc.vi",
19683 "vmadc.vim",
19684 "vmadc.vv",
19685 "vmadc.vvm",
19686 "vmadc.vx",
19687 "vmadc.vxm",
19688 "vmadd.vv",
19689 "vmadd.vx",
19690 "vmand.mm",
19691 "vmandn.mm",
19692 "vmandnot.mm",
19693 "vmax.vv",
19694 "vmax.vx",
19695 "vmaxu.vv",
19696 "vmaxu.vx",
19697 "vmerge.vim",
19698 "vmerge.vvm",
19699 "vmerge.vxm",
19700 "vmfeq.vf",
19701 "vmfeq.vv",
19702 "vmfge.vf",
19703 "vmfgt.vf",
19704 "vmfle.vf",
19705 "vmfle.vv",
19706 "vmflt.vf",
19707 "vmflt.vv",
19708 "vmfne.vf",
19709 "vmfne.vv",
19710 "vmin.vv",
19711 "vmin.vx",
19712 "vminu.vv",
19713 "vminu.vx",
19714 "vmnand.mm",
19715 "vmnor.mm",
19716 "vmor.mm",
19717 "vmorn.mm",
19718 "vmornot.mm",
19719 "vmsbc.vv",
19720 "vmsbc.vvm",
19721 "vmsbc.vx",
19722 "vmsbc.vxm",
19723 "vmsbf.m",
19724 "vmseq.vi",
19725 "vmseq.vv",
19726 "vmseq.vx",
19727 "vmsgt.vi",
19728 "vmsgt.vx",
19729 "vmsgtu.vi",
19730 "vmsgtu.vx",
19731 "vmsif.m",
19732 "vmsle.vi",
19733 "vmsle.vv",
19734 "vmsle.vx",
19735 "vmsleu.vi",
19736 "vmsleu.vv",
19737 "vmsleu.vx",
19738 "vmslt.vv",
19739 "vmslt.vx",
19740 "vmsltu.vv",
19741 "vmsltu.vx",
19742 "vmsne.vi",
19743 "vmsne.vv",
19744 "vmsne.vx",
19745 "vmsof.m",
19746 "vmul.vv",
19747 "vmul.vx",
19748 "vmulh.vv",
19749 "vmulh.vx",
19750 "vmulhsu.vv",
19751 "vmulhsu.vx",
19752 "vmulhu.vv",
19753 "vmulhu.vx",
19754 "vmv1r.v",
19755 "vmv2r.v",
19756 "vmv4r.v",
19757 "vmv8r.v",
19758 "vmv.s.x",
19759 "vmv.v.i",
19760 "vmv.v.v",
19761 "vmv.v.x",
19762 "vmv.x.s",
19763 "vmxnor.mm",
19764 "vmxor.mm",
19765 "vnclip.wi",
19766 "vnclip.wv",
19767 "vnclip.wx",
19768 "vnclipu.wi",
19769 "vnclipu.wv",
19770 "vnclipu.wx",
19771 "vnmsac.vv",
19772 "vnmsac.vx",
19773 "vnmsub.vv",
19774 "vnmsub.vx",
19775 "vnsra.wi",
19776 "vnsra.wv",
19777 "vnsra.wx",
19778 "vnsrl.wi",
19779 "vnsrl.wv",
19780 "vnsrl.wx",
19781 "vor.vi",
19782 "vor.vv",
19783 "vor.vx",
19784 "vpopc.m",
19785 "vredand.vs",
19786 "vredmax.vs",
19787 "vredmaxu.vs",
19788 "vredmin.vs",
19789 "vredminu.vs",
19790 "vredor.vs",
19791 "vredsum.vs",
19792 "vredxor.vs",
19793 "vrem.vv",
19794 "vrem.vx",
19795 "vremu.vv",
19796 "vremu.vx",
19797 "vrev8.v",
19798 "vrgather.vi",
19799 "vrgather.vv",
19800 "vrgather.vx",
19801 "vrgatherei16.vv",
19802 "vrol.vv",
19803 "vrol.vx",
19804 "vror.vi",
19805 "vror.vv",
19806 "vror.vx",
19807 "vrsub.vi",
19808 "vrsub.vx",
19809 "vs1r.v",
19810 "vs2r.v",
19811 "vs4r.v",
19812 "vs8r.v",
19813 "vsadd.vi",
19814 "vsadd.vv",
19815 "vsadd.vx",
19816 "vsaddu.vi",
19817 "vsaddu.vv",
19818 "vsaddu.vx",
19819 "vsbc.vvm",
19820 "vsbc.vxm",
19821 "vse16.v",
19822 "vse1.v",
19823 "vse32.v",
19824 "vse64.v",
19825 "vse8.v",
19826 "vsetivli",
19827 "vsetvl",
19828 "vsetvli",
19829 "vsext.vf2",
19830 "vsext.vf4",
19831 "vsext.vf8",
19832 "vsha2ch.vv",
19833 "vsha2cl.vv",
19834 "vsha2ms.vv",
19835 "vslide1down.vx",
19836 "vslide1up.vx",
19837 "vslidedown.vi",
19838 "vslidedown.vx",
19839 "vslideup.vi",
19840 "vslideup.vx",
19841 "vsll.vi",
19842 "vsll.vv",
19843 "vsll.vx",
19844 "vsm3c.vi",
19845 "vsm3me.vv",
19846 "vsm4k.vi",
19847 "vsm4r.vs",
19848 "vsm4r.vv",
19849 "vsm.v",
19850 "vsmul.vv",
19851 "vsmul.vx",
19852 "vsoxei16.v",
19853 "vsoxei32.v",
19854 "vsoxei64.v",
19855 "vsoxei8.v",
19856 "vsra.vi",
19857 "vsra.vv",
19858 "vsra.vx",
19859 "vsrl.vi",
19860 "vsrl.vv",
19861 "vsrl.vx",
19862 "vsse16.v",
19863 "vsse32.v",
19864 "vsse64.v",
19865 "vsse8.v",
19866 "vssra.vi",
19867 "vssra.vv",
19868 "vssra.vx",
19869 "vssrl.vi",
19870 "vssrl.vv",
19871 "vssrl.vx",
19872 "vssub.vv",
19873 "vssub.vx",
19874 "vssubu.vv",
19875 "vssubu.vx",
19876 "vsub.vv",
19877 "vsub.vx",
19878 "vsuxei16.v",
19879 "vsuxei32.v",
19880 "vsuxei64.v",
19881 "vsuxei8.v",
19882 "vwadd.vv",
19883 "vwadd.vx",
19884 "vwadd.wv",
19885 "vwadd.wx",
19886 "vwaddu.vv",
19887 "vwaddu.vx",
19888 "vwaddu.wv",
19889 "vwaddu.wx",
19890 "vwmacc.vv",
19891 "vwmacc.vx",
19892 "vwmaccsu.vv",
19893 "vwmaccsu.vx",
19894 "vwmaccu.vv",
19895 "vwmaccu.vx",
19896 "vwmaccus.vx",
19897 "vwmul.vv",
19898 "vwmul.vx",
19899 "vwmulsu.vv",
19900 "vwmulsu.vx",
19901 "vwmulu.vv",
19902 "vwmulu.vx",
19903 "vwredsum.vs",
19904 "vwredsumu.vs",
19905 "vwsll.vi",
19906 "vwsll.vv",
19907 "vwsll.vx",
19908 "vwsub.vv",
19909 "vwsub.vx",
19910 "vwsub.wv",
19911 "vwsub.wx",
19912 "vwsubu.vv",
19913 "vwsubu.vx",
19914 "vwsubu.wv",
19915 "vwsubu.wx",
19916 "vxor.vi",
19917 "vxor.vv",
19918 "vxor.vx",
19919 "vzext.vf2",
19920 "vzext.vf4",
19921 "vzext.vf8",
19922 "wfi",
19923 "wrs.nto",
19924 "wrs.sto",
19925 "xnor",
19926 "xor",
19927 "xori",
19928 "xperm4",
19929 "xperm8",
19930 "zext.b",
19931 "zext.h",
19932 "zext.h.rv32",
19933 "zext.w",
19934 "zip",
19935 "<invalid>",
19936];
19937
19938#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)]
19939pub struct Inst {
19940 value: u32,
19941}
19942
19943impl Inst {
19944 pub const fn encode(&self) -> InstructionValue {
19945 InstructionValue::new(self.value)
19946 }
19947
19948 pub const fn new(op: Opcode) -> Self {
19949 match op {
19950 Opcode::Invalid => unreachable!(),
19951 Opcode::ADD => Inst { value: 0x33 },
19952 Opcode::ADDUW => Inst { value: 0x800003b },
19953 Opcode::ADDI => Inst { value: 0x13 },
19954 Opcode::ADDIW => Inst { value: 0x1b },
19955 Opcode::ADDW => Inst { value: 0x3b },
19956 Opcode::AES32DSI => Inst { value: 0x2a000033 },
19957 Opcode::AES32DSMI => Inst { value: 0x2e000033 },
19958 Opcode::AES32ESI => Inst { value: 0x22000033 },
19959 Opcode::AES32ESMI => Inst { value: 0x26000033 },
19960 Opcode::AES64DS => Inst { value: 0x3a000033 },
19961 Opcode::AES64DSM => Inst { value: 0x3e000033 },
19962 Opcode::AES64ES => Inst { value: 0x32000033 },
19963 Opcode::AES64ESM => Inst { value: 0x36000033 },
19964 Opcode::AES64IM => Inst { value: 0x30001013 },
19965 Opcode::AES64KS1I => Inst { value: 0x31001013 },
19966 Opcode::AES64KS2 => Inst { value: 0x7e000033 },
19967 Opcode::AMOADDB => Inst { value: 0x2f },
19968 Opcode::AMOADDD => Inst { value: 0x302f },
19969 Opcode::AMOADDH => Inst { value: 0x102f },
19970 Opcode::AMOADDW => Inst { value: 0x202f },
19971 Opcode::AMOANDB => Inst { value: 0x6000002f },
19972 Opcode::AMOANDD => Inst { value: 0x6000302f },
19973 Opcode::AMOANDH => Inst { value: 0x6000102f },
19974 Opcode::AMOANDW => Inst { value: 0x6000202f },
19975 Opcode::AMOCASB => Inst { value: 0x2800002f },
19976 Opcode::AMOCASD => Inst { value: 0x2800302f },
19977 Opcode::AMOCASH => Inst { value: 0x2800102f },
19978 Opcode::AMOCASQ => Inst { value: 0x2800402f },
19979 Opcode::AMOCASW => Inst { value: 0x2800202f },
19980 Opcode::AMOMAXB => Inst { value: 0xa000002f },
19981 Opcode::AMOMAXD => Inst { value: 0xa000302f },
19982 Opcode::AMOMAXH => Inst { value: 0xa000102f },
19983 Opcode::AMOMAXW => Inst { value: 0xa000202f },
19984 Opcode::AMOMAXUB => Inst { value: 0xe000002f },
19985 Opcode::AMOMAXUD => Inst { value: 0xe000302f },
19986 Opcode::AMOMAXUH => Inst { value: 0xe000102f },
19987 Opcode::AMOMAXUW => Inst { value: 0xe000202f },
19988 Opcode::AMOMINB => Inst { value: 0x8000002f },
19989 Opcode::AMOMIND => Inst { value: 0x8000302f },
19990 Opcode::AMOMINH => Inst { value: 0x8000102f },
19991 Opcode::AMOMINW => Inst { value: 0x8000202f },
19992 Opcode::AMOMINUB => Inst { value: 0xc000002f },
19993 Opcode::AMOMINUD => Inst { value: 0xc000302f },
19994 Opcode::AMOMINUH => Inst { value: 0xc000102f },
19995 Opcode::AMOMINUW => Inst { value: 0xc000202f },
19996 Opcode::AMOORB => Inst { value: 0x4000002f },
19997 Opcode::AMOORD => Inst { value: 0x4000302f },
19998 Opcode::AMOORH => Inst { value: 0x4000102f },
19999 Opcode::AMOORW => Inst { value: 0x4000202f },
20000 Opcode::AMOSWAPB => Inst { value: 0x800002f },
20001 Opcode::AMOSWAPD => Inst { value: 0x800302f },
20002 Opcode::AMOSWAPH => Inst { value: 0x800102f },
20003 Opcode::AMOSWAPW => Inst { value: 0x800202f },
20004 Opcode::AMOXORB => Inst { value: 0x2000002f },
20005 Opcode::AMOXORD => Inst { value: 0x2000302f },
20006 Opcode::AMOXORH => Inst { value: 0x2000102f },
20007 Opcode::AMOXORW => Inst { value: 0x2000202f },
20008 Opcode::AND => Inst { value: 0x7033 },
20009 Opcode::ANDI => Inst { value: 0x7013 },
20010 Opcode::ANDN => Inst { value: 0x40007033 },
20011 Opcode::AUIPC => Inst { value: 0x17 },
20012 Opcode::BCLR => Inst { value: 0x48001033 },
20013 Opcode::BCLRI => Inst { value: 0x48001013 },
20014 Opcode::BCLRIRV32 => Inst { value: 0x48001013 },
20015 Opcode::BEQ => Inst { value: 0x63 },
20016 Opcode::BEQZ => Inst { value: 0x63 },
20017 Opcode::BEXT => Inst { value: 0x48005033 },
20018 Opcode::BEXTI => Inst { value: 0x48005013 },
20019 Opcode::BEXTIRV32 => Inst { value: 0x48005013 },
20020 Opcode::BGE => Inst { value: 0x5063 },
20021 Opcode::BGEU => Inst { value: 0x7063 },
20022 Opcode::BGEZ => Inst { value: 0x5063 },
20023 Opcode::BGT => Inst { value: 0x4063 },
20024 Opcode::BGTU => Inst { value: 0x6063 },
20025 Opcode::BGTZ => Inst { value: 0x4063 },
20026 Opcode::BINV => Inst { value: 0x68001033 },
20027 Opcode::BINVI => Inst { value: 0x68001013 },
20028 Opcode::BINVIRV32 => Inst { value: 0x68001013 },
20029 Opcode::BLE => Inst { value: 0x5063 },
20030 Opcode::BLEU => Inst { value: 0x7063 },
20031 Opcode::BLEZ => Inst { value: 0x5063 },
20032 Opcode::BLT => Inst { value: 0x4063 },
20033 Opcode::BLTU => Inst { value: 0x6063 },
20034 Opcode::BLTZ => Inst { value: 0x4063 },
20035 Opcode::BNE => Inst { value: 0x1063 },
20036 Opcode::BNEZ => Inst { value: 0x1063 },
20037 Opcode::BREV8 => Inst { value: 0x68705013 },
20038 Opcode::BSET => Inst { value: 0x28001033 },
20039 Opcode::BSETI => Inst { value: 0x28001013 },
20040 Opcode::BSETIRV32 => Inst { value: 0x28001013 },
20041 Opcode::CADD => Inst { value: 0x9002 },
20042 Opcode::CADDI => Inst { value: 0x1 },
20043 Opcode::CADDI16SP => Inst { value: 0x6101 },
20044 Opcode::CADDI4SPN => Inst { value: 0x0 },
20045 Opcode::CADDIW => Inst { value: 0x2001 },
20046 Opcode::CADDW => Inst { value: 0x9c21 },
20047 Opcode::CAND => Inst { value: 0x8c61 },
20048 Opcode::CANDI => Inst { value: 0x8801 },
20049 Opcode::CBEQZ => Inst { value: 0xc001 },
20050 Opcode::CBNEZ => Inst { value: 0xe001 },
20051 Opcode::CEBREAK => Inst { value: 0x9002 },
20052 Opcode::CFLD => Inst { value: 0x2000 },
20053 Opcode::CFLDSP => Inst { value: 0x2002 },
20054 Opcode::CFLW => Inst { value: 0x6000 },
20055 Opcode::CFLWSP => Inst { value: 0x6002 },
20056 Opcode::CFSD => Inst { value: 0xa000 },
20057 Opcode::CFSDSP => Inst { value: 0xa002 },
20058 Opcode::CFSW => Inst { value: 0xe000 },
20059 Opcode::CFSWSP => Inst { value: 0xe002 },
20060 Opcode::CJ => Inst { value: 0xa001 },
20061 Opcode::CJAL => Inst { value: 0x2001 },
20062 Opcode::CJALR => Inst { value: 0x9002 },
20063 Opcode::CJR => Inst { value: 0x8002 },
20064 Opcode::CLBU => Inst { value: 0x8000 },
20065 Opcode::CLD => Inst { value: 0x6000 },
20066 Opcode::CLDSP => Inst { value: 0x6002 },
20067 Opcode::CLH => Inst { value: 0x8440 },
20068 Opcode::CLHU => Inst { value: 0x8400 },
20069 Opcode::CLI => Inst { value: 0x4001 },
20070 Opcode::CLUI => Inst { value: 0x6001 },
20071 Opcode::CLW => Inst { value: 0x4000 },
20072 Opcode::CLWSP => Inst { value: 0x4002 },
20073 Opcode::CMOP1 => Inst { value: 0x6081 },
20074 Opcode::CMOP11 => Inst { value: 0x6581 },
20075 Opcode::CMOP13 => Inst { value: 0x6681 },
20076 Opcode::CMOP15 => Inst { value: 0x6781 },
20077 Opcode::CMOP3 => Inst { value: 0x6181 },
20078 Opcode::CMOP5 => Inst { value: 0x6281 },
20079 Opcode::CMOP7 => Inst { value: 0x6381 },
20080 Opcode::CMOP9 => Inst { value: 0x6481 },
20081 Opcode::CMOPN => Inst { value: 0x6081 },
20082 Opcode::CMUL => Inst { value: 0x9c41 },
20083 Opcode::CMV => Inst { value: 0x8002 },
20084 Opcode::CNOP => Inst { value: 0x1 },
20085 Opcode::CNOT => Inst { value: 0x9c75 },
20086 Opcode::CNTLALL => Inst { value: 0x9016 },
20087 Opcode::CNTLP1 => Inst { value: 0x900a },
20088 Opcode::CNTLPALL => Inst { value: 0x900e },
20089 Opcode::CNTLS1 => Inst { value: 0x9012 },
20090 Opcode::COR => Inst { value: 0x8c41 },
20091 Opcode::CSB => Inst { value: 0x8800 },
20092 Opcode::CSD => Inst { value: 0xe000 },
20093 Opcode::CSDSP => Inst { value: 0xe002 },
20094 Opcode::CSEXTB => Inst { value: 0x9c65 },
20095 Opcode::CSEXTH => Inst { value: 0x9c6d },
20096 Opcode::CSEXTW => Inst { value: 0x2001 },
20097 Opcode::CSH => Inst { value: 0x8c00 },
20098 Opcode::CSLLI => Inst { value: 0x2 },
20099 Opcode::CSLLIRV32 => Inst { value: 0x2 },
20100 Opcode::CSRAI => Inst { value: 0x8401 },
20101 Opcode::CSRAIRV32 => Inst { value: 0x8401 },
20102 Opcode::CSRLI => Inst { value: 0x8001 },
20103 Opcode::CSRLIRV32 => Inst { value: 0x8001 },
20104 Opcode::CSSPOPCHKX5 => Inst { value: 0x6281 },
20105 Opcode::CSSPUSHX1 => Inst { value: 0x6081 },
20106 Opcode::CSUB => Inst { value: 0x8c01 },
20107 Opcode::CSUBW => Inst { value: 0x9c01 },
20108 Opcode::CSW => Inst { value: 0xc000 },
20109 Opcode::CSWSP => Inst { value: 0xc002 },
20110 Opcode::CXOR => Inst { value: 0x8c21 },
20111 Opcode::CZEXTB => Inst { value: 0x9c61 },
20112 Opcode::CZEXTH => Inst { value: 0x9c69 },
20113 Opcode::CZEXTW => Inst { value: 0x9c71 },
20114 Opcode::CBOCLEAN => Inst { value: 0x10200f },
20115 Opcode::CBOFLUSH => Inst { value: 0x20200f },
20116 Opcode::CBOINVAL => Inst { value: 0x200f },
20117 Opcode::CBOZERO => Inst { value: 0x40200f },
20118 Opcode::CLMUL => Inst { value: 0xa001033 },
20119 Opcode::CLMULH => Inst { value: 0xa003033 },
20120 Opcode::CLMULR => Inst { value: 0xa002033 },
20121 Opcode::CLZ => Inst { value: 0x60001013 },
20122 Opcode::CLZW => Inst { value: 0x6000101b },
20123 Opcode::CMJALT => Inst { value: 0xa002 },
20124 Opcode::CMMVA01S => Inst { value: 0xac62 },
20125 Opcode::CMMVSA01 => Inst { value: 0xac22 },
20126 Opcode::CMPOP => Inst { value: 0xba02 },
20127 Opcode::CMPOPRET => Inst { value: 0xbe02 },
20128 Opcode::CMPOPRETZ => Inst { value: 0xbc02 },
20129 Opcode::CMPUSH => Inst { value: 0xb802 },
20130 Opcode::CPOP => Inst { value: 0x60201013 },
20131 Opcode::CPOPW => Inst { value: 0x6020101b },
20132 Opcode::CSRC => Inst { value: 0x3073 },
20133 Opcode::CSRCI => Inst { value: 0x7073 },
20134 Opcode::CSRR => Inst { value: 0x2073 },
20135 Opcode::CSRRC => Inst { value: 0x3073 },
20136 Opcode::CSRRCI => Inst { value: 0x7073 },
20137 Opcode::CSRRS => Inst { value: 0x2073 },
20138 Opcode::CSRRSI => Inst { value: 0x6073 },
20139 Opcode::CSRRW => Inst { value: 0x1073 },
20140 Opcode::CSRRWI => Inst { value: 0x5073 },
20141 Opcode::CSRS => Inst { value: 0x2073 },
20142 Opcode::CSRSI => Inst { value: 0x6073 },
20143 Opcode::CSRW => Inst { value: 0x1073 },
20144 Opcode::CSRWI => Inst { value: 0x5073 },
20145 Opcode::CTZ => Inst { value: 0x60101013 },
20146 Opcode::CTZW => Inst { value: 0x6010101b },
20147 Opcode::CZEROEQZ => Inst { value: 0xe005033 },
20148 Opcode::CZERONEZ => Inst { value: 0xe007033 },
20149 Opcode::DIV => Inst { value: 0x2004033 },
20150 Opcode::DIVU => Inst { value: 0x2005033 },
20151 Opcode::DIVUW => Inst { value: 0x200503b },
20152 Opcode::DIVW => Inst { value: 0x200403b },
20153 Opcode::DRET => Inst { value: 0x7b200073 },
20154 Opcode::EBREAK => Inst { value: 0x100073 },
20155 Opcode::ECALL => Inst { value: 0x73 },
20156 Opcode::FABSD => Inst { value: 0x22002053 },
20157 Opcode::FABSH => Inst { value: 0x24002053 },
20158 Opcode::FABSQ => Inst { value: 0x26002053 },
20159 Opcode::FABSS => Inst { value: 0x20002053 },
20160 Opcode::FADDD => Inst { value: 0x2000053 },
20161 Opcode::FADDH => Inst { value: 0x4000053 },
20162 Opcode::FADDQ => Inst { value: 0x6000053 },
20163 Opcode::FADDS => Inst { value: 0x53 },
20164 Opcode::FCLASSD => Inst { value: 0xe2001053 },
20165 Opcode::FCLASSH => Inst { value: 0xe4001053 },
20166 Opcode::FCLASSQ => Inst { value: 0xe6001053 },
20167 Opcode::FCLASSS => Inst { value: 0xe0001053 },
20168 Opcode::FCVTBF16S => Inst { value: 0x44800053 },
20169 Opcode::FCVTDH => Inst { value: 0x42200053 },
20170 Opcode::FCVTDL => Inst { value: 0xd2200053 },
20171 Opcode::FCVTDLU => Inst { value: 0xd2300053 },
20172 Opcode::FCVTDQ => Inst { value: 0x42300053 },
20173 Opcode::FCVTDS => Inst { value: 0x42000053 },
20174 Opcode::FCVTDW => Inst { value: 0xd2000053 },
20175 Opcode::FCVTDWU => Inst { value: 0xd2100053 },
20176 Opcode::FCVTHD => Inst { value: 0x44100053 },
20177 Opcode::FCVTHL => Inst { value: 0xd4200053 },
20178 Opcode::FCVTHLU => Inst { value: 0xd4300053 },
20179 Opcode::FCVTHQ => Inst { value: 0x44300053 },
20180 Opcode::FCVTHS => Inst { value: 0x44000053 },
20181 Opcode::FCVTHW => Inst { value: 0xd4000053 },
20182 Opcode::FCVTHWU => Inst { value: 0xd4100053 },
20183 Opcode::FCVTLD => Inst { value: 0xc2200053 },
20184 Opcode::FCVTLH => Inst { value: 0xc4200053 },
20185 Opcode::FCVTLQ => Inst { value: 0xc6200053 },
20186 Opcode::FCVTLS => Inst { value: 0xc0200053 },
20187 Opcode::FCVTLUD => Inst { value: 0xc2300053 },
20188 Opcode::FCVTLUH => Inst { value: 0xc4300053 },
20189 Opcode::FCVTLUQ => Inst { value: 0xc6300053 },
20190 Opcode::FCVTLUS => Inst { value: 0xc0300053 },
20191 Opcode::FCVTQD => Inst { value: 0x46100053 },
20192 Opcode::FCVTQH => Inst { value: 0x46200053 },
20193 Opcode::FCVTQL => Inst { value: 0xd6200053 },
20194 Opcode::FCVTQLU => Inst { value: 0xd6300053 },
20195 Opcode::FCVTQS => Inst { value: 0x46000053 },
20196 Opcode::FCVTQW => Inst { value: 0xd6000053 },
20197 Opcode::FCVTQWU => Inst { value: 0xd6100053 },
20198 Opcode::FCVTSBF16 => Inst { value: 0x40600053 },
20199 Opcode::FCVTSD => Inst { value: 0x40100053 },
20200 Opcode::FCVTSH => Inst { value: 0x40200053 },
20201 Opcode::FCVTSL => Inst { value: 0xd0200053 },
20202 Opcode::FCVTSLU => Inst { value: 0xd0300053 },
20203 Opcode::FCVTSQ => Inst { value: 0x40300053 },
20204 Opcode::FCVTSW => Inst { value: 0xd0000053 },
20205 Opcode::FCVTSWU => Inst { value: 0xd0100053 },
20206 Opcode::FCVTWD => Inst { value: 0xc2000053 },
20207 Opcode::FCVTWH => Inst { value: 0xc4000053 },
20208 Opcode::FCVTWQ => Inst { value: 0xc6000053 },
20209 Opcode::FCVTWS => Inst { value: 0xc0000053 },
20210 Opcode::FCVTWUD => Inst { value: 0xc2100053 },
20211 Opcode::FCVTWUH => Inst { value: 0xc4100053 },
20212 Opcode::FCVTWUQ => Inst { value: 0xc6100053 },
20213 Opcode::FCVTWUS => Inst { value: 0xc0100053 },
20214 Opcode::FCVTMODWD => Inst { value: 0xc2801053 },
20215 Opcode::FDIVD => Inst { value: 0x1a000053 },
20216 Opcode::FDIVH => Inst { value: 0x1c000053 },
20217 Opcode::FDIVQ => Inst { value: 0x1e000053 },
20218 Opcode::FDIVS => Inst { value: 0x18000053 },
20219 Opcode::FENCE => Inst { value: 0xf },
20220 Opcode::FENCEI => Inst { value: 0x100f },
20221 Opcode::FENCETSO => Inst { value: 0x8330000f },
20222 Opcode::FEQD => Inst { value: 0xa2002053 },
20223 Opcode::FEQH => Inst { value: 0xa4002053 },
20224 Opcode::FEQQ => Inst { value: 0xa6002053 },
20225 Opcode::FEQS => Inst { value: 0xa0002053 },
20226 Opcode::FLD => Inst { value: 0x3007 },
20227 Opcode::FLED => Inst { value: 0xa2000053 },
20228 Opcode::FLEH => Inst { value: 0xa4000053 },
20229 Opcode::FLEQ => Inst { value: 0xa6000053 },
20230 Opcode::FLES => Inst { value: 0xa0000053 },
20231 Opcode::FLEQD => Inst { value: 0xa2004053 },
20232 Opcode::FLEQH => Inst { value: 0xa4004053 },
20233 Opcode::FLEQQ => Inst { value: 0xa6004053 },
20234 Opcode::FLEQS => Inst { value: 0xa0004053 },
20235 Opcode::FLH => Inst { value: 0x1007 },
20236 Opcode::FLID => Inst { value: 0xf2100053 },
20237 Opcode::FLIH => Inst { value: 0xf4100053 },
20238 Opcode::FLIQ => Inst { value: 0xf6100053 },
20239 Opcode::FLIS => Inst { value: 0xf0100053 },
20240 Opcode::FLQ => Inst { value: 0x4007 },
20241 Opcode::FLTD => Inst { value: 0xa2001053 },
20242 Opcode::FLTH => Inst { value: 0xa4001053 },
20243 Opcode::FLTQ => Inst { value: 0xa6001053 },
20244 Opcode::FLTS => Inst { value: 0xa0001053 },
20245 Opcode::FLTQD => Inst { value: 0xa2005053 },
20246 Opcode::FLTQH => Inst { value: 0xa4005053 },
20247 Opcode::FLTQQ => Inst { value: 0xa6005053 },
20248 Opcode::FLTQS => Inst { value: 0xa0005053 },
20249 Opcode::FLW => Inst { value: 0x2007 },
20250 Opcode::FMADDD => Inst { value: 0x2000043 },
20251 Opcode::FMADDH => Inst { value: 0x4000043 },
20252 Opcode::FMADDQ => Inst { value: 0x6000043 },
20253 Opcode::FMADDS => Inst { value: 0x43 },
20254 Opcode::FMAXD => Inst { value: 0x2a001053 },
20255 Opcode::FMAXH => Inst { value: 0x2c001053 },
20256 Opcode::FMAXQ => Inst { value: 0x2e001053 },
20257 Opcode::FMAXS => Inst { value: 0x28001053 },
20258 Opcode::FMAXMD => Inst { value: 0x2a003053 },
20259 Opcode::FMAXMH => Inst { value: 0x2c003053 },
20260 Opcode::FMAXMQ => Inst { value: 0x2e003053 },
20261 Opcode::FMAXMS => Inst { value: 0x28003053 },
20262 Opcode::FMIND => Inst { value: 0x2a000053 },
20263 Opcode::FMINH => Inst { value: 0x2c000053 },
20264 Opcode::FMINQ => Inst { value: 0x2e000053 },
20265 Opcode::FMINS => Inst { value: 0x28000053 },
20266 Opcode::FMINMD => Inst { value: 0x2a002053 },
20267 Opcode::FMINMH => Inst { value: 0x2c002053 },
20268 Opcode::FMINMQ => Inst { value: 0x2e002053 },
20269 Opcode::FMINMS => Inst { value: 0x28002053 },
20270 Opcode::FMSUBD => Inst { value: 0x2000047 },
20271 Opcode::FMSUBH => Inst { value: 0x4000047 },
20272 Opcode::FMSUBQ => Inst { value: 0x6000047 },
20273 Opcode::FMSUBS => Inst { value: 0x47 },
20274 Opcode::FMULD => Inst { value: 0x12000053 },
20275 Opcode::FMULH => Inst { value: 0x14000053 },
20276 Opcode::FMULQ => Inst { value: 0x16000053 },
20277 Opcode::FMULS => Inst { value: 0x10000053 },
20278 Opcode::FMVD => Inst { value: 0x22000053 },
20279 Opcode::FMVDX => Inst { value: 0xf2000053 },
20280 Opcode::FMVH => Inst { value: 0x24000053 },
20281 Opcode::FMVHX => Inst { value: 0xf4000053 },
20282 Opcode::FMVQ => Inst { value: 0x26000053 },
20283 Opcode::FMVS => Inst { value: 0x20000053 },
20284 Opcode::FMVSX => Inst { value: 0xf0000053 },
20285 Opcode::FMVWX => Inst { value: 0xf0000053 },
20286 Opcode::FMVXD => Inst { value: 0xe2000053 },
20287 Opcode::FMVXH => Inst { value: 0xe4000053 },
20288 Opcode::FMVXS => Inst { value: 0xe0000053 },
20289 Opcode::FMVXW => Inst { value: 0xe0000053 },
20290 Opcode::FMVHXD => Inst { value: 0xe2100053 },
20291 Opcode::FMVHXQ => Inst { value: 0xe6100053 },
20292 Opcode::FMVPDX => Inst { value: 0xb2000053 },
20293 Opcode::FMVPQX => Inst { value: 0xb6000053 },
20294 Opcode::FNEGD => Inst { value: 0x22001053 },
20295 Opcode::FNEGH => Inst { value: 0x24001053 },
20296 Opcode::FNEGQ => Inst { value: 0x26001053 },
20297 Opcode::FNEGS => Inst { value: 0x20001053 },
20298 Opcode::FNMADDD => Inst { value: 0x200004f },
20299 Opcode::FNMADDH => Inst { value: 0x400004f },
20300 Opcode::FNMADDQ => Inst { value: 0x600004f },
20301 Opcode::FNMADDS => Inst { value: 0x4f },
20302 Opcode::FNMSUBD => Inst { value: 0x200004b },
20303 Opcode::FNMSUBH => Inst { value: 0x400004b },
20304 Opcode::FNMSUBQ => Inst { value: 0x600004b },
20305 Opcode::FNMSUBS => Inst { value: 0x4b },
20306 Opcode::FRCSR => Inst { value: 0x302073 },
20307 Opcode::FRFLAGS => Inst { value: 0x102073 },
20308 Opcode::FROUNDD => Inst { value: 0x42400053 },
20309 Opcode::FROUNDH => Inst { value: 0x44400053 },
20310 Opcode::FROUNDQ => Inst { value: 0x46400053 },
20311 Opcode::FROUNDS => Inst { value: 0x40400053 },
20312 Opcode::FROUNDNXD => Inst { value: 0x42500053 },
20313 Opcode::FROUNDNXH => Inst { value: 0x44500053 },
20314 Opcode::FROUNDNXQ => Inst { value: 0x46500053 },
20315 Opcode::FROUNDNXS => Inst { value: 0x40500053 },
20316 Opcode::FRRM => Inst { value: 0x202073 },
20317 Opcode::FSCSR => Inst { value: 0x301073 },
20318 Opcode::FSD => Inst { value: 0x3027 },
20319 Opcode::FSFLAGS => Inst { value: 0x101073 },
20320 Opcode::FSFLAGSI => Inst { value: 0x105073 },
20321 Opcode::FSGNJD => Inst { value: 0x22000053 },
20322 Opcode::FSGNJH => Inst { value: 0x24000053 },
20323 Opcode::FSGNJQ => Inst { value: 0x26000053 },
20324 Opcode::FSGNJS => Inst { value: 0x20000053 },
20325 Opcode::FSGNJND => Inst { value: 0x22001053 },
20326 Opcode::FSGNJNH => Inst { value: 0x24001053 },
20327 Opcode::FSGNJNQ => Inst { value: 0x26001053 },
20328 Opcode::FSGNJNS => Inst { value: 0x20001053 },
20329 Opcode::FSGNJXD => Inst { value: 0x22002053 },
20330 Opcode::FSGNJXH => Inst { value: 0x24002053 },
20331 Opcode::FSGNJXQ => Inst { value: 0x26002053 },
20332 Opcode::FSGNJXS => Inst { value: 0x20002053 },
20333 Opcode::FSH => Inst { value: 0x1027 },
20334 Opcode::FSQ => Inst { value: 0x4027 },
20335 Opcode::FSQRTD => Inst { value: 0x5a000053 },
20336 Opcode::FSQRTH => Inst { value: 0x5c000053 },
20337 Opcode::FSQRTQ => Inst { value: 0x5e000053 },
20338 Opcode::FSQRTS => Inst { value: 0x58000053 },
20339 Opcode::FSRM => Inst { value: 0x201073 },
20340 Opcode::FSRMI => Inst { value: 0x205073 },
20341 Opcode::FSUBD => Inst { value: 0xa000053 },
20342 Opcode::FSUBH => Inst { value: 0xc000053 },
20343 Opcode::FSUBQ => Inst { value: 0xe000053 },
20344 Opcode::FSUBS => Inst { value: 0x8000053 },
20345 Opcode::FSW => Inst { value: 0x2027 },
20346 Opcode::HFENCEGVMA => Inst { value: 0x62000073 },
20347 Opcode::HFENCEVVMA => Inst { value: 0x22000073 },
20348 Opcode::HINVALGVMA => Inst { value: 0x66000073 },
20349 Opcode::HINVALVVMA => Inst { value: 0x26000073 },
20350 Opcode::HLVB => Inst { value: 0x60004073 },
20351 Opcode::HLVBU => Inst { value: 0x60104073 },
20352 Opcode::HLVD => Inst { value: 0x6c004073 },
20353 Opcode::HLVH => Inst { value: 0x64004073 },
20354 Opcode::HLVHU => Inst { value: 0x64104073 },
20355 Opcode::HLVW => Inst { value: 0x68004073 },
20356 Opcode::HLVWU => Inst { value: 0x68104073 },
20357 Opcode::HLVXHU => Inst { value: 0x64304073 },
20358 Opcode::HLVXWU => Inst { value: 0x68304073 },
20359 Opcode::HSVB => Inst { value: 0x62004073 },
20360 Opcode::HSVD => Inst { value: 0x6e004073 },
20361 Opcode::HSVH => Inst { value: 0x66004073 },
20362 Opcode::HSVW => Inst { value: 0x6a004073 },
20363 Opcode::J => Inst { value: 0x6f },
20364 Opcode::JAL => Inst { value: 0x6f },
20365 Opcode::JALPSEUDO => Inst { value: 0xef },
20366 Opcode::JALR => Inst { value: 0x67 },
20367 Opcode::JALRPSEUDO => Inst { value: 0xe7 },
20368 Opcode::JR => Inst { value: 0x67 },
20369 Opcode::LB => Inst { value: 0x3 },
20370 Opcode::LBU => Inst { value: 0x4003 },
20371 Opcode::LD => Inst { value: 0x3003 },
20372 Opcode::LH => Inst { value: 0x1003 },
20373 Opcode::LHU => Inst { value: 0x5003 },
20374 Opcode::LPAD => Inst { value: 0x17 },
20375 Opcode::LRD => Inst { value: 0x1000302f },
20376 Opcode::LRW => Inst { value: 0x1000202f },
20377 Opcode::LUI => Inst { value: 0x37 },
20378 Opcode::LW => Inst { value: 0x2003 },
20379 Opcode::LWU => Inst { value: 0x6003 },
20380 Opcode::MAX => Inst { value: 0xa006033 },
20381 Opcode::MAXU => Inst { value: 0xa007033 },
20382 Opcode::MIN => Inst { value: 0xa004033 },
20383 Opcode::MINU => Inst { value: 0xa005033 },
20384 Opcode::MNRET => Inst { value: 0x70200073 },
20385 Opcode::MOPR0 => Inst { value: 0x81c04073 },
20386 Opcode::MOPR1 => Inst { value: 0x81d04073 },
20387 Opcode::MOPR10 => Inst { value: 0x89e04073 },
20388 Opcode::MOPR11 => Inst { value: 0x89f04073 },
20389 Opcode::MOPR12 => Inst { value: 0x8dc04073 },
20390 Opcode::MOPR13 => Inst { value: 0x8dd04073 },
20391 Opcode::MOPR14 => Inst { value: 0x8de04073 },
20392 Opcode::MOPR15 => Inst { value: 0x8df04073 },
20393 Opcode::MOPR16 => Inst { value: 0xc1c04073 },
20394 Opcode::MOPR17 => Inst { value: 0xc1d04073 },
20395 Opcode::MOPR18 => Inst { value: 0xc1e04073 },
20396 Opcode::MOPR19 => Inst { value: 0xc1f04073 },
20397 Opcode::MOPR2 => Inst { value: 0x81e04073 },
20398 Opcode::MOPR20 => Inst { value: 0xc5c04073 },
20399 Opcode::MOPR21 => Inst { value: 0xc5d04073 },
20400 Opcode::MOPR22 => Inst { value: 0xc5e04073 },
20401 Opcode::MOPR23 => Inst { value: 0xc5f04073 },
20402 Opcode::MOPR24 => Inst { value: 0xc9c04073 },
20403 Opcode::MOPR25 => Inst { value: 0xc9d04073 },
20404 Opcode::MOPR26 => Inst { value: 0xc9e04073 },
20405 Opcode::MOPR27 => Inst { value: 0xc9f04073 },
20406 Opcode::MOPR28 => Inst { value: 0xcdc04073 },
20407 Opcode::MOPR29 => Inst { value: 0xcdd04073 },
20408 Opcode::MOPR3 => Inst { value: 0x81f04073 },
20409 Opcode::MOPR30 => Inst { value: 0xcde04073 },
20410 Opcode::MOPR31 => Inst { value: 0xcdf04073 },
20411 Opcode::MOPR4 => Inst { value: 0x85c04073 },
20412 Opcode::MOPR5 => Inst { value: 0x85d04073 },
20413 Opcode::MOPR6 => Inst { value: 0x85e04073 },
20414 Opcode::MOPR7 => Inst { value: 0x85f04073 },
20415 Opcode::MOPR8 => Inst { value: 0x89c04073 },
20416 Opcode::MOPR9 => Inst { value: 0x89d04073 },
20417 Opcode::MOPRN => Inst { value: 0x81c04073 },
20418 Opcode::MOPRR0 => Inst { value: 0x82004073 },
20419 Opcode::MOPRR1 => Inst { value: 0x86004073 },
20420 Opcode::MOPRR2 => Inst { value: 0x8a004073 },
20421 Opcode::MOPRR3 => Inst { value: 0x8e004073 },
20422 Opcode::MOPRR4 => Inst { value: 0xc2004073 },
20423 Opcode::MOPRR5 => Inst { value: 0xc6004073 },
20424 Opcode::MOPRR6 => Inst { value: 0xca004073 },
20425 Opcode::MOPRR7 => Inst { value: 0xce004073 },
20426 Opcode::MOPRRN => Inst { value: 0x82004073 },
20427 Opcode::MRET => Inst { value: 0x30200073 },
20428 Opcode::MUL => Inst { value: 0x2000033 },
20429 Opcode::MULH => Inst { value: 0x2001033 },
20430 Opcode::MULHSU => Inst { value: 0x2002033 },
20431 Opcode::MULHU => Inst { value: 0x2003033 },
20432 Opcode::MULW => Inst { value: 0x200003b },
20433 Opcode::MV => Inst { value: 0x13 },
20434 Opcode::NEG => Inst { value: 0x40000033 },
20435 Opcode::NOP => Inst { value: 0x13 },
20436 Opcode::NTLALL => Inst { value: 0x500033 },
20437 Opcode::NTLP1 => Inst { value: 0x200033 },
20438 Opcode::NTLPALL => Inst { value: 0x300033 },
20439 Opcode::NTLS1 => Inst { value: 0x400033 },
20440 Opcode::OR => Inst { value: 0x6033 },
20441 Opcode::ORCB => Inst { value: 0x28705013 },
20442 Opcode::ORI => Inst { value: 0x6013 },
20443 Opcode::ORN => Inst { value: 0x40006033 },
20444 Opcode::PACK => Inst { value: 0x8004033 },
20445 Opcode::PACKH => Inst { value: 0x8007033 },
20446 Opcode::PACKW => Inst { value: 0x800403b },
20447 Opcode::PAUSE => Inst { value: 0x100000f },
20448 Opcode::PREFETCHI => Inst { value: 0x6013 },
20449 Opcode::PREFETCHR => Inst { value: 0x106013 },
20450 Opcode::PREFETCHW => Inst { value: 0x306013 },
20451 Opcode::RDCYCLE => Inst { value: 0xc0002073 },
20452 Opcode::RDCYCLEH => Inst { value: 0xc8002073 },
20453 Opcode::RDINSTRET => Inst { value: 0xc0202073 },
20454 Opcode::RDINSTRETH => Inst { value: 0xc8202073 },
20455 Opcode::RDTIME => Inst { value: 0xc0102073 },
20456 Opcode::RDTIMEH => Inst { value: 0xc8102073 },
20457 Opcode::REM => Inst { value: 0x2006033 },
20458 Opcode::REMU => Inst { value: 0x2007033 },
20459 Opcode::REMUW => Inst { value: 0x200703b },
20460 Opcode::REMW => Inst { value: 0x200603b },
20461 Opcode::RET => Inst { value: 0x8067 },
20462 Opcode::REV8 => Inst { value: 0x6b805013 },
20463 Opcode::REV8RV32 => Inst { value: 0x69805013 },
20464 Opcode::ROL => Inst { value: 0x60001033 },
20465 Opcode::ROLW => Inst { value: 0x6000103b },
20466 Opcode::ROR => Inst { value: 0x60005033 },
20467 Opcode::RORI => Inst { value: 0x60005013 },
20468 Opcode::RORIRV32 => Inst { value: 0x60005013 },
20469 Opcode::RORIW => Inst { value: 0x6000501b },
20470 Opcode::RORW => Inst { value: 0x6000503b },
20471 Opcode::SB => Inst { value: 0x23 },
20472 Opcode::SBREAK => Inst { value: 0x100073 },
20473 Opcode::SCD => Inst { value: 0x1800302f },
20474 Opcode::SCW => Inst { value: 0x1800202f },
20475 Opcode::SCALL => Inst { value: 0x73 },
20476 Opcode::SCTRCLR => Inst { value: 0x10400073 },
20477 Opcode::SD => Inst { value: 0x3023 },
20478 Opcode::SEQZ => Inst { value: 0x103013 },
20479 Opcode::SEXTB => Inst { value: 0x60401013 },
20480 Opcode::SEXTH => Inst { value: 0x60501013 },
20481 Opcode::SEXTW => Inst { value: 0x1b },
20482 Opcode::SFENCEINVALIR => Inst { value: 0x18100073 },
20483 Opcode::SFENCEVMA => Inst { value: 0x12000073 },
20484 Opcode::SFENCEWINVAL => Inst { value: 0x18000073 },
20485 Opcode::SGTZ => Inst { value: 0x2033 },
20486 Opcode::SH => Inst { value: 0x1023 },
20487 Opcode::SH1ADD => Inst { value: 0x20002033 },
20488 Opcode::SH1ADDUW => Inst { value: 0x2000203b },
20489 Opcode::SH2ADD => Inst { value: 0x20004033 },
20490 Opcode::SH2ADDUW => Inst { value: 0x2000403b },
20491 Opcode::SH3ADD => Inst { value: 0x20006033 },
20492 Opcode::SH3ADDUW => Inst { value: 0x2000603b },
20493 Opcode::SHA256SIG0 => Inst { value: 0x10201013 },
20494 Opcode::SHA256SIG1 => Inst { value: 0x10301013 },
20495 Opcode::SHA256SUM0 => Inst { value: 0x10001013 },
20496 Opcode::SHA256SUM1 => Inst { value: 0x10101013 },
20497 Opcode::SHA512SIG0 => Inst { value: 0x10601013 },
20498 Opcode::SHA512SIG0H => Inst { value: 0x5c000033 },
20499 Opcode::SHA512SIG0L => Inst { value: 0x54000033 },
20500 Opcode::SHA512SIG1 => Inst { value: 0x10701013 },
20501 Opcode::SHA512SIG1H => Inst { value: 0x5e000033 },
20502 Opcode::SHA512SIG1L => Inst { value: 0x56000033 },
20503 Opcode::SHA512SUM0 => Inst { value: 0x10401013 },
20504 Opcode::SHA512SUM0R => Inst { value: 0x50000033 },
20505 Opcode::SHA512SUM1 => Inst { value: 0x10501013 },
20506 Opcode::SHA512SUM1R => Inst { value: 0x52000033 },
20507 Opcode::SINVALVMA => Inst { value: 0x16000073 },
20508 Opcode::SLL => Inst { value: 0x1033 },
20509 Opcode::SLLI => Inst { value: 0x1013 },
20510 Opcode::SLLIRV32 => Inst { value: 0x1013 },
20511 Opcode::SLLIUW => Inst { value: 0x800101b },
20512 Opcode::SLLIW => Inst { value: 0x101b },
20513 Opcode::SLLW => Inst { value: 0x103b },
20514 Opcode::SLT => Inst { value: 0x2033 },
20515 Opcode::SLTI => Inst { value: 0x2013 },
20516 Opcode::SLTIU => Inst { value: 0x3013 },
20517 Opcode::SLTU => Inst { value: 0x3033 },
20518 Opcode::SLTZ => Inst { value: 0x2033 },
20519 Opcode::SM3P0 => Inst { value: 0x10801013 },
20520 Opcode::SM3P1 => Inst { value: 0x10901013 },
20521 Opcode::SM4ED => Inst { value: 0x30000033 },
20522 Opcode::SM4KS => Inst { value: 0x34000033 },
20523 Opcode::SNEZ => Inst { value: 0x3033 },
20524 Opcode::SRA => Inst { value: 0x40005033 },
20525 Opcode::SRAI => Inst { value: 0x40005013 },
20526 Opcode::SRAIRV32 => Inst { value: 0x40005013 },
20527 Opcode::SRAIW => Inst { value: 0x4000501b },
20528 Opcode::SRAW => Inst { value: 0x4000503b },
20529 Opcode::SRET => Inst { value: 0x10200073 },
20530 Opcode::SRL => Inst { value: 0x5033 },
20531 Opcode::SRLI => Inst { value: 0x5013 },
20532 Opcode::SRLIRV32 => Inst { value: 0x5013 },
20533 Opcode::SRLIW => Inst { value: 0x501b },
20534 Opcode::SRLW => Inst { value: 0x503b },
20535 Opcode::SSAMOSWAPD => Inst { value: 0x4800302f },
20536 Opcode::SSAMOSWAPW => Inst { value: 0x4800202f },
20537 Opcode::SSPOPCHKX1 => Inst { value: 0xcdc0c073 },
20538 Opcode::SSPOPCHKX5 => Inst { value: 0xcdc2c073 },
20539 Opcode::SSPUSHX1 => Inst { value: 0xce104073 },
20540 Opcode::SSPUSHX5 => Inst { value: 0xce504073 },
20541 Opcode::SSRDP => Inst { value: 0xcdc04073 },
20542 Opcode::SUB => Inst { value: 0x40000033 },
20543 Opcode::SUBW => Inst { value: 0x4000003b },
20544 Opcode::SW => Inst { value: 0x2023 },
20545 Opcode::UNZIP => Inst { value: 0x8f05013 },
20546 Opcode::VAADDVV => Inst { value: 0x24002057 },
20547 Opcode::VAADDVX => Inst { value: 0x24006057 },
20548 Opcode::VAADDUVV => Inst { value: 0x20002057 },
20549 Opcode::VAADDUVX => Inst { value: 0x20006057 },
20550 Opcode::VADCVIM => Inst { value: 0x40003057 },
20551 Opcode::VADCVVM => Inst { value: 0x40000057 },
20552 Opcode::VADCVXM => Inst { value: 0x40004057 },
20553 Opcode::VADDVI => Inst { value: 0x3057 },
20554 Opcode::VADDVV => Inst { value: 0x57 },
20555 Opcode::VADDVX => Inst { value: 0x4057 },
20556 Opcode::VAESDFVS => Inst { value: 0xa600a077 },
20557 Opcode::VAESDFVV => Inst { value: 0xa200a077 },
20558 Opcode::VAESDMVS => Inst { value: 0xa6002077 },
20559 Opcode::VAESDMVV => Inst { value: 0xa2002077 },
20560 Opcode::VAESEFVS => Inst { value: 0xa601a077 },
20561 Opcode::VAESEFVV => Inst { value: 0xa201a077 },
20562 Opcode::VAESEMVS => Inst { value: 0xa6012077 },
20563 Opcode::VAESEMVV => Inst { value: 0xa2012077 },
20564 Opcode::VAESKF1VI => Inst { value: 0x8a002077 },
20565 Opcode::VAESKF2VI => Inst { value: 0xaa002077 },
20566 Opcode::VAESZVS => Inst { value: 0xa603a077 },
20567 Opcode::VANDVI => Inst { value: 0x24003057 },
20568 Opcode::VANDVV => Inst { value: 0x24000057 },
20569 Opcode::VANDVX => Inst { value: 0x24004057 },
20570 Opcode::VANDNVV => Inst { value: 0x4000057 },
20571 Opcode::VANDNVX => Inst { value: 0x4004057 },
20572 Opcode::VASUBVV => Inst { value: 0x2c002057 },
20573 Opcode::VASUBVX => Inst { value: 0x2c006057 },
20574 Opcode::VASUBUVV => Inst { value: 0x28002057 },
20575 Opcode::VASUBUVX => Inst { value: 0x28006057 },
20576 Opcode::VBREV8V => Inst { value: 0x48042057 },
20577 Opcode::VBREVV => Inst { value: 0x48052057 },
20578 Opcode::VCLMULVV => Inst { value: 0x30002057 },
20579 Opcode::VCLMULVX => Inst { value: 0x30006057 },
20580 Opcode::VCLMULHVV => Inst { value: 0x34002057 },
20581 Opcode::VCLMULHVX => Inst { value: 0x34006057 },
20582 Opcode::VCLZV => Inst { value: 0x48062057 },
20583 Opcode::VCOMPRESSVM => Inst { value: 0x5e002057 },
20584 Opcode::VCPOPM => Inst { value: 0x40082057 },
20585 Opcode::VCPOPV => Inst { value: 0x48072057 },
20586 Opcode::VCTZV => Inst { value: 0x4806a057 },
20587 Opcode::VDIVVV => Inst { value: 0x84002057 },
20588 Opcode::VDIVVX => Inst { value: 0x84006057 },
20589 Opcode::VDIVUVV => Inst { value: 0x80002057 },
20590 Opcode::VDIVUVX => Inst { value: 0x80006057 },
20591 Opcode::VFADDVF => Inst { value: 0x5057 },
20592 Opcode::VFADDVV => Inst { value: 0x1057 },
20593 Opcode::VFCLASSV => Inst { value: 0x4c081057 },
20594 Opcode::VFCVTFXV => Inst { value: 0x48019057 },
20595 Opcode::VFCVTFXUV => Inst { value: 0x48011057 },
20596 Opcode::VFCVTRTZXFV => Inst { value: 0x48039057 },
20597 Opcode::VFCVTRTZXUFV => Inst { value: 0x48031057 },
20598 Opcode::VFCVTXFV => Inst { value: 0x48009057 },
20599 Opcode::VFCVTXUFV => Inst { value: 0x48001057 },
20600 Opcode::VFDIVVF => Inst { value: 0x80005057 },
20601 Opcode::VFDIVVV => Inst { value: 0x80001057 },
20602 Opcode::VFIRSTM => Inst { value: 0x4008a057 },
20603 Opcode::VFMACCVF => Inst { value: 0xb0005057 },
20604 Opcode::VFMACCVV => Inst { value: 0xb0001057 },
20605 Opcode::VFMADDVF => Inst { value: 0xa0005057 },
20606 Opcode::VFMADDVV => Inst { value: 0xa0001057 },
20607 Opcode::VFMAXVF => Inst { value: 0x18005057 },
20608 Opcode::VFMAXVV => Inst { value: 0x18001057 },
20609 Opcode::VFMERGEVFM => Inst { value: 0x5c005057 },
20610 Opcode::VFMINVF => Inst { value: 0x10005057 },
20611 Opcode::VFMINVV => Inst { value: 0x10001057 },
20612 Opcode::VFMSACVF => Inst { value: 0xb8005057 },
20613 Opcode::VFMSACVV => Inst { value: 0xb8001057 },
20614 Opcode::VFMSUBVF => Inst { value: 0xa8005057 },
20615 Opcode::VFMSUBVV => Inst { value: 0xa8001057 },
20616 Opcode::VFMULVF => Inst { value: 0x90005057 },
20617 Opcode::VFMULVV => Inst { value: 0x90001057 },
20618 Opcode::VFMVFS => Inst { value: 0x42001057 },
20619 Opcode::VFMVSF => Inst { value: 0x42005057 },
20620 Opcode::VFMVVF => Inst { value: 0x5e005057 },
20621 Opcode::VFNCVTFFW => Inst { value: 0x480a1057 },
20622 Opcode::VFNCVTFXW => Inst { value: 0x48099057 },
20623 Opcode::VFNCVTFXUW => Inst { value: 0x48091057 },
20624 Opcode::VFNCVTRODFFW => Inst { value: 0x480a9057 },
20625 Opcode::VFNCVTRTZXFW => Inst { value: 0x480b9057 },
20626 Opcode::VFNCVTRTZXUFW => Inst { value: 0x480b1057 },
20627 Opcode::VFNCVTXFW => Inst { value: 0x48089057 },
20628 Opcode::VFNCVTXUFW => Inst { value: 0x48081057 },
20629 Opcode::VFNCVTBF16FFW => Inst { value: 0x480e9057 },
20630 Opcode::VFNMACCVF => Inst { value: 0xb4005057 },
20631 Opcode::VFNMACCVV => Inst { value: 0xb4001057 },
20632 Opcode::VFNMADDVF => Inst { value: 0xa4005057 },
20633 Opcode::VFNMADDVV => Inst { value: 0xa4001057 },
20634 Opcode::VFNMSACVF => Inst { value: 0xbc005057 },
20635 Opcode::VFNMSACVV => Inst { value: 0xbc001057 },
20636 Opcode::VFNMSUBVF => Inst { value: 0xac005057 },
20637 Opcode::VFNMSUBVV => Inst { value: 0xac001057 },
20638 Opcode::VFRDIVVF => Inst { value: 0x84005057 },
20639 Opcode::VFREC7V => Inst { value: 0x4c029057 },
20640 Opcode::VFREDMAXVS => Inst { value: 0x1c001057 },
20641 Opcode::VFREDMINVS => Inst { value: 0x14001057 },
20642 Opcode::VFREDOSUMVS => Inst { value: 0xc001057 },
20643 Opcode::VFREDSUMVS => Inst { value: 0x4001057 },
20644 Opcode::VFREDUSUMVS => Inst { value: 0x4001057 },
20645 Opcode::VFRSQRT7V => Inst { value: 0x4c021057 },
20646 Opcode::VFRSUBVF => Inst { value: 0x9c005057 },
20647 Opcode::VFSGNJVF => Inst { value: 0x20005057 },
20648 Opcode::VFSGNJVV => Inst { value: 0x20001057 },
20649 Opcode::VFSGNJNVF => Inst { value: 0x24005057 },
20650 Opcode::VFSGNJNVV => Inst { value: 0x24001057 },
20651 Opcode::VFSGNJXVF => Inst { value: 0x28005057 },
20652 Opcode::VFSGNJXVV => Inst { value: 0x28001057 },
20653 Opcode::VFSLIDE1DOWNVF => Inst { value: 0x3c005057 },
20654 Opcode::VFSLIDE1UPVF => Inst { value: 0x38005057 },
20655 Opcode::VFSQRTV => Inst { value: 0x4c001057 },
20656 Opcode::VFSUBVF => Inst { value: 0x8005057 },
20657 Opcode::VFSUBVV => Inst { value: 0x8001057 },
20658 Opcode::VFWADDVF => Inst { value: 0xc0005057 },
20659 Opcode::VFWADDVV => Inst { value: 0xc0001057 },
20660 Opcode::VFWADDWF => Inst { value: 0xd0005057 },
20661 Opcode::VFWADDWV => Inst { value: 0xd0001057 },
20662 Opcode::VFWCVTFFV => Inst { value: 0x48061057 },
20663 Opcode::VFWCVTFXV => Inst { value: 0x48059057 },
20664 Opcode::VFWCVTFXUV => Inst { value: 0x48051057 },
20665 Opcode::VFWCVTRTZXFV => Inst { value: 0x48079057 },
20666 Opcode::VFWCVTRTZXUFV => Inst { value: 0x48071057 },
20667 Opcode::VFWCVTXFV => Inst { value: 0x48049057 },
20668 Opcode::VFWCVTXUFV => Inst { value: 0x48041057 },
20669 Opcode::VFWCVTBF16FFV => Inst { value: 0x48069057 },
20670 Opcode::VFWMACCVF => Inst { value: 0xf0005057 },
20671 Opcode::VFWMACCVV => Inst { value: 0xf0001057 },
20672 Opcode::VFWMACCBF16VF => Inst { value: 0xec005057 },
20673 Opcode::VFWMACCBF16VV => Inst { value: 0xec001057 },
20674 Opcode::VFWMSACVF => Inst { value: 0xf8005057 },
20675 Opcode::VFWMSACVV => Inst { value: 0xf8001057 },
20676 Opcode::VFWMULVF => Inst { value: 0xe0005057 },
20677 Opcode::VFWMULVV => Inst { value: 0xe0001057 },
20678 Opcode::VFWNMACCVF => Inst { value: 0xf4005057 },
20679 Opcode::VFWNMACCVV => Inst { value: 0xf4001057 },
20680 Opcode::VFWNMSACVF => Inst { value: 0xfc005057 },
20681 Opcode::VFWNMSACVV => Inst { value: 0xfc001057 },
20682 Opcode::VFWREDOSUMVS => Inst { value: 0xcc001057 },
20683 Opcode::VFWREDSUMVS => Inst { value: 0xc4001057 },
20684 Opcode::VFWREDUSUMVS => Inst { value: 0xc4001057 },
20685 Opcode::VFWSUBVF => Inst { value: 0xc8005057 },
20686 Opcode::VFWSUBVV => Inst { value: 0xc8001057 },
20687 Opcode::VFWSUBWF => Inst { value: 0xd8005057 },
20688 Opcode::VFWSUBWV => Inst { value: 0xd8001057 },
20689 Opcode::VGHSHVV => Inst { value: 0xb2002077 },
20690 Opcode::VGMULVV => Inst { value: 0xa208a077 },
20691 Opcode::VIDV => Inst { value: 0x5008a057 },
20692 Opcode::VIOTAM => Inst { value: 0x50082057 },
20693 Opcode::VL1RV => Inst { value: 0x2800007 },
20694 Opcode::VL1RE16V => Inst { value: 0x2805007 },
20695 Opcode::VL1RE32V => Inst { value: 0x2806007 },
20696 Opcode::VL1RE64V => Inst { value: 0x2807007 },
20697 Opcode::VL1RE8V => Inst { value: 0x2800007 },
20698 Opcode::VL2RV => Inst { value: 0x22800007 },
20699 Opcode::VL2RE16V => Inst { value: 0x22805007 },
20700 Opcode::VL2RE32V => Inst { value: 0x22806007 },
20701 Opcode::VL2RE64V => Inst { value: 0x22807007 },
20702 Opcode::VL2RE8V => Inst { value: 0x22800007 },
20703 Opcode::VL4RV => Inst { value: 0x62800007 },
20704 Opcode::VL4RE16V => Inst { value: 0x62805007 },
20705 Opcode::VL4RE32V => Inst { value: 0x62806007 },
20706 Opcode::VL4RE64V => Inst { value: 0x62807007 },
20707 Opcode::VL4RE8V => Inst { value: 0x62800007 },
20708 Opcode::VL8RV => Inst { value: 0xe2800007 },
20709 Opcode::VL8RE16V => Inst { value: 0xe2805007 },
20710 Opcode::VL8RE32V => Inst { value: 0xe2806007 },
20711 Opcode::VL8RE64V => Inst { value: 0xe2807007 },
20712 Opcode::VL8RE8V => Inst { value: 0xe2800007 },
20713 Opcode::VLE16V => Inst { value: 0x5007 },
20714 Opcode::VLE16FFV => Inst { value: 0x1005007 },
20715 Opcode::VLE1V => Inst { value: 0x2b00007 },
20716 Opcode::VLE32V => Inst { value: 0x6007 },
20717 Opcode::VLE32FFV => Inst { value: 0x1006007 },
20718 Opcode::VLE64V => Inst { value: 0x7007 },
20719 Opcode::VLE64FFV => Inst { value: 0x1007007 },
20720 Opcode::VLE8V => Inst { value: 0x7 },
20721 Opcode::VLE8FFV => Inst { value: 0x1000007 },
20722 Opcode::VLMV => Inst { value: 0x2b00007 },
20723 Opcode::VLOXEI16V => Inst { value: 0xc005007 },
20724 Opcode::VLOXEI32V => Inst { value: 0xc006007 },
20725 Opcode::VLOXEI64V => Inst { value: 0xc007007 },
20726 Opcode::VLOXEI8V => Inst { value: 0xc000007 },
20727 Opcode::VLSE16V => Inst { value: 0x8005007 },
20728 Opcode::VLSE32V => Inst { value: 0x8006007 },
20729 Opcode::VLSE64V => Inst { value: 0x8007007 },
20730 Opcode::VLSE8V => Inst { value: 0x8000007 },
20731 Opcode::VLUXEI16V => Inst { value: 0x4005007 },
20732 Opcode::VLUXEI32V => Inst { value: 0x4006007 },
20733 Opcode::VLUXEI64V => Inst { value: 0x4007007 },
20734 Opcode::VLUXEI8V => Inst { value: 0x4000007 },
20735 Opcode::VMACCVV => Inst { value: 0xb4002057 },
20736 Opcode::VMACCVX => Inst { value: 0xb4006057 },
20737 Opcode::VMADCVI => Inst { value: 0x46003057 },
20738 Opcode::VMADCVIM => Inst { value: 0x44003057 },
20739 Opcode::VMADCVV => Inst { value: 0x46000057 },
20740 Opcode::VMADCVVM => Inst { value: 0x44000057 },
20741 Opcode::VMADCVX => Inst { value: 0x46004057 },
20742 Opcode::VMADCVXM => Inst { value: 0x44004057 },
20743 Opcode::VMADDVV => Inst { value: 0xa4002057 },
20744 Opcode::VMADDVX => Inst { value: 0xa4006057 },
20745 Opcode::VMANDMM => Inst { value: 0x66002057 },
20746 Opcode::VMANDNMM => Inst { value: 0x62002057 },
20747 Opcode::VMANDNOTMM => Inst { value: 0x60002057 },
20748 Opcode::VMAXVV => Inst { value: 0x1c000057 },
20749 Opcode::VMAXVX => Inst { value: 0x1c004057 },
20750 Opcode::VMAXUVV => Inst { value: 0x18000057 },
20751 Opcode::VMAXUVX => Inst { value: 0x18004057 },
20752 Opcode::VMERGEVIM => Inst { value: 0x5c003057 },
20753 Opcode::VMERGEVVM => Inst { value: 0x5c000057 },
20754 Opcode::VMERGEVXM => Inst { value: 0x5c004057 },
20755 Opcode::VMFEQVF => Inst { value: 0x60005057 },
20756 Opcode::VMFEQVV => Inst { value: 0x60001057 },
20757 Opcode::VMFGEVF => Inst { value: 0x7c005057 },
20758 Opcode::VMFGTVF => Inst { value: 0x74005057 },
20759 Opcode::VMFLEVF => Inst { value: 0x64005057 },
20760 Opcode::VMFLEVV => Inst { value: 0x64001057 },
20761 Opcode::VMFLTVF => Inst { value: 0x6c005057 },
20762 Opcode::VMFLTVV => Inst { value: 0x6c001057 },
20763 Opcode::VMFNEVF => Inst { value: 0x70005057 },
20764 Opcode::VMFNEVV => Inst { value: 0x70001057 },
20765 Opcode::VMINVV => Inst { value: 0x14000057 },
20766 Opcode::VMINVX => Inst { value: 0x14004057 },
20767 Opcode::VMINUVV => Inst { value: 0x10000057 },
20768 Opcode::VMINUVX => Inst { value: 0x10004057 },
20769 Opcode::VMNANDMM => Inst { value: 0x76002057 },
20770 Opcode::VMNORMM => Inst { value: 0x7a002057 },
20771 Opcode::VMORMM => Inst { value: 0x6a002057 },
20772 Opcode::VMORNMM => Inst { value: 0x72002057 },
20773 Opcode::VMORNOTMM => Inst { value: 0x70002057 },
20774 Opcode::VMSBCVV => Inst { value: 0x4e000057 },
20775 Opcode::VMSBCVVM => Inst { value: 0x4c000057 },
20776 Opcode::VMSBCVX => Inst { value: 0x4e004057 },
20777 Opcode::VMSBCVXM => Inst { value: 0x4c004057 },
20778 Opcode::VMSBFM => Inst { value: 0x5000a057 },
20779 Opcode::VMSEQVI => Inst { value: 0x60003057 },
20780 Opcode::VMSEQVV => Inst { value: 0x60000057 },
20781 Opcode::VMSEQVX => Inst { value: 0x60004057 },
20782 Opcode::VMSGTVI => Inst { value: 0x7c003057 },
20783 Opcode::VMSGTVX => Inst { value: 0x7c004057 },
20784 Opcode::VMSGTUVI => Inst { value: 0x78003057 },
20785 Opcode::VMSGTUVX => Inst { value: 0x78004057 },
20786 Opcode::VMSIFM => Inst { value: 0x5001a057 },
20787 Opcode::VMSLEVI => Inst { value: 0x74003057 },
20788 Opcode::VMSLEVV => Inst { value: 0x74000057 },
20789 Opcode::VMSLEVX => Inst { value: 0x74004057 },
20790 Opcode::VMSLEUVI => Inst { value: 0x70003057 },
20791 Opcode::VMSLEUVV => Inst { value: 0x70000057 },
20792 Opcode::VMSLEUVX => Inst { value: 0x70004057 },
20793 Opcode::VMSLTVV => Inst { value: 0x6c000057 },
20794 Opcode::VMSLTVX => Inst { value: 0x6c004057 },
20795 Opcode::VMSLTUVV => Inst { value: 0x68000057 },
20796 Opcode::VMSLTUVX => Inst { value: 0x68004057 },
20797 Opcode::VMSNEVI => Inst { value: 0x64003057 },
20798 Opcode::VMSNEVV => Inst { value: 0x64000057 },
20799 Opcode::VMSNEVX => Inst { value: 0x64004057 },
20800 Opcode::VMSOFM => Inst { value: 0x50012057 },
20801 Opcode::VMULVV => Inst { value: 0x94002057 },
20802 Opcode::VMULVX => Inst { value: 0x94006057 },
20803 Opcode::VMULHVV => Inst { value: 0x9c002057 },
20804 Opcode::VMULHVX => Inst { value: 0x9c006057 },
20805 Opcode::VMULHSUVV => Inst { value: 0x98002057 },
20806 Opcode::VMULHSUVX => Inst { value: 0x98006057 },
20807 Opcode::VMULHUVV => Inst { value: 0x90002057 },
20808 Opcode::VMULHUVX => Inst { value: 0x90006057 },
20809 Opcode::VMV1RV => Inst { value: 0x9e003057 },
20810 Opcode::VMV2RV => Inst { value: 0x9e00b057 },
20811 Opcode::VMV4RV => Inst { value: 0x9e01b057 },
20812 Opcode::VMV8RV => Inst { value: 0x9e03b057 },
20813 Opcode::VMVSX => Inst { value: 0x42006057 },
20814 Opcode::VMVVI => Inst { value: 0x5e003057 },
20815 Opcode::VMVVV => Inst { value: 0x5e000057 },
20816 Opcode::VMVVX => Inst { value: 0x5e004057 },
20817 Opcode::VMVXS => Inst { value: 0x42002057 },
20818 Opcode::VMXNORMM => Inst { value: 0x7e002057 },
20819 Opcode::VMXORMM => Inst { value: 0x6e002057 },
20820 Opcode::VNCLIPWI => Inst { value: 0xbc003057 },
20821 Opcode::VNCLIPWV => Inst { value: 0xbc000057 },
20822 Opcode::VNCLIPWX => Inst { value: 0xbc004057 },
20823 Opcode::VNCLIPUWI => Inst { value: 0xb8003057 },
20824 Opcode::VNCLIPUWV => Inst { value: 0xb8000057 },
20825 Opcode::VNCLIPUWX => Inst { value: 0xb8004057 },
20826 Opcode::VNMSACVV => Inst { value: 0xbc002057 },
20827 Opcode::VNMSACVX => Inst { value: 0xbc006057 },
20828 Opcode::VNMSUBVV => Inst { value: 0xac002057 },
20829 Opcode::VNMSUBVX => Inst { value: 0xac006057 },
20830 Opcode::VNSRAWI => Inst { value: 0xb4003057 },
20831 Opcode::VNSRAWV => Inst { value: 0xb4000057 },
20832 Opcode::VNSRAWX => Inst { value: 0xb4004057 },
20833 Opcode::VNSRLWI => Inst { value: 0xb0003057 },
20834 Opcode::VNSRLWV => Inst { value: 0xb0000057 },
20835 Opcode::VNSRLWX => Inst { value: 0xb0004057 },
20836 Opcode::VORVI => Inst { value: 0x28003057 },
20837 Opcode::VORVV => Inst { value: 0x28000057 },
20838 Opcode::VORVX => Inst { value: 0x28004057 },
20839 Opcode::VPOPCM => Inst { value: 0x40082057 },
20840 Opcode::VREDANDVS => Inst { value: 0x4002057 },
20841 Opcode::VREDMAXVS => Inst { value: 0x1c002057 },
20842 Opcode::VREDMAXUVS => Inst { value: 0x18002057 },
20843 Opcode::VREDMINVS => Inst { value: 0x14002057 },
20844 Opcode::VREDMINUVS => Inst { value: 0x10002057 },
20845 Opcode::VREDORVS => Inst { value: 0x8002057 },
20846 Opcode::VREDSUMVS => Inst { value: 0x2057 },
20847 Opcode::VREDXORVS => Inst { value: 0xc002057 },
20848 Opcode::VREMVV => Inst { value: 0x8c002057 },
20849 Opcode::VREMVX => Inst { value: 0x8c006057 },
20850 Opcode::VREMUVV => Inst { value: 0x88002057 },
20851 Opcode::VREMUVX => Inst { value: 0x88006057 },
20852 Opcode::VREV8V => Inst { value: 0x4804a057 },
20853 Opcode::VRGATHERVI => Inst { value: 0x30003057 },
20854 Opcode::VRGATHERVV => Inst { value: 0x30000057 },
20855 Opcode::VRGATHERVX => Inst { value: 0x30004057 },
20856 Opcode::VRGATHEREI16VV => Inst { value: 0x38000057 },
20857 Opcode::VROLVV => Inst { value: 0x54000057 },
20858 Opcode::VROLVX => Inst { value: 0x54004057 },
20859 Opcode::VRORVI => Inst { value: 0x50003057 },
20860 Opcode::VRORVV => Inst { value: 0x50000057 },
20861 Opcode::VRORVX => Inst { value: 0x50004057 },
20862 Opcode::VRSUBVI => Inst { value: 0xc003057 },
20863 Opcode::VRSUBVX => Inst { value: 0xc004057 },
20864 Opcode::VS1RV => Inst { value: 0x2800027 },
20865 Opcode::VS2RV => Inst { value: 0x22800027 },
20866 Opcode::VS4RV => Inst { value: 0x62800027 },
20867 Opcode::VS8RV => Inst { value: 0xe2800027 },
20868 Opcode::VSADDVI => Inst { value: 0x84003057 },
20869 Opcode::VSADDVV => Inst { value: 0x84000057 },
20870 Opcode::VSADDVX => Inst { value: 0x84004057 },
20871 Opcode::VSADDUVI => Inst { value: 0x80003057 },
20872 Opcode::VSADDUVV => Inst { value: 0x80000057 },
20873 Opcode::VSADDUVX => Inst { value: 0x80004057 },
20874 Opcode::VSBCVVM => Inst { value: 0x48000057 },
20875 Opcode::VSBCVXM => Inst { value: 0x48004057 },
20876 Opcode::VSE16V => Inst { value: 0x5027 },
20877 Opcode::VSE1V => Inst { value: 0x2b00027 },
20878 Opcode::VSE32V => Inst { value: 0x6027 },
20879 Opcode::VSE64V => Inst { value: 0x7027 },
20880 Opcode::VSE8V => Inst { value: 0x27 },
20881 Opcode::VSETIVLI => Inst { value: 0xc0007057 },
20882 Opcode::VSETVL => Inst { value: 0x80007057 },
20883 Opcode::VSETVLI => Inst { value: 0x7057 },
20884 Opcode::VSEXTVF2 => Inst { value: 0x4803a057 },
20885 Opcode::VSEXTVF4 => Inst { value: 0x4802a057 },
20886 Opcode::VSEXTVF8 => Inst { value: 0x4801a057 },
20887 Opcode::VSHA2CHVV => Inst { value: 0xba002077 },
20888 Opcode::VSHA2CLVV => Inst { value: 0xbe002077 },
20889 Opcode::VSHA2MSVV => Inst { value: 0xb6002077 },
20890 Opcode::VSLIDE1DOWNVX => Inst { value: 0x3c006057 },
20891 Opcode::VSLIDE1UPVX => Inst { value: 0x38006057 },
20892 Opcode::VSLIDEDOWNVI => Inst { value: 0x3c003057 },
20893 Opcode::VSLIDEDOWNVX => Inst { value: 0x3c004057 },
20894 Opcode::VSLIDEUPVI => Inst { value: 0x38003057 },
20895 Opcode::VSLIDEUPVX => Inst { value: 0x38004057 },
20896 Opcode::VSLLVI => Inst { value: 0x94003057 },
20897 Opcode::VSLLVV => Inst { value: 0x94000057 },
20898 Opcode::VSLLVX => Inst { value: 0x94004057 },
20899 Opcode::VSM3CVI => Inst { value: 0xae002077 },
20900 Opcode::VSM3MEVV => Inst { value: 0x82002077 },
20901 Opcode::VSM4KVI => Inst { value: 0x86002077 },
20902 Opcode::VSM4RVS => Inst { value: 0xa6082077 },
20903 Opcode::VSM4RVV => Inst { value: 0xa2082077 },
20904 Opcode::VSMV => Inst { value: 0x2b00027 },
20905 Opcode::VSMULVV => Inst { value: 0x9c000057 },
20906 Opcode::VSMULVX => Inst { value: 0x9c004057 },
20907 Opcode::VSOXEI16V => Inst { value: 0xc005027 },
20908 Opcode::VSOXEI32V => Inst { value: 0xc006027 },
20909 Opcode::VSOXEI64V => Inst { value: 0xc007027 },
20910 Opcode::VSOXEI8V => Inst { value: 0xc000027 },
20911 Opcode::VSRAVI => Inst { value: 0xa4003057 },
20912 Opcode::VSRAVV => Inst { value: 0xa4000057 },
20913 Opcode::VSRAVX => Inst { value: 0xa4004057 },
20914 Opcode::VSRLVI => Inst { value: 0xa0003057 },
20915 Opcode::VSRLVV => Inst { value: 0xa0000057 },
20916 Opcode::VSRLVX => Inst { value: 0xa0004057 },
20917 Opcode::VSSE16V => Inst { value: 0x8005027 },
20918 Opcode::VSSE32V => Inst { value: 0x8006027 },
20919 Opcode::VSSE64V => Inst { value: 0x8007027 },
20920 Opcode::VSSE8V => Inst { value: 0x8000027 },
20921 Opcode::VSSRAVI => Inst { value: 0xac003057 },
20922 Opcode::VSSRAVV => Inst { value: 0xac000057 },
20923 Opcode::VSSRAVX => Inst { value: 0xac004057 },
20924 Opcode::VSSRLVI => Inst { value: 0xa8003057 },
20925 Opcode::VSSRLVV => Inst { value: 0xa8000057 },
20926 Opcode::VSSRLVX => Inst { value: 0xa8004057 },
20927 Opcode::VSSUBVV => Inst { value: 0x8c000057 },
20928 Opcode::VSSUBVX => Inst { value: 0x8c004057 },
20929 Opcode::VSSUBUVV => Inst { value: 0x88000057 },
20930 Opcode::VSSUBUVX => Inst { value: 0x88004057 },
20931 Opcode::VSUBVV => Inst { value: 0x8000057 },
20932 Opcode::VSUBVX => Inst { value: 0x8004057 },
20933 Opcode::VSUXEI16V => Inst { value: 0x4005027 },
20934 Opcode::VSUXEI32V => Inst { value: 0x4006027 },
20935 Opcode::VSUXEI64V => Inst { value: 0x4007027 },
20936 Opcode::VSUXEI8V => Inst { value: 0x4000027 },
20937 Opcode::VWADDVV => Inst { value: 0xc4002057 },
20938 Opcode::VWADDVX => Inst { value: 0xc4006057 },
20939 Opcode::VWADDWV => Inst { value: 0xd4002057 },
20940 Opcode::VWADDWX => Inst { value: 0xd4006057 },
20941 Opcode::VWADDUVV => Inst { value: 0xc0002057 },
20942 Opcode::VWADDUVX => Inst { value: 0xc0006057 },
20943 Opcode::VWADDUWV => Inst { value: 0xd0002057 },
20944 Opcode::VWADDUWX => Inst { value: 0xd0006057 },
20945 Opcode::VWMACCVV => Inst { value: 0xf4002057 },
20946 Opcode::VWMACCVX => Inst { value: 0xf4006057 },
20947 Opcode::VWMACCSUVV => Inst { value: 0xfc002057 },
20948 Opcode::VWMACCSUVX => Inst { value: 0xfc006057 },
20949 Opcode::VWMACCUVV => Inst { value: 0xf0002057 },
20950 Opcode::VWMACCUVX => Inst { value: 0xf0006057 },
20951 Opcode::VWMACCUSVX => Inst { value: 0xf8006057 },
20952 Opcode::VWMULVV => Inst { value: 0xec002057 },
20953 Opcode::VWMULVX => Inst { value: 0xec006057 },
20954 Opcode::VWMULSUVV => Inst { value: 0xe8002057 },
20955 Opcode::VWMULSUVX => Inst { value: 0xe8006057 },
20956 Opcode::VWMULUVV => Inst { value: 0xe0002057 },
20957 Opcode::VWMULUVX => Inst { value: 0xe0006057 },
20958 Opcode::VWREDSUMVS => Inst { value: 0xc4000057 },
20959 Opcode::VWREDSUMUVS => Inst { value: 0xc0000057 },
20960 Opcode::VWSLLVI => Inst { value: 0xd4003057 },
20961 Opcode::VWSLLVV => Inst { value: 0xd4000057 },
20962 Opcode::VWSLLVX => Inst { value: 0xd4004057 },
20963 Opcode::VWSUBVV => Inst { value: 0xcc002057 },
20964 Opcode::VWSUBVX => Inst { value: 0xcc006057 },
20965 Opcode::VWSUBWV => Inst { value: 0xdc002057 },
20966 Opcode::VWSUBWX => Inst { value: 0xdc006057 },
20967 Opcode::VWSUBUVV => Inst { value: 0xc8002057 },
20968 Opcode::VWSUBUVX => Inst { value: 0xc8006057 },
20969 Opcode::VWSUBUWV => Inst { value: 0xd8002057 },
20970 Opcode::VWSUBUWX => Inst { value: 0xd8006057 },
20971 Opcode::VXORVI => Inst { value: 0x2c003057 },
20972 Opcode::VXORVV => Inst { value: 0x2c000057 },
20973 Opcode::VXORVX => Inst { value: 0x2c004057 },
20974 Opcode::VZEXTVF2 => Inst { value: 0x48032057 },
20975 Opcode::VZEXTVF4 => Inst { value: 0x48022057 },
20976 Opcode::VZEXTVF8 => Inst { value: 0x48012057 },
20977 Opcode::WFI => Inst { value: 0x10500073 },
20978 Opcode::WRSNTO => Inst { value: 0xd00073 },
20979 Opcode::WRSSTO => Inst { value: 0x1d00073 },
20980 Opcode::XNOR => Inst { value: 0x40004033 },
20981 Opcode::XOR => Inst { value: 0x4033 },
20982 Opcode::XORI => Inst { value: 0x4013 },
20983 Opcode::XPERM4 => Inst { value: 0x28002033 },
20984 Opcode::XPERM8 => Inst { value: 0x28004033 },
20985 Opcode::ZEXTB => Inst { value: 0xff07013 },
20986 Opcode::ZEXTH => Inst { value: 0x800403b },
20987 Opcode::ZEXTHRV32 => Inst { value: 0x8004033 },
20988 Opcode::ZEXTW => Inst { value: 0x800003b },
20989 Opcode::ZIP => Inst { value: 0x8f01013 },
20990 }
20991 }
20992}
20993
20994#[derive(Copy, Clone, PartialEq, Eq, Debug, Hash)]
20995pub enum Encoding {
20996 Bimm12HiRs1Bimm12lo,
20997 Bimm12HiRs1Rs2Bimm12lo,
20998 Bimm12HiRs2Bimm12lo,
20999 Bimm12HiRs2Rs1Bimm12lo,
21000 CImm12,
21001 CIndex,
21002 CMopT,
21003 CNzimm10hiCNzimm10lo,
21004 CNzimm6hiCNzimm6lo,
21005 CRlistCSpimm,
21006 CRs1N0,
21007 CRs2CUimm8spS,
21008 CRs2CUimm9spS,
21009 CSreg1CSreg2,
21010 CsrZimm5,
21011 Empty,
21012 FmPredSuccRs1Rd,
21013 Imm12HiRs1Rs2Imm12lo,
21014 Imm12Rs1Rd,
21015 Imm20,
21016 Jimm20,
21017 MopRT30MopRT2726MopRT2120RdRs1,
21018 MopRrT30MopRrT2726RdRs1Rs2,
21019 NfVmRs1Vd,
21020 NfVmRs1Vs3,
21021 NfVmRs2Rs1Vd,
21022 NfVmRs2Rs1Vs3,
21023 NfVmVs2Rs1Vd,
21024 NfVmVs2Rs1Vs3,
21025 Rd,
21026 RdCUimm8sphiCUimm8splo,
21027 RdCUimm9sphiCUimm9splo,
21028 RdCsr,
21029 RdCsrZimm5,
21030 RdImm20,
21031 RdJimm20,
21032 RdN0,
21033 RdN0CImm6loCImm6hi,
21034 RdN0CRs2N0,
21035 RdN0CUimm8sphiCUimm8splo,
21036 RdN0CUimm9sphiCUimm9splo,
21037 RdN2CNzimm18hiCNzimm18lo,
21038 RdPCNzuimm10,
21039 RdPRs1PCUimm1,
21040 RdPRs1PCUimm2,
21041 RdPRs1PCUimm7loCUimm7hi,
21042 RdPRs1PCUimm8loCUimm8hi,
21043 RdRs1,
21044 RdRs1AqRl,
21045 RdRs1Csr,
21046 RdRs1Imm12,
21047 RdRs1N0,
21048 RdRs1N0CImm6loCImm6hi,
21049 RdRs1N0CNzimm6loCNzimm6hi,
21050 RdRs1N0CNzuimm6hiCNzuimm6lo,
21051 RdRs1N0CNzuimm6lo,
21052 RdRs1N0CRs2N0,
21053 RdRs1P,
21054 RdRs1PCImm6hiCImm6lo,
21055 RdRs1PCNzuimm5,
21056 RdRs1PCNzuimm6loCNzuimm6hi,
21057 RdRs1PRs2P,
21058 RdRs1Rm,
21059 RdRs1Rnum,
21060 RdRs1Rs2,
21061 RdRs1Rs2AqRl,
21062 RdRs1Rs2Bs,
21063 RdRs1Rs2EqRs1,
21064 RdRs1Rs2Rm,
21065 RdRs1Rs2Rs3Rm,
21066 RdRs1Shamtd,
21067 RdRs1Shamtw,
21068 RdRs2,
21069 RdZimm5,
21070 Rs1,
21071 Rs1Csr,
21072 Rs1Imm12hi,
21073 Rs1N0,
21074 Rs1PCBimm9loCBimm9hi,
21075 Rs1PRs2PCUimm7loCUimm7hi,
21076 Rs1PRs2PCUimm8hiCUimm8lo,
21077 Rs1PRs2PCUimm8loCUimm8hi,
21078 Rs1Rd,
21079 Rs1Rs2,
21080 Rs1Vd,
21081 Rs1Vs3,
21082 Rs2PRs1PCUimm1,
21083 Rs2PRs1PCUimm2,
21084 Rs2Rs1Rd,
21085 Simm5Vd,
21086 VmVd,
21087 VmVs2Rd,
21088 VmVs2Rs1Vd,
21089 VmVs2Simm5Vd,
21090 VmVs2Vd,
21091 VmVs2Vs1Vd,
21092 VmVs2Zimm5Vd,
21093 Vs1Vd,
21094 Vs2Rd,
21095 Vs2Rs1Vd,
21096 Vs2Simm5Vd,
21097 Vs2Vd,
21098 Vs2Vs1Vd,
21099 Vs2Zimm5Vd,
21100 Zimm10Zimm5Rd,
21101 Zimm11Rs1Rd,
21102 Zimm6HiVmVs2Zimm6loVd,
21103}
21104
21105impl Opcode {
21106 pub fn encoding(self) -> Encoding {
21107 use Opcode::*;
21108 match self {
21109 Opcode::Invalid => unreachable!(),
21110 BEQZ | BGEZ | BLTZ | BNEZ => Encoding::Bimm12HiRs1Bimm12lo,
21111 BEQ | BGE | BGEU | BLT | BLTU | BNE => Encoding::Bimm12HiRs1Rs2Bimm12lo,
21112 BGTZ | BLEZ => Encoding::Bimm12HiRs2Bimm12lo,
21113 BGT | BGTU | BLE | BLEU => Encoding::Bimm12HiRs2Rs1Bimm12lo,
21114 CJ | CJAL => Encoding::CImm12,
21115 CMJALT => Encoding::CIndex,
21116 CMOPN => Encoding::CMopT,
21117 CADDI16SP => Encoding::CNzimm10hiCNzimm10lo,
21118 CNOP => Encoding::CNzimm6hiCNzimm6lo,
21119 CMPOP | CMPOPRET | CMPOPRETZ | CMPUSH => Encoding::CRlistCSpimm,
21120 CJALR => Encoding::CRs1N0,
21121 CFSWSP | CSWSP => Encoding::CRs2CUimm8spS,
21122 CFSDSP | CSDSP => Encoding::CRs2CUimm9spS,
21123 CMMVA01S | CMMVSA01 => Encoding::CSreg1CSreg2,
21124 CSRCI | CSRSI | CSRWI => Encoding::CsrZimm5,
21125 CEBREAK | CMOP1 | CMOP11 | CMOP13 | CMOP15 | CMOP3 | CMOP5 | CMOP7 | CMOP9
21126 | CNTLALL | CNTLP1 | CNTLPALL | CNTLS1 | CSSPOPCHKX5 | CSSPUSHX1 | DRET | EBREAK
21127 | ECALL | MNRET | MRET | NOP | NTLALL | NTLP1 | NTLPALL | NTLS1 | PAUSE | RET
21128 | SBREAK | SCALL | SCTRCLR | SFENCEINVALIR | SFENCEWINVAL | SRET | SSPOPCHKX1
21129 | SSPOPCHKX5 | SSPUSHX1 | SSPUSHX5 | WFI | WRSNTO | WRSSTO => Encoding::Empty,
21130 FENCE => Encoding::FmPredSuccRs1Rd,
21131 FSD | FSH | FSQ | FSW | SB | SD | SH | SW => Encoding::Imm12HiRs1Rs2Imm12lo,
21132 FENCEI => Encoding::Imm12Rs1Rd,
21133 LPAD => Encoding::Imm20,
21134 J | JALPSEUDO => Encoding::Jimm20,
21135 MOPRN => Encoding::MopRT30MopRT2726MopRT2120RdRs1,
21136 MOPRRN => Encoding::MopRrT30MopRrT2726RdRs1Rs2,
21137 VLE16V | VLE16FFV | VLE32V | VLE32FFV | VLE64V | VLE64FFV | VLE8V | VLE8FFV => {
21138 Encoding::NfVmRs1Vd
21139 }
21140 VSE16V | VSE32V | VSE64V | VSE8V => Encoding::NfVmRs1Vs3,
21141 VLSE16V | VLSE32V | VLSE64V | VLSE8V => Encoding::NfVmRs2Rs1Vd,
21142 VSSE16V | VSSE32V | VSSE64V | VSSE8V => Encoding::NfVmRs2Rs1Vs3,
21143 VLOXEI16V | VLOXEI32V | VLOXEI64V | VLOXEI8V | VLUXEI16V | VLUXEI32V | VLUXEI64V
21144 | VLUXEI8V => Encoding::NfVmVs2Rs1Vd,
21145 VSOXEI16V | VSOXEI32V | VSOXEI64V | VSOXEI8V | VSUXEI16V | VSUXEI32V | VSUXEI64V
21146 | VSUXEI8V => Encoding::NfVmVs2Rs1Vs3,
21147 FRCSR | FRFLAGS | FRRM | RDCYCLE | RDCYCLEH | RDINSTRET | RDINSTRETH | RDTIME
21148 | RDTIMEH => Encoding::Rd,
21149 CFLWSP => Encoding::RdCUimm8sphiCUimm8splo,
21150 CFLDSP => Encoding::RdCUimm9sphiCUimm9splo,
21151 CSRR => Encoding::RdCsr,
21152 CSRRCI | CSRRSI | CSRRWI => Encoding::RdCsrZimm5,
21153 AUIPC | LUI => Encoding::RdImm20,
21154 JAL => Encoding::RdJimm20,
21155 SSRDP => Encoding::RdN0,
21156 CLI => Encoding::RdN0CImm6loCImm6hi,
21157 CMV => Encoding::RdN0CRs2N0,
21158 CLWSP => Encoding::RdN0CUimm8sphiCUimm8splo,
21159 CLDSP => Encoding::RdN0CUimm9sphiCUimm9splo,
21160 CLUI => Encoding::RdN2CNzimm18hiCNzimm18lo,
21161 CADDI4SPN => Encoding::RdPCNzuimm10,
21162 CLH | CLHU => Encoding::RdPRs1PCUimm1,
21163 CLBU => Encoding::RdPRs1PCUimm2,
21164 CFLW | CLW => Encoding::RdPRs1PCUimm7loCUimm7hi,
21165 CFLD | CLD => Encoding::RdPRs1PCUimm8loCUimm8hi,
21166 AES64IM | BREV8 | CLZ | CLZW | CPOP | CPOPW | CTZ | CTZW | FCLASSD | FCLASSH
21167 | FCLASSQ | FCLASSS | FCVTMODWD | FLID | FLIH | FLIQ | FLIS | FMVDX | FMVHX | FMVSX
21168 | FMVWX | FMVXD | FMVXH | FMVXS | FMVXW | FMVHXD | FMVHXQ | FSCSR | FSFLAGS | FSRM
21169 | HLVB | HLVBU | HLVD | HLVH | HLVHU | HLVW | HLVWU | HLVXHU | HLVXWU | MOPR0
21170 | MOPR1 | MOPR10 | MOPR11 | MOPR12 | MOPR13 | MOPR14 | MOPR15 | MOPR16 | MOPR17
21171 | MOPR18 | MOPR19 | MOPR2 | MOPR20 | MOPR21 | MOPR22 | MOPR23 | MOPR24 | MOPR25
21172 | MOPR26 | MOPR27 | MOPR28 | MOPR29 | MOPR3 | MOPR30 | MOPR31 | MOPR4 | MOPR5
21173 | MOPR6 | MOPR7 | MOPR8 | MOPR9 | MV | NEG | ORCB | REV8 | REV8RV32 | SEQZ | SEXTB
21174 | SEXTH | SEXTW | SHA256SIG0 | SHA256SIG1 | SHA256SUM0 | SHA256SUM1 | SHA512SIG0
21175 | SHA512SIG1 | SHA512SUM0 | SHA512SUM1 | SLTZ | SM3P0 | SM3P1 | UNZIP | ZEXTB
21176 | ZEXTH | ZEXTHRV32 | ZEXTW | ZIP => Encoding::RdRs1,
21177 LRD | LRW => Encoding::RdRs1AqRl,
21178 CSRRC | CSRRS | CSRRW => Encoding::RdRs1Csr,
21179 ADDI | ADDIW | ANDI | FLD | FLH | FLQ | FLW | JALR | LB | LBU | LD | LH | LHU | LW
21180 | LWU | ORI | SLTI | SLTIU | XORI => Encoding::RdRs1Imm12,
21181 CSEXTW => Encoding::RdRs1N0,
21182 CADDIW => Encoding::RdRs1N0CImm6loCImm6hi,
21183 CADDI => Encoding::RdRs1N0CNzimm6loCNzimm6hi,
21184 CSLLI => Encoding::RdRs1N0CNzuimm6hiCNzuimm6lo,
21185 CSLLIRV32 => Encoding::RdRs1N0CNzuimm6lo,
21186 CADD => Encoding::RdRs1N0CRs2N0,
21187 CNOT | CSEXTB | CSEXTH | CZEXTB | CZEXTH | CZEXTW => Encoding::RdRs1P,
21188 CANDI => Encoding::RdRs1PCImm6hiCImm6lo,
21189 CSRAIRV32 | CSRLIRV32 => Encoding::RdRs1PCNzuimm5,
21190 CSRAI | CSRLI => Encoding::RdRs1PCNzuimm6loCNzuimm6hi,
21191 CADDW | CAND | CMUL | COR | CSUB | CSUBW | CXOR => Encoding::RdRs1PRs2P,
21192 FCVTBF16S | FCVTDH | FCVTDL | FCVTDLU | FCVTDQ | FCVTDS | FCVTDW | FCVTDWU | FCVTHD
21193 | FCVTHL | FCVTHLU | FCVTHQ | FCVTHS | FCVTHW | FCVTHWU | FCVTLD | FCVTLH | FCVTLQ
21194 | FCVTLS | FCVTLUD | FCVTLUH | FCVTLUQ | FCVTLUS | FCVTQD | FCVTQH | FCVTQL
21195 | FCVTQLU | FCVTQS | FCVTQW | FCVTQWU | FCVTSBF16 | FCVTSD | FCVTSH | FCVTSL
21196 | FCVTSLU | FCVTSQ | FCVTSW | FCVTSWU | FCVTWD | FCVTWH | FCVTWQ | FCVTWS | FCVTWUD
21197 | FCVTWUH | FCVTWUQ | FCVTWUS | FROUNDD | FROUNDH | FROUNDQ | FROUNDS | FROUNDNXD
21198 | FROUNDNXH | FROUNDNXQ | FROUNDNXS | FSQRTD | FSQRTH | FSQRTQ | FSQRTS => {
21199 Encoding::RdRs1Rm
21200 }
21201 AES64KS1I => Encoding::RdRs1Rnum,
21202 ADD | ADDUW | ADDW | AES64DS | AES64DSM | AES64ES | AES64ESM | AES64KS2 | AND
21203 | ANDN | BCLR | BEXT | BINV | BSET | CLMUL | CLMULH | CLMULR | CZEROEQZ | CZERONEZ
21204 | DIV | DIVU | DIVUW | DIVW | FEQD | FEQH | FEQQ | FEQS | FLED | FLEH | FLEQ | FLES
21205 | FLEQD | FLEQH | FLEQQ | FLEQS | FLTD | FLTH | FLTQ | FLTS | FLTQD | FLTQH | FLTQQ
21206 | FLTQS | FMAXD | FMAXH | FMAXQ | FMAXS | FMAXMD | FMAXMH | FMAXMQ | FMAXMS | FMIND
21207 | FMINH | FMINQ | FMINS | FMINMD | FMINMH | FMINMQ | FMINMS | FMVPDX | FMVPQX
21208 | FSGNJD | FSGNJH | FSGNJQ | FSGNJS | FSGNJND | FSGNJNH | FSGNJNQ | FSGNJNS
21209 | FSGNJXD | FSGNJXH | FSGNJXQ | FSGNJXS | MAX | MAXU | MIN | MINU | MOPRR0 | MOPRR1
21210 | MOPRR2 | MOPRR3 | MOPRR4 | MOPRR5 | MOPRR6 | MOPRR7 | MUL | MULH | MULHSU | MULHU
21211 | MULW | OR | ORN | PACK | PACKH | PACKW | REM | REMU | REMUW | REMW | ROL | ROLW
21212 | ROR | RORW | SH1ADD | SH1ADDUW | SH2ADD | SH2ADDUW | SH3ADD | SH3ADDUW
21213 | SHA512SIG0H | SHA512SIG0L | SHA512SIG1H | SHA512SIG1L | SHA512SUM0R | SHA512SUM1R
21214 | SLL | SLLW | SLT | SLTU | SRA | SRAW | SRL | SRLW | SUB | SUBW | XNOR | XOR
21215 | XPERM4 | XPERM8 => Encoding::RdRs1Rs2,
21216 AMOADDB | AMOADDD | AMOADDH | AMOADDW | AMOANDB | AMOANDD | AMOANDH | AMOANDW
21217 | AMOCASB | AMOCASD | AMOCASH | AMOCASQ | AMOCASW | AMOMAXB | AMOMAXD | AMOMAXH
21218 | AMOMAXW | AMOMAXUB | AMOMAXUD | AMOMAXUH | AMOMAXUW | AMOMINB | AMOMIND | AMOMINH
21219 | AMOMINW | AMOMINUB | AMOMINUD | AMOMINUH | AMOMINUW | AMOORB | AMOORD | AMOORH
21220 | AMOORW | AMOSWAPB | AMOSWAPD | AMOSWAPH | AMOSWAPW | AMOXORB | AMOXORD | AMOXORH
21221 | AMOXORW | SCD | SCW | SSAMOSWAPD | SSAMOSWAPW => Encoding::RdRs1Rs2AqRl,
21222 AES32DSI | AES32DSMI | AES32ESI | AES32ESMI | SM4ED | SM4KS => Encoding::RdRs1Rs2Bs,
21223 FABSD | FABSH | FABSQ | FABSS | FMVD | FMVH | FMVQ | FMVS | FNEGD | FNEGH | FNEGQ
21224 | FNEGS => Encoding::RdRs1Rs2EqRs1,
21225 FADDD | FADDH | FADDQ | FADDS | FDIVD | FDIVH | FDIVQ | FDIVS | FMULD | FMULH
21226 | FMULQ | FMULS | FSUBD | FSUBH | FSUBQ | FSUBS => Encoding::RdRs1Rs2Rm,
21227 FMADDD | FMADDH | FMADDQ | FMADDS | FMSUBD | FMSUBH | FMSUBQ | FMSUBS | FNMADDD
21228 | FNMADDH | FNMADDQ | FNMADDS | FNMSUBD | FNMSUBH | FNMSUBQ | FNMSUBS => {
21229 Encoding::RdRs1Rs2Rs3Rm
21230 }
21231 BCLRI | BEXTI | BINVI | BSETI | RORI | SLLI | SLLIUW | SRAI | SRLI => {
21232 Encoding::RdRs1Shamtd
21233 }
21234 BCLRIRV32 | BEXTIRV32 | BINVIRV32 | BSETIRV32 | RORIRV32 | RORIW | SLLIRV32 | SLLIW
21235 | SRAIRV32 | SRAIW | SRLIRV32 | SRLIW => Encoding::RdRs1Shamtw,
21236 SGTZ | SNEZ => Encoding::RdRs2,
21237 FSFLAGSI | FSRMI => Encoding::RdZimm5,
21238 CBOCLEAN | CBOFLUSH | CBOINVAL | CBOZERO | JALRPSEUDO | JR => Encoding::Rs1,
21239 CSRC | CSRS | CSRW => Encoding::Rs1Csr,
21240 PREFETCHI | PREFETCHR | PREFETCHW => Encoding::Rs1Imm12hi,
21241 CJR => Encoding::Rs1N0,
21242 CBEQZ | CBNEZ => Encoding::Rs1PCBimm9loCBimm9hi,
21243 CFSW | CSW => Encoding::Rs1PRs2PCUimm7loCUimm7hi,
21244 CSD => Encoding::Rs1PRs2PCUimm8hiCUimm8lo,
21245 CFSD => Encoding::Rs1PRs2PCUimm8loCUimm8hi,
21246 FENCETSO => Encoding::Rs1Rd,
21247 HFENCEGVMA | HFENCEVVMA | HINVALGVMA | HINVALVVMA | HSVB | HSVD | HSVH | HSVW
21248 | SFENCEVMA | SINVALVMA => Encoding::Rs1Rs2,
21249 VFMVSF | VFMVVF | VL1RV | VL1RE16V | VL1RE32V | VL1RE64V | VL1RE8V | VL2RV
21250 | VL2RE16V | VL2RE32V | VL2RE64V | VL2RE8V | VL4RV | VL4RE16V | VL4RE32V | VL4RE64V
21251 | VL4RE8V | VL8RV | VL8RE16V | VL8RE32V | VL8RE64V | VL8RE8V | VLE1V | VLMV | VMVSX
21252 | VMVVX => Encoding::Rs1Vd,
21253 VS1RV | VS2RV | VS4RV | VS8RV | VSE1V | VSMV => Encoding::Rs1Vs3,
21254 CSH => Encoding::Rs2PRs1PCUimm1,
21255 CSB => Encoding::Rs2PRs1PCUimm2,
21256 VSETVL => Encoding::Rs2Rs1Rd,
21257 VMVVI => Encoding::Simm5Vd,
21258 VIDV => Encoding::VmVd,
21259 VCPOPM | VFIRSTM | VPOPCM => Encoding::VmVs2Rd,
21260 VAADDVX | VAADDUVX | VADDVX | VANDVX | VANDNVX | VASUBVX | VASUBUVX | VCLMULVX
21261 | VCLMULHVX | VDIVVX | VDIVUVX | VFADDVF | VFDIVVF | VFMACCVF | VFMADDVF | VFMAXVF
21262 | VFMINVF | VFMSACVF | VFMSUBVF | VFMULVF | VFNMACCVF | VFNMADDVF | VFNMSACVF
21263 | VFNMSUBVF | VFRDIVVF | VFRSUBVF | VFSGNJVF | VFSGNJNVF | VFSGNJXVF
21264 | VFSLIDE1DOWNVF | VFSLIDE1UPVF | VFSUBVF | VFWADDVF | VFWADDWF | VFWMACCVF
21265 | VFWMACCBF16VF | VFWMSACVF | VFWMULVF | VFWNMACCVF | VFWNMSACVF | VFWSUBVF
21266 | VFWSUBWF | VMACCVX | VMADDVX | VMAXVX | VMAXUVX | VMFEQVF | VMFGEVF | VMFGTVF
21267 | VMFLEVF | VMFLTVF | VMFNEVF | VMINVX | VMINUVX | VMSEQVX | VMSGTVX | VMSGTUVX
21268 | VMSLEVX | VMSLEUVX | VMSLTVX | VMSLTUVX | VMSNEVX | VMULVX | VMULHVX | VMULHSUVX
21269 | VMULHUVX | VNCLIPWX | VNCLIPUWX | VNMSACVX | VNMSUBVX | VNSRAWX | VNSRLWX | VORVX
21270 | VREMVX | VREMUVX | VRGATHERVX | VROLVX | VRORVX | VRSUBVX | VSADDVX | VSADDUVX
21271 | VSLIDE1DOWNVX | VSLIDE1UPVX | VSLIDEDOWNVX | VSLIDEUPVX | VSLLVX | VSMULVX
21272 | VSRAVX | VSRLVX | VSSRAVX | VSSRLVX | VSSUBVX | VSSUBUVX | VSUBVX | VWADDVX
21273 | VWADDWX | VWADDUVX | VWADDUWX | VWMACCVX | VWMACCSUVX | VWMACCUVX | VWMACCUSVX
21274 | VWMULVX | VWMULSUVX | VWMULUVX | VWSLLVX | VWSUBVX | VWSUBWX | VWSUBUVX
21275 | VWSUBUWX | VXORVX => Encoding::VmVs2Rs1Vd,
21276 VADDVI | VANDVI | VMSEQVI | VMSGTVI | VMSGTUVI | VMSLEVI | VMSLEUVI | VMSNEVI
21277 | VORVI | VRSUBVI | VSADDVI | VSADDUVI | VXORVI => Encoding::VmVs2Simm5Vd,
21278 VBREV8V | VBREVV | VCLZV | VCPOPV | VCTZV | VFCLASSV | VFCVTFXV | VFCVTFXUV
21279 | VFCVTRTZXFV | VFCVTRTZXUFV | VFCVTXFV | VFCVTXUFV | VFNCVTFFW | VFNCVTFXW
21280 | VFNCVTFXUW | VFNCVTRODFFW | VFNCVTRTZXFW | VFNCVTRTZXUFW | VFNCVTXFW | VFNCVTXUFW
21281 | VFNCVTBF16FFW | VFREC7V | VFRSQRT7V | VFSQRTV | VFWCVTFFV | VFWCVTFXV
21282 | VFWCVTFXUV | VFWCVTRTZXFV | VFWCVTRTZXUFV | VFWCVTXFV | VFWCVTXUFV
21283 | VFWCVTBF16FFV | VIOTAM | VMSBFM | VMSIFM | VMSOFM | VREV8V | VSEXTVF2 | VSEXTVF4
21284 | VSEXTVF8 | VZEXTVF2 | VZEXTVF4 | VZEXTVF8 => Encoding::VmVs2Vd,
21285 VAADDVV | VAADDUVV | VADDVV | VANDVV | VANDNVV | VASUBVV | VASUBUVV | VCLMULVV
21286 | VCLMULHVV | VDIVVV | VDIVUVV | VFADDVV | VFDIVVV | VFMACCVV | VFMADDVV | VFMAXVV
21287 | VFMINVV | VFMSACVV | VFMSUBVV | VFMULVV | VFNMACCVV | VFNMADDVV | VFNMSACVV
21288 | VFNMSUBVV | VFREDMAXVS | VFREDMINVS | VFREDOSUMVS | VFREDSUMVS | VFREDUSUMVS
21289 | VFSGNJVV | VFSGNJNVV | VFSGNJXVV | VFSUBVV | VFWADDVV | VFWADDWV | VFWMACCVV
21290 | VFWMACCBF16VV | VFWMSACVV | VFWMULVV | VFWNMACCVV | VFWNMSACVV | VFWREDOSUMVS
21291 | VFWREDSUMVS | VFWREDUSUMVS | VFWSUBVV | VFWSUBWV | VMACCVV | VMADDVV | VMANDNOTMM
21292 | VMAXVV | VMAXUVV | VMFEQVV | VMFLEVV | VMFLTVV | VMFNEVV | VMINVV | VMINUVV
21293 | VMORNOTMM | VMSEQVV | VMSLEVV | VMSLEUVV | VMSLTVV | VMSLTUVV | VMSNEVV | VMULVV
21294 | VMULHVV | VMULHSUVV | VMULHUVV | VNCLIPWV | VNCLIPUWV | VNMSACVV | VNMSUBVV
21295 | VNSRAWV | VNSRLWV | VORVV | VREDANDVS | VREDMAXVS | VREDMAXUVS | VREDMINVS
21296 | VREDMINUVS | VREDORVS | VREDSUMVS | VREDXORVS | VREMVV | VREMUVV | VRGATHERVV
21297 | VRGATHEREI16VV | VROLVV | VRORVV | VSADDVV | VSADDUVV | VSLLVV | VSMULVV | VSRAVV
21298 | VSRLVV | VSSRAVV | VSSRLVV | VSSUBVV | VSSUBUVV | VSUBVV | VWADDVV | VWADDWV
21299 | VWADDUVV | VWADDUWV | VWMACCVV | VWMACCSUVV | VWMACCUVV | VWMULVV | VWMULSUVV
21300 | VWMULUVV | VWREDSUMVS | VWREDSUMUVS | VWSLLVV | VWSUBVV | VWSUBWV | VWSUBUVV
21301 | VWSUBUWV | VXORVV => Encoding::VmVs2Vs1Vd,
21302 VNCLIPWI | VNCLIPUWI | VNSRAWI | VNSRLWI | VRGATHERVI | VSLIDEDOWNVI | VSLIDEUPVI
21303 | VSLLVI | VSRAVI | VSRLVI | VSSRAVI | VSSRLVI | VWSLLVI => Encoding::VmVs2Zimm5Vd,
21304 VMVVV => Encoding::Vs1Vd,
21305 VFMVFS | VMVXS => Encoding::Vs2Rd,
21306 VADCVXM | VFMERGEVFM | VMADCVX | VMADCVXM | VMERGEVXM | VMSBCVX | VMSBCVXM
21307 | VSBCVXM => Encoding::Vs2Rs1Vd,
21308 VADCVIM | VMADCVI | VMADCVIM | VMERGEVIM => Encoding::Vs2Simm5Vd,
21309 VAESDFVS | VAESDFVV | VAESDMVS | VAESDMVV | VAESEFVS | VAESEFVV | VAESEMVS
21310 | VAESEMVV | VAESZVS | VGMULVV | VMV1RV | VMV2RV | VMV4RV | VMV8RV | VSM4RVS
21311 | VSM4RVV => Encoding::Vs2Vd,
21312 VADCVVM | VCOMPRESSVM | VGHSHVV | VMADCVV | VMADCVVM | VMANDMM | VMANDNMM
21313 | VMERGEVVM | VMNANDMM | VMNORMM | VMORMM | VMORNMM | VMSBCVV | VMSBCVVM | VMXNORMM
21314 | VMXORMM | VSBCVVM | VSHA2CHVV | VSHA2CLVV | VSHA2MSVV | VSM3MEVV => {
21315 Encoding::Vs2Vs1Vd
21316 }
21317 VAESKF1VI | VAESKF2VI | VSM3CVI | VSM4KVI => Encoding::Vs2Zimm5Vd,
21318 VSETIVLI => Encoding::Zimm10Zimm5Rd,
21319 VSETVLI => Encoding::Zimm11Rs1Rd,
21320 VRORVI => Encoding::Zimm6HiVmVs2Zimm6loVd,
21321 }
21322 }
21323}
21324pub const INSN_FIELD_RD: u32 = 0xf80;
21325pub const INSN_FIELD_RD_START: u32 = 7;
21326pub const INSN_FIELD_RD_SIZE: u32 = 5;
21327pub const INSN_FIELD_RT: u32 = 0xf8000;
21328pub const INSN_FIELD_RT_START: u32 = 15;
21329pub const INSN_FIELD_RT_SIZE: u32 = 5;
21330pub const INSN_FIELD_RS1: u32 = 0xf8000;
21331pub const INSN_FIELD_RS1_START: u32 = 15;
21332pub const INSN_FIELD_RS1_SIZE: u32 = 5;
21333pub const INSN_FIELD_RS2: u32 = 0x1f00000;
21334pub const INSN_FIELD_RS2_START: u32 = 20;
21335pub const INSN_FIELD_RS2_SIZE: u32 = 5;
21336pub const INSN_FIELD_RS3: u32 = 0xf8000000;
21337pub const INSN_FIELD_RS3_START: u32 = 27;
21338pub const INSN_FIELD_RS3_SIZE: u32 = 5;
21339pub const INSN_FIELD_AQRL: u32 = 0x6000000;
21340pub const INSN_FIELD_AQRL_START: u32 = 25;
21341pub const INSN_FIELD_AQRL_SIZE: u32 = 2;
21342pub const INSN_FIELD_AQ: u32 = 0x4000000;
21343pub const INSN_FIELD_AQ_START: u32 = 26;
21344pub const INSN_FIELD_AQ_SIZE: u32 = 1;
21345pub const INSN_FIELD_RL: u32 = 0x2000000;
21346pub const INSN_FIELD_RL_START: u32 = 25;
21347pub const INSN_FIELD_RL_SIZE: u32 = 1;
21348pub const INSN_FIELD_FM: u32 = 0xf0000000;
21349pub const INSN_FIELD_FM_START: u32 = 28;
21350pub const INSN_FIELD_FM_SIZE: u32 = 4;
21351pub const INSN_FIELD_PRED: u32 = 0xf000000;
21352pub const INSN_FIELD_PRED_START: u32 = 24;
21353pub const INSN_FIELD_PRED_SIZE: u32 = 4;
21354pub const INSN_FIELD_SUCC: u32 = 0xf00000;
21355pub const INSN_FIELD_SUCC_START: u32 = 20;
21356pub const INSN_FIELD_SUCC_SIZE: u32 = 4;
21357pub const INSN_FIELD_RM: u32 = 0x7000;
21358pub const INSN_FIELD_RM_START: u32 = 12;
21359pub const INSN_FIELD_RM_SIZE: u32 = 3;
21360pub const INSN_FIELD_FUNCT3: u32 = 0x7000;
21361pub const INSN_FIELD_FUNCT3_START: u32 = 12;
21362pub const INSN_FIELD_FUNCT3_SIZE: u32 = 3;
21363pub const INSN_FIELD_FUNCT2: u32 = 0x6000000;
21364pub const INSN_FIELD_FUNCT2_START: u32 = 25;
21365pub const INSN_FIELD_FUNCT2_SIZE: u32 = 2;
21366pub const INSN_FIELD_IMM20: u32 = 0xfffff000;
21367pub const INSN_FIELD_IMM20_START: u32 = 12;
21368pub const INSN_FIELD_IMM20_SIZE: u32 = 20;
21369pub const INSN_FIELD_JIMM20: u32 = 0xfffff000;
21370pub const INSN_FIELD_JIMM20_START: u32 = 12;
21371pub const INSN_FIELD_JIMM20_SIZE: u32 = 20;
21372pub const INSN_FIELD_IMM12: u32 = 0xfff00000;
21373pub const INSN_FIELD_IMM12_START: u32 = 20;
21374pub const INSN_FIELD_IMM12_SIZE: u32 = 12;
21375pub const INSN_FIELD_CSR: u32 = 0xfff00000;
21376pub const INSN_FIELD_CSR_START: u32 = 20;
21377pub const INSN_FIELD_CSR_SIZE: u32 = 12;
21378pub const INSN_FIELD_IMM12HI: u32 = 0xfe000000;
21379pub const INSN_FIELD_IMM12HI_START: u32 = 25;
21380pub const INSN_FIELD_IMM12HI_SIZE: u32 = 7;
21381pub const INSN_FIELD_BIMM12HI: u32 = 0xfe000000;
21382pub const INSN_FIELD_BIMM12HI_START: u32 = 25;
21383pub const INSN_FIELD_BIMM12HI_SIZE: u32 = 7;
21384pub const INSN_FIELD_IMM12LO: u32 = 0xf80;
21385pub const INSN_FIELD_IMM12LO_START: u32 = 7;
21386pub const INSN_FIELD_IMM12LO_SIZE: u32 = 5;
21387pub const INSN_FIELD_BIMM12LO: u32 = 0xf80;
21388pub const INSN_FIELD_BIMM12LO_START: u32 = 7;
21389pub const INSN_FIELD_BIMM12LO_SIZE: u32 = 5;
21390pub const INSN_FIELD_SHAMTQ: u32 = 0x7f00000;
21391pub const INSN_FIELD_SHAMTQ_START: u32 = 20;
21392pub const INSN_FIELD_SHAMTQ_SIZE: u32 = 7;
21393pub const INSN_FIELD_SHAMTW: u32 = 0x1f00000;
21394pub const INSN_FIELD_SHAMTW_START: u32 = 20;
21395pub const INSN_FIELD_SHAMTW_SIZE: u32 = 5;
21396pub const INSN_FIELD_SHAMTW4: u32 = 0xf00000;
21397pub const INSN_FIELD_SHAMTW4_START: u32 = 20;
21398pub const INSN_FIELD_SHAMTW4_SIZE: u32 = 4;
21399pub const INSN_FIELD_SHAMTD: u32 = 0x3f00000;
21400pub const INSN_FIELD_SHAMTD_START: u32 = 20;
21401pub const INSN_FIELD_SHAMTD_SIZE: u32 = 6;
21402pub const INSN_FIELD_BS: u32 = 0xc0000000;
21403pub const INSN_FIELD_BS_START: u32 = 30;
21404pub const INSN_FIELD_BS_SIZE: u32 = 2;
21405pub const INSN_FIELD_RNUM: u32 = 0xf00000;
21406pub const INSN_FIELD_RNUM_START: u32 = 20;
21407pub const INSN_FIELD_RNUM_SIZE: u32 = 4;
21408pub const INSN_FIELD_RC: u32 = 0x3e000000;
21409pub const INSN_FIELD_RC_START: u32 = 25;
21410pub const INSN_FIELD_RC_SIZE: u32 = 5;
21411pub const INSN_FIELD_IMM2: u32 = 0x300000;
21412pub const INSN_FIELD_IMM2_START: u32 = 20;
21413pub const INSN_FIELD_IMM2_SIZE: u32 = 2;
21414pub const INSN_FIELD_IMM3: u32 = 0x700000;
21415pub const INSN_FIELD_IMM3_START: u32 = 20;
21416pub const INSN_FIELD_IMM3_SIZE: u32 = 3;
21417pub const INSN_FIELD_IMM4: u32 = 0xf00000;
21418pub const INSN_FIELD_IMM4_START: u32 = 20;
21419pub const INSN_FIELD_IMM4_SIZE: u32 = 4;
21420pub const INSN_FIELD_IMM5: u32 = 0x1f00000;
21421pub const INSN_FIELD_IMM5_START: u32 = 20;
21422pub const INSN_FIELD_IMM5_SIZE: u32 = 5;
21423pub const INSN_FIELD_IMM6: u32 = 0x3f00000;
21424pub const INSN_FIELD_IMM6_START: u32 = 20;
21425pub const INSN_FIELD_IMM6_SIZE: u32 = 6;
21426pub const INSN_FIELD_OPCODE: u32 = 0x7f;
21427pub const INSN_FIELD_OPCODE_START: u32 = 0;
21428pub const INSN_FIELD_OPCODE_SIZE: u32 = 7;
21429pub const INSN_FIELD_FUNCT7: u32 = 0xfe000000;
21430pub const INSN_FIELD_FUNCT7_START: u32 = 25;
21431pub const INSN_FIELD_FUNCT7_SIZE: u32 = 7;
21432pub const INSN_FIELD_VD: u32 = 0xf80;
21433pub const INSN_FIELD_VD_START: u32 = 7;
21434pub const INSN_FIELD_VD_SIZE: u32 = 5;
21435pub const INSN_FIELD_VS3: u32 = 0xf80;
21436pub const INSN_FIELD_VS3_START: u32 = 7;
21437pub const INSN_FIELD_VS3_SIZE: u32 = 5;
21438pub const INSN_FIELD_VS1: u32 = 0xf8000;
21439pub const INSN_FIELD_VS1_START: u32 = 15;
21440pub const INSN_FIELD_VS1_SIZE: u32 = 5;
21441pub const INSN_FIELD_VS2: u32 = 0x1f00000;
21442pub const INSN_FIELD_VS2_START: u32 = 20;
21443pub const INSN_FIELD_VS2_SIZE: u32 = 5;
21444pub const INSN_FIELD_VM: u32 = 0x2000000;
21445pub const INSN_FIELD_VM_START: u32 = 25;
21446pub const INSN_FIELD_VM_SIZE: u32 = 1;
21447pub const INSN_FIELD_WD: u32 = 0x4000000;
21448pub const INSN_FIELD_WD_START: u32 = 26;
21449pub const INSN_FIELD_WD_SIZE: u32 = 1;
21450pub const INSN_FIELD_AMOOP: u32 = 0xf8000000;
21451pub const INSN_FIELD_AMOOP_START: u32 = 27;
21452pub const INSN_FIELD_AMOOP_SIZE: u32 = 5;
21453pub const INSN_FIELD_NF: u32 = 0xe0000000;
21454pub const INSN_FIELD_NF_START: u32 = 29;
21455pub const INSN_FIELD_NF_SIZE: u32 = 3;
21456pub const INSN_FIELD_SIMM5: u32 = 0xf8000;
21457pub const INSN_FIELD_SIMM5_START: u32 = 15;
21458pub const INSN_FIELD_SIMM5_SIZE: u32 = 5;
21459pub const INSN_FIELD_ZIMM5: u32 = 0xf8000;
21460pub const INSN_FIELD_ZIMM5_START: u32 = 15;
21461pub const INSN_FIELD_ZIMM5_SIZE: u32 = 5;
21462pub const INSN_FIELD_ZIMM10: u32 = 0x3ff00000;
21463pub const INSN_FIELD_ZIMM10_START: u32 = 20;
21464pub const INSN_FIELD_ZIMM10_SIZE: u32 = 10;
21465pub const INSN_FIELD_ZIMM11: u32 = 0x7ff00000;
21466pub const INSN_FIELD_ZIMM11_START: u32 = 20;
21467pub const INSN_FIELD_ZIMM11_SIZE: u32 = 11;
21468pub const INSN_FIELD_ZIMM6HI: u32 = 0x4000000;
21469pub const INSN_FIELD_ZIMM6HI_START: u32 = 26;
21470pub const INSN_FIELD_ZIMM6HI_SIZE: u32 = 1;
21471pub const INSN_FIELD_ZIMM6LO: u32 = 0xf8000;
21472pub const INSN_FIELD_ZIMM6LO_START: u32 = 15;
21473pub const INSN_FIELD_ZIMM6LO_SIZE: u32 = 5;
21474pub const INSN_FIELD_C_NZUIMM10: u32 = 0x1fe0;
21475pub const INSN_FIELD_C_NZUIMM10_START: u32 = 5;
21476pub const INSN_FIELD_C_NZUIMM10_SIZE: u32 = 8;
21477pub const INSN_FIELD_C_UIMM7LO: u32 = 0x60;
21478pub const INSN_FIELD_C_UIMM7LO_START: u32 = 5;
21479pub const INSN_FIELD_C_UIMM7LO_SIZE: u32 = 2;
21480pub const INSN_FIELD_C_UIMM7HI: u32 = 0x1c00;
21481pub const INSN_FIELD_C_UIMM7HI_START: u32 = 10;
21482pub const INSN_FIELD_C_UIMM7HI_SIZE: u32 = 3;
21483pub const INSN_FIELD_C_UIMM8LO: u32 = 0x60;
21484pub const INSN_FIELD_C_UIMM8LO_START: u32 = 5;
21485pub const INSN_FIELD_C_UIMM8LO_SIZE: u32 = 2;
21486pub const INSN_FIELD_C_UIMM8HI: u32 = 0x1c00;
21487pub const INSN_FIELD_C_UIMM8HI_START: u32 = 10;
21488pub const INSN_FIELD_C_UIMM8HI_SIZE: u32 = 3;
21489pub const INSN_FIELD_C_UIMM9LO: u32 = 0x60;
21490pub const INSN_FIELD_C_UIMM9LO_START: u32 = 5;
21491pub const INSN_FIELD_C_UIMM9LO_SIZE: u32 = 2;
21492pub const INSN_FIELD_C_UIMM9HI: u32 = 0x1c00;
21493pub const INSN_FIELD_C_UIMM9HI_START: u32 = 10;
21494pub const INSN_FIELD_C_UIMM9HI_SIZE: u32 = 3;
21495pub const INSN_FIELD_C_NZIMM6LO: u32 = 0x7c;
21496pub const INSN_FIELD_C_NZIMM6LO_START: u32 = 2;
21497pub const INSN_FIELD_C_NZIMM6LO_SIZE: u32 = 5;
21498pub const INSN_FIELD_C_NZIMM6HI: u32 = 0x1000;
21499pub const INSN_FIELD_C_NZIMM6HI_START: u32 = 12;
21500pub const INSN_FIELD_C_NZIMM6HI_SIZE: u32 = 1;
21501pub const INSN_FIELD_C_IMM6LO: u32 = 0x7c;
21502pub const INSN_FIELD_C_IMM6LO_START: u32 = 2;
21503pub const INSN_FIELD_C_IMM6LO_SIZE: u32 = 5;
21504pub const INSN_FIELD_C_IMM6HI: u32 = 0x1000;
21505pub const INSN_FIELD_C_IMM6HI_START: u32 = 12;
21506pub const INSN_FIELD_C_IMM6HI_SIZE: u32 = 1;
21507pub const INSN_FIELD_C_NZIMM10HI: u32 = 0x1000;
21508pub const INSN_FIELD_C_NZIMM10HI_START: u32 = 12;
21509pub const INSN_FIELD_C_NZIMM10HI_SIZE: u32 = 1;
21510pub const INSN_FIELD_C_NZIMM10LO: u32 = 0x7c;
21511pub const INSN_FIELD_C_NZIMM10LO_START: u32 = 2;
21512pub const INSN_FIELD_C_NZIMM10LO_SIZE: u32 = 5;
21513pub const INSN_FIELD_C_NZIMM18HI: u32 = 0x1000;
21514pub const INSN_FIELD_C_NZIMM18HI_START: u32 = 12;
21515pub const INSN_FIELD_C_NZIMM18HI_SIZE: u32 = 1;
21516pub const INSN_FIELD_C_NZIMM18LO: u32 = 0x7c;
21517pub const INSN_FIELD_C_NZIMM18LO_START: u32 = 2;
21518pub const INSN_FIELD_C_NZIMM18LO_SIZE: u32 = 5;
21519pub const INSN_FIELD_C_IMM12: u32 = 0x1ffc;
21520pub const INSN_FIELD_C_IMM12_START: u32 = 2;
21521pub const INSN_FIELD_C_IMM12_SIZE: u32 = 11;
21522pub const INSN_FIELD_C_BIMM9LO: u32 = 0x7c;
21523pub const INSN_FIELD_C_BIMM9LO_START: u32 = 2;
21524pub const INSN_FIELD_C_BIMM9LO_SIZE: u32 = 5;
21525pub const INSN_FIELD_C_BIMM9HI: u32 = 0x1c00;
21526pub const INSN_FIELD_C_BIMM9HI_START: u32 = 10;
21527pub const INSN_FIELD_C_BIMM9HI_SIZE: u32 = 3;
21528pub const INSN_FIELD_C_NZUIMM5: u32 = 0x7c;
21529pub const INSN_FIELD_C_NZUIMM5_START: u32 = 2;
21530pub const INSN_FIELD_C_NZUIMM5_SIZE: u32 = 5;
21531pub const INSN_FIELD_C_NZUIMM6LO: u32 = 0x7c;
21532pub const INSN_FIELD_C_NZUIMM6LO_START: u32 = 2;
21533pub const INSN_FIELD_C_NZUIMM6LO_SIZE: u32 = 5;
21534pub const INSN_FIELD_C_NZUIMM6HI: u32 = 0x1000;
21535pub const INSN_FIELD_C_NZUIMM6HI_START: u32 = 12;
21536pub const INSN_FIELD_C_NZUIMM6HI_SIZE: u32 = 1;
21537pub const INSN_FIELD_C_UIMM8SPLO: u32 = 0x7c;
21538pub const INSN_FIELD_C_UIMM8SPLO_START: u32 = 2;
21539pub const INSN_FIELD_C_UIMM8SPLO_SIZE: u32 = 5;
21540pub const INSN_FIELD_C_UIMM8SPHI: u32 = 0x1000;
21541pub const INSN_FIELD_C_UIMM8SPHI_START: u32 = 12;
21542pub const INSN_FIELD_C_UIMM8SPHI_SIZE: u32 = 1;
21543pub const INSN_FIELD_C_UIMM8SP_S: u32 = 0x1f80;
21544pub const INSN_FIELD_C_UIMM8SP_S_START: u32 = 7;
21545pub const INSN_FIELD_C_UIMM8SP_S_SIZE: u32 = 6;
21546pub const INSN_FIELD_C_UIMM10SPLO: u32 = 0x7c;
21547pub const INSN_FIELD_C_UIMM10SPLO_START: u32 = 2;
21548pub const INSN_FIELD_C_UIMM10SPLO_SIZE: u32 = 5;
21549pub const INSN_FIELD_C_UIMM10SPHI: u32 = 0x1000;
21550pub const INSN_FIELD_C_UIMM10SPHI_START: u32 = 12;
21551pub const INSN_FIELD_C_UIMM10SPHI_SIZE: u32 = 1;
21552pub const INSN_FIELD_C_UIMM9SPLO: u32 = 0x7c;
21553pub const INSN_FIELD_C_UIMM9SPLO_START: u32 = 2;
21554pub const INSN_FIELD_C_UIMM9SPLO_SIZE: u32 = 5;
21555pub const INSN_FIELD_C_UIMM9SPHI: u32 = 0x1000;
21556pub const INSN_FIELD_C_UIMM9SPHI_START: u32 = 12;
21557pub const INSN_FIELD_C_UIMM9SPHI_SIZE: u32 = 1;
21558pub const INSN_FIELD_C_UIMM10SP_S: u32 = 0x1f80;
21559pub const INSN_FIELD_C_UIMM10SP_S_START: u32 = 7;
21560pub const INSN_FIELD_C_UIMM10SP_S_SIZE: u32 = 6;
21561pub const INSN_FIELD_C_UIMM9SP_S: u32 = 0x1f80;
21562pub const INSN_FIELD_C_UIMM9SP_S_START: u32 = 7;
21563pub const INSN_FIELD_C_UIMM9SP_S_SIZE: u32 = 6;
21564pub const INSN_FIELD_C_UIMM2: u32 = 0x60;
21565pub const INSN_FIELD_C_UIMM2_START: u32 = 5;
21566pub const INSN_FIELD_C_UIMM2_SIZE: u32 = 2;
21567pub const INSN_FIELD_C_UIMM1: u32 = 0x20;
21568pub const INSN_FIELD_C_UIMM1_START: u32 = 5;
21569pub const INSN_FIELD_C_UIMM1_SIZE: u32 = 1;
21570pub const INSN_FIELD_C_RLIST: u32 = 0xf0;
21571pub const INSN_FIELD_C_RLIST_START: u32 = 4;
21572pub const INSN_FIELD_C_RLIST_SIZE: u32 = 4;
21573pub const INSN_FIELD_C_SPIMM: u32 = 0xc;
21574pub const INSN_FIELD_C_SPIMM_START: u32 = 2;
21575pub const INSN_FIELD_C_SPIMM_SIZE: u32 = 2;
21576pub const INSN_FIELD_C_INDEX: u32 = 0x3fc;
21577pub const INSN_FIELD_C_INDEX_START: u32 = 2;
21578pub const INSN_FIELD_C_INDEX_SIZE: u32 = 8;
21579pub const INSN_FIELD_RS1_P: u32 = 0x380;
21580pub const INSN_FIELD_RS1_P_START: u32 = 7;
21581pub const INSN_FIELD_RS1_P_SIZE: u32 = 3;
21582pub const INSN_FIELD_RS2_P: u32 = 0x1c;
21583pub const INSN_FIELD_RS2_P_START: u32 = 2;
21584pub const INSN_FIELD_RS2_P_SIZE: u32 = 3;
21585pub const INSN_FIELD_RD_P: u32 = 0x1c;
21586pub const INSN_FIELD_RD_P_START: u32 = 2;
21587pub const INSN_FIELD_RD_P_SIZE: u32 = 3;
21588pub const INSN_FIELD_RD_RS1_N0: u32 = 0xf80;
21589pub const INSN_FIELD_RD_RS1_N0_START: u32 = 7;
21590pub const INSN_FIELD_RD_RS1_N0_SIZE: u32 = 5;
21591pub const INSN_FIELD_RD_RS1_P: u32 = 0x380;
21592pub const INSN_FIELD_RD_RS1_P_START: u32 = 7;
21593pub const INSN_FIELD_RD_RS1_P_SIZE: u32 = 3;
21594pub const INSN_FIELD_RD_RS1: u32 = 0xf80;
21595pub const INSN_FIELD_RD_RS1_START: u32 = 7;
21596pub const INSN_FIELD_RD_RS1_SIZE: u32 = 5;
21597pub const INSN_FIELD_RD_N2: u32 = 0xf80;
21598pub const INSN_FIELD_RD_N2_START: u32 = 7;
21599pub const INSN_FIELD_RD_N2_SIZE: u32 = 5;
21600pub const INSN_FIELD_RD_N0: u32 = 0xf80;
21601pub const INSN_FIELD_RD_N0_START: u32 = 7;
21602pub const INSN_FIELD_RD_N0_SIZE: u32 = 5;
21603pub const INSN_FIELD_RS1_N0: u32 = 0xf80;
21604pub const INSN_FIELD_RS1_N0_START: u32 = 7;
21605pub const INSN_FIELD_RS1_N0_SIZE: u32 = 5;
21606pub const INSN_FIELD_C_RS2_N0: u32 = 0x7c;
21607pub const INSN_FIELD_C_RS2_N0_START: u32 = 2;
21608pub const INSN_FIELD_C_RS2_N0_SIZE: u32 = 5;
21609pub const INSN_FIELD_C_RS1_N0: u32 = 0xf80;
21610pub const INSN_FIELD_C_RS1_N0_START: u32 = 7;
21611pub const INSN_FIELD_C_RS1_N0_SIZE: u32 = 5;
21612pub const INSN_FIELD_C_RS2: u32 = 0x7c;
21613pub const INSN_FIELD_C_RS2_START: u32 = 2;
21614pub const INSN_FIELD_C_RS2_SIZE: u32 = 5;
21615pub const INSN_FIELD_C_SREG1: u32 = 0x380;
21616pub const INSN_FIELD_C_SREG1_START: u32 = 7;
21617pub const INSN_FIELD_C_SREG1_SIZE: u32 = 3;
21618pub const INSN_FIELD_C_SREG2: u32 = 0x1c;
21619pub const INSN_FIELD_C_SREG2_START: u32 = 2;
21620pub const INSN_FIELD_C_SREG2_SIZE: u32 = 3;
21621pub const INSN_FIELD_RD_P_E: u32 = 0x18;
21622pub const INSN_FIELD_RD_P_E_START: u32 = 3;
21623pub const INSN_FIELD_RD_P_E_SIZE: u32 = 2;
21624pub const INSN_FIELD_RS2_P_E: u32 = 0x18;
21625pub const INSN_FIELD_RS2_P_E_START: u32 = 3;
21626pub const INSN_FIELD_RS2_P_E_SIZE: u32 = 2;
21627pub const INSN_FIELD_RD_N0_E: u32 = 0xf00;
21628pub const INSN_FIELD_RD_N0_E_START: u32 = 8;
21629pub const INSN_FIELD_RD_N0_E_SIZE: u32 = 4;
21630pub const INSN_FIELD_C_RS2_E: u32 = 0x78;
21631pub const INSN_FIELD_C_RS2_E_START: u32 = 3;
21632pub const INSN_FIELD_C_RS2_E_SIZE: u32 = 4;
21633pub const INSN_FIELD_RD_E: u32 = 0xf00;
21634pub const INSN_FIELD_RD_E_START: u32 = 8;
21635pub const INSN_FIELD_RD_E_SIZE: u32 = 4;
21636pub const INSN_FIELD_RS2_E: u32 = 0x1e00000;
21637pub const INSN_FIELD_RS2_E_START: u32 = 21;
21638pub const INSN_FIELD_RS2_E_SIZE: u32 = 4;
21639pub const INSN_FIELD_P_IMM10: u32 = 0x1ff8000;
21640pub const INSN_FIELD_P_IMM10_START: u32 = 15;
21641pub const INSN_FIELD_P_IMM10_SIZE: u32 = 10;
21642pub const INSN_FIELD_P_IMM8: u32 = 0xff0000;
21643pub const INSN_FIELD_P_IMM8_START: u32 = 16;
21644pub const INSN_FIELD_P_IMM8_SIZE: u32 = 8;
21645pub const INSN_FIELD_P_W_UIMM3: u32 = 0x700000;
21646pub const INSN_FIELD_P_W_UIMM3_START: u32 = 20;
21647pub const INSN_FIELD_P_W_UIMM3_SIZE: u32 = 3;
21648pub const INSN_FIELD_P_W_UIMM4: u32 = 0xf00000;
21649pub const INSN_FIELD_P_W_UIMM4_START: u32 = 20;
21650pub const INSN_FIELD_P_W_UIMM4_SIZE: u32 = 4;
21651pub const INSN_FIELD_P_W_UIMM5: u32 = 0x1f00000;
21652pub const INSN_FIELD_P_W_UIMM5_START: u32 = 20;
21653pub const INSN_FIELD_P_W_UIMM5_SIZE: u32 = 5;
21654pub const INSN_FIELD_P_W_UIMM6: u32 = 0x3f00000;
21655pub const INSN_FIELD_P_W_UIMM6_START: u32 = 20;
21656pub const INSN_FIELD_P_W_UIMM6_SIZE: u32 = 6;
21657pub const INSN_FIELD_P_W: u32 = 0x6000000;
21658pub const INSN_FIELD_P_W_START: u32 = 25;
21659pub const INSN_FIELD_P_W_SIZE: u32 = 2;
21660pub const INSN_FIELD_P_RD_P: u32 = 0xf00;
21661pub const INSN_FIELD_P_RD_P_START: u32 = 8;
21662pub const INSN_FIELD_P_RD_P_SIZE: u32 = 4;
21663pub const INSN_FIELD_P_RS1_P: u32 = 0xf0000;
21664pub const INSN_FIELD_P_RS1_P_START: u32 = 16;
21665pub const INSN_FIELD_P_RS1_P_SIZE: u32 = 4;
21666pub const INSN_FIELD_P_RS2_P: u32 = 0x1e00000;
21667pub const INSN_FIELD_P_RS2_P_START: u32 = 21;
21668pub const INSN_FIELD_P_RS2_P_SIZE: u32 = 4;
21669pub const INSN_FIELD_MOP_R_T_30: u32 = 0x40000000;
21670pub const INSN_FIELD_MOP_R_T_30_START: u32 = 30;
21671pub const INSN_FIELD_MOP_R_T_30_SIZE: u32 = 1;
21672pub const INSN_FIELD_MOP_R_T_27_26: u32 = 0xc000000;
21673pub const INSN_FIELD_MOP_R_T_27_26_START: u32 = 26;
21674pub const INSN_FIELD_MOP_R_T_27_26_SIZE: u32 = 2;
21675pub const INSN_FIELD_MOP_R_T_21_20: u32 = 0x300000;
21676pub const INSN_FIELD_MOP_R_T_21_20_START: u32 = 20;
21677pub const INSN_FIELD_MOP_R_T_21_20_SIZE: u32 = 2;
21678pub const INSN_FIELD_MOP_RR_T_30: u32 = 0x40000000;
21679pub const INSN_FIELD_MOP_RR_T_30_START: u32 = 30;
21680pub const INSN_FIELD_MOP_RR_T_30_SIZE: u32 = 1;
21681pub const INSN_FIELD_MOP_RR_T_27_26: u32 = 0xc000000;
21682pub const INSN_FIELD_MOP_RR_T_27_26_START: u32 = 26;
21683pub const INSN_FIELD_MOP_RR_T_27_26_SIZE: u32 = 2;
21684pub const INSN_FIELD_C_MOP_T: u32 = 0x700;
21685pub const INSN_FIELD_C_MOP_T_START: u32 = 8;
21686pub const INSN_FIELD_C_MOP_T_SIZE: u32 = 3;
21687pub const INSN_FIELD_RS2_EQ_RS1: u32 = 0x1f00000;
21688pub const INSN_FIELD_RS2_EQ_RS1_START: u32 = 20;
21689pub const INSN_FIELD_RS2_EQ_RS1_SIZE: u32 = 5;
21690
21691/// InstructionValue contains the 32-bit instruction value and also provides access into the desired field.
21692#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
21693#[repr(transparent)]
21694pub struct InstructionValue {
21695 pub value: u32,
21696}
21697
21698impl InstructionValue {
21699 pub const fn new(value: u32) -> Self {
21700 Self { value }
21701 }
21702
21703 pub const fn field<const FIELD_START: usize, const FIELD_SIZE: usize>(self) -> u32 {
21704 (self.value >> FIELD_START) & ((1 << FIELD_SIZE) - 1)
21705 }
21706
21707 pub const fn rd(self) -> u32 {
21708 (self.value >> INSN_FIELD_RD_START) & ((1 << INSN_FIELD_RD_SIZE) - 1)
21709 }
21710
21711 pub const fn set_rd(mut self, value: u32) -> Self {
21712 let mask = INSN_FIELD_RD;
21713 self.value &= !mask;
21714 self.value |= (value & ((1 << INSN_FIELD_RD_SIZE) - 1)) << INSN_FIELD_RD_START;
21715 self
21716 }
21717 pub const fn rt(self) -> u32 {
21718 (self.value >> INSN_FIELD_RT_START) & ((1 << INSN_FIELD_RT_SIZE) - 1)
21719 }
21720
21721 pub const fn set_rt(mut self, value: u32) -> Self {
21722 let mask = INSN_FIELD_RT;
21723 self.value &= !mask;
21724 self.value |= (value & ((1 << INSN_FIELD_RT_SIZE) - 1)) << INSN_FIELD_RT_START;
21725 self
21726 }
21727 pub const fn rs1(self) -> u32 {
21728 (self.value >> INSN_FIELD_RS1_START) & ((1 << INSN_FIELD_RS1_SIZE) - 1)
21729 }
21730
21731 pub const fn set_rs1(mut self, value: u32) -> Self {
21732 let mask = INSN_FIELD_RS1;
21733 self.value &= !mask;
21734 self.value |= (value & ((1 << INSN_FIELD_RS1_SIZE) - 1)) << INSN_FIELD_RS1_START;
21735 self
21736 }
21737 pub const fn rs2(self) -> u32 {
21738 (self.value >> INSN_FIELD_RS2_START) & ((1 << INSN_FIELD_RS2_SIZE) - 1)
21739 }
21740
21741 pub const fn set_rs2(mut self, value: u32) -> Self {
21742 let mask = INSN_FIELD_RS2;
21743 self.value &= !mask;
21744 self.value |= (value & ((1 << INSN_FIELD_RS2_SIZE) - 1)) << INSN_FIELD_RS2_START;
21745 self
21746 }
21747 pub const fn rs3(self) -> u32 {
21748 (self.value >> INSN_FIELD_RS3_START) & ((1 << INSN_FIELD_RS3_SIZE) - 1)
21749 }
21750
21751 pub const fn set_rs3(mut self, value: u32) -> Self {
21752 let mask = INSN_FIELD_RS3;
21753 self.value &= !mask;
21754 self.value |= (value & ((1 << INSN_FIELD_RS3_SIZE) - 1)) << INSN_FIELD_RS3_START;
21755 self
21756 }
21757 pub const fn aqrl(self) -> u32 {
21758 (self.value >> INSN_FIELD_AQRL_START) & ((1 << INSN_FIELD_AQRL_SIZE) - 1)
21759 }
21760
21761 pub const fn set_aqrl(mut self, value: u32) -> Self {
21762 let mask = INSN_FIELD_AQRL;
21763 self.value &= !mask;
21764 self.value |= (value & ((1 << INSN_FIELD_AQRL_SIZE) - 1)) << INSN_FIELD_AQRL_START;
21765 self
21766 }
21767 pub const fn aq(self) -> u32 {
21768 (self.value >> INSN_FIELD_AQ_START) & ((1 << INSN_FIELD_AQ_SIZE) - 1)
21769 }
21770
21771 pub const fn set_aq(mut self, value: u32) -> Self {
21772 let mask = INSN_FIELD_AQ;
21773 self.value &= !mask;
21774 self.value |= (value & ((1 << INSN_FIELD_AQ_SIZE) - 1)) << INSN_FIELD_AQ_START;
21775 self
21776 }
21777 pub const fn rl(self) -> u32 {
21778 (self.value >> INSN_FIELD_RL_START) & ((1 << INSN_FIELD_RL_SIZE) - 1)
21779 }
21780
21781 pub const fn set_rl(mut self, value: u32) -> Self {
21782 let mask = INSN_FIELD_RL;
21783 self.value &= !mask;
21784 self.value |= (value & ((1 << INSN_FIELD_RL_SIZE) - 1)) << INSN_FIELD_RL_START;
21785 self
21786 }
21787 pub const fn fm(self) -> u32 {
21788 (self.value >> INSN_FIELD_FM_START) & ((1 << INSN_FIELD_FM_SIZE) - 1)
21789 }
21790
21791 pub const fn set_fm(mut self, value: u32) -> Self {
21792 let mask = INSN_FIELD_FM;
21793 self.value &= !mask;
21794 self.value |= (value & ((1 << INSN_FIELD_FM_SIZE) - 1)) << INSN_FIELD_FM_START;
21795 self
21796 }
21797 pub const fn pred(self) -> u32 {
21798 (self.value >> INSN_FIELD_PRED_START) & ((1 << INSN_FIELD_PRED_SIZE) - 1)
21799 }
21800
21801 pub const fn set_pred(mut self, value: u32) -> Self {
21802 let mask = INSN_FIELD_PRED;
21803 self.value &= !mask;
21804 self.value |= (value & ((1 << INSN_FIELD_PRED_SIZE) - 1)) << INSN_FIELD_PRED_START;
21805 self
21806 }
21807 pub const fn succ(self) -> u32 {
21808 (self.value >> INSN_FIELD_SUCC_START) & ((1 << INSN_FIELD_SUCC_SIZE) - 1)
21809 }
21810
21811 pub const fn set_succ(mut self, value: u32) -> Self {
21812 let mask = INSN_FIELD_SUCC;
21813 self.value &= !mask;
21814 self.value |= (value & ((1 << INSN_FIELD_SUCC_SIZE) - 1)) << INSN_FIELD_SUCC_START;
21815 self
21816 }
21817 pub const fn rm(self) -> u32 {
21818 (self.value >> INSN_FIELD_RM_START) & ((1 << INSN_FIELD_RM_SIZE) - 1)
21819 }
21820
21821 pub const fn set_rm(mut self, value: u32) -> Self {
21822 let mask = INSN_FIELD_RM;
21823 self.value &= !mask;
21824 self.value |= (value & ((1 << INSN_FIELD_RM_SIZE) - 1)) << INSN_FIELD_RM_START;
21825 self
21826 }
21827 pub const fn funct3(self) -> u32 {
21828 (self.value >> INSN_FIELD_FUNCT3_START) & ((1 << INSN_FIELD_FUNCT3_SIZE) - 1)
21829 }
21830
21831 pub const fn set_funct3(mut self, value: u32) -> Self {
21832 let mask = INSN_FIELD_FUNCT3;
21833 self.value &= !mask;
21834 self.value |= (value & ((1 << INSN_FIELD_FUNCT3_SIZE) - 1)) << INSN_FIELD_FUNCT3_START;
21835 self
21836 }
21837 pub const fn funct2(self) -> u32 {
21838 (self.value >> INSN_FIELD_FUNCT2_START) & ((1 << INSN_FIELD_FUNCT2_SIZE) - 1)
21839 }
21840
21841 pub const fn set_funct2(mut self, value: u32) -> Self {
21842 let mask = INSN_FIELD_FUNCT2;
21843 self.value &= !mask;
21844 self.value |= (value & ((1 << INSN_FIELD_FUNCT2_SIZE) - 1)) << INSN_FIELD_FUNCT2_START;
21845 self
21846 }
21847 pub const fn imm20_raw(self) -> u32 {
21848 (self.value >> INSN_FIELD_IMM20_START) & ((1 << INSN_FIELD_IMM20_SIZE) - 1)
21849 }
21850
21851 pub const fn set_imm20_raw(mut self, value: u32) -> Self {
21852 let mask = INSN_FIELD_IMM20;
21853 self.value &= !mask;
21854 self.value |= (value & ((1 << INSN_FIELD_IMM20_SIZE) - 1)) << INSN_FIELD_IMM20_START;
21855 self
21856 }
21857 pub const fn jimm20_raw(self) -> u32 {
21858 (self.value >> INSN_FIELD_JIMM20_START) & ((1 << INSN_FIELD_JIMM20_SIZE) - 1)
21859 }
21860
21861 pub const fn set_jimm20_raw(mut self, value: u32) -> Self {
21862 let mask = INSN_FIELD_JIMM20;
21863 self.value &= !mask;
21864 self.value |= (value & ((1 << INSN_FIELD_JIMM20_SIZE) - 1)) << INSN_FIELD_JIMM20_START;
21865 self
21866 }
21867 pub const fn imm12_raw(self) -> u32 {
21868 (self.value >> INSN_FIELD_IMM12_START) & ((1 << INSN_FIELD_IMM12_SIZE) - 1)
21869 }
21870
21871 pub const fn set_imm12_raw(mut self, value: u32) -> Self {
21872 let mask = INSN_FIELD_IMM12;
21873 self.value &= !mask;
21874 self.value |= (value & ((1 << INSN_FIELD_IMM12_SIZE) - 1)) << INSN_FIELD_IMM12_START;
21875 self
21876 }
21877 pub const fn csr(self) -> u32 {
21878 (self.value >> INSN_FIELD_CSR_START) & ((1 << INSN_FIELD_CSR_SIZE) - 1)
21879 }
21880
21881 pub const fn set_csr(mut self, value: u32) -> Self {
21882 let mask = INSN_FIELD_CSR;
21883 self.value &= !mask;
21884 self.value |= (value & ((1 << INSN_FIELD_CSR_SIZE) - 1)) << INSN_FIELD_CSR_START;
21885 self
21886 }
21887 pub const fn imm12hi_raw(self) -> u32 {
21888 (self.value >> INSN_FIELD_IMM12HI_START) & ((1 << INSN_FIELD_IMM12HI_SIZE) - 1)
21889 }
21890
21891 pub const fn set_imm12hi_raw(mut self, value: u32) -> Self {
21892 let mask = INSN_FIELD_IMM12HI;
21893 self.value &= !mask;
21894 self.value |= (value & ((1 << INSN_FIELD_IMM12HI_SIZE) - 1)) << INSN_FIELD_IMM12HI_START;
21895 self
21896 }
21897 pub const fn bimm12hi_raw(self) -> u32 {
21898 (self.value >> INSN_FIELD_BIMM12HI_START) & ((1 << INSN_FIELD_BIMM12HI_SIZE) - 1)
21899 }
21900
21901 pub const fn set_bimm12hi_raw(mut self, value: u32) -> Self {
21902 let mask = INSN_FIELD_BIMM12HI;
21903 self.value &= !mask;
21904 self.value |= (value & ((1 << INSN_FIELD_BIMM12HI_SIZE) - 1)) << INSN_FIELD_BIMM12HI_START;
21905 self
21906 }
21907 pub const fn imm12lo_raw(self) -> u32 {
21908 (self.value >> INSN_FIELD_IMM12LO_START) & ((1 << INSN_FIELD_IMM12LO_SIZE) - 1)
21909 }
21910
21911 pub const fn set_imm12lo_raw(mut self, value: u32) -> Self {
21912 let mask = INSN_FIELD_IMM12LO;
21913 self.value &= !mask;
21914 self.value |= (value & ((1 << INSN_FIELD_IMM12LO_SIZE) - 1)) << INSN_FIELD_IMM12LO_START;
21915 self
21916 }
21917 pub const fn bimm12lo_raw(self) -> u32 {
21918 (self.value >> INSN_FIELD_BIMM12LO_START) & ((1 << INSN_FIELD_BIMM12LO_SIZE) - 1)
21919 }
21920
21921 pub const fn set_bimm12lo_raw(mut self, value: u32) -> Self {
21922 let mask = INSN_FIELD_BIMM12LO;
21923 self.value &= !mask;
21924 self.value |= (value & ((1 << INSN_FIELD_BIMM12LO_SIZE) - 1)) << INSN_FIELD_BIMM12LO_START;
21925 self
21926 }
21927 pub const fn shamtq(self) -> u32 {
21928 (self.value >> INSN_FIELD_SHAMTQ_START) & ((1 << INSN_FIELD_SHAMTQ_SIZE) - 1)
21929 }
21930
21931 pub const fn set_shamtq(mut self, value: u32) -> Self {
21932 let mask = INSN_FIELD_SHAMTQ;
21933 self.value &= !mask;
21934 self.value |= (value & ((1 << INSN_FIELD_SHAMTQ_SIZE) - 1)) << INSN_FIELD_SHAMTQ_START;
21935 self
21936 }
21937 pub const fn shamtw(self) -> u32 {
21938 (self.value >> INSN_FIELD_SHAMTW_START) & ((1 << INSN_FIELD_SHAMTW_SIZE) - 1)
21939 }
21940
21941 pub const fn set_shamtw(mut self, value: u32) -> Self {
21942 let mask = INSN_FIELD_SHAMTW;
21943 self.value &= !mask;
21944 self.value |= (value & ((1 << INSN_FIELD_SHAMTW_SIZE) - 1)) << INSN_FIELD_SHAMTW_START;
21945 self
21946 }
21947 pub const fn shamtw4(self) -> u32 {
21948 (self.value >> INSN_FIELD_SHAMTW4_START) & ((1 << INSN_FIELD_SHAMTW4_SIZE) - 1)
21949 }
21950
21951 pub const fn set_shamtw4(mut self, value: u32) -> Self {
21952 let mask = INSN_FIELD_SHAMTW4;
21953 self.value &= !mask;
21954 self.value |= (value & ((1 << INSN_FIELD_SHAMTW4_SIZE) - 1)) << INSN_FIELD_SHAMTW4_START;
21955 self
21956 }
21957 pub const fn shamtd(self) -> u32 {
21958 (self.value >> INSN_FIELD_SHAMTD_START) & ((1 << INSN_FIELD_SHAMTD_SIZE) - 1)
21959 }
21960
21961 pub const fn set_shamtd(mut self, value: u32) -> Self {
21962 let mask = INSN_FIELD_SHAMTD;
21963 self.value &= !mask;
21964 self.value |= (value & ((1 << INSN_FIELD_SHAMTD_SIZE) - 1)) << INSN_FIELD_SHAMTD_START;
21965 self
21966 }
21967 pub const fn bs(self) -> u32 {
21968 (self.value >> INSN_FIELD_BS_START) & ((1 << INSN_FIELD_BS_SIZE) - 1)
21969 }
21970
21971 pub const fn set_bs(mut self, value: u32) -> Self {
21972 let mask = INSN_FIELD_BS;
21973 self.value &= !mask;
21974 self.value |= (value & ((1 << INSN_FIELD_BS_SIZE) - 1)) << INSN_FIELD_BS_START;
21975 self
21976 }
21977 pub const fn rnum(self) -> u32 {
21978 (self.value >> INSN_FIELD_RNUM_START) & ((1 << INSN_FIELD_RNUM_SIZE) - 1)
21979 }
21980
21981 pub const fn set_rnum(mut self, value: u32) -> Self {
21982 let mask = INSN_FIELD_RNUM;
21983 self.value &= !mask;
21984 self.value |= (value & ((1 << INSN_FIELD_RNUM_SIZE) - 1)) << INSN_FIELD_RNUM_START;
21985 self
21986 }
21987 pub const fn rc(self) -> u32 {
21988 (self.value >> INSN_FIELD_RC_START) & ((1 << INSN_FIELD_RC_SIZE) - 1)
21989 }
21990
21991 pub const fn set_rc(mut self, value: u32) -> Self {
21992 let mask = INSN_FIELD_RC;
21993 self.value &= !mask;
21994 self.value |= (value & ((1 << INSN_FIELD_RC_SIZE) - 1)) << INSN_FIELD_RC_START;
21995 self
21996 }
21997 pub const fn imm2_raw(self) -> u32 {
21998 (self.value >> INSN_FIELD_IMM2_START) & ((1 << INSN_FIELD_IMM2_SIZE) - 1)
21999 }
22000
22001 pub const fn set_imm2_raw(mut self, value: u32) -> Self {
22002 let mask = INSN_FIELD_IMM2;
22003 self.value &= !mask;
22004 self.value |= (value & ((1 << INSN_FIELD_IMM2_SIZE) - 1)) << INSN_FIELD_IMM2_START;
22005 self
22006 }
22007 pub const fn imm3_raw(self) -> u32 {
22008 (self.value >> INSN_FIELD_IMM3_START) & ((1 << INSN_FIELD_IMM3_SIZE) - 1)
22009 }
22010
22011 pub const fn set_imm3_raw(mut self, value: u32) -> Self {
22012 let mask = INSN_FIELD_IMM3;
22013 self.value &= !mask;
22014 self.value |= (value & ((1 << INSN_FIELD_IMM3_SIZE) - 1)) << INSN_FIELD_IMM3_START;
22015 self
22016 }
22017 pub const fn imm4_raw(self) -> u32 {
22018 (self.value >> INSN_FIELD_IMM4_START) & ((1 << INSN_FIELD_IMM4_SIZE) - 1)
22019 }
22020
22021 pub const fn set_imm4_raw(mut self, value: u32) -> Self {
22022 let mask = INSN_FIELD_IMM4;
22023 self.value &= !mask;
22024 self.value |= (value & ((1 << INSN_FIELD_IMM4_SIZE) - 1)) << INSN_FIELD_IMM4_START;
22025 self
22026 }
22027 pub const fn imm5_raw(self) -> u32 {
22028 (self.value >> INSN_FIELD_IMM5_START) & ((1 << INSN_FIELD_IMM5_SIZE) - 1)
22029 }
22030
22031 pub const fn set_imm5_raw(mut self, value: u32) -> Self {
22032 let mask = INSN_FIELD_IMM5;
22033 self.value &= !mask;
22034 self.value |= (value & ((1 << INSN_FIELD_IMM5_SIZE) - 1)) << INSN_FIELD_IMM5_START;
22035 self
22036 }
22037 pub const fn imm6_raw(self) -> u32 {
22038 (self.value >> INSN_FIELD_IMM6_START) & ((1 << INSN_FIELD_IMM6_SIZE) - 1)
22039 }
22040
22041 pub const fn set_imm6_raw(mut self, value: u32) -> Self {
22042 let mask = INSN_FIELD_IMM6;
22043 self.value &= !mask;
22044 self.value |= (value & ((1 << INSN_FIELD_IMM6_SIZE) - 1)) << INSN_FIELD_IMM6_START;
22045 self
22046 }
22047 pub const fn opcode(self) -> u32 {
22048 (self.value >> INSN_FIELD_OPCODE_START) & ((1 << INSN_FIELD_OPCODE_SIZE) - 1)
22049 }
22050
22051 pub const fn set_opcode(mut self, value: u32) -> Self {
22052 let mask = INSN_FIELD_OPCODE;
22053 self.value &= !mask;
22054 self.value |= (value & ((1 << INSN_FIELD_OPCODE_SIZE) - 1)) << INSN_FIELD_OPCODE_START;
22055 self
22056 }
22057 pub const fn funct7(self) -> u32 {
22058 (self.value >> INSN_FIELD_FUNCT7_START) & ((1 << INSN_FIELD_FUNCT7_SIZE) - 1)
22059 }
22060
22061 pub const fn set_funct7(mut self, value: u32) -> Self {
22062 let mask = INSN_FIELD_FUNCT7;
22063 self.value &= !mask;
22064 self.value |= (value & ((1 << INSN_FIELD_FUNCT7_SIZE) - 1)) << INSN_FIELD_FUNCT7_START;
22065 self
22066 }
22067 pub const fn vd(self) -> u32 {
22068 (self.value >> INSN_FIELD_VD_START) & ((1 << INSN_FIELD_VD_SIZE) - 1)
22069 }
22070
22071 pub const fn set_vd(mut self, value: u32) -> Self {
22072 let mask = INSN_FIELD_VD;
22073 self.value &= !mask;
22074 self.value |= (value & ((1 << INSN_FIELD_VD_SIZE) - 1)) << INSN_FIELD_VD_START;
22075 self
22076 }
22077 pub const fn vs3(self) -> u32 {
22078 (self.value >> INSN_FIELD_VS3_START) & ((1 << INSN_FIELD_VS3_SIZE) - 1)
22079 }
22080
22081 pub const fn set_vs3(mut self, value: u32) -> Self {
22082 let mask = INSN_FIELD_VS3;
22083 self.value &= !mask;
22084 self.value |= (value & ((1 << INSN_FIELD_VS3_SIZE) - 1)) << INSN_FIELD_VS3_START;
22085 self
22086 }
22087 pub const fn vs1(self) -> u32 {
22088 (self.value >> INSN_FIELD_VS1_START) & ((1 << INSN_FIELD_VS1_SIZE) - 1)
22089 }
22090
22091 pub const fn set_vs1(mut self, value: u32) -> Self {
22092 let mask = INSN_FIELD_VS1;
22093 self.value &= !mask;
22094 self.value |= (value & ((1 << INSN_FIELD_VS1_SIZE) - 1)) << INSN_FIELD_VS1_START;
22095 self
22096 }
22097 pub const fn vs2(self) -> u32 {
22098 (self.value >> INSN_FIELD_VS2_START) & ((1 << INSN_FIELD_VS2_SIZE) - 1)
22099 }
22100
22101 pub const fn set_vs2(mut self, value: u32) -> Self {
22102 let mask = INSN_FIELD_VS2;
22103 self.value &= !mask;
22104 self.value |= (value & ((1 << INSN_FIELD_VS2_SIZE) - 1)) << INSN_FIELD_VS2_START;
22105 self
22106 }
22107 pub const fn vm(self) -> u32 {
22108 (self.value >> INSN_FIELD_VM_START) & ((1 << INSN_FIELD_VM_SIZE) - 1)
22109 }
22110
22111 pub const fn set_vm(mut self, value: u32) -> Self {
22112 let mask = INSN_FIELD_VM;
22113 self.value &= !mask;
22114 self.value |= (value & ((1 << INSN_FIELD_VM_SIZE) - 1)) << INSN_FIELD_VM_START;
22115 self
22116 }
22117 pub const fn wd(self) -> u32 {
22118 (self.value >> INSN_FIELD_WD_START) & ((1 << INSN_FIELD_WD_SIZE) - 1)
22119 }
22120
22121 pub const fn set_wd(mut self, value: u32) -> Self {
22122 let mask = INSN_FIELD_WD;
22123 self.value &= !mask;
22124 self.value |= (value & ((1 << INSN_FIELD_WD_SIZE) - 1)) << INSN_FIELD_WD_START;
22125 self
22126 }
22127 pub const fn amoop(self) -> u32 {
22128 (self.value >> INSN_FIELD_AMOOP_START) & ((1 << INSN_FIELD_AMOOP_SIZE) - 1)
22129 }
22130
22131 pub const fn set_amoop(mut self, value: u32) -> Self {
22132 let mask = INSN_FIELD_AMOOP;
22133 self.value &= !mask;
22134 self.value |= (value & ((1 << INSN_FIELD_AMOOP_SIZE) - 1)) << INSN_FIELD_AMOOP_START;
22135 self
22136 }
22137 pub const fn nf(self) -> u32 {
22138 (self.value >> INSN_FIELD_NF_START) & ((1 << INSN_FIELD_NF_SIZE) - 1)
22139 }
22140
22141 pub const fn set_nf(mut self, value: u32) -> Self {
22142 let mask = INSN_FIELD_NF;
22143 self.value &= !mask;
22144 self.value |= (value & ((1 << INSN_FIELD_NF_SIZE) - 1)) << INSN_FIELD_NF_START;
22145 self
22146 }
22147 pub const fn simm5_raw(self) -> u32 {
22148 (self.value >> INSN_FIELD_SIMM5_START) & ((1 << INSN_FIELD_SIMM5_SIZE) - 1)
22149 }
22150
22151 pub const fn set_simm5_raw(mut self, value: u32) -> Self {
22152 let mask = INSN_FIELD_SIMM5;
22153 self.value &= !mask;
22154 self.value |= (value & ((1 << INSN_FIELD_SIMM5_SIZE) - 1)) << INSN_FIELD_SIMM5_START;
22155 self
22156 }
22157 pub const fn zimm5_raw(self) -> u32 {
22158 (self.value >> INSN_FIELD_ZIMM5_START) & ((1 << INSN_FIELD_ZIMM5_SIZE) - 1)
22159 }
22160
22161 pub const fn set_zimm5_raw(mut self, value: u32) -> Self {
22162 let mask = INSN_FIELD_ZIMM5;
22163 self.value &= !mask;
22164 self.value |= (value & ((1 << INSN_FIELD_ZIMM5_SIZE) - 1)) << INSN_FIELD_ZIMM5_START;
22165 self
22166 }
22167 pub const fn zimm10_raw(self) -> u32 {
22168 (self.value >> INSN_FIELD_ZIMM10_START) & ((1 << INSN_FIELD_ZIMM10_SIZE) - 1)
22169 }
22170
22171 pub const fn set_zimm10_raw(mut self, value: u32) -> Self {
22172 let mask = INSN_FIELD_ZIMM10;
22173 self.value &= !mask;
22174 self.value |= (value & ((1 << INSN_FIELD_ZIMM10_SIZE) - 1)) << INSN_FIELD_ZIMM10_START;
22175 self
22176 }
22177 pub const fn zimm11_raw(self) -> u32 {
22178 (self.value >> INSN_FIELD_ZIMM11_START) & ((1 << INSN_FIELD_ZIMM11_SIZE) - 1)
22179 }
22180
22181 pub const fn set_zimm11_raw(mut self, value: u32) -> Self {
22182 let mask = INSN_FIELD_ZIMM11;
22183 self.value &= !mask;
22184 self.value |= (value & ((1 << INSN_FIELD_ZIMM11_SIZE) - 1)) << INSN_FIELD_ZIMM11_START;
22185 self
22186 }
22187 pub const fn zimm6hi_raw(self) -> u32 {
22188 (self.value >> INSN_FIELD_ZIMM6HI_START) & ((1 << INSN_FIELD_ZIMM6HI_SIZE) - 1)
22189 }
22190
22191 pub const fn set_zimm6hi_raw(mut self, value: u32) -> Self {
22192 let mask = INSN_FIELD_ZIMM6HI;
22193 self.value &= !mask;
22194 self.value |= (value & ((1 << INSN_FIELD_ZIMM6HI_SIZE) - 1)) << INSN_FIELD_ZIMM6HI_START;
22195 self
22196 }
22197 pub const fn zimm6lo_raw(self) -> u32 {
22198 (self.value >> INSN_FIELD_ZIMM6LO_START) & ((1 << INSN_FIELD_ZIMM6LO_SIZE) - 1)
22199 }
22200
22201 pub const fn set_zimm6lo_raw(mut self, value: u32) -> Self {
22202 let mask = INSN_FIELD_ZIMM6LO;
22203 self.value &= !mask;
22204 self.value |= (value & ((1 << INSN_FIELD_ZIMM6LO_SIZE) - 1)) << INSN_FIELD_ZIMM6LO_START;
22205 self
22206 }
22207 pub const fn c_nzuimm10_raw(self) -> u32 {
22208 (self.value >> INSN_FIELD_C_NZUIMM10_START) & ((1 << INSN_FIELD_C_NZUIMM10_SIZE) - 1)
22209 }
22210
22211 pub const fn set_c_nzuimm10_raw(mut self, value: u32) -> Self {
22212 let mask = INSN_FIELD_C_NZUIMM10;
22213 self.value &= !mask;
22214 self.value |=
22215 (value & ((1 << INSN_FIELD_C_NZUIMM10_SIZE) - 1)) << INSN_FIELD_C_NZUIMM10_START;
22216 self
22217 }
22218 pub const fn c_uimm7lo_raw(self) -> u32 {
22219 (self.value >> INSN_FIELD_C_UIMM7LO_START) & ((1 << INSN_FIELD_C_UIMM7LO_SIZE) - 1)
22220 }
22221
22222 pub const fn set_c_uimm7lo_raw(mut self, value: u32) -> Self {
22223 let mask = INSN_FIELD_C_UIMM7LO;
22224 self.value &= !mask;
22225 self.value |=
22226 (value & ((1 << INSN_FIELD_C_UIMM7LO_SIZE) - 1)) << INSN_FIELD_C_UIMM7LO_START;
22227 self
22228 }
22229 pub const fn c_uimm7hi_raw(self) -> u32 {
22230 (self.value >> INSN_FIELD_C_UIMM7HI_START) & ((1 << INSN_FIELD_C_UIMM7HI_SIZE) - 1)
22231 }
22232
22233 pub const fn set_c_uimm7hi_raw(mut self, value: u32) -> Self {
22234 let mask = INSN_FIELD_C_UIMM7HI;
22235 self.value &= !mask;
22236 self.value |=
22237 (value & ((1 << INSN_FIELD_C_UIMM7HI_SIZE) - 1)) << INSN_FIELD_C_UIMM7HI_START;
22238 self
22239 }
22240 pub const fn c_uimm8lo_raw(self) -> u32 {
22241 (self.value >> INSN_FIELD_C_UIMM8LO_START) & ((1 << INSN_FIELD_C_UIMM8LO_SIZE) - 1)
22242 }
22243
22244 pub const fn set_c_uimm8lo_raw(mut self, value: u32) -> Self {
22245 let mask = INSN_FIELD_C_UIMM8LO;
22246 self.value &= !mask;
22247 self.value |=
22248 (value & ((1 << INSN_FIELD_C_UIMM8LO_SIZE) - 1)) << INSN_FIELD_C_UIMM8LO_START;
22249 self
22250 }
22251 pub const fn c_uimm8hi_raw(self) -> u32 {
22252 (self.value >> INSN_FIELD_C_UIMM8HI_START) & ((1 << INSN_FIELD_C_UIMM8HI_SIZE) - 1)
22253 }
22254
22255 pub const fn set_c_uimm8hi_raw(mut self, value: u32) -> Self {
22256 let mask = INSN_FIELD_C_UIMM8HI;
22257 self.value &= !mask;
22258 self.value |=
22259 (value & ((1 << INSN_FIELD_C_UIMM8HI_SIZE) - 1)) << INSN_FIELD_C_UIMM8HI_START;
22260 self
22261 }
22262 pub const fn c_uimm9lo_raw(self) -> u32 {
22263 (self.value >> INSN_FIELD_C_UIMM9LO_START) & ((1 << INSN_FIELD_C_UIMM9LO_SIZE) - 1)
22264 }
22265
22266 pub const fn set_c_uimm9lo_raw(mut self, value: u32) -> Self {
22267 let mask = INSN_FIELD_C_UIMM9LO;
22268 self.value &= !mask;
22269 self.value |=
22270 (value & ((1 << INSN_FIELD_C_UIMM9LO_SIZE) - 1)) << INSN_FIELD_C_UIMM9LO_START;
22271 self
22272 }
22273 pub const fn c_uimm9hi_raw(self) -> u32 {
22274 (self.value >> INSN_FIELD_C_UIMM9HI_START) & ((1 << INSN_FIELD_C_UIMM9HI_SIZE) - 1)
22275 }
22276
22277 pub const fn set_c_uimm9hi_raw(mut self, value: u32) -> Self {
22278 let mask = INSN_FIELD_C_UIMM9HI;
22279 self.value &= !mask;
22280 self.value |=
22281 (value & ((1 << INSN_FIELD_C_UIMM9HI_SIZE) - 1)) << INSN_FIELD_C_UIMM9HI_START;
22282 self
22283 }
22284 pub const fn c_nzimm6lo_raw(self) -> u32 {
22285 (self.value >> INSN_FIELD_C_NZIMM6LO_START) & ((1 << INSN_FIELD_C_NZIMM6LO_SIZE) - 1)
22286 }
22287
22288 pub const fn set_c_nzimm6lo_raw(mut self, value: u32) -> Self {
22289 let mask = INSN_FIELD_C_NZIMM6LO;
22290 self.value &= !mask;
22291 self.value |=
22292 (value & ((1 << INSN_FIELD_C_NZIMM6LO_SIZE) - 1)) << INSN_FIELD_C_NZIMM6LO_START;
22293 self
22294 }
22295 pub const fn c_nzimm6hi_raw(self) -> u32 {
22296 (self.value >> INSN_FIELD_C_NZIMM6HI_START) & ((1 << INSN_FIELD_C_NZIMM6HI_SIZE) - 1)
22297 }
22298
22299 pub const fn set_c_nzimm6hi_raw(mut self, value: u32) -> Self {
22300 let mask = INSN_FIELD_C_NZIMM6HI;
22301 self.value &= !mask;
22302 self.value |=
22303 (value & ((1 << INSN_FIELD_C_NZIMM6HI_SIZE) - 1)) << INSN_FIELD_C_NZIMM6HI_START;
22304 self
22305 }
22306 pub const fn c_imm6lo_raw(self) -> u32 {
22307 (self.value >> INSN_FIELD_C_IMM6LO_START) & ((1 << INSN_FIELD_C_IMM6LO_SIZE) - 1)
22308 }
22309
22310 pub const fn set_c_imm6lo_raw(mut self, value: u32) -> Self {
22311 let mask = INSN_FIELD_C_IMM6LO;
22312 self.value &= !mask;
22313 self.value |= (value & ((1 << INSN_FIELD_C_IMM6LO_SIZE) - 1)) << INSN_FIELD_C_IMM6LO_START;
22314 self
22315 }
22316 pub const fn c_imm6hi_raw(self) -> u32 {
22317 (self.value >> INSN_FIELD_C_IMM6HI_START) & ((1 << INSN_FIELD_C_IMM6HI_SIZE) - 1)
22318 }
22319
22320 pub const fn set_c_imm6hi_raw(mut self, value: u32) -> Self {
22321 let mask = INSN_FIELD_C_IMM6HI;
22322 self.value &= !mask;
22323 self.value |= (value & ((1 << INSN_FIELD_C_IMM6HI_SIZE) - 1)) << INSN_FIELD_C_IMM6HI_START;
22324 self
22325 }
22326 pub const fn c_nzimm10hi_raw(self) -> u32 {
22327 (self.value >> INSN_FIELD_C_NZIMM10HI_START) & ((1 << INSN_FIELD_C_NZIMM10HI_SIZE) - 1)
22328 }
22329
22330 pub const fn set_c_nzimm10hi_raw(mut self, value: u32) -> Self {
22331 let mask = INSN_FIELD_C_NZIMM10HI;
22332 self.value &= !mask;
22333 self.value |=
22334 (value & ((1 << INSN_FIELD_C_NZIMM10HI_SIZE) - 1)) << INSN_FIELD_C_NZIMM10HI_START;
22335 self
22336 }
22337 pub const fn c_nzimm10lo_raw(self) -> u32 {
22338 (self.value >> INSN_FIELD_C_NZIMM10LO_START) & ((1 << INSN_FIELD_C_NZIMM10LO_SIZE) - 1)
22339 }
22340
22341 pub const fn set_c_nzimm10lo_raw(mut self, value: u32) -> Self {
22342 let mask = INSN_FIELD_C_NZIMM10LO;
22343 self.value &= !mask;
22344 self.value |=
22345 (value & ((1 << INSN_FIELD_C_NZIMM10LO_SIZE) - 1)) << INSN_FIELD_C_NZIMM10LO_START;
22346 self
22347 }
22348 pub const fn c_nzimm18hi_raw(self) -> u32 {
22349 (self.value >> INSN_FIELD_C_NZIMM18HI_START) & ((1 << INSN_FIELD_C_NZIMM18HI_SIZE) - 1)
22350 }
22351
22352 pub const fn set_c_nzimm18hi_raw(mut self, value: u32) -> Self {
22353 let mask = INSN_FIELD_C_NZIMM18HI;
22354 self.value &= !mask;
22355 self.value |=
22356 (value & ((1 << INSN_FIELD_C_NZIMM18HI_SIZE) - 1)) << INSN_FIELD_C_NZIMM18HI_START;
22357 self
22358 }
22359 pub const fn c_nzimm18lo_raw(self) -> u32 {
22360 (self.value >> INSN_FIELD_C_NZIMM18LO_START) & ((1 << INSN_FIELD_C_NZIMM18LO_SIZE) - 1)
22361 }
22362
22363 pub const fn set_c_nzimm18lo_raw(mut self, value: u32) -> Self {
22364 let mask = INSN_FIELD_C_NZIMM18LO;
22365 self.value &= !mask;
22366 self.value |=
22367 (value & ((1 << INSN_FIELD_C_NZIMM18LO_SIZE) - 1)) << INSN_FIELD_C_NZIMM18LO_START;
22368 self
22369 }
22370 pub const fn c_imm12_raw(self) -> u32 {
22371 (self.value >> INSN_FIELD_C_IMM12_START) & ((1 << INSN_FIELD_C_IMM12_SIZE) - 1)
22372 }
22373
22374 pub const fn set_c_imm12_raw(mut self, value: u32) -> Self {
22375 let mask = INSN_FIELD_C_IMM12;
22376 self.value &= !mask;
22377 self.value |= (value & ((1 << INSN_FIELD_C_IMM12_SIZE) - 1)) << INSN_FIELD_C_IMM12_START;
22378 self
22379 }
22380 pub const fn c_bimm9lo_raw(self) -> u32 {
22381 (self.value >> INSN_FIELD_C_BIMM9LO_START) & ((1 << INSN_FIELD_C_BIMM9LO_SIZE) - 1)
22382 }
22383
22384 pub const fn set_c_bimm9lo_raw(mut self, value: u32) -> Self {
22385 let mask = INSN_FIELD_C_BIMM9LO;
22386 self.value &= !mask;
22387 self.value |=
22388 (value & ((1 << INSN_FIELD_C_BIMM9LO_SIZE) - 1)) << INSN_FIELD_C_BIMM9LO_START;
22389 self
22390 }
22391 pub const fn c_bimm9hi_raw(self) -> u32 {
22392 (self.value >> INSN_FIELD_C_BIMM9HI_START) & ((1 << INSN_FIELD_C_BIMM9HI_SIZE) - 1)
22393 }
22394
22395 pub const fn set_c_bimm9hi_raw(mut self, value: u32) -> Self {
22396 let mask = INSN_FIELD_C_BIMM9HI;
22397 self.value &= !mask;
22398 self.value |=
22399 (value & ((1 << INSN_FIELD_C_BIMM9HI_SIZE) - 1)) << INSN_FIELD_C_BIMM9HI_START;
22400 self
22401 }
22402 pub const fn c_nzuimm5_raw(self) -> u32 {
22403 (self.value >> INSN_FIELD_C_NZUIMM5_START) & ((1 << INSN_FIELD_C_NZUIMM5_SIZE) - 1)
22404 }
22405
22406 pub const fn set_c_nzuimm5_raw(mut self, value: u32) -> Self {
22407 let mask = INSN_FIELD_C_NZUIMM5;
22408 self.value &= !mask;
22409 self.value |=
22410 (value & ((1 << INSN_FIELD_C_NZUIMM5_SIZE) - 1)) << INSN_FIELD_C_NZUIMM5_START;
22411 self
22412 }
22413 pub const fn c_nzuimm6lo_raw(self) -> u32 {
22414 (self.value >> INSN_FIELD_C_NZUIMM6LO_START) & ((1 << INSN_FIELD_C_NZUIMM6LO_SIZE) - 1)
22415 }
22416
22417 pub const fn set_c_nzuimm6lo_raw(mut self, value: u32) -> Self {
22418 let mask = INSN_FIELD_C_NZUIMM6LO;
22419 self.value &= !mask;
22420 self.value |=
22421 (value & ((1 << INSN_FIELD_C_NZUIMM6LO_SIZE) - 1)) << INSN_FIELD_C_NZUIMM6LO_START;
22422 self
22423 }
22424 pub const fn c_nzuimm6hi_raw(self) -> u32 {
22425 (self.value >> INSN_FIELD_C_NZUIMM6HI_START) & ((1 << INSN_FIELD_C_NZUIMM6HI_SIZE) - 1)
22426 }
22427
22428 pub const fn set_c_nzuimm6hi_raw(mut self, value: u32) -> Self {
22429 let mask = INSN_FIELD_C_NZUIMM6HI;
22430 self.value &= !mask;
22431 self.value |=
22432 (value & ((1 << INSN_FIELD_C_NZUIMM6HI_SIZE) - 1)) << INSN_FIELD_C_NZUIMM6HI_START;
22433 self
22434 }
22435 pub const fn c_uimm8splo_raw(self) -> u32 {
22436 (self.value >> INSN_FIELD_C_UIMM8SPLO_START) & ((1 << INSN_FIELD_C_UIMM8SPLO_SIZE) - 1)
22437 }
22438
22439 pub const fn set_c_uimm8splo_raw(mut self, value: u32) -> Self {
22440 let mask = INSN_FIELD_C_UIMM8SPLO;
22441 self.value &= !mask;
22442 self.value |=
22443 (value & ((1 << INSN_FIELD_C_UIMM8SPLO_SIZE) - 1)) << INSN_FIELD_C_UIMM8SPLO_START;
22444 self
22445 }
22446 pub const fn c_uimm8sphi_raw(self) -> u32 {
22447 (self.value >> INSN_FIELD_C_UIMM8SPHI_START) & ((1 << INSN_FIELD_C_UIMM8SPHI_SIZE) - 1)
22448 }
22449
22450 pub const fn set_c_uimm8sphi_raw(mut self, value: u32) -> Self {
22451 let mask = INSN_FIELD_C_UIMM8SPHI;
22452 self.value &= !mask;
22453 self.value |=
22454 (value & ((1 << INSN_FIELD_C_UIMM8SPHI_SIZE) - 1)) << INSN_FIELD_C_UIMM8SPHI_START;
22455 self
22456 }
22457 pub const fn c_uimm8sp_s_raw(self) -> u32 {
22458 (self.value >> INSN_FIELD_C_UIMM8SP_S_START) & ((1 << INSN_FIELD_C_UIMM8SP_S_SIZE) - 1)
22459 }
22460
22461 pub const fn set_c_uimm8sp_s_raw(mut self, value: u32) -> Self {
22462 let mask = INSN_FIELD_C_UIMM8SP_S;
22463 self.value &= !mask;
22464 self.value |=
22465 (value & ((1 << INSN_FIELD_C_UIMM8SP_S_SIZE) - 1)) << INSN_FIELD_C_UIMM8SP_S_START;
22466 self
22467 }
22468 pub const fn c_uimm10splo_raw(self) -> u32 {
22469 (self.value >> INSN_FIELD_C_UIMM10SPLO_START) & ((1 << INSN_FIELD_C_UIMM10SPLO_SIZE) - 1)
22470 }
22471
22472 pub const fn set_c_uimm10splo_raw(mut self, value: u32) -> Self {
22473 let mask = INSN_FIELD_C_UIMM10SPLO;
22474 self.value &= !mask;
22475 self.value |=
22476 (value & ((1 << INSN_FIELD_C_UIMM10SPLO_SIZE) - 1)) << INSN_FIELD_C_UIMM10SPLO_START;
22477 self
22478 }
22479 pub const fn c_uimm10sphi_raw(self) -> u32 {
22480 (self.value >> INSN_FIELD_C_UIMM10SPHI_START) & ((1 << INSN_FIELD_C_UIMM10SPHI_SIZE) - 1)
22481 }
22482
22483 pub const fn set_c_uimm10sphi_raw(mut self, value: u32) -> Self {
22484 let mask = INSN_FIELD_C_UIMM10SPHI;
22485 self.value &= !mask;
22486 self.value |=
22487 (value & ((1 << INSN_FIELD_C_UIMM10SPHI_SIZE) - 1)) << INSN_FIELD_C_UIMM10SPHI_START;
22488 self
22489 }
22490 pub const fn c_uimm9splo_raw(self) -> u32 {
22491 (self.value >> INSN_FIELD_C_UIMM9SPLO_START) & ((1 << INSN_FIELD_C_UIMM9SPLO_SIZE) - 1)
22492 }
22493
22494 pub const fn set_c_uimm9splo_raw(mut self, value: u32) -> Self {
22495 let mask = INSN_FIELD_C_UIMM9SPLO;
22496 self.value &= !mask;
22497 self.value |=
22498 (value & ((1 << INSN_FIELD_C_UIMM9SPLO_SIZE) - 1)) << INSN_FIELD_C_UIMM9SPLO_START;
22499 self
22500 }
22501 pub const fn c_uimm9sphi_raw(self) -> u32 {
22502 (self.value >> INSN_FIELD_C_UIMM9SPHI_START) & ((1 << INSN_FIELD_C_UIMM9SPHI_SIZE) - 1)
22503 }
22504
22505 pub const fn set_c_uimm9sphi_raw(mut self, value: u32) -> Self {
22506 let mask = INSN_FIELD_C_UIMM9SPHI;
22507 self.value &= !mask;
22508 self.value |=
22509 (value & ((1 << INSN_FIELD_C_UIMM9SPHI_SIZE) - 1)) << INSN_FIELD_C_UIMM9SPHI_START;
22510 self
22511 }
22512 pub const fn c_uimm10sp_s_raw(self) -> u32 {
22513 (self.value >> INSN_FIELD_C_UIMM10SP_S_START) & ((1 << INSN_FIELD_C_UIMM10SP_S_SIZE) - 1)
22514 }
22515
22516 pub const fn set_c_uimm10sp_s_raw(mut self, value: u32) -> Self {
22517 let mask = INSN_FIELD_C_UIMM10SP_S;
22518 self.value &= !mask;
22519 self.value |=
22520 (value & ((1 << INSN_FIELD_C_UIMM10SP_S_SIZE) - 1)) << INSN_FIELD_C_UIMM10SP_S_START;
22521 self
22522 }
22523 pub const fn c_uimm9sp_s_raw(self) -> u32 {
22524 (self.value >> INSN_FIELD_C_UIMM9SP_S_START) & ((1 << INSN_FIELD_C_UIMM9SP_S_SIZE) - 1)
22525 }
22526
22527 pub const fn set_c_uimm9sp_s_raw(mut self, value: u32) -> Self {
22528 let mask = INSN_FIELD_C_UIMM9SP_S;
22529 self.value &= !mask;
22530 self.value |=
22531 (value & ((1 << INSN_FIELD_C_UIMM9SP_S_SIZE) - 1)) << INSN_FIELD_C_UIMM9SP_S_START;
22532 self
22533 }
22534 pub const fn c_uimm2_raw(self) -> u32 {
22535 (self.value >> INSN_FIELD_C_UIMM2_START) & ((1 << INSN_FIELD_C_UIMM2_SIZE) - 1)
22536 }
22537
22538 pub const fn set_c_uimm2_raw(mut self, value: u32) -> Self {
22539 let mask = INSN_FIELD_C_UIMM2;
22540 self.value &= !mask;
22541 self.value |= (value & ((1 << INSN_FIELD_C_UIMM2_SIZE) - 1)) << INSN_FIELD_C_UIMM2_START;
22542 self
22543 }
22544 pub const fn c_uimm1_raw(self) -> u32 {
22545 (self.value >> INSN_FIELD_C_UIMM1_START) & ((1 << INSN_FIELD_C_UIMM1_SIZE) - 1)
22546 }
22547
22548 pub const fn set_c_uimm1_raw(mut self, value: u32) -> Self {
22549 let mask = INSN_FIELD_C_UIMM1;
22550 self.value &= !mask;
22551 self.value |= (value & ((1 << INSN_FIELD_C_UIMM1_SIZE) - 1)) << INSN_FIELD_C_UIMM1_START;
22552 self
22553 }
22554 pub const fn c_rlist(self) -> u32 {
22555 (self.value >> INSN_FIELD_C_RLIST_START) & ((1 << INSN_FIELD_C_RLIST_SIZE) - 1)
22556 }
22557
22558 pub const fn set_c_rlist(mut self, value: u32) -> Self {
22559 let mask = INSN_FIELD_C_RLIST;
22560 self.value &= !mask;
22561 self.value |= (value & ((1 << INSN_FIELD_C_RLIST_SIZE) - 1)) << INSN_FIELD_C_RLIST_START;
22562 self
22563 }
22564 pub const fn c_spimm_raw(self) -> u32 {
22565 (self.value >> INSN_FIELD_C_SPIMM_START) & ((1 << INSN_FIELD_C_SPIMM_SIZE) - 1)
22566 }
22567
22568 pub const fn set_c_spimm_raw(mut self, value: u32) -> Self {
22569 let mask = INSN_FIELD_C_SPIMM;
22570 self.value &= !mask;
22571 self.value |= (value & ((1 << INSN_FIELD_C_SPIMM_SIZE) - 1)) << INSN_FIELD_C_SPIMM_START;
22572 self
22573 }
22574 pub const fn c_index(self) -> u32 {
22575 (self.value >> INSN_FIELD_C_INDEX_START) & ((1 << INSN_FIELD_C_INDEX_SIZE) - 1)
22576 }
22577
22578 pub const fn set_c_index(mut self, value: u32) -> Self {
22579 let mask = INSN_FIELD_C_INDEX;
22580 self.value &= !mask;
22581 self.value |= (value & ((1 << INSN_FIELD_C_INDEX_SIZE) - 1)) << INSN_FIELD_C_INDEX_START;
22582 self
22583 }
22584 pub const fn rs1_p(self) -> u32 {
22585 (self.value >> INSN_FIELD_RS1_P_START) & ((1 << INSN_FIELD_RS1_P_SIZE) - 1)
22586 }
22587
22588 pub const fn set_rs1_p(mut self, value: u32) -> Self {
22589 let mask = INSN_FIELD_RS1_P;
22590 self.value &= !mask;
22591 self.value |= (value & ((1 << INSN_FIELD_RS1_P_SIZE) - 1)) << INSN_FIELD_RS1_P_START;
22592 self
22593 }
22594 pub const fn rs2_p(self) -> u32 {
22595 (self.value >> INSN_FIELD_RS2_P_START) & ((1 << INSN_FIELD_RS2_P_SIZE) - 1)
22596 }
22597
22598 pub const fn set_rs2_p(mut self, value: u32) -> Self {
22599 let mask = INSN_FIELD_RS2_P;
22600 self.value &= !mask;
22601 self.value |= (value & ((1 << INSN_FIELD_RS2_P_SIZE) - 1)) << INSN_FIELD_RS2_P_START;
22602 self
22603 }
22604 pub const fn rd_p(self) -> u32 {
22605 (self.value >> INSN_FIELD_RD_P_START) & ((1 << INSN_FIELD_RD_P_SIZE) - 1)
22606 }
22607
22608 pub const fn set_rd_p(mut self, value: u32) -> Self {
22609 let mask = INSN_FIELD_RD_P;
22610 self.value &= !mask;
22611 self.value |= (value & ((1 << INSN_FIELD_RD_P_SIZE) - 1)) << INSN_FIELD_RD_P_START;
22612 self
22613 }
22614 pub const fn rd_rs1_n0(self) -> u32 {
22615 (self.value >> INSN_FIELD_RD_RS1_N0_START) & ((1 << INSN_FIELD_RD_RS1_N0_SIZE) - 1)
22616 }
22617
22618 pub const fn set_rd_rs1_n0(mut self, value: u32) -> Self {
22619 let mask = INSN_FIELD_RD_RS1_N0;
22620 self.value &= !mask;
22621 self.value |=
22622 (value & ((1 << INSN_FIELD_RD_RS1_N0_SIZE) - 1)) << INSN_FIELD_RD_RS1_N0_START;
22623 self
22624 }
22625 pub const fn rd_rs1_p(self) -> u32 {
22626 (self.value >> INSN_FIELD_RD_RS1_P_START) & ((1 << INSN_FIELD_RD_RS1_P_SIZE) - 1)
22627 }
22628
22629 pub const fn set_rd_rs1_p(mut self, value: u32) -> Self {
22630 let mask = INSN_FIELD_RD_RS1_P;
22631 self.value &= !mask;
22632 self.value |= (value & ((1 << INSN_FIELD_RD_RS1_P_SIZE) - 1)) << INSN_FIELD_RD_RS1_P_START;
22633 self
22634 }
22635 pub const fn rd_rs1(self) -> u32 {
22636 (self.value >> INSN_FIELD_RD_RS1_START) & ((1 << INSN_FIELD_RD_RS1_SIZE) - 1)
22637 }
22638
22639 pub const fn set_rd_rs1(mut self, value: u32) -> Self {
22640 let mask = INSN_FIELD_RD_RS1;
22641 self.value &= !mask;
22642 self.value |= (value & ((1 << INSN_FIELD_RD_RS1_SIZE) - 1)) << INSN_FIELD_RD_RS1_START;
22643 self
22644 }
22645 pub const fn rd_n2(self) -> u32 {
22646 (self.value >> INSN_FIELD_RD_N2_START) & ((1 << INSN_FIELD_RD_N2_SIZE) - 1)
22647 }
22648
22649 pub const fn set_rd_n2(mut self, value: u32) -> Self {
22650 let mask = INSN_FIELD_RD_N2;
22651 self.value &= !mask;
22652 self.value |= (value & ((1 << INSN_FIELD_RD_N2_SIZE) - 1)) << INSN_FIELD_RD_N2_START;
22653 self
22654 }
22655 pub const fn rd_n0(self) -> u32 {
22656 (self.value >> INSN_FIELD_RD_N0_START) & ((1 << INSN_FIELD_RD_N0_SIZE) - 1)
22657 }
22658
22659 pub const fn set_rd_n0(mut self, value: u32) -> Self {
22660 let mask = INSN_FIELD_RD_N0;
22661 self.value &= !mask;
22662 self.value |= (value & ((1 << INSN_FIELD_RD_N0_SIZE) - 1)) << INSN_FIELD_RD_N0_START;
22663 self
22664 }
22665 pub const fn rs1_n0(self) -> u32 {
22666 (self.value >> INSN_FIELD_RS1_N0_START) & ((1 << INSN_FIELD_RS1_N0_SIZE) - 1)
22667 }
22668
22669 pub const fn set_rs1_n0(mut self, value: u32) -> Self {
22670 let mask = INSN_FIELD_RS1_N0;
22671 self.value &= !mask;
22672 self.value |= (value & ((1 << INSN_FIELD_RS1_N0_SIZE) - 1)) << INSN_FIELD_RS1_N0_START;
22673 self
22674 }
22675 pub const fn c_rs2_n0(self) -> u32 {
22676 (self.value >> INSN_FIELD_C_RS2_N0_START) & ((1 << INSN_FIELD_C_RS2_N0_SIZE) - 1)
22677 }
22678
22679 pub const fn set_c_rs2_n0(mut self, value: u32) -> Self {
22680 let mask = INSN_FIELD_C_RS2_N0;
22681 self.value &= !mask;
22682 self.value |= (value & ((1 << INSN_FIELD_C_RS2_N0_SIZE) - 1)) << INSN_FIELD_C_RS2_N0_START;
22683 self
22684 }
22685 pub const fn c_rs1_n0(self) -> u32 {
22686 (self.value >> INSN_FIELD_C_RS1_N0_START) & ((1 << INSN_FIELD_C_RS1_N0_SIZE) - 1)
22687 }
22688
22689 pub const fn set_c_rs1_n0(mut self, value: u32) -> Self {
22690 let mask = INSN_FIELD_C_RS1_N0;
22691 self.value &= !mask;
22692 self.value |= (value & ((1 << INSN_FIELD_C_RS1_N0_SIZE) - 1)) << INSN_FIELD_C_RS1_N0_START;
22693 self
22694 }
22695 pub const fn c_rs2(self) -> u32 {
22696 (self.value >> INSN_FIELD_C_RS2_START) & ((1 << INSN_FIELD_C_RS2_SIZE) - 1)
22697 }
22698
22699 pub const fn set_c_rs2(mut self, value: u32) -> Self {
22700 let mask = INSN_FIELD_C_RS2;
22701 self.value &= !mask;
22702 self.value |= (value & ((1 << INSN_FIELD_C_RS2_SIZE) - 1)) << INSN_FIELD_C_RS2_START;
22703 self
22704 }
22705 pub const fn c_sreg1(self) -> u32 {
22706 (self.value >> INSN_FIELD_C_SREG1_START) & ((1 << INSN_FIELD_C_SREG1_SIZE) - 1)
22707 }
22708
22709 pub const fn set_c_sreg1(mut self, value: u32) -> Self {
22710 let mask = INSN_FIELD_C_SREG1;
22711 self.value &= !mask;
22712 self.value |= (value & ((1 << INSN_FIELD_C_SREG1_SIZE) - 1)) << INSN_FIELD_C_SREG1_START;
22713 self
22714 }
22715 pub const fn c_sreg2(self) -> u32 {
22716 (self.value >> INSN_FIELD_C_SREG2_START) & ((1 << INSN_FIELD_C_SREG2_SIZE) - 1)
22717 }
22718
22719 pub const fn set_c_sreg2(mut self, value: u32) -> Self {
22720 let mask = INSN_FIELD_C_SREG2;
22721 self.value &= !mask;
22722 self.value |= (value & ((1 << INSN_FIELD_C_SREG2_SIZE) - 1)) << INSN_FIELD_C_SREG2_START;
22723 self
22724 }
22725 pub const fn rd_p_e(self) -> u32 {
22726 (self.value >> INSN_FIELD_RD_P_E_START) & ((1 << INSN_FIELD_RD_P_E_SIZE) - 1)
22727 }
22728
22729 pub const fn set_rd_p_e(mut self, value: u32) -> Self {
22730 let mask = INSN_FIELD_RD_P_E;
22731 self.value &= !mask;
22732 self.value |= (value & ((1 << INSN_FIELD_RD_P_E_SIZE) - 1)) << INSN_FIELD_RD_P_E_START;
22733 self
22734 }
22735 pub const fn rs2_p_e(self) -> u32 {
22736 (self.value >> INSN_FIELD_RS2_P_E_START) & ((1 << INSN_FIELD_RS2_P_E_SIZE) - 1)
22737 }
22738
22739 pub const fn set_rs2_p_e(mut self, value: u32) -> Self {
22740 let mask = INSN_FIELD_RS2_P_E;
22741 self.value &= !mask;
22742 self.value |= (value & ((1 << INSN_FIELD_RS2_P_E_SIZE) - 1)) << INSN_FIELD_RS2_P_E_START;
22743 self
22744 }
22745 pub const fn rd_n0_e(self) -> u32 {
22746 (self.value >> INSN_FIELD_RD_N0_E_START) & ((1 << INSN_FIELD_RD_N0_E_SIZE) - 1)
22747 }
22748
22749 pub const fn set_rd_n0_e(mut self, value: u32) -> Self {
22750 let mask = INSN_FIELD_RD_N0_E;
22751 self.value &= !mask;
22752 self.value |= (value & ((1 << INSN_FIELD_RD_N0_E_SIZE) - 1)) << INSN_FIELD_RD_N0_E_START;
22753 self
22754 }
22755 pub const fn c_rs2_e(self) -> u32 {
22756 (self.value >> INSN_FIELD_C_RS2_E_START) & ((1 << INSN_FIELD_C_RS2_E_SIZE) - 1)
22757 }
22758
22759 pub const fn set_c_rs2_e(mut self, value: u32) -> Self {
22760 let mask = INSN_FIELD_C_RS2_E;
22761 self.value &= !mask;
22762 self.value |= (value & ((1 << INSN_FIELD_C_RS2_E_SIZE) - 1)) << INSN_FIELD_C_RS2_E_START;
22763 self
22764 }
22765 pub const fn rd_e(self) -> u32 {
22766 (self.value >> INSN_FIELD_RD_E_START) & ((1 << INSN_FIELD_RD_E_SIZE) - 1)
22767 }
22768
22769 pub const fn set_rd_e(mut self, value: u32) -> Self {
22770 let mask = INSN_FIELD_RD_E;
22771 self.value &= !mask;
22772 self.value |= (value & ((1 << INSN_FIELD_RD_E_SIZE) - 1)) << INSN_FIELD_RD_E_START;
22773 self
22774 }
22775 pub const fn rs2_e(self) -> u32 {
22776 (self.value >> INSN_FIELD_RS2_E_START) & ((1 << INSN_FIELD_RS2_E_SIZE) - 1)
22777 }
22778
22779 pub const fn set_rs2_e(mut self, value: u32) -> Self {
22780 let mask = INSN_FIELD_RS2_E;
22781 self.value &= !mask;
22782 self.value |= (value & ((1 << INSN_FIELD_RS2_E_SIZE) - 1)) << INSN_FIELD_RS2_E_START;
22783 self
22784 }
22785 pub const fn p_imm10_raw(self) -> u32 {
22786 (self.value >> INSN_FIELD_P_IMM10_START) & ((1 << INSN_FIELD_P_IMM10_SIZE) - 1)
22787 }
22788
22789 pub const fn set_p_imm10_raw(mut self, value: u32) -> Self {
22790 let mask = INSN_FIELD_P_IMM10;
22791 self.value &= !mask;
22792 self.value |= (value & ((1 << INSN_FIELD_P_IMM10_SIZE) - 1)) << INSN_FIELD_P_IMM10_START;
22793 self
22794 }
22795 pub const fn p_imm8_raw(self) -> u32 {
22796 (self.value >> INSN_FIELD_P_IMM8_START) & ((1 << INSN_FIELD_P_IMM8_SIZE) - 1)
22797 }
22798
22799 pub const fn set_p_imm8_raw(mut self, value: u32) -> Self {
22800 let mask = INSN_FIELD_P_IMM8;
22801 self.value &= !mask;
22802 self.value |= (value & ((1 << INSN_FIELD_P_IMM8_SIZE) - 1)) << INSN_FIELD_P_IMM8_START;
22803 self
22804 }
22805 pub const fn p_w_uimm3_raw(self) -> u32 {
22806 (self.value >> INSN_FIELD_P_W_UIMM3_START) & ((1 << INSN_FIELD_P_W_UIMM3_SIZE) - 1)
22807 }
22808
22809 pub const fn set_p_w_uimm3_raw(mut self, value: u32) -> Self {
22810 let mask = INSN_FIELD_P_W_UIMM3;
22811 self.value &= !mask;
22812 self.value |=
22813 (value & ((1 << INSN_FIELD_P_W_UIMM3_SIZE) - 1)) << INSN_FIELD_P_W_UIMM3_START;
22814 self
22815 }
22816 pub const fn p_w_uimm4_raw(self) -> u32 {
22817 (self.value >> INSN_FIELD_P_W_UIMM4_START) & ((1 << INSN_FIELD_P_W_UIMM4_SIZE) - 1)
22818 }
22819
22820 pub const fn set_p_w_uimm4_raw(mut self, value: u32) -> Self {
22821 let mask = INSN_FIELD_P_W_UIMM4;
22822 self.value &= !mask;
22823 self.value |=
22824 (value & ((1 << INSN_FIELD_P_W_UIMM4_SIZE) - 1)) << INSN_FIELD_P_W_UIMM4_START;
22825 self
22826 }
22827 pub const fn p_w_uimm5_raw(self) -> u32 {
22828 (self.value >> INSN_FIELD_P_W_UIMM5_START) & ((1 << INSN_FIELD_P_W_UIMM5_SIZE) - 1)
22829 }
22830
22831 pub const fn set_p_w_uimm5_raw(mut self, value: u32) -> Self {
22832 let mask = INSN_FIELD_P_W_UIMM5;
22833 self.value &= !mask;
22834 self.value |=
22835 (value & ((1 << INSN_FIELD_P_W_UIMM5_SIZE) - 1)) << INSN_FIELD_P_W_UIMM5_START;
22836 self
22837 }
22838 pub const fn p_w_uimm6_raw(self) -> u32 {
22839 (self.value >> INSN_FIELD_P_W_UIMM6_START) & ((1 << INSN_FIELD_P_W_UIMM6_SIZE) - 1)
22840 }
22841
22842 pub const fn set_p_w_uimm6_raw(mut self, value: u32) -> Self {
22843 let mask = INSN_FIELD_P_W_UIMM6;
22844 self.value &= !mask;
22845 self.value |=
22846 (value & ((1 << INSN_FIELD_P_W_UIMM6_SIZE) - 1)) << INSN_FIELD_P_W_UIMM6_START;
22847 self
22848 }
22849 pub const fn p_w(self) -> u32 {
22850 (self.value >> INSN_FIELD_P_W_START) & ((1 << INSN_FIELD_P_W_SIZE) - 1)
22851 }
22852
22853 pub const fn set_p_w(mut self, value: u32) -> Self {
22854 let mask = INSN_FIELD_P_W;
22855 self.value &= !mask;
22856 self.value |= (value & ((1 << INSN_FIELD_P_W_SIZE) - 1)) << INSN_FIELD_P_W_START;
22857 self
22858 }
22859 pub const fn p_rd_p(self) -> u32 {
22860 (self.value >> INSN_FIELD_P_RD_P_START) & ((1 << INSN_FIELD_P_RD_P_SIZE) - 1)
22861 }
22862
22863 pub const fn set_p_rd_p(mut self, value: u32) -> Self {
22864 let mask = INSN_FIELD_P_RD_P;
22865 self.value &= !mask;
22866 self.value |= (value & ((1 << INSN_FIELD_P_RD_P_SIZE) - 1)) << INSN_FIELD_P_RD_P_START;
22867 self
22868 }
22869 pub const fn p_rs1_p(self) -> u32 {
22870 (self.value >> INSN_FIELD_P_RS1_P_START) & ((1 << INSN_FIELD_P_RS1_P_SIZE) - 1)
22871 }
22872
22873 pub const fn set_p_rs1_p(mut self, value: u32) -> Self {
22874 let mask = INSN_FIELD_P_RS1_P;
22875 self.value &= !mask;
22876 self.value |= (value & ((1 << INSN_FIELD_P_RS1_P_SIZE) - 1)) << INSN_FIELD_P_RS1_P_START;
22877 self
22878 }
22879 pub const fn p_rs2_p(self) -> u32 {
22880 (self.value >> INSN_FIELD_P_RS2_P_START) & ((1 << INSN_FIELD_P_RS2_P_SIZE) - 1)
22881 }
22882
22883 pub const fn set_p_rs2_p(mut self, value: u32) -> Self {
22884 let mask = INSN_FIELD_P_RS2_P;
22885 self.value &= !mask;
22886 self.value |= (value & ((1 << INSN_FIELD_P_RS2_P_SIZE) - 1)) << INSN_FIELD_P_RS2_P_START;
22887 self
22888 }
22889 pub const fn mop_r_t_30(self) -> u32 {
22890 (self.value >> INSN_FIELD_MOP_R_T_30_START) & ((1 << INSN_FIELD_MOP_R_T_30_SIZE) - 1)
22891 }
22892
22893 pub const fn set_mop_r_t_30(mut self, value: u32) -> Self {
22894 let mask = INSN_FIELD_MOP_R_T_30;
22895 self.value &= !mask;
22896 self.value |=
22897 (value & ((1 << INSN_FIELD_MOP_R_T_30_SIZE) - 1)) << INSN_FIELD_MOP_R_T_30_START;
22898 self
22899 }
22900 pub const fn mop_r_t_27_26(self) -> u32 {
22901 (self.value >> INSN_FIELD_MOP_R_T_27_26_START) & ((1 << INSN_FIELD_MOP_R_T_27_26_SIZE) - 1)
22902 }
22903
22904 pub const fn set_mop_r_t_27_26(mut self, value: u32) -> Self {
22905 let mask = INSN_FIELD_MOP_R_T_27_26;
22906 self.value &= !mask;
22907 self.value |=
22908 (value & ((1 << INSN_FIELD_MOP_R_T_27_26_SIZE) - 1)) << INSN_FIELD_MOP_R_T_27_26_START;
22909 self
22910 }
22911 pub const fn mop_r_t_21_20(self) -> u32 {
22912 (self.value >> INSN_FIELD_MOP_R_T_21_20_START) & ((1 << INSN_FIELD_MOP_R_T_21_20_SIZE) - 1)
22913 }
22914
22915 pub const fn set_mop_r_t_21_20(mut self, value: u32) -> Self {
22916 let mask = INSN_FIELD_MOP_R_T_21_20;
22917 self.value &= !mask;
22918 self.value |=
22919 (value & ((1 << INSN_FIELD_MOP_R_T_21_20_SIZE) - 1)) << INSN_FIELD_MOP_R_T_21_20_START;
22920 self
22921 }
22922 pub const fn mop_rr_t_30(self) -> u32 {
22923 (self.value >> INSN_FIELD_MOP_RR_T_30_START) & ((1 << INSN_FIELD_MOP_RR_T_30_SIZE) - 1)
22924 }
22925
22926 pub const fn set_mop_rr_t_30(mut self, value: u32) -> Self {
22927 let mask = INSN_FIELD_MOP_RR_T_30;
22928 self.value &= !mask;
22929 self.value |=
22930 (value & ((1 << INSN_FIELD_MOP_RR_T_30_SIZE) - 1)) << INSN_FIELD_MOP_RR_T_30_START;
22931 self
22932 }
22933 pub const fn mop_rr_t_27_26(self) -> u32 {
22934 (self.value >> INSN_FIELD_MOP_RR_T_27_26_START)
22935 & ((1 << INSN_FIELD_MOP_RR_T_27_26_SIZE) - 1)
22936 }
22937
22938 pub const fn set_mop_rr_t_27_26(mut self, value: u32) -> Self {
22939 let mask = INSN_FIELD_MOP_RR_T_27_26;
22940 self.value &= !mask;
22941 self.value |= (value & ((1 << INSN_FIELD_MOP_RR_T_27_26_SIZE) - 1))
22942 << INSN_FIELD_MOP_RR_T_27_26_START;
22943 self
22944 }
22945 pub const fn c_mop_t(self) -> u32 {
22946 (self.value >> INSN_FIELD_C_MOP_T_START) & ((1 << INSN_FIELD_C_MOP_T_SIZE) - 1)
22947 }
22948
22949 pub const fn set_c_mop_t(mut self, value: u32) -> Self {
22950 let mask = INSN_FIELD_C_MOP_T;
22951 self.value &= !mask;
22952 self.value |= (value & ((1 << INSN_FIELD_C_MOP_T_SIZE) - 1)) << INSN_FIELD_C_MOP_T_START;
22953 self
22954 }
22955 pub const fn rs2_eq_rs1(self) -> u32 {
22956 (self.value >> INSN_FIELD_RS2_EQ_RS1_START) & ((1 << INSN_FIELD_RS2_EQ_RS1_SIZE) - 1)
22957 }
22958
22959 pub const fn set_rs2_eq_rs1(mut self, value: u32) -> Self {
22960 let mask = INSN_FIELD_RS2_EQ_RS1;
22961 self.value &= !mask;
22962 self.value |=
22963 (value & ((1 << INSN_FIELD_RS2_EQ_RS1_SIZE) - 1)) << INSN_FIELD_RS2_EQ_RS1_START;
22964 self
22965 }
22966
22967 /// imm20
22968 pub const fn imm20(self) -> i32 {
22969 decode_immediate(&IMM20, self.value as _) as _
22970 }
22971
22972 pub const fn set_imm20(mut self, imm20: i32) -> Self {
22973 self.value |= encode_immediate(&IMM20, imm20 as _);
22974 self
22975 }
22976
22977 /// jimm20
22978 pub const fn jimm20(self) -> i32 {
22979 decode_immediate(&JIMM20, self.value as _) as _
22980 }
22981
22982 pub const fn set_jimm20(mut self, jimm20: i32) -> Self {
22983 self.value |= encode_immediate(&JIMM20, jimm20 as _);
22984 self
22985 }
22986
22987 /// imm12
22988 pub const fn imm12(self) -> i32 {
22989 decode_immediate(&IMM12, self.value as _) as _
22990 }
22991
22992 pub const fn set_imm12(mut self, imm12: i32) -> Self {
22993 self.value |= encode_immediate(&IMM12, imm12 as _);
22994 self
22995 }
22996
22997 /// imm12lohi
22998 pub const fn imm12lohi(self) -> i32 {
22999 decode_immediate(&IMM12LOHI, self.value as _) as _
23000 }
23001
23002 pub const fn set_imm12lohi(mut self, imm12lohi: i32) -> Self {
23003 self.value |= encode_immediate(&IMM12LOHI, imm12lohi as _);
23004 self
23005 }
23006
23007 /// bimm12lohi
23008 pub const fn bimm12lohi(self) -> i32 {
23009 decode_immediate(&BIMM12LOHI, self.value as _) as _
23010 }
23011
23012 pub const fn set_bimm12lohi(mut self, bimm12lohi: i32) -> Self {
23013 self.value |= encode_immediate(&BIMM12LOHI, bimm12lohi as _);
23014 self
23015 }
23016
23017 /// simm5
23018 pub const fn simm5(self) -> i32 {
23019 decode_immediate(&SIMM5, self.value as _) as _
23020 }
23021
23022 pub const fn set_simm5(mut self, simm5: i32) -> Self {
23023 self.value |= encode_immediate(&SIMM5, simm5 as _);
23024 self
23025 }
23026
23027 /// zimm5
23028 pub const fn zimm5(self) -> i32 {
23029 decode_immediate(&ZIMM5, self.value as _) as _
23030 }
23031
23032 pub const fn set_zimm5(mut self, zimm5: i32) -> Self {
23033 self.value |= encode_immediate(&ZIMM5, zimm5 as _);
23034 self
23035 }
23036
23037 /// zimm10
23038 pub const fn zimm10(self) -> i32 {
23039 decode_immediate(&ZIMM10, self.value as _) as _
23040 }
23041
23042 pub const fn set_zimm10(mut self, zimm10: i32) -> Self {
23043 self.value |= encode_immediate(&ZIMM10, zimm10 as _);
23044 self
23045 }
23046
23047 /// zimm11
23048 pub const fn zimm11(self) -> i32 {
23049 decode_immediate(&ZIMM11, self.value as _) as _
23050 }
23051
23052 pub const fn set_zimm11(mut self, zimm11: i32) -> Self {
23053 self.value |= encode_immediate(&ZIMM11, zimm11 as _);
23054 self
23055 }
23056
23057 /// zimm6lohi
23058 pub const fn zimm6lohi(self) -> i32 {
23059 decode_immediate(&ZIMM6LOHI, self.value as _) as _
23060 }
23061
23062 pub const fn set_zimm6lohi(mut self, zimm6lohi: i32) -> Self {
23063 self.value |= encode_immediate(&ZIMM6LOHI, zimm6lohi as _);
23064 self
23065 }
23066
23067 /// c_nzuimm10
23068 pub const fn c_nzuimm10(self) -> u32 {
23069 decode_immediate(&C_NZUIMM10, self.value as _) as _
23070 }
23071
23072 pub const fn set_c_nzuimm10(mut self, c_nzuimm10: u32) -> Self {
23073 self.value |= encode_immediate(&C_NZUIMM10, c_nzuimm10 as _);
23074 self
23075 }
23076
23077 /// c_uimm7lohi
23078 pub const fn c_uimm7lohi(self) -> u32 {
23079 decode_immediate(&C_UIMM7LOHI, self.value as _) as _
23080 }
23081
23082 pub const fn set_c_uimm7lohi(mut self, c_uimm7lohi: u32) -> Self {
23083 self.value |= encode_immediate(&C_UIMM7LOHI, c_uimm7lohi as _);
23084 self
23085 }
23086
23087 /// c_uimm8lohi
23088 pub const fn c_uimm8lohi(self) -> u32 {
23089 decode_immediate(&C_UIMM8LOHI, self.value as _) as _
23090 }
23091
23092 pub const fn set_c_uimm8lohi(mut self, c_uimm8lohi: u32) -> Self {
23093 self.value |= encode_immediate(&C_UIMM8LOHI, c_uimm8lohi as _);
23094 self
23095 }
23096
23097 /// c_nzimm6lohi
23098 pub const fn c_nzimm6lohi(self) -> i32 {
23099 decode_immediate(&C_NZIMM6LOHI, self.value as _) as _
23100 }
23101
23102 pub const fn set_c_nzimm6lohi(mut self, c_nzimm6lohi: i32) -> Self {
23103 self.value |= encode_immediate(&C_NZIMM6LOHI, c_nzimm6lohi as _);
23104 self
23105 }
23106
23107 /// c_imm6lohi
23108 pub const fn c_imm6lohi(self) -> i32 {
23109 decode_immediate(&C_IMM6LOHI, self.value as _) as _
23110 }
23111
23112 pub const fn set_c_imm6lohi(mut self, c_imm6lohi: i32) -> Self {
23113 self.value |= encode_immediate(&C_IMM6LOHI, c_imm6lohi as _);
23114 self
23115 }
23116
23117 /// c_nzimm10lohi
23118 pub const fn c_nzimm10lohi(self) -> i32 {
23119 decode_immediate(&C_NZIMM10LOHI, self.value as _) as _
23120 }
23121
23122 pub const fn set_c_nzimm10lohi(mut self, c_nzimm10lohi: i32) -> Self {
23123 self.value |= encode_immediate(&C_NZIMM10LOHI, c_nzimm10lohi as _);
23124 self
23125 }
23126
23127 /// c_nzimm18lohi
23128 pub const fn c_nzimm18lohi(self) -> i32 {
23129 decode_immediate(&C_NZIMM18LOHI, self.value as _) as _
23130 }
23131
23132 pub const fn set_c_nzimm18lohi(mut self, c_nzimm18lohi: i32) -> Self {
23133 self.value |= encode_immediate(&C_NZIMM18LOHI, c_nzimm18lohi as _);
23134 self
23135 }
23136
23137 /// c_imm12
23138 pub const fn c_imm12(self) -> i32 {
23139 decode_immediate(&C_IMM12, self.value as _) as _
23140 }
23141
23142 pub const fn set_c_imm12(mut self, c_imm12: i32) -> Self {
23143 self.value |= encode_immediate(&C_IMM12, c_imm12 as _);
23144 self
23145 }
23146
23147 /// c_bimm9lohi
23148 pub const fn c_bimm9lohi(self) -> i32 {
23149 decode_immediate(&C_BIMM9LOHI, self.value as _) as _
23150 }
23151
23152 pub const fn set_c_bimm9lohi(mut self, c_bimm9lohi: i32) -> Self {
23153 self.value |= encode_immediate(&C_BIMM9LOHI, c_bimm9lohi as _);
23154 self
23155 }
23156
23157 /// c_nzuimm5
23158 pub const fn c_nzuimm5(self) -> u32 {
23159 decode_immediate(&C_NZUIMM5, self.value as _) as _
23160 }
23161
23162 pub const fn set_c_nzuimm5(mut self, c_nzuimm5: u32) -> Self {
23163 self.value |= encode_immediate(&C_NZUIMM5, c_nzuimm5 as _);
23164 self
23165 }
23166
23167 /// c_nzuimm6lohi
23168 pub const fn c_nzuimm6lohi(self) -> u32 {
23169 decode_immediate(&C_NZUIMM6LOHI, self.value as _) as _
23170 }
23171
23172 pub const fn set_c_nzuimm6lohi(mut self, c_nzuimm6lohi: u32) -> Self {
23173 self.value |= encode_immediate(&C_NZUIMM6LOHI, c_nzuimm6lohi as _);
23174 self
23175 }
23176
23177 /// c_uimm8splohi
23178 pub const fn c_uimm8splohi(self) -> u32 {
23179 decode_immediate(&C_UIMM8SPLOHI, self.value as _) as _
23180 }
23181
23182 pub const fn set_c_uimm8splohi(mut self, c_uimm8splohi: u32) -> Self {
23183 self.value |= encode_immediate(&C_UIMM8SPLOHI, c_uimm8splohi as _);
23184 self
23185 }
23186
23187 /// c_uimm8sp_s
23188 pub const fn c_uimm8sp_s(self) -> u32 {
23189 decode_immediate(&C_UIMM8SP_S, self.value as _) as _
23190 }
23191
23192 pub const fn set_c_uimm8sp_s(mut self, c_uimm8sp_s: u32) -> Self {
23193 self.value |= encode_immediate(&C_UIMM8SP_S, c_uimm8sp_s as _);
23194 self
23195 }
23196
23197 /// c_uimm9splohi
23198 pub const fn c_uimm9splohi(self) -> u32 {
23199 decode_immediate(&C_UIMM9SPLOHI, self.value as _) as _
23200 }
23201
23202 pub const fn set_c_uimm9splohi(mut self, c_uimm9splohi: u32) -> Self {
23203 self.value |= encode_immediate(&C_UIMM9SPLOHI, c_uimm9splohi as _);
23204 self
23205 }
23206
23207 /// c_uimm9sp_s
23208 pub const fn c_uimm9sp_s(self) -> u32 {
23209 decode_immediate(&C_UIMM9SP_S, self.value as _) as _
23210 }
23211
23212 pub const fn set_c_uimm9sp_s(mut self, c_uimm9sp_s: u32) -> Self {
23213 self.value |= encode_immediate(&C_UIMM9SP_S, c_uimm9sp_s as _);
23214 self
23215 }
23216
23217 /// c_uimm2
23218 pub const fn c_uimm2(self) -> u32 {
23219 decode_immediate(&C_UIMM2, self.value as _) as _
23220 }
23221
23222 pub const fn set_c_uimm2(mut self, c_uimm2: u32) -> Self {
23223 self.value |= encode_immediate(&C_UIMM2, c_uimm2 as _);
23224 self
23225 }
23226
23227 /// c_uimm1
23228 pub const fn c_uimm1(self) -> u32 {
23229 decode_immediate(&C_UIMM1, self.value as _) as _
23230 }
23231
23232 pub const fn set_c_uimm1(mut self, c_uimm1: u32) -> Self {
23233 self.value |= encode_immediate(&C_UIMM1, c_uimm1 as _);
23234 self
23235 }
23236
23237 /// c_spimm
23238 pub const fn c_spimm(self) -> i32 {
23239 decode_immediate(&C_SPIMM, self.value as _) as _
23240 }
23241
23242 pub const fn set_c_spimm(mut self, c_spimm: i32) -> Self {
23243 self.value |= encode_immediate(&C_SPIMM, c_spimm as _);
23244 self
23245 }
23246}