Coverage Report

Created: 2026-01-12 07:13

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