Coverage Report

Created: 2025-08-26 06:30

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