Coverage Report

Created: 2026-01-10 06:34

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/capstonev5/arch/RISCV/RISCVGenAsmWriter.inc
Line
Count
Source
1
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2
|*                                                                            *|
3
|* Assembly Writer Source Fragment                                            *|
4
|*                                                                            *|
5
|* Automatically generated file, do not edit!                                 *|
6
|*                                                                            *|
7
\*===----------------------------------------------------------------------===*/
8
9
/* Capstone Disassembly Engine */
10
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
11
12
#include <stdio.h>  // debug
13
#include <capstone/platform.h>
14
#include <assert.h>
15
16
17
/// printInstruction - This method is automatically generated by tablegen
18
/// from the instruction set description.
19
static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
20
51.9k
{
21
51.9k
#ifndef CAPSTONE_DIET
22
51.9k
  static const char AsmStrs[] = {
23
51.9k
  /* 0 */ 'l', 'l', 'a', 9, 0,
24
51.9k
  /* 5 */ 's', 'f', 'e', 'n', 'c', 'e', '.', 'v', 'm', 'a', 9, 0,
25
51.9k
  /* 17 */ 's', 'r', 'a', 9, 0,
26
51.9k
  /* 22 */ 'l', 'b', 9, 0,
27
51.9k
  /* 26 */ 's', 'b', 9, 0,
28
51.9k
  /* 30 */ 'c', '.', 's', 'u', 'b', 9, 0,
29
51.9k
  /* 37 */ 'a', 'u', 'i', 'p', 'c', 9, 0,
30
51.9k
  /* 44 */ 'c', 's', 'r', 'r', 'c', 9, 0,
31
51.9k
  /* 51 */ 'f', 's', 'u', 'b', '.', 'd', 9, 0,
32
51.9k
  /* 59 */ 'f', 'm', 's', 'u', 'b', '.', 'd', 9, 0,
33
51.9k
  /* 68 */ 'f', 'n', 'm', 's', 'u', 'b', '.', 'd', 9, 0,
34
51.9k
  /* 78 */ 's', 'c', '.', 'd', 9, 0,
35
51.9k
  /* 84 */ 'f', 'a', 'd', 'd', '.', 'd', 9, 0,
36
51.9k
  /* 92 */ 'f', 'm', 'a', 'd', 'd', '.', 'd', 9, 0,
37
51.9k
  /* 101 */ 'f', 'n', 'm', 'a', 'd', 'd', '.', 'd', 9, 0,
38
51.9k
  /* 111 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', 9, 0,
39
51.9k
  /* 121 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', 9, 0,
40
51.9k
  /* 131 */ 'f', 'l', 'e', '.', 'd', 9, 0,
41
51.9k
  /* 138 */ 'f', 's', 'g', 'n', 'j', '.', 'd', 9, 0,
42
51.9k
  /* 147 */ 'f', 'c', 'v', 't', '.', 'l', '.', 'd', 9, 0,
43
51.9k
  /* 157 */ 'f', 'm', 'u', 'l', '.', 'd', 9, 0,
44
51.9k
  /* 165 */ 'f', 'm', 'i', 'n', '.', 'd', 9, 0,
45
51.9k
  /* 173 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', 9, 0,
46
51.9k
  /* 183 */ 'f', 's', 'g', 'n', 'j', 'n', '.', 'd', 9, 0,
47
51.9k
  /* 193 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', 9, 0,
48
51.9k
  /* 204 */ 'f', 'e', 'q', '.', 'd', 9, 0,
49
51.9k
  /* 211 */ 'l', 'r', '.', 'd', 9, 0,
50
51.9k
  /* 217 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', 9, 0,
51
51.9k
  /* 226 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', 9, 0,
52
51.9k
  /* 236 */ 'f', 'c', 'v', 't', '.', 's', '.', 'd', 9, 0,
53
51.9k
  /* 246 */ 'f', 'c', 'l', 'a', 's', 's', '.', 'd', 9, 0,
54
51.9k
  /* 256 */ 'f', 'l', 't', '.', 'd', 9, 0,
55
51.9k
  /* 263 */ 'f', 's', 'q', 'r', 't', '.', 'd', 9, 0,
56
51.9k
  /* 272 */ 'f', 'c', 'v', 't', '.', 'l', 'u', '.', 'd', 9, 0,
57
51.9k
  /* 283 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', 9, 0,
58
51.9k
  /* 294 */ 'f', 'c', 'v', 't', '.', 'w', 'u', '.', 'd', 9, 0,
59
51.9k
  /* 305 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', 9, 0,
60
51.9k
  /* 316 */ 'f', 'd', 'i', 'v', '.', 'd', 9, 0,
61
51.9k
  /* 324 */ 'f', 'c', 'v', 't', '.', 'w', '.', 'd', 9, 0,
62
51.9k
  /* 334 */ 'f', 'm', 'v', '.', 'x', '.', 'd', 9, 0,
63
51.9k
  /* 343 */ 'f', 'm', 'a', 'x', '.', 'd', 9, 0,
64
51.9k
  /* 351 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', 9, 0,
65
51.9k
  /* 361 */ 'f', 's', 'g', 'n', 'j', 'x', '.', 'd', 9, 0,
66
51.9k
  /* 371 */ 'c', '.', 'a', 'd', 'd', 9, 0,
67
51.9k
  /* 378 */ 'c', '.', 'l', 'd', 9, 0,
68
51.9k
  /* 384 */ 'c', '.', 'f', 'l', 'd', 9, 0,
69
51.9k
  /* 391 */ 'c', '.', 'a', 'n', 'd', 9, 0,
70
51.9k
  /* 398 */ 'c', '.', 's', 'd', 9, 0,
71
51.9k
  /* 404 */ 'c', '.', 'f', 's', 'd', 9, 0,
72
51.9k
  /* 411 */ 'f', 'e', 'n', 'c', 'e', 9, 0,
73
51.9k
  /* 418 */ 'b', 'g', 'e', 9, 0,
74
51.9k
  /* 423 */ 'b', 'n', 'e', 9, 0,
75
51.9k
  /* 428 */ 'm', 'u', 'l', 'h', 9, 0,
76
51.9k
  /* 434 */ 's', 'h', 9, 0,
77
51.9k
  /* 438 */ 'f', 'e', 'n', 'c', 'e', '.', 'i', 9, 0,
78
51.9k
  /* 447 */ 'c', '.', 's', 'r', 'a', 'i', 9, 0,
79
51.9k
  /* 455 */ 'c', 's', 'r', 'r', 'c', 'i', 9, 0,
80
51.9k
  /* 463 */ 'c', '.', 'a', 'd', 'd', 'i', 9, 0,
81
51.9k
  /* 471 */ 'c', '.', 'a', 'n', 'd', 'i', 9, 0,
82
51.9k
  /* 479 */ 'w', 'f', 'i', 9, 0,
83
51.9k
  /* 484 */ 'c', '.', 'l', 'i', 9, 0,
84
51.9k
  /* 490 */ 'c', '.', 's', 'l', 'l', 'i', 9, 0,
85
51.9k
  /* 498 */ 'c', '.', 's', 'r', 'l', 'i', 9, 0,
86
51.9k
  /* 506 */ 'x', 'o', 'r', 'i', 9, 0,
87
51.9k
  /* 512 */ 'c', 's', 'r', 'r', 's', 'i', 9, 0,
88
51.9k
  /* 520 */ 's', 'l', 't', 'i', 9, 0,
89
51.9k
  /* 526 */ 'c', '.', 'l', 'u', 'i', 9, 0,
90
51.9k
  /* 533 */ 'c', 's', 'r', 'r', 'w', 'i', 9, 0,
91
51.9k
  /* 541 */ 'c', '.', 'j', 9, 0,
92
51.9k
  /* 546 */ 'c', '.', 'e', 'b', 'r', 'e', 'a', 'k', 9, 0,
93
51.9k
  /* 556 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'l', 9, 0,
94
51.9k
  /* 566 */ 'f', 'c', 'v', 't', '.', 's', '.', 'l', 9, 0,
95
51.9k
  /* 576 */ 'c', '.', 'j', 'a', 'l', 9, 0,
96
51.9k
  /* 583 */ 't', 'a', 'i', 'l', 9, 0,
97
51.9k
  /* 589 */ 'e', 'c', 'a', 'l', 'l', 9, 0,
98
51.9k
  /* 596 */ 's', 'l', 'l', 9, 0,
99
51.9k
  /* 601 */ 's', 'c', '.', 'd', '.', 'r', 'l', 9, 0,
100
51.9k
  /* 610 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'r', 'l', 9, 0,
101
51.9k
  /* 623 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'r', 'l', 9, 0,
102
51.9k
  /* 636 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'r', 'l', 9, 0,
103
51.9k
  /* 649 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'r', 'l', 9, 0,
104
51.9k
  /* 663 */ 'l', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
105
51.9k
  /* 672 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
106
51.9k
  /* 684 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
107
51.9k
  /* 697 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'r', 'l', 9, 0,
108
51.9k
  /* 711 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'r', 'l', 9, 0,
109
51.9k
  /* 725 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'r', 'l', 9, 0,
110
51.9k
  /* 738 */ 's', 'c', '.', 'w', '.', 'r', 'l', 9, 0,
111
51.9k
  /* 747 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'r', 'l', 9, 0,
112
51.9k
  /* 760 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'r', 'l', 9, 0,
113
51.9k
  /* 773 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'r', 'l', 9, 0,
114
51.9k
  /* 786 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'r', 'l', 9, 0,
115
51.9k
  /* 800 */ 'l', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
116
51.9k
  /* 809 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
117
51.9k
  /* 821 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
118
51.9k
  /* 834 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'r', 'l', 9, 0,
119
51.9k
  /* 848 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'r', 'l', 9, 0,
120
51.9k
  /* 862 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'r', 'l', 9, 0,
121
51.9k
  /* 875 */ 's', 'c', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
122
51.9k
  /* 886 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
123
51.9k
  /* 901 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
124
51.9k
  /* 916 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
125
51.9k
  /* 931 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
126
51.9k
  /* 947 */ 'l', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
127
51.9k
  /* 958 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
128
51.9k
  /* 972 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
129
51.9k
  /* 987 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
130
51.9k
  /* 1003 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
131
51.9k
  /* 1019 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
132
51.9k
  /* 1034 */ 's', 'c', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
133
51.9k
  /* 1045 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
134
51.9k
  /* 1060 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
135
51.9k
  /* 1075 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
136
51.9k
  /* 1090 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
137
51.9k
  /* 1106 */ 'l', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
138
51.9k
  /* 1117 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
139
51.9k
  /* 1131 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
140
51.9k
  /* 1146 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
141
51.9k
  /* 1162 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
142
51.9k
  /* 1178 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
143
51.9k
  /* 1193 */ 's', 'r', 'l', 9, 0,
144
51.9k
  /* 1198 */ 'm', 'u', 'l', 9, 0,
145
51.9k
  /* 1203 */ 'r', 'e', 'm', 9, 0,
146
51.9k
  /* 1208 */ 'c', '.', 'a', 'd', 'd', 'i', '4', 's', 'p', 'n', 9, 0,
147
51.9k
  /* 1220 */ 'f', 'e', 'n', 'c', 'e', '.', 't', 's', 'o', 9, 0,
148
51.9k
  /* 1231 */ 'c', '.', 'u', 'n', 'i', 'm', 'p', 9, 0,
149
51.9k
  /* 1240 */ 'c', '.', 'n', 'o', 'p', 9, 0,
150
51.9k
  /* 1247 */ 'c', '.', 'a', 'd', 'd', 'i', '1', '6', 's', 'p', 9, 0,
151
51.9k
  /* 1259 */ 'c', '.', 'l', 'd', 's', 'p', 9, 0,
152
51.9k
  /* 1267 */ 'c', '.', 'f', 'l', 'd', 's', 'p', 9, 0,
153
51.9k
  /* 1276 */ 'c', '.', 's', 'd', 's', 'p', 9, 0,
154
51.9k
  /* 1284 */ 'c', '.', 'f', 's', 'd', 's', 'p', 9, 0,
155
51.9k
  /* 1293 */ 'c', '.', 'l', 'w', 's', 'p', 9, 0,
156
51.9k
  /* 1301 */ 'c', '.', 'f', 'l', 'w', 's', 'p', 9, 0,
157
51.9k
  /* 1310 */ 'c', '.', 's', 'w', 's', 'p', 9, 0,
158
51.9k
  /* 1318 */ 'c', '.', 'f', 's', 'w', 's', 'p', 9, 0,
159
51.9k
  /* 1327 */ 's', 'c', '.', 'd', '.', 'a', 'q', 9, 0,
160
51.9k
  /* 1336 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'a', 'q', 9, 0,
161
51.9k
  /* 1349 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'a', 'q', 9, 0,
162
51.9k
  /* 1362 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'a', 'q', 9, 0,
163
51.9k
  /* 1375 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'a', 'q', 9, 0,
164
51.9k
  /* 1389 */ 'l', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
165
51.9k
  /* 1398 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
166
51.9k
  /* 1410 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
167
51.9k
  /* 1423 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'a', 'q', 9, 0,
168
51.9k
  /* 1437 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'a', 'q', 9, 0,
169
51.9k
  /* 1451 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'a', 'q', 9, 0,
170
51.9k
  /* 1464 */ 's', 'c', '.', 'w', '.', 'a', 'q', 9, 0,
171
51.9k
  /* 1473 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'a', 'q', 9, 0,
172
51.9k
  /* 1486 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'a', 'q', 9, 0,
173
51.9k
  /* 1499 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'a', 'q', 9, 0,
174
51.9k
  /* 1512 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'a', 'q', 9, 0,
175
51.9k
  /* 1526 */ 'l', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
176
51.9k
  /* 1535 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
177
51.9k
  /* 1547 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
178
51.9k
  /* 1560 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'a', 'q', 9, 0,
179
51.9k
  /* 1574 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'a', 'q', 9, 0,
180
51.9k
  /* 1588 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'a', 'q', 9, 0,
181
51.9k
  /* 1601 */ 'b', 'e', 'q', 9, 0,
182
51.9k
  /* 1606 */ 'c', '.', 'j', 'r', 9, 0,
183
51.9k
  /* 1612 */ 'c', '.', 'j', 'a', 'l', 'r', 9, 0,
184
51.9k
  /* 1620 */ 'c', '.', 'o', 'r', 9, 0,
185
51.9k
  /* 1626 */ 'c', '.', 'x', 'o', 'r', 9, 0,
186
51.9k
  /* 1633 */ 'f', 's', 'u', 'b', '.', 's', 9, 0,
187
51.9k
  /* 1641 */ 'f', 'm', 's', 'u', 'b', '.', 's', 9, 0,
188
51.9k
  /* 1650 */ 'f', 'n', 'm', 's', 'u', 'b', '.', 's', 9, 0,
189
51.9k
  /* 1660 */ 'f', 'c', 'v', 't', '.', 'd', '.', 's', 9, 0,
190
51.9k
  /* 1670 */ 'f', 'a', 'd', 'd', '.', 's', 9, 0,
191
51.9k
  /* 1678 */ 'f', 'm', 'a', 'd', 'd', '.', 's', 9, 0,
192
51.9k
  /* 1687 */ 'f', 'n', 'm', 'a', 'd', 'd', '.', 's', 9, 0,
193
51.9k
  /* 1697 */ 'f', 'l', 'e', '.', 's', 9, 0,
194
51.9k
  /* 1704 */ 'f', 's', 'g', 'n', 'j', '.', 's', 9, 0,
195
51.9k
  /* 1713 */ 'f', 'c', 'v', 't', '.', 'l', '.', 's', 9, 0,
196
51.9k
  /* 1723 */ 'f', 'm', 'u', 'l', '.', 's', 9, 0,
197
51.9k
  /* 1731 */ 'f', 'm', 'i', 'n', '.', 's', 9, 0,
198
51.9k
  /* 1739 */ 'f', 's', 'g', 'n', 'j', 'n', '.', 's', 9, 0,
199
51.9k
  /* 1749 */ 'f', 'e', 'q', '.', 's', 9, 0,
200
51.9k
  /* 1756 */ 'f', 'c', 'l', 'a', 's', 's', '.', 's', 9, 0,
201
51.9k
  /* 1766 */ 'f', 'l', 't', '.', 's', 9, 0,
202
51.9k
  /* 1773 */ 'f', 's', 'q', 'r', 't', '.', 's', 9, 0,
203
51.9k
  /* 1782 */ 'f', 'c', 'v', 't', '.', 'l', 'u', '.', 's', 9, 0,
204
51.9k
  /* 1793 */ 'f', 'c', 'v', 't', '.', 'w', 'u', '.', 's', 9, 0,
205
51.9k
  /* 1804 */ 'f', 'd', 'i', 'v', '.', 's', 9, 0,
206
51.9k
  /* 1812 */ 'f', 'c', 'v', 't', '.', 'w', '.', 's', 9, 0,
207
51.9k
  /* 1822 */ 'f', 'm', 'a', 'x', '.', 's', 9, 0,
208
51.9k
  /* 1830 */ 'f', 's', 'g', 'n', 'j', 'x', '.', 's', 9, 0,
209
51.9k
  /* 1840 */ 'c', 's', 'r', 'r', 's', 9, 0,
210
51.9k
  /* 1847 */ 'm', 'r', 'e', 't', 9, 0,
211
51.9k
  /* 1853 */ 's', 'r', 'e', 't', 9, 0,
212
51.9k
  /* 1859 */ 'u', 'r', 'e', 't', 9, 0,
213
51.9k
  /* 1865 */ 'b', 'l', 't', 9, 0,
214
51.9k
  /* 1870 */ 's', 'l', 't', 9, 0,
215
51.9k
  /* 1875 */ 'l', 'b', 'u', 9, 0,
216
51.9k
  /* 1880 */ 'b', 'g', 'e', 'u', 9, 0,
217
51.9k
  /* 1886 */ 'm', 'u', 'l', 'h', 'u', 9, 0,
218
51.9k
  /* 1893 */ 's', 'l', 't', 'i', 'u', 9, 0,
219
51.9k
  /* 1900 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'l', 'u', 9, 0,
220
51.9k
  /* 1911 */ 'f', 'c', 'v', 't', '.', 's', '.', 'l', 'u', 9, 0,
221
51.9k
  /* 1922 */ 'r', 'e', 'm', 'u', 9, 0,
222
51.9k
  /* 1928 */ 'm', 'u', 'l', 'h', 's', 'u', 9, 0,
223
51.9k
  /* 1936 */ 'b', 'l', 't', 'u', 9, 0,
224
51.9k
  /* 1942 */ 's', 'l', 't', 'u', 9, 0,
225
51.9k
  /* 1948 */ 'd', 'i', 'v', 'u', 9, 0,
226
51.9k
  /* 1954 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'w', 'u', 9, 0,
227
51.9k
  /* 1965 */ 'f', 'c', 'v', 't', '.', 's', '.', 'w', 'u', 9, 0,
228
51.9k
  /* 1976 */ 'l', 'w', 'u', 9, 0,
229
51.9k
  /* 1981 */ 'd', 'i', 'v', 9, 0,
230
51.9k
  /* 1986 */ 'c', '.', 'm', 'v', 9, 0,
231
51.9k
  /* 1992 */ 's', 'c', '.', 'w', 9, 0,
232
51.9k
  /* 1998 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'w', 9, 0,
233
51.9k
  /* 2008 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', 9, 0,
234
51.9k
  /* 2018 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', 9, 0,
235
51.9k
  /* 2028 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', 9, 0,
236
51.9k
  /* 2038 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', 9, 0,
237
51.9k
  /* 2049 */ 'l', 'r', '.', 'w', 9, 0,
238
51.9k
  /* 2055 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', 9, 0,
239
51.9k
  /* 2064 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', 9, 0,
240
51.9k
  /* 2074 */ 'f', 'c', 'v', 't', '.', 's', '.', 'w', 9, 0,
241
51.9k
  /* 2084 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', 9, 0,
242
51.9k
  /* 2095 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', 9, 0,
243
51.9k
  /* 2106 */ 'f', 'm', 'v', '.', 'x', '.', 'w', 9, 0,
244
51.9k
  /* 2115 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', 9, 0,
245
51.9k
  /* 2125 */ 's', 'r', 'a', 'w', 9, 0,
246
51.9k
  /* 2131 */ 'c', '.', 's', 'u', 'b', 'w', 9, 0,
247
51.9k
  /* 2139 */ 'c', '.', 'a', 'd', 'd', 'w', 9, 0,
248
51.9k
  /* 2147 */ 's', 'r', 'a', 'i', 'w', 9, 0,
249
51.9k
  /* 2154 */ 'c', '.', 'a', 'd', 'd', 'i', 'w', 9, 0,
250
51.9k
  /* 2163 */ 's', 'l', 'l', 'i', 'w', 9, 0,
251
51.9k
  /* 2170 */ 's', 'r', 'l', 'i', 'w', 9, 0,
252
51.9k
  /* 2177 */ 'c', '.', 'l', 'w', 9, 0,
253
51.9k
  /* 2183 */ 'c', '.', 'f', 'l', 'w', 9, 0,
254
51.9k
  /* 2190 */ 's', 'l', 'l', 'w', 9, 0,
255
51.9k
  /* 2196 */ 's', 'r', 'l', 'w', 9, 0,
256
51.9k
  /* 2202 */ 'm', 'u', 'l', 'w', 9, 0,
257
51.9k
  /* 2208 */ 'r', 'e', 'm', 'w', 9, 0,
258
51.9k
  /* 2214 */ 'c', 's', 'r', 'r', 'w', 9, 0,
259
51.9k
  /* 2221 */ 'c', '.', 's', 'w', 9, 0,
260
51.9k
  /* 2227 */ 'c', '.', 'f', 's', 'w', 9, 0,
261
51.9k
  /* 2234 */ 'r', 'e', 'm', 'u', 'w', 9, 0,
262
51.9k
  /* 2241 */ 'd', 'i', 'v', 'u', 'w', 9, 0,
263
51.9k
  /* 2248 */ 'd', 'i', 'v', 'w', 9, 0,
264
51.9k
  /* 2254 */ 'f', 'm', 'v', '.', 'd', '.', 'x', 9, 0,
265
51.9k
  /* 2263 */ 'f', 'm', 'v', '.', 'w', '.', 'x', 9, 0,
266
51.9k
  /* 2272 */ 'c', '.', 'b', 'n', 'e', 'z', 9, 0,
267
51.9k
  /* 2280 */ 'c', '.', 'b', 'e', 'q', 'z', 9, 0,
268
51.9k
  /* 2288 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'P', 'a', 't', 'c', 'h', 'a', 'b', 'l', 'e', 32, 'R', 'E', 'T', '.', 0,
269
51.9k
  /* 2319 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'y', 'p', 'e', 'd', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
270
51.9k
  /* 2343 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
271
51.9k
  /* 2368 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
272
51.9k
  /* 2391 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
273
51.9k
  /* 2414 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
274
51.9k
  /* 2436 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
275
51.9k
  /* 2449 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
276
51.9k
  /* 2456 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
277
51.9k
  /* 2466 */ 'D', 'B', 'G', '_', 'L', 'A', 'B', 'E', 'L', 0,
278
51.9k
  /* 2476 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
279
51.9k
  /* 2491 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
280
51.9k
  };
281
51.9k
#endif
282
283
51.9k
  static const uint16_t OpInfo0[] = {
284
51.9k
    0U, // PHI
285
51.9k
    0U, // INLINEASM
286
51.9k
    0U, // INLINEASM_BR
287
51.9k
    0U, // CFI_INSTRUCTION
288
51.9k
    0U, // EH_LABEL
289
51.9k
    0U, // GC_LABEL
290
51.9k
    0U, // ANNOTATION_LABEL
291
51.9k
    0U, // KILL
292
51.9k
    0U, // EXTRACT_SUBREG
293
51.9k
    0U, // INSERT_SUBREG
294
51.9k
    0U, // IMPLICIT_DEF
295
51.9k
    0U, // SUBREG_TO_REG
296
51.9k
    0U, // COPY_TO_REGCLASS
297
51.9k
    2457U,  // DBG_VALUE
298
51.9k
    2467U,  // DBG_LABEL
299
51.9k
    0U, // REG_SEQUENCE
300
51.9k
    0U, // COPY
301
51.9k
    2450U,  // BUNDLE
302
51.9k
    2477U,  // LIFETIME_START
303
51.9k
    2437U,  // LIFETIME_END
304
51.9k
    0U, // STACKMAP
305
51.9k
    2492U,  // FENTRY_CALL
306
51.9k
    0U, // PATCHPOINT
307
51.9k
    0U, // LOAD_STACK_GUARD
308
51.9k
    0U, // STATEPOINT
309
51.9k
    0U, // LOCAL_ESCAPE
310
51.9k
    0U, // FAULTING_OP
311
51.9k
    0U, // PATCHABLE_OP
312
51.9k
    2369U,  // PATCHABLE_FUNCTION_ENTER
313
51.9k
    2289U,  // PATCHABLE_RET
314
51.9k
    2415U,  // PATCHABLE_FUNCTION_EXIT
315
51.9k
    2392U,  // PATCHABLE_TAIL_CALL
316
51.9k
    2344U,  // PATCHABLE_EVENT_CALL
317
51.9k
    2320U,  // PATCHABLE_TYPED_EVENT_CALL
318
51.9k
    0U, // ICALL_BRANCH_FUNNEL
319
51.9k
    0U, // G_ADD
320
51.9k
    0U, // G_SUB
321
51.9k
    0U, // G_MUL
322
51.9k
    0U, // G_SDIV
323
51.9k
    0U, // G_UDIV
324
51.9k
    0U, // G_SREM
325
51.9k
    0U, // G_UREM
326
51.9k
    0U, // G_AND
327
51.9k
    0U, // G_OR
328
51.9k
    0U, // G_XOR
329
51.9k
    0U, // G_IMPLICIT_DEF
330
51.9k
    0U, // G_PHI
331
51.9k
    0U, // G_FRAME_INDEX
332
51.9k
    0U, // G_GLOBAL_VALUE
333
51.9k
    0U, // G_EXTRACT
334
51.9k
    0U, // G_UNMERGE_VALUES
335
51.9k
    0U, // G_INSERT
336
51.9k
    0U, // G_MERGE_VALUES
337
51.9k
    0U, // G_BUILD_VECTOR
338
51.9k
    0U, // G_BUILD_VECTOR_TRUNC
339
51.9k
    0U, // G_CONCAT_VECTORS
340
51.9k
    0U, // G_PTRTOINT
341
51.9k
    0U, // G_INTTOPTR
342
51.9k
    0U, // G_BITCAST
343
51.9k
    0U, // G_INTRINSIC_TRUNC
344
51.9k
    0U, // G_INTRINSIC_ROUND
345
51.9k
    0U, // G_LOAD
346
51.9k
    0U, // G_SEXTLOAD
347
51.9k
    0U, // G_ZEXTLOAD
348
51.9k
    0U, // G_STORE
349
51.9k
    0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
350
51.9k
    0U, // G_ATOMIC_CMPXCHG
351
51.9k
    0U, // G_ATOMICRMW_XCHG
352
51.9k
    0U, // G_ATOMICRMW_ADD
353
51.9k
    0U, // G_ATOMICRMW_SUB
354
51.9k
    0U, // G_ATOMICRMW_AND
355
51.9k
    0U, // G_ATOMICRMW_NAND
356
51.9k
    0U, // G_ATOMICRMW_OR
357
51.9k
    0U, // G_ATOMICRMW_XOR
358
51.9k
    0U, // G_ATOMICRMW_MAX
359
51.9k
    0U, // G_ATOMICRMW_MIN
360
51.9k
    0U, // G_ATOMICRMW_UMAX
361
51.9k
    0U, // G_ATOMICRMW_UMIN
362
51.9k
    0U, // G_BRCOND
363
51.9k
    0U, // G_BRINDIRECT
364
51.9k
    0U, // G_INTRINSIC
365
51.9k
    0U, // G_INTRINSIC_W_SIDE_EFFECTS
366
51.9k
    0U, // G_ANYEXT
367
51.9k
    0U, // G_TRUNC
368
51.9k
    0U, // G_CONSTANT
369
51.9k
    0U, // G_FCONSTANT
370
51.9k
    0U, // G_VASTART
371
51.9k
    0U, // G_VAARG
372
51.9k
    0U, // G_SEXT
373
51.9k
    0U, // G_ZEXT
374
51.9k
    0U, // G_SHL
375
51.9k
    0U, // G_LSHR
376
51.9k
    0U, // G_ASHR
377
51.9k
    0U, // G_ICMP
378
51.9k
    0U, // G_FCMP
379
51.9k
    0U, // G_SELECT
380
51.9k
    0U, // G_UADDO
381
51.9k
    0U, // G_UADDE
382
51.9k
    0U, // G_USUBO
383
51.9k
    0U, // G_USUBE
384
51.9k
    0U, // G_SADDO
385
51.9k
    0U, // G_SADDE
386
51.9k
    0U, // G_SSUBO
387
51.9k
    0U, // G_SSUBE
388
51.9k
    0U, // G_UMULO
389
51.9k
    0U, // G_SMULO
390
51.9k
    0U, // G_UMULH
391
51.9k
    0U, // G_SMULH
392
51.9k
    0U, // G_FADD
393
51.9k
    0U, // G_FSUB
394
51.9k
    0U, // G_FMUL
395
51.9k
    0U, // G_FMA
396
51.9k
    0U, // G_FDIV
397
51.9k
    0U, // G_FREM
398
51.9k
    0U, // G_FPOW
399
51.9k
    0U, // G_FEXP
400
51.9k
    0U, // G_FEXP2
401
51.9k
    0U, // G_FLOG
402
51.9k
    0U, // G_FLOG2
403
51.9k
    0U, // G_FLOG10
404
51.9k
    0U, // G_FNEG
405
51.9k
    0U, // G_FPEXT
406
51.9k
    0U, // G_FPTRUNC
407
51.9k
    0U, // G_FPTOSI
408
51.9k
    0U, // G_FPTOUI
409
51.9k
    0U, // G_SITOFP
410
51.9k
    0U, // G_UITOFP
411
51.9k
    0U, // G_FABS
412
51.9k
    0U, // G_FCANONICALIZE
413
51.9k
    0U, // G_GEP
414
51.9k
    0U, // G_PTR_MASK
415
51.9k
    0U, // G_BR
416
51.9k
    0U, // G_INSERT_VECTOR_ELT
417
51.9k
    0U, // G_EXTRACT_VECTOR_ELT
418
51.9k
    0U, // G_SHUFFLE_VECTOR
419
51.9k
    0U, // G_CTTZ
420
51.9k
    0U, // G_CTTZ_ZERO_UNDEF
421
51.9k
    0U, // G_CTLZ
422
51.9k
    0U, // G_CTLZ_ZERO_UNDEF
423
51.9k
    0U, // G_CTPOP
424
51.9k
    0U, // G_BSWAP
425
51.9k
    0U, // G_FCEIL
426
51.9k
    0U, // G_FCOS
427
51.9k
    0U, // G_FSIN
428
51.9k
    0U, // G_FSQRT
429
51.9k
    0U, // G_FFLOOR
430
51.9k
    0U, // G_ADDRSPACE_CAST
431
51.9k
    0U, // G_BLOCK_ADDR
432
51.9k
    4U, // ADJCALLSTACKDOWN
433
51.9k
    4U, // ADJCALLSTACKUP
434
51.9k
    4U, // BuildPairF64Pseudo
435
51.9k
    4U, // PseudoAtomicLoadNand32
436
51.9k
    4U, // PseudoAtomicLoadNand64
437
51.9k
    4U, // PseudoBR
438
51.9k
    4U, // PseudoBRIND
439
51.9k
    4687U,  // PseudoCALL
440
51.9k
    4U, // PseudoCALLIndirect
441
51.9k
    4U, // PseudoCmpXchg32
442
51.9k
    4U, // PseudoCmpXchg64
443
51.9k
    20482U, // PseudoLA
444
51.9k
    20967U, // PseudoLI
445
51.9k
    20481U, // PseudoLLA
446
51.9k
    4U, // PseudoMaskedAtomicLoadAdd32
447
51.9k
    4U, // PseudoMaskedAtomicLoadMax32
448
51.9k
    4U, // PseudoMaskedAtomicLoadMin32
449
51.9k
    4U, // PseudoMaskedAtomicLoadNand32
450
51.9k
    4U, // PseudoMaskedAtomicLoadSub32
451
51.9k
    4U, // PseudoMaskedAtomicLoadUMax32
452
51.9k
    4U, // PseudoMaskedAtomicLoadUMin32
453
51.9k
    4U, // PseudoMaskedAtomicSwap32
454
51.9k
    4U, // PseudoMaskedCmpXchg32
455
51.9k
    4U, // PseudoRET
456
51.9k
    4680U,  // PseudoTAIL
457
51.9k
    4U, // PseudoTAILIndirect
458
51.9k
    4U, // Select_FPR32_Using_CC_GPR
459
51.9k
    4U, // Select_FPR64_Using_CC_GPR
460
51.9k
    4U, // Select_GPR_Using_CC_GPR
461
51.9k
    4U, // SplitF64Pseudo
462
51.9k
    20854U, // ADD
463
51.9k
    20946U, // ADDI
464
51.9k
    22637U, // ADDIW
465
51.9k
    22622U, // ADDW
466
51.9k
    20592U, // AMOADD_D
467
51.9k
    21817U, // AMOADD_D_AQ
468
51.9k
    21367U, // AMOADD_D_AQ_RL
469
51.9k
    21091U, // AMOADD_D_RL
470
51.9k
    22489U, // AMOADD_W
471
51.9k
    21954U, // AMOADD_W_AQ
472
51.9k
    21526U, // AMOADD_W_AQ_RL
473
51.9k
    21228U, // AMOADD_W_RL
474
51.9k
    20602U, // AMOAND_D
475
51.9k
    21830U, // AMOAND_D_AQ
476
51.9k
    21382U, // AMOAND_D_AQ_RL
477
51.9k
    21104U, // AMOAND_D_RL
478
51.9k
    22499U, // AMOAND_W
479
51.9k
    21967U, // AMOAND_W_AQ
480
51.9k
    21541U, // AMOAND_W_AQ_RL
481
51.9k
    21241U, // AMOAND_W_RL
482
51.9k
    20786U, // AMOMAXU_D
483
51.9k
    21918U, // AMOMAXU_D_AQ
484
51.9k
    21484U, // AMOMAXU_D_AQ_RL
485
51.9k
    21192U, // AMOMAXU_D_RL
486
51.9k
    22576U, // AMOMAXU_W
487
51.9k
    22055U, // AMOMAXU_W_AQ
488
51.9k
    21643U, // AMOMAXU_W_AQ_RL
489
51.9k
    21329U, // AMOMAXU_W_RL
490
51.9k
    20832U, // AMOMAX_D
491
51.9k
    21932U, // AMOMAX_D_AQ
492
51.9k
    21500U, // AMOMAX_D_AQ_RL
493
51.9k
    21206U, // AMOMAX_D_RL
494
51.9k
    22596U, // AMOMAX_W
495
51.9k
    22069U, // AMOMAX_W_AQ
496
51.9k
    21659U, // AMOMAX_W_AQ_RL
497
51.9k
    21343U, // AMOMAX_W_RL
498
51.9k
    20764U, // AMOMINU_D
499
51.9k
    21904U, // AMOMINU_D_AQ
500
51.9k
    21468U, // AMOMINU_D_AQ_RL
501
51.9k
    21178U, // AMOMINU_D_RL
502
51.9k
    22565U, // AMOMINU_W
503
51.9k
    22041U, // AMOMINU_W_AQ
504
51.9k
    21627U, // AMOMINU_W_AQ_RL
505
51.9k
    21315U, // AMOMINU_W_RL
506
51.9k
    20654U, // AMOMIN_D
507
51.9k
    21843U, // AMOMIN_D_AQ
508
51.9k
    21397U, // AMOMIN_D_AQ_RL
509
51.9k
    21117U, // AMOMIN_D_RL
510
51.9k
    22509U, // AMOMIN_W
511
51.9k
    21980U, // AMOMIN_W_AQ
512
51.9k
    21556U, // AMOMIN_W_AQ_RL
513
51.9k
    21254U, // AMOMIN_W_RL
514
51.9k
    20698U, // AMOOR_D
515
51.9k
    21879U, // AMOOR_D_AQ
516
51.9k
    21439U, // AMOOR_D_AQ_RL
517
51.9k
    21153U, // AMOOR_D_RL
518
51.9k
    22536U, // AMOOR_W
519
51.9k
    22016U, // AMOOR_W_AQ
520
51.9k
    21598U, // AMOOR_W_AQ_RL
521
51.9k
    21290U, // AMOOR_W_RL
522
51.9k
    20674U, // AMOSWAP_D
523
51.9k
    21856U, // AMOSWAP_D_AQ
524
51.9k
    21412U, // AMOSWAP_D_AQ_RL
525
51.9k
    21130U, // AMOSWAP_D_RL
526
51.9k
    22519U, // AMOSWAP_W
527
51.9k
    21993U, // AMOSWAP_W_AQ
528
51.9k
    21571U, // AMOSWAP_W_AQ_RL
529
51.9k
    21267U, // AMOSWAP_W_RL
530
51.9k
    20707U, // AMOXOR_D
531
51.9k
    21891U, // AMOXOR_D_AQ
532
51.9k
    21453U, // AMOXOR_D_AQ_RL
533
51.9k
    21165U, // AMOXOR_D_RL
534
51.9k
    22545U, // AMOXOR_W
535
51.9k
    22028U, // AMOXOR_W_AQ
536
51.9k
    21612U, // AMOXOR_W_AQ_RL
537
51.9k
    21302U, // AMOXOR_W_RL
538
51.9k
    20874U, // AND
539
51.9k
    20954U, // ANDI
540
51.9k
    20518U, // AUIPC
541
51.9k
    22082U, // BEQ
542
51.9k
    20899U, // BGE
543
51.9k
    22361U, // BGEU
544
51.9k
    22346U, // BLT
545
51.9k
    22417U, // BLTU
546
51.9k
    20904U, // BNE
547
51.9k
    20525U, // CSRRC
548
51.9k
    20936U, // CSRRCI
549
51.9k
    22321U, // CSRRS
550
51.9k
    20993U, // CSRRSI
551
51.9k
    22695U, // CSRRW
552
51.9k
    21014U, // CSRRWI
553
51.9k
    8564U,  // C_ADD
554
51.9k
    8656U,  // C_ADDI
555
51.9k
    9440U,  // C_ADDI16SP
556
51.9k
    21689U, // C_ADDI4SPN
557
51.9k
    10347U, // C_ADDIW
558
51.9k
    10332U, // C_ADDW
559
51.9k
    8584U,  // C_AND
560
51.9k
    8664U,  // C_ANDI
561
51.9k
    22761U, // C_BEQZ
562
51.9k
    22753U, // C_BNEZ
563
51.9k
    547U, // C_EBREAK
564
51.9k
    20865U, // C_FLD
565
51.9k
    21748U, // C_FLDSP
566
51.9k
    22664U, // C_FLW
567
51.9k
    21782U, // C_FLWSP
568
51.9k
    20885U, // C_FSD
569
51.9k
    21765U, // C_FSDSP
570
51.9k
    22708U, // C_FSW
571
51.9k
    21799U, // C_FSWSP
572
51.9k
    4638U,  // C_J
573
51.9k
    4673U,  // C_JAL
574
51.9k
    5709U,  // C_JALR
575
51.9k
    5703U,  // C_JR
576
51.9k
    20859U, // C_LD
577
51.9k
    21740U, // C_LDSP
578
51.9k
    20965U, // C_LI
579
51.9k
    21007U, // C_LUI
580
51.9k
    22658U, // C_LW
581
51.9k
    21774U, // C_LWSP
582
51.9k
    22467U, // C_MV
583
51.9k
    1241U,  // C_NOP
584
51.9k
    9813U,  // C_OR
585
51.9k
    20879U, // C_SD
586
51.9k
    21757U, // C_SDSP
587
51.9k
    8683U,  // C_SLLI
588
51.9k
    8640U,  // C_SRAI
589
51.9k
    8691U,  // C_SRLI
590
51.9k
    8223U,  // C_SUB
591
51.9k
    10324U, // C_SUBW
592
51.9k
    22702U, // C_SW
593
51.9k
    21791U, // C_SWSP
594
51.9k
    1232U,  // C_UNIMP
595
51.9k
    9819U,  // C_XOR
596
51.9k
    22462U, // DIV
597
51.9k
    22429U, // DIVU
598
51.9k
    22722U, // DIVUW
599
51.9k
    22729U, // DIVW
600
51.9k
    549U, // EBREAK
601
51.9k
    590U, // ECALL
602
51.9k
    20565U, // FADD_D
603
51.9k
    22151U, // FADD_S
604
51.9k
    20727U, // FCLASS_D
605
51.9k
    22237U, // FCLASS_S
606
51.9k
    21037U, // FCVT_D_L
607
51.9k
    22381U, // FCVT_D_LU
608
51.9k
    22141U, // FCVT_D_S
609
51.9k
    22479U, // FCVT_D_W
610
51.9k
    22435U, // FCVT_D_WU
611
51.9k
    20753U, // FCVT_LU_D
612
51.9k
    22263U, // FCVT_LU_S
613
51.9k
    20628U, // FCVT_L_D
614
51.9k
    22194U, // FCVT_L_S
615
51.9k
    20717U, // FCVT_S_D
616
51.9k
    21047U, // FCVT_S_L
617
51.9k
    22392U, // FCVT_S_LU
618
51.9k
    22555U, // FCVT_S_W
619
51.9k
    22446U, // FCVT_S_WU
620
51.9k
    20775U, // FCVT_WU_D
621
51.9k
    22274U, // FCVT_WU_S
622
51.9k
    20805U, // FCVT_W_D
623
51.9k
    22293U, // FCVT_W_S
624
51.9k
    20797U, // FDIV_D
625
51.9k
    22285U, // FDIV_S
626
51.9k
    12700U, // FENCE
627
51.9k
    439U, // FENCE_I
628
51.9k
    1221U,  // FENCE_TSO
629
51.9k
    20685U, // FEQ_D
630
51.9k
    22230U, // FEQ_S
631
51.9k
    20867U, // FLD
632
51.9k
    20612U, // FLE_D
633
51.9k
    22178U, // FLE_S
634
51.9k
    20737U, // FLT_D
635
51.9k
    22247U, // FLT_S
636
51.9k
    22666U, // FLW
637
51.9k
    20573U, // FMADD_D
638
51.9k
    22159U, // FMADD_S
639
51.9k
    20824U, // FMAX_D
640
51.9k
    22303U, // FMAX_S
641
51.9k
    20646U, // FMIN_D
642
51.9k
    22212U, // FMIN_S
643
51.9k
    20540U, // FMSUB_D
644
51.9k
    22122U, // FMSUB_S
645
51.9k
    20638U, // FMUL_D
646
51.9k
    22204U, // FMUL_S
647
51.9k
    22735U, // FMV_D_X
648
51.9k
    22744U, // FMV_W_X
649
51.9k
    20815U, // FMV_X_D
650
51.9k
    22587U, // FMV_X_W
651
51.9k
    20582U, // FNMADD_D
652
51.9k
    22168U, // FNMADD_S
653
51.9k
    20549U, // FNMSUB_D
654
51.9k
    22131U, // FNMSUB_S
655
51.9k
    20887U, // FSD
656
51.9k
    20664U, // FSGNJN_D
657
51.9k
    22220U, // FSGNJN_S
658
51.9k
    20842U, // FSGNJX_D
659
51.9k
    22311U, // FSGNJX_S
660
51.9k
    20619U, // FSGNJ_D
661
51.9k
    22185U, // FSGNJ_S
662
51.9k
    20744U, // FSQRT_D
663
51.9k
    22254U, // FSQRT_S
664
51.9k
    20532U, // FSUB_D
665
51.9k
    22114U, // FSUB_S
666
51.9k
    22710U, // FSW
667
51.9k
    21059U, // JAL
668
51.9k
    22095U, // JALR
669
51.9k
    20503U, // LB
670
51.9k
    22356U, // LBU
671
51.9k
    20861U, // LD
672
51.9k
    20911U, // LH
673
51.9k
    22369U, // LHU
674
51.9k
    37076U, // LR_D
675
51.9k
    38254U, // LR_D_AQ
676
51.9k
    37812U, // LR_D_AQ_RL
677
51.9k
    37528U, // LR_D_RL
678
51.9k
    38914U, // LR_W
679
51.9k
    38391U, // LR_W_AQ
680
51.9k
    37971U, // LR_W_AQ_RL
681
51.9k
    37665U, // LR_W_RL
682
51.9k
    21009U, // LUI
683
51.9k
    22660U, // LW
684
51.9k
    22457U, // LWU
685
51.9k
    1848U,  // MRET
686
51.9k
    21679U, // MUL
687
51.9k
    20909U, // MULH
688
51.9k
    22409U, // MULHSU
689
51.9k
    22367U, // MULHU
690
51.9k
    22683U, // MULW
691
51.9k
    22103U, // OR
692
51.9k
    20988U, // ORI
693
51.9k
    21684U, // REM
694
51.9k
    22403U, // REMU
695
51.9k
    22715U, // REMUW
696
51.9k
    22689U, // REMW
697
51.9k
    20507U, // SB
698
51.9k
    20559U, // SC_D
699
51.9k
    21808U, // SC_D_AQ
700
51.9k
    21356U, // SC_D_AQ_RL
701
51.9k
    21082U, // SC_D_RL
702
51.9k
    22473U, // SC_W
703
51.9k
    21945U, // SC_W_AQ
704
51.9k
    21515U, // SC_W_AQ_RL
705
51.9k
    21219U, // SC_W_RL
706
51.9k
    20881U, // SD
707
51.9k
    20486U, // SFENCE_VMA
708
51.9k
    20915U, // SH
709
51.9k
    21077U, // SLL
710
51.9k
    20973U, // SLLI
711
51.9k
    22644U, // SLLIW
712
51.9k
    22671U, // SLLW
713
51.9k
    22351U, // SLT
714
51.9k
    21001U, // SLTI
715
51.9k
    22374U, // SLTIU
716
51.9k
    22423U, // SLTU
717
51.9k
    20498U, // SRA
718
51.9k
    20930U, // SRAI
719
51.9k
    22628U, // SRAIW
720
51.9k
    22606U, // SRAW
721
51.9k
    1854U,  // SRET
722
51.9k
    21674U, // SRL
723
51.9k
    20981U, // SRLI
724
51.9k
    22651U, // SRLIW
725
51.9k
    22677U, // SRLW
726
51.9k
    20513U, // SUB
727
51.9k
    22614U, // SUBW
728
51.9k
    22704U, // SW
729
51.9k
    1234U,  // UNIMP
730
51.9k
    1860U,  // URET
731
51.9k
    480U, // WFI
732
51.9k
    22109U, // XOR
733
51.9k
    20987U, // XORI
734
51.9k
  };
735
736
51.9k
  static const uint8_t OpInfo1[] = {
737
51.9k
    0U, // PHI
738
51.9k
    0U, // INLINEASM
739
51.9k
    0U, // INLINEASM_BR
740
51.9k
    0U, // CFI_INSTRUCTION
741
51.9k
    0U, // EH_LABEL
742
51.9k
    0U, // GC_LABEL
743
51.9k
    0U, // ANNOTATION_LABEL
744
51.9k
    0U, // KILL
745
51.9k
    0U, // EXTRACT_SUBREG
746
51.9k
    0U, // INSERT_SUBREG
747
51.9k
    0U, // IMPLICIT_DEF
748
51.9k
    0U, // SUBREG_TO_REG
749
51.9k
    0U, // COPY_TO_REGCLASS
750
51.9k
    0U, // DBG_VALUE
751
51.9k
    0U, // DBG_LABEL
752
51.9k
    0U, // REG_SEQUENCE
753
51.9k
    0U, // COPY
754
51.9k
    0U, // BUNDLE
755
51.9k
    0U, // LIFETIME_START
756
51.9k
    0U, // LIFETIME_END
757
51.9k
    0U, // STACKMAP
758
51.9k
    0U, // FENTRY_CALL
759
51.9k
    0U, // PATCHPOINT
760
51.9k
    0U, // LOAD_STACK_GUARD
761
51.9k
    0U, // STATEPOINT
762
51.9k
    0U, // LOCAL_ESCAPE
763
51.9k
    0U, // FAULTING_OP
764
51.9k
    0U, // PATCHABLE_OP
765
51.9k
    0U, // PATCHABLE_FUNCTION_ENTER
766
51.9k
    0U, // PATCHABLE_RET
767
51.9k
    0U, // PATCHABLE_FUNCTION_EXIT
768
51.9k
    0U, // PATCHABLE_TAIL_CALL
769
51.9k
    0U, // PATCHABLE_EVENT_CALL
770
51.9k
    0U, // PATCHABLE_TYPED_EVENT_CALL
771
51.9k
    0U, // ICALL_BRANCH_FUNNEL
772
51.9k
    0U, // G_ADD
773
51.9k
    0U, // G_SUB
774
51.9k
    0U, // G_MUL
775
51.9k
    0U, // G_SDIV
776
51.9k
    0U, // G_UDIV
777
51.9k
    0U, // G_SREM
778
51.9k
    0U, // G_UREM
779
51.9k
    0U, // G_AND
780
51.9k
    0U, // G_OR
781
51.9k
    0U, // G_XOR
782
51.9k
    0U, // G_IMPLICIT_DEF
783
51.9k
    0U, // G_PHI
784
51.9k
    0U, // G_FRAME_INDEX
785
51.9k
    0U, // G_GLOBAL_VALUE
786
51.9k
    0U, // G_EXTRACT
787
51.9k
    0U, // G_UNMERGE_VALUES
788
51.9k
    0U, // G_INSERT
789
51.9k
    0U, // G_MERGE_VALUES
790
51.9k
    0U, // G_BUILD_VECTOR
791
51.9k
    0U, // G_BUILD_VECTOR_TRUNC
792
51.9k
    0U, // G_CONCAT_VECTORS
793
51.9k
    0U, // G_PTRTOINT
794
51.9k
    0U, // G_INTTOPTR
795
51.9k
    0U, // G_BITCAST
796
51.9k
    0U, // G_INTRINSIC_TRUNC
797
51.9k
    0U, // G_INTRINSIC_ROUND
798
51.9k
    0U, // G_LOAD
799
51.9k
    0U, // G_SEXTLOAD
800
51.9k
    0U, // G_ZEXTLOAD
801
51.9k
    0U, // G_STORE
802
51.9k
    0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
803
51.9k
    0U, // G_ATOMIC_CMPXCHG
804
51.9k
    0U, // G_ATOMICRMW_XCHG
805
51.9k
    0U, // G_ATOMICRMW_ADD
806
51.9k
    0U, // G_ATOMICRMW_SUB
807
51.9k
    0U, // G_ATOMICRMW_AND
808
51.9k
    0U, // G_ATOMICRMW_NAND
809
51.9k
    0U, // G_ATOMICRMW_OR
810
51.9k
    0U, // G_ATOMICRMW_XOR
811
51.9k
    0U, // G_ATOMICRMW_MAX
812
51.9k
    0U, // G_ATOMICRMW_MIN
813
51.9k
    0U, // G_ATOMICRMW_UMAX
814
51.9k
    0U, // G_ATOMICRMW_UMIN
815
51.9k
    0U, // G_BRCOND
816
51.9k
    0U, // G_BRINDIRECT
817
51.9k
    0U, // G_INTRINSIC
818
51.9k
    0U, // G_INTRINSIC_W_SIDE_EFFECTS
819
51.9k
    0U, // G_ANYEXT
820
51.9k
    0U, // G_TRUNC
821
51.9k
    0U, // G_CONSTANT
822
51.9k
    0U, // G_FCONSTANT
823
51.9k
    0U, // G_VASTART
824
51.9k
    0U, // G_VAARG
825
51.9k
    0U, // G_SEXT
826
51.9k
    0U, // G_ZEXT
827
51.9k
    0U, // G_SHL
828
51.9k
    0U, // G_LSHR
829
51.9k
    0U, // G_ASHR
830
51.9k
    0U, // G_ICMP
831
51.9k
    0U, // G_FCMP
832
51.9k
    0U, // G_SELECT
833
51.9k
    0U, // G_UADDO
834
51.9k
    0U, // G_UADDE
835
51.9k
    0U, // G_USUBO
836
51.9k
    0U, // G_USUBE
837
51.9k
    0U, // G_SADDO
838
51.9k
    0U, // G_SADDE
839
51.9k
    0U, // G_SSUBO
840
51.9k
    0U, // G_SSUBE
841
51.9k
    0U, // G_UMULO
842
51.9k
    0U, // G_SMULO
843
51.9k
    0U, // G_UMULH
844
51.9k
    0U, // G_SMULH
845
51.9k
    0U, // G_FADD
846
51.9k
    0U, // G_FSUB
847
51.9k
    0U, // G_FMUL
848
51.9k
    0U, // G_FMA
849
51.9k
    0U, // G_FDIV
850
51.9k
    0U, // G_FREM
851
51.9k
    0U, // G_FPOW
852
51.9k
    0U, // G_FEXP
853
51.9k
    0U, // G_FEXP2
854
51.9k
    0U, // G_FLOG
855
51.9k
    0U, // G_FLOG2
856
51.9k
    0U, // G_FLOG10
857
51.9k
    0U, // G_FNEG
858
51.9k
    0U, // G_FPEXT
859
51.9k
    0U, // G_FPTRUNC
860
51.9k
    0U, // G_FPTOSI
861
51.9k
    0U, // G_FPTOUI
862
51.9k
    0U, // G_SITOFP
863
51.9k
    0U, // G_UITOFP
864
51.9k
    0U, // G_FABS
865
51.9k
    0U, // G_FCANONICALIZE
866
51.9k
    0U, // G_GEP
867
51.9k
    0U, // G_PTR_MASK
868
51.9k
    0U, // G_BR
869
51.9k
    0U, // G_INSERT_VECTOR_ELT
870
51.9k
    0U, // G_EXTRACT_VECTOR_ELT
871
51.9k
    0U, // G_SHUFFLE_VECTOR
872
51.9k
    0U, // G_CTTZ
873
51.9k
    0U, // G_CTTZ_ZERO_UNDEF
874
51.9k
    0U, // G_CTLZ
875
51.9k
    0U, // G_CTLZ_ZERO_UNDEF
876
51.9k
    0U, // G_CTPOP
877
51.9k
    0U, // G_BSWAP
878
51.9k
    0U, // G_FCEIL
879
51.9k
    0U, // G_FCOS
880
51.9k
    0U, // G_FSIN
881
51.9k
    0U, // G_FSQRT
882
51.9k
    0U, // G_FFLOOR
883
51.9k
    0U, // G_ADDRSPACE_CAST
884
51.9k
    0U, // G_BLOCK_ADDR
885
51.9k
    0U, // ADJCALLSTACKDOWN
886
51.9k
    0U, // ADJCALLSTACKUP
887
51.9k
    0U, // BuildPairF64Pseudo
888
51.9k
    0U, // PseudoAtomicLoadNand32
889
51.9k
    0U, // PseudoAtomicLoadNand64
890
51.9k
    0U, // PseudoBR
891
51.9k
    0U, // PseudoBRIND
892
51.9k
    0U, // PseudoCALL
893
51.9k
    0U, // PseudoCALLIndirect
894
51.9k
    0U, // PseudoCmpXchg32
895
51.9k
    0U, // PseudoCmpXchg64
896
51.9k
    0U, // PseudoLA
897
51.9k
    0U, // PseudoLI
898
51.9k
    0U, // PseudoLLA
899
51.9k
    0U, // PseudoMaskedAtomicLoadAdd32
900
51.9k
    0U, // PseudoMaskedAtomicLoadMax32
901
51.9k
    0U, // PseudoMaskedAtomicLoadMin32
902
51.9k
    0U, // PseudoMaskedAtomicLoadNand32
903
51.9k
    0U, // PseudoMaskedAtomicLoadSub32
904
51.9k
    0U, // PseudoMaskedAtomicLoadUMax32
905
51.9k
    0U, // PseudoMaskedAtomicLoadUMin32
906
51.9k
    0U, // PseudoMaskedAtomicSwap32
907
51.9k
    0U, // PseudoMaskedCmpXchg32
908
51.9k
    0U, // PseudoRET
909
51.9k
    0U, // PseudoTAIL
910
51.9k
    0U, // PseudoTAILIndirect
911
51.9k
    0U, // Select_FPR32_Using_CC_GPR
912
51.9k
    0U, // Select_FPR64_Using_CC_GPR
913
51.9k
    0U, // Select_GPR_Using_CC_GPR
914
51.9k
    0U, // SplitF64Pseudo
915
51.9k
    4U, // ADD
916
51.9k
    4U, // ADDI
917
51.9k
    4U, // ADDIW
918
51.9k
    4U, // ADDW
919
51.9k
    9U, // AMOADD_D
920
51.9k
    9U, // AMOADD_D_AQ
921
51.9k
    9U, // AMOADD_D_AQ_RL
922
51.9k
    9U, // AMOADD_D_RL
923
51.9k
    9U, // AMOADD_W
924
51.9k
    9U, // AMOADD_W_AQ
925
51.9k
    9U, // AMOADD_W_AQ_RL
926
51.9k
    9U, // AMOADD_W_RL
927
51.9k
    9U, // AMOAND_D
928
51.9k
    9U, // AMOAND_D_AQ
929
51.9k
    9U, // AMOAND_D_AQ_RL
930
51.9k
    9U, // AMOAND_D_RL
931
51.9k
    9U, // AMOAND_W
932
51.9k
    9U, // AMOAND_W_AQ
933
51.9k
    9U, // AMOAND_W_AQ_RL
934
51.9k
    9U, // AMOAND_W_RL
935
51.9k
    9U, // AMOMAXU_D
936
51.9k
    9U, // AMOMAXU_D_AQ
937
51.9k
    9U, // AMOMAXU_D_AQ_RL
938
51.9k
    9U, // AMOMAXU_D_RL
939
51.9k
    9U, // AMOMAXU_W
940
51.9k
    9U, // AMOMAXU_W_AQ
941
51.9k
    9U, // AMOMAXU_W_AQ_RL
942
51.9k
    9U, // AMOMAXU_W_RL
943
51.9k
    9U, // AMOMAX_D
944
51.9k
    9U, // AMOMAX_D_AQ
945
51.9k
    9U, // AMOMAX_D_AQ_RL
946
51.9k
    9U, // AMOMAX_D_RL
947
51.9k
    9U, // AMOMAX_W
948
51.9k
    9U, // AMOMAX_W_AQ
949
51.9k
    9U, // AMOMAX_W_AQ_RL
950
51.9k
    9U, // AMOMAX_W_RL
951
51.9k
    9U, // AMOMINU_D
952
51.9k
    9U, // AMOMINU_D_AQ
953
51.9k
    9U, // AMOMINU_D_AQ_RL
954
51.9k
    9U, // AMOMINU_D_RL
955
51.9k
    9U, // AMOMINU_W
956
51.9k
    9U, // AMOMINU_W_AQ
957
51.9k
    9U, // AMOMINU_W_AQ_RL
958
51.9k
    9U, // AMOMINU_W_RL
959
51.9k
    9U, // AMOMIN_D
960
51.9k
    9U, // AMOMIN_D_AQ
961
51.9k
    9U, // AMOMIN_D_AQ_RL
962
51.9k
    9U, // AMOMIN_D_RL
963
51.9k
    9U, // AMOMIN_W
964
51.9k
    9U, // AMOMIN_W_AQ
965
51.9k
    9U, // AMOMIN_W_AQ_RL
966
51.9k
    9U, // AMOMIN_W_RL
967
51.9k
    9U, // AMOOR_D
968
51.9k
    9U, // AMOOR_D_AQ
969
51.9k
    9U, // AMOOR_D_AQ_RL
970
51.9k
    9U, // AMOOR_D_RL
971
51.9k
    9U, // AMOOR_W
972
51.9k
    9U, // AMOOR_W_AQ
973
51.9k
    9U, // AMOOR_W_AQ_RL
974
51.9k
    9U, // AMOOR_W_RL
975
51.9k
    9U, // AMOSWAP_D
976
51.9k
    9U, // AMOSWAP_D_AQ
977
51.9k
    9U, // AMOSWAP_D_AQ_RL
978
51.9k
    9U, // AMOSWAP_D_RL
979
51.9k
    9U, // AMOSWAP_W
980
51.9k
    9U, // AMOSWAP_W_AQ
981
51.9k
    9U, // AMOSWAP_W_AQ_RL
982
51.9k
    9U, // AMOSWAP_W_RL
983
51.9k
    9U, // AMOXOR_D
984
51.9k
    9U, // AMOXOR_D_AQ
985
51.9k
    9U, // AMOXOR_D_AQ_RL
986
51.9k
    9U, // AMOXOR_D_RL
987
51.9k
    9U, // AMOXOR_W
988
51.9k
    9U, // AMOXOR_W_AQ
989
51.9k
    9U, // AMOXOR_W_AQ_RL
990
51.9k
    9U, // AMOXOR_W_RL
991
51.9k
    4U, // AND
992
51.9k
    4U, // ANDI
993
51.9k
    0U, // AUIPC
994
51.9k
    4U, // BEQ
995
51.9k
    4U, // BGE
996
51.9k
    4U, // BGEU
997
51.9k
    4U, // BLT
998
51.9k
    4U, // BLTU
999
51.9k
    4U, // BNE
1000
51.9k
    2U, // CSRRC
1001
51.9k
    2U, // CSRRCI
1002
51.9k
    2U, // CSRRS
1003
51.9k
    2U, // CSRRSI
1004
51.9k
    2U, // CSRRW
1005
51.9k
    2U, // CSRRWI
1006
51.9k
    0U, // C_ADD
1007
51.9k
    0U, // C_ADDI
1008
51.9k
    0U, // C_ADDI16SP
1009
51.9k
    4U, // C_ADDI4SPN
1010
51.9k
    0U, // C_ADDIW
1011
51.9k
    0U, // C_ADDW
1012
51.9k
    0U, // C_AND
1013
51.9k
    0U, // C_ANDI
1014
51.9k
    0U, // C_BEQZ
1015
51.9k
    0U, // C_BNEZ
1016
51.9k
    0U, // C_EBREAK
1017
51.9k
    13U,  // C_FLD
1018
51.9k
    13U,  // C_FLDSP
1019
51.9k
    13U,  // C_FLW
1020
51.9k
    13U,  // C_FLWSP
1021
51.9k
    13U,  // C_FSD
1022
51.9k
    13U,  // C_FSDSP
1023
51.9k
    13U,  // C_FSW
1024
51.9k
    13U,  // C_FSWSP
1025
51.9k
    0U, // C_J
1026
51.9k
    0U, // C_JAL
1027
51.9k
    0U, // C_JALR
1028
51.9k
    0U, // C_JR
1029
51.9k
    13U,  // C_LD
1030
51.9k
    13U,  // C_LDSP
1031
51.9k
    0U, // C_LI
1032
51.9k
    0U, // C_LUI
1033
51.9k
    13U,  // C_LW
1034
51.9k
    13U,  // C_LWSP
1035
51.9k
    0U, // C_MV
1036
51.9k
    0U, // C_NOP
1037
51.9k
    0U, // C_OR
1038
51.9k
    13U,  // C_SD
1039
51.9k
    13U,  // C_SDSP
1040
51.9k
    0U, // C_SLLI
1041
51.9k
    0U, // C_SRAI
1042
51.9k
    0U, // C_SRLI
1043
51.9k
    0U, // C_SUB
1044
51.9k
    0U, // C_SUBW
1045
51.9k
    13U,  // C_SW
1046
51.9k
    13U,  // C_SWSP
1047
51.9k
    0U, // C_UNIMP
1048
51.9k
    0U, // C_XOR
1049
51.9k
    4U, // DIV
1050
51.9k
    4U, // DIVU
1051
51.9k
    4U, // DIVUW
1052
51.9k
    4U, // DIVW
1053
51.9k
    0U, // EBREAK
1054
51.9k
    0U, // ECALL
1055
51.9k
    36U,  // FADD_D
1056
51.9k
    36U,  // FADD_S
1057
51.9k
    0U, // FCLASS_D
1058
51.9k
    0U, // FCLASS_S
1059
51.9k
    20U,  // FCVT_D_L
1060
51.9k
    20U,  // FCVT_D_LU
1061
51.9k
    0U, // FCVT_D_S
1062
51.9k
    0U, // FCVT_D_W
1063
51.9k
    0U, // FCVT_D_WU
1064
51.9k
    20U,  // FCVT_LU_D
1065
51.9k
    20U,  // FCVT_LU_S
1066
51.9k
    20U,  // FCVT_L_D
1067
51.9k
    20U,  // FCVT_L_S
1068
51.9k
    20U,  // FCVT_S_D
1069
51.9k
    20U,  // FCVT_S_L
1070
51.9k
    20U,  // FCVT_S_LU
1071
51.9k
    20U,  // FCVT_S_W
1072
51.9k
    20U,  // FCVT_S_WU
1073
51.9k
    20U,  // FCVT_WU_D
1074
51.9k
    20U,  // FCVT_WU_S
1075
51.9k
    20U,  // FCVT_W_D
1076
51.9k
    20U,  // FCVT_W_S
1077
51.9k
    36U,  // FDIV_D
1078
51.9k
    36U,  // FDIV_S
1079
51.9k
    0U, // FENCE
1080
51.9k
    0U, // FENCE_I
1081
51.9k
    0U, // FENCE_TSO
1082
51.9k
    4U, // FEQ_D
1083
51.9k
    4U, // FEQ_S
1084
51.9k
    13U,  // FLD
1085
51.9k
    4U, // FLE_D
1086
51.9k
    4U, // FLE_S
1087
51.9k
    4U, // FLT_D
1088
51.9k
    4U, // FLT_S
1089
51.9k
    13U,  // FLW
1090
51.9k
    100U, // FMADD_D
1091
51.9k
    100U, // FMADD_S
1092
51.9k
    4U, // FMAX_D
1093
51.9k
    4U, // FMAX_S
1094
51.9k
    4U, // FMIN_D
1095
51.9k
    4U, // FMIN_S
1096
51.9k
    100U, // FMSUB_D
1097
51.9k
    100U, // FMSUB_S
1098
51.9k
    36U,  // FMUL_D
1099
51.9k
    36U,  // FMUL_S
1100
51.9k
    0U, // FMV_D_X
1101
51.9k
    0U, // FMV_W_X
1102
51.9k
    0U, // FMV_X_D
1103
51.9k
    0U, // FMV_X_W
1104
51.9k
    100U, // FNMADD_D
1105
51.9k
    100U, // FNMADD_S
1106
51.9k
    100U, // FNMSUB_D
1107
51.9k
    100U, // FNMSUB_S
1108
51.9k
    13U,  // FSD
1109
51.9k
    4U, // FSGNJN_D
1110
51.9k
    4U, // FSGNJN_S
1111
51.9k
    4U, // FSGNJX_D
1112
51.9k
    4U, // FSGNJX_S
1113
51.9k
    4U, // FSGNJ_D
1114
51.9k
    4U, // FSGNJ_S
1115
51.9k
    20U,  // FSQRT_D
1116
51.9k
    20U,  // FSQRT_S
1117
51.9k
    36U,  // FSUB_D
1118
51.9k
    36U,  // FSUB_S
1119
51.9k
    13U,  // FSW
1120
51.9k
    0U, // JAL
1121
51.9k
    4U, // JALR
1122
51.9k
    13U,  // LB
1123
51.9k
    13U,  // LBU
1124
51.9k
    13U,  // LD
1125
51.9k
    13U,  // LH
1126
51.9k
    13U,  // LHU
1127
51.9k
    0U, // LR_D
1128
51.9k
    0U, // LR_D_AQ
1129
51.9k
    0U, // LR_D_AQ_RL
1130
51.9k
    0U, // LR_D_RL
1131
51.9k
    0U, // LR_W
1132
51.9k
    0U, // LR_W_AQ
1133
51.9k
    0U, // LR_W_AQ_RL
1134
51.9k
    0U, // LR_W_RL
1135
51.9k
    0U, // LUI
1136
51.9k
    13U,  // LW
1137
51.9k
    13U,  // LWU
1138
51.9k
    0U, // MRET
1139
51.9k
    4U, // MUL
1140
51.9k
    4U, // MULH
1141
51.9k
    4U, // MULHSU
1142
51.9k
    4U, // MULHU
1143
51.9k
    4U, // MULW
1144
51.9k
    4U, // OR
1145
51.9k
    4U, // ORI
1146
51.9k
    4U, // REM
1147
51.9k
    4U, // REMU
1148
51.9k
    4U, // REMUW
1149
51.9k
    4U, // REMW
1150
51.9k
    13U,  // SB
1151
51.9k
    9U, // SC_D
1152
51.9k
    9U, // SC_D_AQ
1153
51.9k
    9U, // SC_D_AQ_RL
1154
51.9k
    9U, // SC_D_RL
1155
51.9k
    9U, // SC_W
1156
51.9k
    9U, // SC_W_AQ
1157
51.9k
    9U, // SC_W_AQ_RL
1158
51.9k
    9U, // SC_W_RL
1159
51.9k
    13U,  // SD
1160
51.9k
    0U, // SFENCE_VMA
1161
51.9k
    13U,  // SH
1162
51.9k
    4U, // SLL
1163
51.9k
    4U, // SLLI
1164
51.9k
    4U, // SLLIW
1165
51.9k
    4U, // SLLW
1166
51.9k
    4U, // SLT
1167
51.9k
    4U, // SLTI
1168
51.9k
    4U, // SLTIU
1169
51.9k
    4U, // SLTU
1170
51.9k
    4U, // SRA
1171
51.9k
    4U, // SRAI
1172
51.9k
    4U, // SRAIW
1173
51.9k
    4U, // SRAW
1174
51.9k
    0U, // SRET
1175
51.9k
    4U, // SRL
1176
51.9k
    4U, // SRLI
1177
51.9k
    4U, // SRLIW
1178
51.9k
    4U, // SRLW
1179
51.9k
    4U, // SUB
1180
51.9k
    4U, // SUBW
1181
51.9k
    13U,  // SW
1182
51.9k
    0U, // UNIMP
1183
51.9k
    0U, // URET
1184
51.9k
    0U, // WFI
1185
51.9k
    4U, // XOR
1186
51.9k
    4U, // XORI
1187
51.9k
  };
1188
1189
  // Emit the opcode for the instruction.
1190
51.9k
  uint32_t Bits = 0;
1191
51.9k
  Bits |= OpInfo0[MCInst_getOpcode(MI)] << 0;
1192
51.9k
  Bits |= OpInfo1[MCInst_getOpcode(MI)] << 16;
1193
51.9k
  CS_ASSERT(Bits != 0 && "Cannot print this instruction.");
1194
51.9k
#ifndef CAPSTONE_DIET
1195
51.9k
  SStream_concat0(O, AsmStrs+(Bits & 4095)-1);
1196
51.9k
#endif
1197
1198
1199
  // Fragment 0 encoded into 2 bits for 4 unique commands.
1200
51.9k
  switch ((Bits >> 12) & 3) {
1201
0
  default: CS_ASSERT(0 && "Invalid command number.");
1202
139
  case 0:
1203
    // DBG_VALUE, DBG_LABEL, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CAL...
1204
139
    return;
1205
0
    break;
1206
51.4k
  case 1:
1207
    // PseudoCALL, PseudoLA, PseudoLI, PseudoLLA, PseudoTAIL, ADD, ADDI, ADDI...
1208
51.4k
    printOperand(MI, 0, O);
1209
51.4k
    break;
1210
0
  case 2:
1211
    // C_ADD, C_ADDI, C_ADDI16SP, C_ADDIW, C_ADDW, C_AND, C_ANDI, C_OR, C_SLL...
1212
0
    printOperand(MI, 1, O);
1213
0
    SStream_concat0(O, ", ");
1214
0
    printOperand(MI, 2, O);
1215
0
    return;
1216
0
    break;
1217
331
  case 3:
1218
    // FENCE
1219
331
    printFenceArg(MI, 0, O);
1220
331
    SStream_concat0(O, ", ");
1221
331
    printFenceArg(MI, 1, O);
1222
331
    return;
1223
0
    break;
1224
51.9k
  }
1225
1226
1227
  // Fragment 1 encoded into 2 bits for 3 unique commands.
1228
51.4k
  switch ((Bits >> 14) & 3) {
1229
0
  default: CS_ASSERT(0 && "Invalid command number.");
1230
0
  case 0:
1231
    // PseudoCALL, PseudoTAIL, C_J, C_JAL, C_JALR, C_JR
1232
0
    return;
1233
0
    break;
1234
51.3k
  case 1:
1235
    // PseudoLA, PseudoLI, PseudoLLA, ADD, ADDI, ADDIW, ADDW, AMOADD_D, AMOAD...
1236
51.3k
    SStream_concat0(O, ", ");
1237
51.3k
    break;
1238
157
  case 2:
1239
    // LR_D, LR_D_AQ, LR_D_AQ_RL, LR_D_RL, LR_W, LR_W_AQ, LR_W_AQ_RL, LR_W_RL
1240
157
    SStream_concat0(O, ", (");
1241
157
    printOperand(MI, 1, O);
1242
157
    SStream_concat0(O, ")");
1243
157
    return;
1244
0
    break;
1245
51.4k
  }
1246
1247
1248
  // Fragment 2 encoded into 2 bits for 3 unique commands.
1249
51.3k
  switch ((Bits >> 16) & 3) {
1250
0
  default: CS_ASSERT(0 && "Invalid command number.");
1251
14.3k
  case 0:
1252
    // PseudoLA, PseudoLI, PseudoLLA, ADD, ADDI, ADDIW, ADDW, AND, ANDI, AUIP...
1253
14.3k
    printOperand(MI, 1, O);
1254
14.3k
    break;
1255
1.26k
  case 1:
1256
    // AMOADD_D, AMOADD_D_AQ, AMOADD_D_AQ_RL, AMOADD_D_RL, AMOADD_W, AMOADD_W...
1257
1.26k
    printOperand(MI, 2, O);
1258
1.26k
    break;
1259
35.6k
  case 2:
1260
    // CSRRC, CSRRCI, CSRRS, CSRRSI, CSRRW, CSRRWI
1261
35.6k
    printCSRSystemRegister(MI, 1, O);
1262
35.6k
    SStream_concat0(O, ", ");
1263
35.6k
    printOperand(MI, 2, O);
1264
35.6k
    return;
1265
0
    break;
1266
51.3k
  }
1267
1268
1269
  // Fragment 3 encoded into 2 bits for 4 unique commands.
1270
15.6k
  switch ((Bits >> 18) & 3) {
1271
0
  default: CS_ASSERT(0 && "Invalid command number.");
1272
1.49k
  case 0:
1273
    // PseudoLA, PseudoLI, PseudoLLA, AUIPC, C_BEQZ, C_BNEZ, C_LI, C_LUI, C_M...
1274
1.49k
    return;
1275
0
    break;
1276
12.9k
  case 1:
1277
    // ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT, BLTU, BNE, C_A...
1278
12.9k
    SStream_concat0(O, ", ");
1279
12.9k
    break;
1280
248
  case 2:
1281
    // AMOADD_D, AMOADD_D_AQ, AMOADD_D_AQ_RL, AMOADD_D_RL, AMOADD_W, AMOADD_W...
1282
248
    SStream_concat0(O, ", (");
1283
248
    printOperand(MI, 1, O);
1284
248
    SStream_concat0(O, ")");
1285
248
    return;
1286
0
    break;
1287
1.01k
  case 3:
1288
    // C_FLD, C_FLDSP, C_FLW, C_FLWSP, C_FSD, C_FSDSP, C_FSW, C_FSWSP, C_LD, ...
1289
1.01k
    SStream_concat0(O, "(");
1290
1.01k
    printOperand(MI, 1, O);
1291
1.01k
    SStream_concat0(O, ")");
1292
1.01k
    return;
1293
0
    break;
1294
15.6k
  }
1295
1296
1297
  // Fragment 4 encoded into 1 bits for 2 unique commands.
1298
12.9k
  if ((Bits >> 20) & 1) {
1299
    // FCVT_D_L, FCVT_D_LU, FCVT_LU_D, FCVT_LU_S, FCVT_L_D, FCVT_L_S, FCVT_S_...
1300
5.19k
    printFRMArg(MI, 2, O);
1301
5.19k
    return;
1302
7.71k
  } else {
1303
    // ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT, BLTU, BNE, C_A...
1304
7.71k
    printOperand(MI, 2, O);
1305
7.71k
  }
1306
1307
1308
  // Fragment 5 encoded into 1 bits for 2 unique commands.
1309
7.71k
  if ((Bits >> 21) & 1) {
1310
    // FADD_D, FADD_S, FDIV_D, FDIV_S, FMADD_D, FMADD_S, FMSUB_D, FMSUB_S, FM...
1311
3.08k
    SStream_concat0(O, ", ");
1312
4.63k
  } else {
1313
    // ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT, BLTU, BNE, C_A...
1314
4.63k
    return;
1315
4.63k
  }
1316
1317
1318
  // Fragment 6 encoded into 1 bits for 2 unique commands.
1319
3.08k
  if ((Bits >> 22) & 1) {
1320
    // FMADD_D, FMADD_S, FMSUB_D, FMSUB_S, FNMADD_D, FNMADD_S, FNMSUB_D, FNMS...
1321
1.63k
    printOperand(MI, 3, O);
1322
1.63k
    SStream_concat0(O, ", ");
1323
1.63k
    printFRMArg(MI, 4, O);
1324
1.63k
    return;
1325
1.63k
  } else {
1326
    // FADD_D, FADD_S, FDIV_D, FDIV_S, FMUL_D, FMUL_S, FSUB_D, FSUB_S
1327
1.44k
    printFRMArg(MI, 3, O);
1328
1.44k
    return;
1329
1.44k
  }
1330
1331
3.08k
}
1332
1333
1334
/// getRegisterName - This method is automatically generated by tblgen
1335
/// from the register set description.  This returns the assembler name
1336
/// for the specified register.
1337
static const char *
1338
getRegisterName(unsigned RegNo, unsigned AltIdx)
1339
122k
{
1340
122k
  CS_ASSERT(RegNo && RegNo < 97 && "Invalid register number!");
1341
1342
122k
#ifndef CAPSTONE_DIET
1343
122k
  static const char AsmStrsABIRegAltName[] = {
1344
122k
  /* 0 */ 'f', 's', '1', '0', 0,
1345
122k
  /* 5 */ 'f', 't', '1', '0', 0,
1346
122k
  /* 10 */ 'f', 'a', '0', 0,
1347
122k
  /* 14 */ 'f', 's', '0', 0,
1348
122k
  /* 18 */ 'f', 't', '0', 0,
1349
122k
  /* 22 */ 'f', 's', '1', '1', 0,
1350
122k
  /* 27 */ 'f', 't', '1', '1', 0,
1351
122k
  /* 32 */ 'f', 'a', '1', 0,
1352
122k
  /* 36 */ 'f', 's', '1', 0,
1353
122k
  /* 40 */ 'f', 't', '1', 0,
1354
122k
  /* 44 */ 'f', 'a', '2', 0,
1355
122k
  /* 48 */ 'f', 's', '2', 0,
1356
122k
  /* 52 */ 'f', 't', '2', 0,
1357
122k
  /* 56 */ 'f', 'a', '3', 0,
1358
122k
  /* 60 */ 'f', 's', '3', 0,
1359
122k
  /* 64 */ 'f', 't', '3', 0,
1360
122k
  /* 68 */ 'f', 'a', '4', 0,
1361
122k
  /* 72 */ 'f', 's', '4', 0,
1362
122k
  /* 76 */ 'f', 't', '4', 0,
1363
122k
  /* 80 */ 'f', 'a', '5', 0,
1364
122k
  /* 84 */ 'f', 's', '5', 0,
1365
122k
  /* 88 */ 'f', 't', '5', 0,
1366
122k
  /* 92 */ 'f', 'a', '6', 0,
1367
122k
  /* 96 */ 'f', 's', '6', 0,
1368
122k
  /* 100 */ 'f', 't', '6', 0,
1369
122k
  /* 104 */ 'f', 'a', '7', 0,
1370
122k
  /* 108 */ 'f', 's', '7', 0,
1371
122k
  /* 112 */ 'f', 't', '7', 0,
1372
122k
  /* 116 */ 'f', 's', '8', 0,
1373
122k
  /* 120 */ 'f', 't', '8', 0,
1374
122k
  /* 124 */ 'f', 's', '9', 0,
1375
122k
  /* 128 */ 'f', 't', '9', 0,
1376
122k
  /* 132 */ 'r', 'a', 0,
1377
122k
  /* 135 */ 'z', 'e', 'r', 'o', 0,
1378
122k
  /* 140 */ 'g', 'p', 0,
1379
122k
  /* 143 */ 's', 'p', 0,
1380
122k
  /* 146 */ 't', 'p', 0,
1381
122k
  };
1382
1383
122k
  static const uint8_t RegAsmOffsetABIRegAltName[] = {
1384
122k
    135, 132, 143, 140, 146, 19, 41, 53, 15, 37, 11, 33, 45, 57, 
1385
122k
    69, 81, 93, 105, 49, 61, 73, 85, 97, 109, 117, 125, 1, 23, 
1386
122k
    65, 77, 89, 101, 18, 18, 40, 40, 52, 52, 64, 64, 76, 76, 
1387
122k
    88, 88, 100, 100, 112, 112, 14, 14, 36, 36, 10, 10, 32, 32, 
1388
122k
    44, 44, 56, 56, 68, 68, 80, 80, 92, 92, 104, 104, 48, 48, 
1389
122k
    60, 60, 72, 72, 84, 84, 96, 96, 108, 108, 116, 116, 124, 124, 
1390
122k
    0, 0, 22, 22, 120, 120, 128, 128, 5, 5, 27, 27, 
1391
122k
  };
1392
1393
122k
  static const char AsmStrsNoRegAltName[] = {
1394
122k
  /* 0 */ 'f', '1', '0', 0,
1395
122k
  /* 4 */ 'x', '1', '0', 0,
1396
122k
  /* 8 */ 'f', '2', '0', 0,
1397
122k
  /* 12 */ 'x', '2', '0', 0,
1398
122k
  /* 16 */ 'f', '3', '0', 0,
1399
122k
  /* 20 */ 'x', '3', '0', 0,
1400
122k
  /* 24 */ 'f', '0', 0,
1401
122k
  /* 27 */ 'x', '0', 0,
1402
122k
  /* 30 */ 'f', '1', '1', 0,
1403
122k
  /* 34 */ 'x', '1', '1', 0,
1404
122k
  /* 38 */ 'f', '2', '1', 0,
1405
122k
  /* 42 */ 'x', '2', '1', 0,
1406
122k
  /* 46 */ 'f', '3', '1', 0,
1407
122k
  /* 50 */ 'x', '3', '1', 0,
1408
122k
  /* 54 */ 'f', '1', 0,
1409
122k
  /* 57 */ 'x', '1', 0,
1410
122k
  /* 60 */ 'f', '1', '2', 0,
1411
122k
  /* 64 */ 'x', '1', '2', 0,
1412
122k
  /* 68 */ 'f', '2', '2', 0,
1413
122k
  /* 72 */ 'x', '2', '2', 0,
1414
122k
  /* 76 */ 'f', '2', 0,
1415
122k
  /* 79 */ 'x', '2', 0,
1416
122k
  /* 82 */ 'f', '1', '3', 0,
1417
122k
  /* 86 */ 'x', '1', '3', 0,
1418
122k
  /* 90 */ 'f', '2', '3', 0,
1419
122k
  /* 94 */ 'x', '2', '3', 0,
1420
122k
  /* 98 */ 'f', '3', 0,
1421
122k
  /* 101 */ 'x', '3', 0,
1422
122k
  /* 104 */ 'f', '1', '4', 0,
1423
122k
  /* 108 */ 'x', '1', '4', 0,
1424
122k
  /* 112 */ 'f', '2', '4', 0,
1425
122k
  /* 116 */ 'x', '2', '4', 0,
1426
122k
  /* 120 */ 'f', '4', 0,
1427
122k
  /* 123 */ 'x', '4', 0,
1428
122k
  /* 126 */ 'f', '1', '5', 0,
1429
122k
  /* 130 */ 'x', '1', '5', 0,
1430
122k
  /* 134 */ 'f', '2', '5', 0,
1431
122k
  /* 138 */ 'x', '2', '5', 0,
1432
122k
  /* 142 */ 'f', '5', 0,
1433
122k
  /* 145 */ 'x', '5', 0,
1434
122k
  /* 148 */ 'f', '1', '6', 0,
1435
122k
  /* 152 */ 'x', '1', '6', 0,
1436
122k
  /* 156 */ 'f', '2', '6', 0,
1437
122k
  /* 160 */ 'x', '2', '6', 0,
1438
122k
  /* 164 */ 'f', '6', 0,
1439
122k
  /* 167 */ 'x', '6', 0,
1440
122k
  /* 170 */ 'f', '1', '7', 0,
1441
122k
  /* 174 */ 'x', '1', '7', 0,
1442
122k
  /* 178 */ 'f', '2', '7', 0,
1443
122k
  /* 182 */ 'x', '2', '7', 0,
1444
122k
  /* 186 */ 'f', '7', 0,
1445
122k
  /* 189 */ 'x', '7', 0,
1446
122k
  /* 192 */ 'f', '1', '8', 0,
1447
122k
  /* 196 */ 'x', '1', '8', 0,
1448
122k
  /* 200 */ 'f', '2', '8', 0,
1449
122k
  /* 204 */ 'x', '2', '8', 0,
1450
122k
  /* 208 */ 'f', '8', 0,
1451
122k
  /* 211 */ 'x', '8', 0,
1452
122k
  /* 214 */ 'f', '1', '9', 0,
1453
122k
  /* 218 */ 'x', '1', '9', 0,
1454
122k
  /* 222 */ 'f', '2', '9', 0,
1455
122k
  /* 226 */ 'x', '2', '9', 0,
1456
122k
  /* 230 */ 'f', '9', 0,
1457
122k
  /* 233 */ 'x', '9', 0,
1458
122k
  };
1459
1460
122k
  static const uint8_t RegAsmOffsetNoRegAltName[] = {
1461
122k
    27, 57, 79, 101, 123, 145, 167, 189, 211, 233, 4, 34, 64, 86, 
1462
122k
    108, 130, 152, 174, 196, 218, 12, 42, 72, 94, 116, 138, 160, 182, 
1463
122k
    204, 226, 20, 50, 24, 24, 54, 54, 76, 76, 98, 98, 120, 120, 
1464
122k
    142, 142, 164, 164, 186, 186, 208, 208, 230, 230, 0, 0, 30, 30, 
1465
122k
    60, 60, 82, 82, 104, 104, 126, 126, 148, 148, 170, 170, 192, 192, 
1466
122k
    214, 214, 8, 8, 38, 38, 68, 68, 90, 90, 112, 112, 134, 134, 
1467
122k
    156, 156, 178, 178, 200, 200, 222, 222, 16, 16, 46, 46, 
1468
122k
  };
1469
1470
122k
  switch(AltIdx) {
1471
0
  default: CS_ASSERT(0 && "Invalid register alt name index!");
1472
122k
  case RISCV_ABIRegAltName:
1473
122k
    CS_ASSERT(*(AsmStrsABIRegAltName+RegAsmOffsetABIRegAltName[RegNo-1]) &&
1474
122k
           "Invalid alt name index for register!");
1475
122k
    return AsmStrsABIRegAltName+RegAsmOffsetABIRegAltName[RegNo-1];
1476
0
  case RISCV_NoRegAltName:
1477
0
    CS_ASSERT(*(AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1]) &&
1478
0
           "Invalid alt name index for register!");
1479
0
    return AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1];
1480
122k
  }
1481
#else
1482
  return NULL;
1483
#endif
1484
122k
}
1485
1486
#ifdef PRINT_ALIAS_INSTR
1487
#undef PRINT_ALIAS_INSTR
1488
1489
static bool RISCVInstPrinterValidateMCOperand(MCOperand *MCOp,
1490
                  unsigned PredicateIndex);
1491
1492
static bool printAliasInstr(MCInst *MI, SStream * OS, void *info)
1493
165k
{
1494
165k
  MCRegisterInfo *MRI = (MCRegisterInfo *) info;
1495
165k
  const char *AsmString;
1496
165k
  unsigned I = 0;
1497
165k
#define ASMSTRING_CONTAIN_SIZE 64
1498
165k
  unsigned AsmStringLen = 0;
1499
165k
  char tmpString_[ASMSTRING_CONTAIN_SIZE];
1500
165k
  char *tmpString = tmpString_;
1501
165k
  switch (MCInst_getOpcode(MI)) {
1502
16.2k
  default: return false;
1503
1.21k
  case RISCV_ADDI:
1504
1.21k
    if (MCInst_getNumOperands(MI) == 3 &&
1505
1.21k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1506
846
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1507
717
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1508
717
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1509
      // (ADDI X0, X0, 0)
1510
325
      AsmString = "nop";
1511
325
      break;
1512
325
    }
1513
889
    if (MCInst_getNumOperands(MI) == 3 &&
1514
889
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1515
889
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1516
889
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1517
889
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1518
889
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1519
889
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1520
      // (ADDI GPR:$rd, GPR:$rs, 0)
1521
161
      AsmString = "mv $\x01, $\x02";
1522
161
      break;
1523
161
    }
1524
728
    return false;
1525
532
  case RISCV_ADDIW:
1526
532
    if (MCInst_getNumOperands(MI) == 3 &&
1527
532
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1528
532
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1529
532
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1530
532
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1531
532
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1532
532
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1533
      // (ADDIW GPR:$rd, GPR:$rs, 0)
1534
146
      AsmString = "sext.w $\x01, $\x02";
1535
146
      break;
1536
146
    }
1537
386
    return false;
1538
509
  case RISCV_BEQ:
1539
509
    if (MCInst_getNumOperands(MI) == 3 &&
1540
509
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1541
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1542
509
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1543
146
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1544
      // (BEQ GPR:$rs, X0, simm13_lsb0:$offset)
1545
146
      AsmString = "beqz $\x01, $\x03";
1546
146
      break;
1547
146
    }
1548
363
    return false;
1549
800
  case RISCV_BGE:
1550
800
    if (MCInst_getNumOperands(MI) == 3 &&
1551
800
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1552
212
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1553
212
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1554
212
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1555
      // (BGE X0, GPR:$rs, simm13_lsb0:$offset)
1556
212
      AsmString = "blez $\x02, $\x03";
1557
212
      break;
1558
212
    }
1559
588
    if (MCInst_getNumOperands(MI) == 3 &&
1560
588
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1561
588
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1562
588
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1563
241
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1564
      // (BGE GPR:$rs, X0, simm13_lsb0:$offset)
1565
241
      AsmString = "bgez $\x01, $\x03";
1566
241
      break;
1567
241
    }
1568
347
    return false;
1569
746
  case RISCV_BLT:
1570
746
    if (MCInst_getNumOperands(MI) == 3 &&
1571
746
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1572
746
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1573
746
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1574
277
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1575
      // (BLT GPR:$rs, X0, simm13_lsb0:$offset)
1576
277
      AsmString = "bltz $\x01, $\x03";
1577
277
      break;
1578
277
    }
1579
469
    if (MCInst_getNumOperands(MI) == 3 &&
1580
469
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1581
147
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1582
147
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1583
147
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1584
      // (BLT X0, GPR:$rs, simm13_lsb0:$offset)
1585
147
      AsmString = "bgtz $\x02, $\x03";
1586
147
      break;
1587
147
    }
1588
322
    return false;
1589
428
  case RISCV_BNE:
1590
428
    if (MCInst_getNumOperands(MI) == 3 &&
1591
428
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1592
428
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1593
428
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1594
120
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1595
      // (BNE GPR:$rs, X0, simm13_lsb0:$offset)
1596
120
      AsmString = "bnez $\x01, $\x03";
1597
120
      break;
1598
120
    }
1599
308
    return false;
1600
14.0k
  case RISCV_CSRRC:
1601
14.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1602
14.0k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1603
2.17k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1604
2.17k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1605
      // (CSRRC X0, csr_sysreg:$csr, GPR:$rs)
1606
2.17k
      AsmString = "csrc $\xFF\x02\x01, $\x03";
1607
2.17k
      break;
1608
2.17k
    }
1609
11.8k
    return false;
1610
15.1k
  case RISCV_CSRRCI:
1611
15.1k
    if (MCInst_getNumOperands(MI) == 3 &&
1612
15.1k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1613
      // (CSRRCI X0, csr_sysreg:$csr, uimm5:$imm)
1614
1.55k
      AsmString = "csrci $\xFF\x02\x01, $\x03";
1615
1.55k
      break;
1616
1.55k
    }
1617
13.5k
    return false;
1618
24.2k
  case RISCV_CSRRS:
1619
24.2k
    if (MCInst_getNumOperands(MI) == 3 &&
1620
24.2k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1621
24.2k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1622
24.2k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1623
24.2k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1624
476
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1625
      // (CSRRS GPR:$rd, 3, X0)
1626
172
      AsmString = "frcsr $\x01";
1627
172
      break;
1628
172
    }
1629
24.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1630
24.0k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1631
24.0k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1632
24.0k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1633
24.0k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1634
512
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1635
      // (CSRRS GPR:$rd, 2, X0)
1636
91
      AsmString = "frrm $\x01";
1637
91
      break;
1638
91
    }
1639
24.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1640
24.0k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1641
24.0k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1642
24.0k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1643
24.0k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1644
287
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1645
      // (CSRRS GPR:$rd, 1, X0)
1646
26
      AsmString = "frflags $\x01";
1647
26
      break;
1648
26
    }
1649
23.9k
    if (MCInst_getNumOperands(MI) == 3 &&
1650
23.9k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1651
23.9k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1652
23.9k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1653
23.9k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3074 &&
1654
388
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1655
      // (CSRRS GPR:$rd, 3074, X0)
1656
181
      AsmString = "rdinstret $\x01";
1657
181
      break;
1658
181
    }
1659
23.7k
    if (MCInst_getNumOperands(MI) == 3 &&
1660
23.7k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1661
23.7k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1662
23.7k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1663
23.7k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3072 &&
1664
1.46k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1665
      // (CSRRS GPR:$rd, 3072, X0)
1666
671
      AsmString = "rdcycle $\x01";
1667
671
      break;
1668
671
    }
1669
23.1k
    if (MCInst_getNumOperands(MI) == 3 &&
1670
23.1k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1671
23.1k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1672
23.1k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1673
23.1k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3073 &&
1674
1.03k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1675
      // (CSRRS GPR:$rd, 3073, X0)
1676
287
      AsmString = "rdtime $\x01";
1677
287
      break;
1678
287
    }
1679
22.8k
    if (MCInst_getNumOperands(MI) == 3 &&
1680
22.8k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1681
22.8k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1682
22.8k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1683
22.8k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3202 &&
1684
897
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1685
      // (CSRRS GPR:$rd, 3202, X0)
1686
372
      AsmString = "rdinstreth $\x01";
1687
372
      break;
1688
372
    }
1689
22.4k
    if (MCInst_getNumOperands(MI) == 3 &&
1690
22.4k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1691
22.4k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1692
22.4k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1693
22.4k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3200 &&
1694
461
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1695
      // (CSRRS GPR:$rd, 3200, X0)
1696
121
      AsmString = "rdcycleh $\x01";
1697
121
      break;
1698
121
    }
1699
22.3k
    if (MCInst_getNumOperands(MI) == 3 &&
1700
22.3k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1701
22.3k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1702
22.3k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1703
22.3k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3201 &&
1704
359
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1705
      // (CSRRS GPR:$rd, 3201, X0)
1706
141
      AsmString = "rdtimeh $\x01";
1707
141
      break;
1708
141
    }
1709
22.2k
    if (MCInst_getNumOperands(MI) == 3 &&
1710
22.2k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1711
22.2k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1712
22.2k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1713
      // (CSRRS GPR:$rd, csr_sysreg:$csr, X0)
1714
3.33k
      AsmString = "csrr $\x01, $\xFF\x02\x01";
1715
3.33k
      break;
1716
3.33k
    }
1717
18.8k
    if (MCInst_getNumOperands(MI) == 3 &&
1718
18.8k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1719
2.94k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1720
2.94k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1721
      // (CSRRS X0, csr_sysreg:$csr, GPR:$rs)
1722
2.94k
      AsmString = "csrs $\xFF\x02\x01, $\x03";
1723
2.94k
      break;
1724
2.94k
    }
1725
15.9k
    return false;
1726
12.9k
  case RISCV_CSRRSI:
1727
12.9k
    if (MCInst_getNumOperands(MI) == 3 &&
1728
12.9k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1729
      // (CSRRSI X0, csr_sysreg:$csr, uimm5:$imm)
1730
718
      AsmString = "csrsi $\xFF\x02\x01, $\x03";
1731
718
      break;
1732
718
    }
1733
12.2k
    return false;
1734
20.3k
  case RISCV_CSRRW:
1735
20.3k
    if (MCInst_getNumOperands(MI) == 3 &&
1736
20.3k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1737
4.28k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1738
4.28k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1739
1.21k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1740
1.21k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1741
      // (CSRRW X0, 3, GPR:$rs)
1742
1.21k
      AsmString = "fscsr $\x03";
1743
1.21k
      break;
1744
1.21k
    }
1745
19.1k
    if (MCInst_getNumOperands(MI) == 3 &&
1746
19.1k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1747
3.06k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1748
3.06k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1749
408
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1750
408
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1751
      // (CSRRW X0, 2, GPR:$rs)
1752
408
      AsmString = "fsrm $\x03";
1753
408
      break;
1754
408
    }
1755
18.6k
    if (MCInst_getNumOperands(MI) == 3 &&
1756
18.6k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1757
2.65k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1758
2.65k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1759
123
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1760
123
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1761
      // (CSRRW X0, 1, GPR:$rs)
1762
123
      AsmString = "fsflags $\x03";
1763
123
      break;
1764
123
    }
1765
18.5k
    if (MCInst_getNumOperands(MI) == 3 &&
1766
18.5k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1767
2.53k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1768
2.53k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1769
      // (CSRRW X0, csr_sysreg:$csr, GPR:$rs)
1770
2.53k
      AsmString = "csrw $\xFF\x02\x01, $\x03";
1771
2.53k
      break;
1772
2.53k
    }
1773
16.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1774
16.0k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1775
16.0k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1776
16.0k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1777
16.0k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1778
116
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1779
116
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1780
      // (CSRRW GPR:$rd, 3, GPR:$rs)
1781
116
      AsmString = "fscsr $\x01, $\x03";
1782
116
      break;
1783
116
    }
1784
15.9k
    if (MCInst_getNumOperands(MI) == 3 &&
1785
15.9k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1786
15.9k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1787
15.9k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1788
15.9k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1789
546
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1790
546
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1791
      // (CSRRW GPR:$rd, 2, GPR:$rs)
1792
546
      AsmString = "fsrm $\x01, $\x03";
1793
546
      break;
1794
546
    }
1795
15.3k
    if (MCInst_getNumOperands(MI) == 3 &&
1796
15.3k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1797
15.3k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1798
15.3k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1799
15.3k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1800
578
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1801
578
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1802
      // (CSRRW GPR:$rd, 1, GPR:$rs)
1803
578
      AsmString = "fsflags $\x01, $\x03";
1804
578
      break;
1805
578
    }
1806
14.7k
    return false;
1807
11.2k
  case RISCV_CSRRWI:
1808
11.2k
    if (MCInst_getNumOperands(MI) == 3 &&
1809
11.2k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1810
2.76k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1811
2.76k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1812
      // (CSRRWI X0, 2, uimm5:$imm)
1813
285
      AsmString = "fsrmi $\x03";
1814
285
      break;
1815
285
    }
1816
10.9k
    if (MCInst_getNumOperands(MI) == 3 &&
1817
10.9k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1818
2.47k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1819
2.47k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1820
      // (CSRRWI X0, 1, uimm5:$imm)
1821
413
      AsmString = "fsflagsi $\x03";
1822
413
      break;
1823
413
    }
1824
10.5k
    if (MCInst_getNumOperands(MI) == 3 &&
1825
10.5k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1826
      // (CSRRWI X0, csr_sysreg:$csr, uimm5:$imm)
1827
2.06k
      AsmString = "csrwi $\xFF\x02\x01, $\x03";
1828
2.06k
      break;
1829
2.06k
    }
1830
8.46k
    if (MCInst_getNumOperands(MI) == 3 &&
1831
8.46k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1832
8.46k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1833
8.46k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1834
8.46k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1835
      // (CSRRWI GPR:$rd, 2, uimm5:$imm)
1836
462
      AsmString = "fsrmi $\x01, $\x03";
1837
462
      break;
1838
462
    }
1839
7.99k
    if (MCInst_getNumOperands(MI) == 3 &&
1840
7.99k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1841
7.99k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1842
7.99k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1843
7.99k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1844
      // (CSRRWI GPR:$rd, 1, uimm5:$imm)
1845
125
      AsmString = "fsflagsi $\x01, $\x03";
1846
125
      break;
1847
125
    }
1848
7.87k
    return false;
1849
2.26k
  case RISCV_FADD_D:
1850
2.26k
    if (MCInst_getNumOperands(MI) == 4 &&
1851
2.26k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1852
2.26k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1853
2.26k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1854
2.26k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1855
2.26k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1856
2.26k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1857
2.26k
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1858
2.26k
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1859
      // (FADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
1860
1.57k
      AsmString = "fadd.d $\x01, $\x02, $\x03";
1861
1.57k
      break;
1862
1.57k
    }
1863
692
    return false;
1864
1.13k
  case RISCV_FADD_S:
1865
1.13k
    if (MCInst_getNumOperands(MI) == 4 &&
1866
1.13k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1867
1.13k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1868
1.13k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1869
1.13k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1870
1.13k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1871
1.13k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1872
1.13k
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1873
1.13k
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1874
      // (FADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
1875
198
      AsmString = "fadd.s $\x01, $\x02, $\x03";
1876
198
      break;
1877
198
    }
1878
936
    return false;
1879
1.67k
  case RISCV_FCVT_D_L:
1880
1.67k
    if (MCInst_getNumOperands(MI) == 3 &&
1881
1.67k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1882
1.67k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1883
1.67k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1884
1.67k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1885
1.67k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1886
1.67k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1887
      // (FCVT_D_L FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1888
677
      AsmString = "fcvt.d.l $\x01, $\x02";
1889
677
      break;
1890
677
    }
1891
1.00k
    return false;
1892
653
  case RISCV_FCVT_D_LU:
1893
653
    if (MCInst_getNumOperands(MI) == 3 &&
1894
653
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1895
653
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1896
653
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1897
653
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1898
653
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1899
653
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1900
      // (FCVT_D_LU FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1901
390
      AsmString = "fcvt.d.lu $\x01, $\x02";
1902
390
      break;
1903
390
    }
1904
263
    return false;
1905
1.47k
  case RISCV_FCVT_LU_D:
1906
1.47k
    if (MCInst_getNumOperands(MI) == 3 &&
1907
1.47k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1908
1.47k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1909
1.47k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1910
1.47k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1911
1.47k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1912
1.47k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1913
      // (FCVT_LU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1914
832
      AsmString = "fcvt.lu.d $\x01, $\x02";
1915
832
      break;
1916
832
    }
1917
647
    return false;
1918
2.23k
  case RISCV_FCVT_LU_S:
1919
2.23k
    if (MCInst_getNumOperands(MI) == 3 &&
1920
2.23k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1921
2.23k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1922
2.23k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1923
2.23k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1924
2.23k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1925
2.23k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1926
      // (FCVT_LU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1927
1.12k
      AsmString = "fcvt.lu.s $\x01, $\x02";
1928
1.12k
      break;
1929
1.12k
    }
1930
1.10k
    return false;
1931
1.39k
  case RISCV_FCVT_L_D:
1932
1.39k
    if (MCInst_getNumOperands(MI) == 3 &&
1933
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1934
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1935
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1936
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1937
1.39k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1938
1.39k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1939
      // (FCVT_L_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1940
381
      AsmString = "fcvt.l.d $\x01, $\x02";
1941
381
      break;
1942
381
    }
1943
1.01k
    return false;
1944
1.36k
  case RISCV_FCVT_L_S:
1945
1.36k
    if (MCInst_getNumOperands(MI) == 3 &&
1946
1.36k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1947
1.36k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1948
1.36k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1949
1.36k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1950
1.36k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1951
1.36k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1952
      // (FCVT_L_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1953
352
      AsmString = "fcvt.l.s $\x01, $\x02";
1954
352
      break;
1955
352
    }
1956
1.01k
    return false;
1957
1.13k
  case RISCV_FCVT_S_D:
1958
1.13k
    if (MCInst_getNumOperands(MI) == 3 &&
1959
1.13k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1960
1.13k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1961
1.13k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1962
1.13k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1963
1.13k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1964
1.13k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1965
      // (FCVT_S_D FPR32:$rd, FPR64:$rs1, { 1, 1, 1 })
1966
291
      AsmString = "fcvt.s.d $\x01, $\x02";
1967
291
      break;
1968
291
    }
1969
840
    return false;
1970
1.43k
  case RISCV_FCVT_S_L:
1971
1.43k
    if (MCInst_getNumOperands(MI) == 3 &&
1972
1.43k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1973
1.43k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1974
1.43k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1975
1.43k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1976
1.43k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1977
1.43k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1978
      // (FCVT_S_L FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
1979
728
      AsmString = "fcvt.s.l $\x01, $\x02";
1980
728
      break;
1981
728
    }
1982
710
    return false;
1983
651
  case RISCV_FCVT_S_LU:
1984
651
    if (MCInst_getNumOperands(MI) == 3 &&
1985
651
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1986
651
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1987
651
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1988
651
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1989
651
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1990
651
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1991
      // (FCVT_S_LU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
1992
440
      AsmString = "fcvt.s.lu $\x01, $\x02";
1993
440
      break;
1994
440
    }
1995
211
    return false;
1996
537
  case RISCV_FCVT_S_W:
1997
537
    if (MCInst_getNumOperands(MI) == 3 &&
1998
537
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1999
537
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2000
537
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2001
537
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2002
537
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2003
537
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2004
      // (FCVT_S_W FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2005
426
      AsmString = "fcvt.s.w $\x01, $\x02";
2006
426
      break;
2007
426
    }
2008
111
    return false;
2009
509
  case RISCV_FCVT_S_WU:
2010
509
    if (MCInst_getNumOperands(MI) == 3 &&
2011
509
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2012
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2013
509
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2014
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2015
509
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2016
509
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2017
      // (FCVT_S_WU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2018
241
      AsmString = "fcvt.s.wu $\x01, $\x02";
2019
241
      break;
2020
241
    }
2021
268
    return false;
2022
680
  case RISCV_FCVT_WU_D:
2023
680
    if (MCInst_getNumOperands(MI) == 3 &&
2024
680
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2025
680
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2026
680
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2027
680
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2028
680
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2029
680
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2030
      // (FCVT_WU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2031
74
      AsmString = "fcvt.wu.d $\x01, $\x02";
2032
74
      break;
2033
74
    }
2034
606
    return false;
2035
1.50k
  case RISCV_FCVT_WU_S:
2036
1.50k
    if (MCInst_getNumOperands(MI) == 3 &&
2037
1.50k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2038
1.50k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2039
1.50k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2040
1.50k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2041
1.50k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2042
1.50k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2043
      // (FCVT_WU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2044
968
      AsmString = "fcvt.wu.s $\x01, $\x02";
2045
968
      break;
2046
968
    }
2047
532
    return false;
2048
913
  case RISCV_FCVT_W_D:
2049
913
    if (MCInst_getNumOperands(MI) == 3 &&
2050
913
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2051
913
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2052
913
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2053
913
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2054
913
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2055
913
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2056
      // (FCVT_W_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2057
826
      AsmString = "fcvt.w.d $\x01, $\x02";
2058
826
      break;
2059
826
    }
2060
87
    return false;
2061
928
  case RISCV_FCVT_W_S:
2062
928
    if (MCInst_getNumOperands(MI) == 3 &&
2063
928
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2064
928
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2065
928
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2066
928
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2067
928
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2068
928
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2069
      // (FCVT_W_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2070
445
      AsmString = "fcvt.w.s $\x01, $\x02";
2071
445
      break;
2072
445
    }
2073
483
    return false;
2074
343
  case RISCV_FDIV_D:
2075
343
    if (MCInst_getNumOperands(MI) == 4 &&
2076
343
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2077
343
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2078
343
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2079
343
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2080
343
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2081
343
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2082
343
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2083
343
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2084
      // (FDIV_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2085
84
      AsmString = "fdiv.d $\x01, $\x02, $\x03";
2086
84
      break;
2087
84
    }
2088
259
    return false;
2089
1.05k
  case RISCV_FDIV_S:
2090
1.05k
    if (MCInst_getNumOperands(MI) == 4 &&
2091
1.05k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2092
1.05k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2093
1.05k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2094
1.05k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2095
1.05k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2096
1.05k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2097
1.05k
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2098
1.05k
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2099
      // (FDIV_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2100
674
      AsmString = "fdiv.s $\x01, $\x02, $\x03";
2101
674
      break;
2102
674
    }
2103
377
    return false;
2104
957
  case RISCV_FENCE:
2105
957
    if (MCInst_getNumOperands(MI) == 2 &&
2106
957
        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
2107
957
        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
2108
509
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
2109
509
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 15) {
2110
      // (FENCE 15, 15)
2111
77
      AsmString = "fence";
2112
77
      break;
2113
77
    }
2114
880
    return false;
2115
841
  case RISCV_FMADD_D:
2116
841
    if (MCInst_getNumOperands(MI) == 5 &&
2117
841
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2118
841
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2119
841
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2120
841
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2121
841
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2122
841
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2123
841
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2124
841
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2125
841
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2126
841
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2127
      // (FMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2128
212
      AsmString = "fmadd.d $\x01, $\x02, $\x03, $\x04";
2129
212
      break;
2130
212
    }
2131
629
    return false;
2132
730
  case RISCV_FMADD_S:
2133
730
    if (MCInst_getNumOperands(MI) == 5 &&
2134
730
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2135
730
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2136
730
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2137
730
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2138
730
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2139
730
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2140
730
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2141
730
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2142
730
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2143
730
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2144
      // (FMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2145
311
      AsmString = "fmadd.s $\x01, $\x02, $\x03, $\x04";
2146
311
      break;
2147
311
    }
2148
419
    return false;
2149
1.39k
  case RISCV_FMSUB_D:
2150
1.39k
    if (MCInst_getNumOperands(MI) == 5 &&
2151
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2152
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2153
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2154
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2155
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2156
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2157
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2158
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2159
1.39k
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2160
1.39k
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2161
      // (FMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2162
325
      AsmString = "fmsub.d $\x01, $\x02, $\x03, $\x04";
2163
325
      break;
2164
325
    }
2165
1.06k
    return false;
2166
509
  case RISCV_FMSUB_S:
2167
509
    if (MCInst_getNumOperands(MI) == 5 &&
2168
509
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2169
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2170
509
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2171
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2172
509
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2173
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2174
509
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2175
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2176
509
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2177
509
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2178
      // (FMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2179
120
      AsmString = "fmsub.s $\x01, $\x02, $\x03, $\x04";
2180
120
      break;
2181
120
    }
2182
389
    return false;
2183
309
  case RISCV_FMUL_D:
2184
309
    if (MCInst_getNumOperands(MI) == 4 &&
2185
309
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2186
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2187
309
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2188
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2189
309
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2190
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2191
309
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2192
309
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2193
      // (FMUL_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2194
105
      AsmString = "fmul.d $\x01, $\x02, $\x03";
2195
105
      break;
2196
105
    }
2197
204
    return false;
2198
710
  case RISCV_FMUL_S:
2199
710
    if (MCInst_getNumOperands(MI) == 4 &&
2200
710
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2201
710
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2202
710
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2203
710
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2204
710
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2205
710
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2206
710
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2207
710
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2208
      // (FMUL_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2209
415
      AsmString = "fmul.s $\x01, $\x02, $\x03";
2210
415
      break;
2211
415
    }
2212
295
    return false;
2213
204
  case RISCV_FNMADD_D:
2214
204
    if (MCInst_getNumOperands(MI) == 5 &&
2215
204
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2216
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2217
204
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2218
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2219
204
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2220
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2221
204
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2222
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2223
204
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2224
204
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2225
      // (FNMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2226
103
      AsmString = "fnmadd.d $\x01, $\x02, $\x03, $\x04";
2227
103
      break;
2228
103
    }
2229
101
    return false;
2230
1.19k
  case RISCV_FNMADD_S:
2231
1.19k
    if (MCInst_getNumOperands(MI) == 5 &&
2232
1.19k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2233
1.19k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2234
1.19k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2235
1.19k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2236
1.19k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2237
1.19k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2238
1.19k
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2239
1.19k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2240
1.19k
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2241
1.19k
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2242
      // (FNMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2243
525
      AsmString = "fnmadd.s $\x01, $\x02, $\x03, $\x04";
2244
525
      break;
2245
525
    }
2246
671
    return false;
2247
560
  case RISCV_FNMSUB_D:
2248
560
    if (MCInst_getNumOperands(MI) == 5 &&
2249
560
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2250
560
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2251
560
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2252
560
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2253
560
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2254
560
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2255
560
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2256
560
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2257
560
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2258
560
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2259
      // (FNMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2260
272
      AsmString = "fnmsub.d $\x01, $\x02, $\x03, $\x04";
2261
272
      break;
2262
272
    }
2263
288
    return false;
2264
627
  case RISCV_FNMSUB_S:
2265
627
    if (MCInst_getNumOperands(MI) == 5 &&
2266
627
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2267
627
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2268
627
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2269
627
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2270
627
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2271
627
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2272
627
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2273
627
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2274
627
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2275
627
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2276
      // (FNMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2277
213
      AsmString = "fnmsub.s $\x01, $\x02, $\x03, $\x04";
2278
213
      break;
2279
213
    }
2280
414
    return false;
2281
409
  case RISCV_FSGNJN_D:
2282
409
    if (MCInst_getNumOperands(MI) == 3 &&
2283
409
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2284
409
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2285
409
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2286
409
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2287
409
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2288
409
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2289
      // (FSGNJN_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2290
133
      AsmString = "fneg.d $\x01, $\x02";
2291
133
      break;
2292
133
    }
2293
276
    return false;
2294
742
  case RISCV_FSGNJN_S:
2295
742
    if (MCInst_getNumOperands(MI) == 3 &&
2296
742
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2297
742
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2298
742
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2299
742
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2300
742
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2301
742
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2302
      // (FSGNJN_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2303
588
      AsmString = "fneg.s $\x01, $\x02";
2304
588
      break;
2305
588
    }
2306
154
    return false;
2307
197
  case RISCV_FSGNJX_D:
2308
197
    if (MCInst_getNumOperands(MI) == 3 &&
2309
197
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2310
197
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2311
197
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2312
197
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2313
197
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2314
197
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2315
      // (FSGNJX_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2316
90
      AsmString = "fabs.d $\x01, $\x02";
2317
90
      break;
2318
90
    }
2319
107
    return false;
2320
1.86k
  case RISCV_FSGNJX_S:
2321
1.86k
    if (MCInst_getNumOperands(MI) == 3 &&
2322
1.86k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2323
1.86k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2324
1.86k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2325
1.86k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2326
1.86k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2327
1.86k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2328
      // (FSGNJX_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2329
433
      AsmString = "fabs.s $\x01, $\x02";
2330
433
      break;
2331
433
    }
2332
1.43k
    return false;
2333
913
  case RISCV_FSGNJ_D:
2334
913
    if (MCInst_getNumOperands(MI) == 3 &&
2335
913
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2336
913
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2337
913
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2338
913
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2339
913
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2340
913
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2341
      // (FSGNJ_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2342
177
      AsmString = "fmv.d $\x01, $\x02";
2343
177
      break;
2344
177
    }
2345
736
    return false;
2346
2.12k
  case RISCV_FSGNJ_S:
2347
2.12k
    if (MCInst_getNumOperands(MI) == 3 &&
2348
2.12k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2349
2.12k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2350
2.12k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2351
2.12k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2352
2.12k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2353
2.12k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2354
      // (FSGNJ_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2355
1.84k
      AsmString = "fmv.s $\x01, $\x02";
2356
1.84k
      break;
2357
1.84k
    }
2358
285
    return false;
2359
1.71k
  case RISCV_FSQRT_D:
2360
1.71k
    if (MCInst_getNumOperands(MI) == 3 &&
2361
1.71k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2362
1.71k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2363
1.71k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2364
1.71k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2365
1.71k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2366
1.71k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2367
      // (FSQRT_D FPR64:$rd, FPR64:$rs1, { 1, 1, 1 })
2368
918
      AsmString = "fsqrt.d $\x01, $\x02";
2369
918
      break;
2370
918
    }
2371
801
    return false;
2372
1.28k
  case RISCV_FSQRT_S:
2373
1.28k
    if (MCInst_getNumOperands(MI) == 3 &&
2374
1.28k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2375
1.28k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2376
1.28k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2377
1.28k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2378
1.28k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2379
1.28k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2380
      // (FSQRT_S FPR32:$rd, FPR32:$rs1, { 1, 1, 1 })
2381
512
      AsmString = "fsqrt.s $\x01, $\x02";
2382
512
      break;
2383
512
    }
2384
773
    return false;
2385
488
  case RISCV_FSUB_D:
2386
488
    if (MCInst_getNumOperands(MI) == 4 &&
2387
488
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2388
488
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2389
488
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2390
488
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2391
488
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2392
488
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2393
488
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2394
488
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2395
      // (FSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2396
226
      AsmString = "fsub.d $\x01, $\x02, $\x03";
2397
226
      break;
2398
226
    }
2399
262
    return false;
2400
425
  case RISCV_FSUB_S:
2401
425
    if (MCInst_getNumOperands(MI) == 4 &&
2402
425
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2403
425
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2404
425
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2405
425
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2406
425
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2407
425
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2408
425
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2409
425
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2410
      // (FSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2411
309
      AsmString = "fsub.s $\x01, $\x02, $\x03";
2412
309
      break;
2413
309
    }
2414
116
    return false;
2415
1.15k
  case RISCV_JAL:
2416
1.15k
    if (MCInst_getNumOperands(MI) == 2 &&
2417
1.15k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2418
317
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2419
      // (JAL X0, simm21_lsb0_jal:$offset)
2420
317
      AsmString = "j $\x02";
2421
317
      break;
2422
317
    }
2423
833
    if (MCInst_getNumOperands(MI) == 2 &&
2424
833
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2425
131
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2426
      // (JAL X1, simm21_lsb0_jal:$offset)
2427
131
      AsmString = "jal $\x02";
2428
131
      break;
2429
131
    }
2430
702
    return false;
2431
1.58k
  case RISCV_JALR:
2432
1.58k
    if (MCInst_getNumOperands(MI) == 3 &&
2433
1.58k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2434
1.31k
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X1 &&
2435
651
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2436
651
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2437
      // (JALR X0, X1, 0)
2438
368
      AsmString = "ret";
2439
368
      break;
2440
368
    }
2441
1.21k
    if (MCInst_getNumOperands(MI) == 3 &&
2442
1.21k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2443
946
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2444
946
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2445
946
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2446
946
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2447
      // (JALR X0, GPR:$rs, 0)
2448
187
      AsmString = "jr $\x02";
2449
187
      break;
2450
187
    }
2451
1.03k
    if (MCInst_getNumOperands(MI) == 3 &&
2452
1.03k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2453
200
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2454
200
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2455
200
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2456
200
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2457
      // (JALR X1, GPR:$rs, 0)
2458
42
      AsmString = "jalr $\x02";
2459
42
      break;
2460
42
    }
2461
988
    return false;
2462
1.12k
  case RISCV_SFENCE_VMA:
2463
1.12k
    if (MCInst_getNumOperands(MI) == 2 &&
2464
1.12k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2465
800
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2466
      // (SFENCE_VMA X0, X0)
2467
305
      AsmString = "sfence.vma";
2468
305
      break;
2469
305
    }
2470
819
    if (MCInst_getNumOperands(MI) == 2 &&
2471
819
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2472
819
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2473
819
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2474
      // (SFENCE_VMA GPR:$rs, X0)
2475
158
      AsmString = "sfence.vma $\x01";
2476
158
      break;
2477
158
    }
2478
661
    return false;
2479
1.54k
  case RISCV_SLT:
2480
1.54k
    if (MCInst_getNumOperands(MI) == 3 &&
2481
1.54k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2482
1.54k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2483
1.54k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2484
1.54k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2485
1.54k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
2486
      // (SLT GPR:$rd, GPR:$rs, X0)
2487
253
      AsmString = "sltz $\x01, $\x02";
2488
253
      break;
2489
253
    }
2490
1.28k
    if (MCInst_getNumOperands(MI) == 3 &&
2491
1.28k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2492
1.28k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2493
1.28k
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2494
938
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2495
938
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2496
      // (SLT GPR:$rd, X0, GPR:$rs)
2497
938
      AsmString = "sgtz $\x01, $\x03";
2498
938
      break;
2499
938
    }
2500
349
    return false;
2501
296
  case RISCV_SLTIU:
2502
296
    if (MCInst_getNumOperands(MI) == 3 &&
2503
296
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2504
296
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2505
296
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2506
296
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2507
296
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2508
296
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 1) {
2509
      // (SLTIU GPR:$rd, GPR:$rs, 1)
2510
139
      AsmString = "seqz $\x01, $\x02";
2511
139
      break;
2512
139
    }
2513
157
    return false;
2514
205
  case RISCV_SLTU:
2515
205
    if (MCInst_getNumOperands(MI) == 3 &&
2516
205
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2517
205
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2518
205
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2519
152
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2520
152
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2521
      // (SLTU GPR:$rd, X0, GPR:$rs)
2522
152
      AsmString = "snez $\x01, $\x03";
2523
152
      break;
2524
152
    }
2525
53
    return false;
2526
188
  case RISCV_SUB:
2527
188
    if (MCInst_getNumOperands(MI) == 3 &&
2528
188
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2529
188
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2530
188
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2531
101
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2532
101
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2533
      // (SUB GPR:$rd, X0, GPR:$rs)
2534
101
      AsmString = "neg $\x01, $\x03";
2535
101
      break;
2536
101
    }
2537
87
    return false;
2538
114
  case RISCV_SUBW:
2539
114
    if (MCInst_getNumOperands(MI) == 3 &&
2540
114
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2541
114
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2542
114
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2543
70
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2544
70
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2545
      // (SUBW GPR:$rd, X0, GPR:$rs)
2546
70
      AsmString = "negw $\x01, $\x03";
2547
70
      break;
2548
70
    }
2549
44
    return false;
2550
455
  case RISCV_XORI:
2551
455
    if (MCInst_getNumOperands(MI) == 3 &&
2552
455
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2553
455
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2554
455
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2555
455
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2556
455
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2557
455
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == -1) {
2558
      // (XORI GPR:$rd, GPR:$rs, -1)
2559
91
      AsmString = "not $\x01, $\x02";
2560
91
      break;
2561
91
    }
2562
364
    return false;
2563
165k
  }
2564
2565
45.3k
  AsmStringLen = strlen(AsmString);
2566
45.3k
  if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2567
0
    tmpString = cs_strdup(AsmString);
2568
45.3k
  else
2569
45.3k
    tmpString = memcpy(tmpString, AsmString, 1 + AsmStringLen);
2570
2571
304k
  while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
2572
260k
         AsmString[I] != '$' && AsmString[I] != '\0')
2573
259k
    ++I;
2574
45.3k
  tmpString[I] = 0;
2575
45.3k
  SStream_concat0(OS, tmpString);
2576
45.3k
  if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2577
    /* Free the possible cs_strdup() memory. PR#1424. */
2578
0
    cs_mem_free(tmpString);
2579
45.3k
#undef ASMSTRING_CONTAIN_SIZE
2580
2581
45.3k
  if (AsmString[I] != '\0') {
2582
44.2k
    if (AsmString[I] == ' ' || AsmString[I] == '\t') {
2583
44.2k
      SStream_concat0(OS, " ");
2584
44.2k
      ++I;
2585
44.2k
    }
2586
184k
    do {
2587
184k
      if (AsmString[I] == '$') {
2588
90.8k
        ++I;
2589
90.8k
        if (AsmString[I] == (char)0xff) {
2590
15.3k
          ++I;
2591
15.3k
          int OpIdx = AsmString[I++] - 1;
2592
15.3k
          int PrintMethodIdx = AsmString[I++] - 1;
2593
15.3k
          printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
2594
15.3k
        } else
2595
75.5k
          printOperand(MI, (unsigned)(AsmString[I++]) - 1, OS);
2596
93.2k
      } else {
2597
93.2k
        SStream_concat1(OS, AsmString[I++]);
2598
93.2k
      }
2599
184k
    } while (AsmString[I] != '\0');
2600
44.2k
  }
2601
2602
45.3k
  return true;
2603
165k
}
2604
2605
static void printCustomAliasOperand(
2606
         MCInst *MI, unsigned OpIdx,
2607
         unsigned PrintMethodIdx,
2608
15.3k
         SStream *OS) {
2609
15.3k
  switch (PrintMethodIdx) {
2610
0
  default:
2611
0
    CS_ASSERT(0 && "Unknown PrintMethod kind");
2612
0
    break;
2613
15.3k
  case 0:
2614
15.3k
    printCSRSystemRegister(MI, OpIdx, OS);
2615
15.3k
    break;
2616
15.3k
  }
2617
15.3k
}
2618
2619
static bool RISCVInstPrinterValidateMCOperand(MCOperand *MCOp,
2620
1.59k
                  unsigned PredicateIndex) {
2621
  // TODO: need some constant untils operate the MCOperand,
2622
  // but current CAPSTONE does't have.
2623
  // So, We just return true
2624
1.59k
  return true;
2625
2626
#if 0
2627
  switch (PredicateIndex) {
2628
  default:
2629
    llvm_unreachable("Unknown MCOperandPredicate kind");
2630
    break;
2631
  case 1: {
2632
2633
    int64_t Imm;
2634
    if (MCOp.evaluateAsConstantImm(Imm))
2635
      return isShiftedInt<12, 1>(Imm);
2636
    return MCOp.isBareSymbolRef();
2637
  
2638
    }
2639
  case 2: {
2640
2641
    int64_t Imm;
2642
    if (MCOp.evaluateAsConstantImm(Imm))
2643
      return isShiftedInt<20, 1>(Imm);
2644
    return MCOp.isBareSymbolRef();
2645
  
2646
    }
2647
  }
2648
#endif
2649
1.59k
}
2650
2651
#endif // PRINT_ALIAS_INSTR