Coverage Report

Created: 2025-08-28 06:43

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