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
66.2k
{
1504
66.2k
  MCRegisterInfo *MRI = (MCRegisterInfo *) info;
1505
66.2k
  const char *AsmString;
1506
66.2k
  unsigned I = 0;
1507
66.2k
#define ASMSTRING_CONTAIN_SIZE 64
1508
66.2k
  unsigned AsmStringLen = 0;
1509
66.2k
  char tmpString_[ASMSTRING_CONTAIN_SIZE];
1510
66.2k
  char *tmpString = tmpString_;
1511
66.2k
  switch (MCInst_getOpcode(MI)) {
1512
14.3k
  default: return false;
1513
707
  case RISCV_ADDI:
1514
707
    if (MCInst_getNumOperands(MI) == 3 &&
1515
707
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1516
707
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1517
707
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1518
707
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1519
      // (ADDI X0, X0, 0)
1520
323
      AsmString = "nop";
1521
323
      break;
1522
323
    }
1523
384
    if (MCInst_getNumOperands(MI) == 3 &&
1524
384
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1525
384
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1526
384
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1527
384
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1528
384
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1529
384
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1530
      // (ADDI GPR:$rd, GPR:$rs, 0)
1531
77
      AsmString = "mv $\x01, $\x02";
1532
77
      break;
1533
77
    }
1534
307
    return false;
1535
209
  case RISCV_ADDIW:
1536
209
    if (MCInst_getNumOperands(MI) == 3 &&
1537
209
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1538
209
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1539
209
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1540
209
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1541
209
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1542
209
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1543
      // (ADDIW GPR:$rd, GPR:$rs, 0)
1544
106
      AsmString = "sext.w $\x01, $\x02";
1545
106
      break;
1546
106
    }
1547
103
    return false;
1548
63
  case RISCV_BEQ:
1549
63
    if (MCInst_getNumOperands(MI) == 3 &&
1550
63
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1551
63
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1552
63
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1553
63
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1554
      // (BEQ GPR:$rs, X0, simm13_lsb0:$offset)
1555
18
      AsmString = "beqz $\x01, $\x03";
1556
18
      break;
1557
18
    }
1558
45
    return false;
1559
119
  case RISCV_BGE:
1560
119
    if (MCInst_getNumOperands(MI) == 3 &&
1561
119
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1562
119
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1563
119
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1564
119
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1565
      // (BGE X0, GPR:$rs, simm13_lsb0:$offset)
1566
20
      AsmString = "blez $\x02, $\x03";
1567
20
      break;
1568
20
    }
1569
99
    if (MCInst_getNumOperands(MI) == 3 &&
1570
99
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1571
99
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1572
99
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1573
99
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1574
      // (BGE GPR:$rs, X0, simm13_lsb0:$offset)
1575
13
      AsmString = "bgez $\x01, $\x03";
1576
13
      break;
1577
13
    }
1578
86
    return false;
1579
272
  case RISCV_BLT:
1580
272
    if (MCInst_getNumOperands(MI) == 3 &&
1581
272
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1582
272
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1583
272
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1584
272
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1585
      // (BLT GPR:$rs, X0, simm13_lsb0:$offset)
1586
11
      AsmString = "bltz $\x01, $\x03";
1587
11
      break;
1588
11
    }
1589
261
    if (MCInst_getNumOperands(MI) == 3 &&
1590
261
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1591
261
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1592
261
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1593
261
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1594
      // (BLT X0, GPR:$rs, simm13_lsb0:$offset)
1595
124
      AsmString = "bgtz $\x02, $\x03";
1596
124
      break;
1597
124
    }
1598
137
    return false;
1599
214
  case RISCV_BNE:
1600
214
    if (MCInst_getNumOperands(MI) == 3 &&
1601
214
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1602
214
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1603
214
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1604
214
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1605
      // (BNE GPR:$rs, X0, simm13_lsb0:$offset)
1606
71
      AsmString = "bnez $\x01, $\x03";
1607
71
      break;
1608
71
    }
1609
143
    return false;
1610
4.20k
  case RISCV_CSRRC:
1611
4.20k
    if (MCInst_getNumOperands(MI) == 3 &&
1612
4.20k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1613
4.20k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1614
4.20k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1615
      // (CSRRC X0, csr_sysreg:$csr, GPR:$rs)
1616
575
      AsmString = "csrc $\xFF\x02\x01, $\x03";
1617
575
      break;
1618
575
    }
1619
3.62k
    return false;
1620
5.77k
  case RISCV_CSRRCI:
1621
5.77k
    if (MCInst_getNumOperands(MI) == 3 &&
1622
5.77k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1623
      // (CSRRCI X0, csr_sysreg:$csr, uimm5:$imm)
1624
494
      AsmString = "csrci $\xFF\x02\x01, $\x03";
1625
494
      break;
1626
494
    }
1627
5.28k
    return false;
1628
5.92k
  case RISCV_CSRRS:
1629
5.92k
    if (MCInst_getNumOperands(MI) == 3 &&
1630
5.92k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1631
5.92k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1632
5.92k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1633
5.92k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1634
5.92k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1635
      // (CSRRS GPR:$rd, 3, X0)
1636
11
      AsmString = "frcsr $\x01";
1637
11
      break;
1638
11
    }
1639
5.91k
    if (MCInst_getNumOperands(MI) == 3 &&
1640
5.91k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1641
5.91k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1642
5.91k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1643
5.91k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1644
5.91k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1645
      // (CSRRS GPR:$rd, 2, X0)
1646
10
      AsmString = "frrm $\x01";
1647
10
      break;
1648
10
    }
1649
5.90k
    if (MCInst_getNumOperands(MI) == 3 &&
1650
5.90k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1651
5.90k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1652
5.90k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1653
5.90k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1654
5.90k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1655
      // (CSRRS GPR:$rd, 1, X0)
1656
47
      AsmString = "frflags $\x01";
1657
47
      break;
1658
47
    }
1659
5.85k
    if (MCInst_getNumOperands(MI) == 3 &&
1660
5.85k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1661
5.85k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1662
5.85k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1663
5.85k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3074 &&
1664
5.85k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1665
      // (CSRRS GPR:$rd, 3074, X0)
1666
49
      AsmString = "rdinstret $\x01";
1667
49
      break;
1668
49
    }
1669
5.80k
    if (MCInst_getNumOperands(MI) == 3 &&
1670
5.80k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1671
5.80k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1672
5.80k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1673
5.80k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3072 &&
1674
5.80k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1675
      // (CSRRS GPR:$rd, 3072, X0)
1676
417
      AsmString = "rdcycle $\x01";
1677
417
      break;
1678
417
    }
1679
5.38k
    if (MCInst_getNumOperands(MI) == 3 &&
1680
5.38k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1681
5.38k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1682
5.38k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1683
5.38k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3073 &&
1684
5.38k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1685
      // (CSRRS GPR:$rd, 3073, X0)
1686
88
      AsmString = "rdtime $\x01";
1687
88
      break;
1688
88
    }
1689
5.30k
    if (MCInst_getNumOperands(MI) == 3 &&
1690
5.30k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1691
5.30k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1692
5.30k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1693
5.30k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3202 &&
1694
5.30k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1695
      // (CSRRS GPR:$rd, 3202, X0)
1696
15
      AsmString = "rdinstreth $\x01";
1697
15
      break;
1698
15
    }
1699
5.28k
    if (MCInst_getNumOperands(MI) == 3 &&
1700
5.28k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1701
5.28k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1702
5.28k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1703
5.28k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3200 &&
1704
5.28k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1705
      // (CSRRS GPR:$rd, 3200, X0)
1706
10
      AsmString = "rdcycleh $\x01";
1707
10
      break;
1708
10
    }
1709
5.27k
    if (MCInst_getNumOperands(MI) == 3 &&
1710
5.27k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1711
5.27k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1712
5.27k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1713
5.27k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3201 &&
1714
5.27k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1715
      // (CSRRS GPR:$rd, 3201, X0)
1716
125
      AsmString = "rdtimeh $\x01";
1717
125
      break;
1718
125
    }
1719
5.15k
    if (MCInst_getNumOperands(MI) == 3 &&
1720
5.15k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1721
5.15k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1722
5.15k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1723
      // (CSRRS GPR:$rd, csr_sysreg:$csr, X0)
1724
543
      AsmString = "csrr $\x01, $\xFF\x02\x01";
1725
543
      break;
1726
543
    }
1727
4.60k
    if (MCInst_getNumOperands(MI) == 3 &&
1728
4.60k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1729
4.60k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1730
4.60k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1731
      // (CSRRS X0, csr_sysreg:$csr, GPR:$rs)
1732
387
      AsmString = "csrs $\xFF\x02\x01, $\x03";
1733
387
      break;
1734
387
    }
1735
4.22k
    return false;
1736
6.46k
  case RISCV_CSRRSI:
1737
6.46k
    if (MCInst_getNumOperands(MI) == 3 &&
1738
6.46k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1739
      // (CSRRSI X0, csr_sysreg:$csr, uimm5:$imm)
1740
177
      AsmString = "csrsi $\xFF\x02\x01, $\x03";
1741
177
      break;
1742
177
    }
1743
6.28k
    return false;
1744
6.22k
  case RISCV_CSRRW:
1745
6.22k
    if (MCInst_getNumOperands(MI) == 3 &&
1746
6.22k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1747
6.22k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1748
6.22k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1749
6.22k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1750
6.22k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1751
      // (CSRRW X0, 3, GPR:$rs)
1752
920
      AsmString = "fscsr $\x03";
1753
920
      break;
1754
920
    }
1755
5.30k
    if (MCInst_getNumOperands(MI) == 3 &&
1756
5.30k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1757
5.30k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1758
5.30k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1759
5.30k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1760
5.30k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1761
      // (CSRRW X0, 2, GPR:$rs)
1762
34
      AsmString = "fsrm $\x03";
1763
34
      break;
1764
34
    }
1765
5.27k
    if (MCInst_getNumOperands(MI) == 3 &&
1766
5.27k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1767
5.27k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1768
5.27k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1769
5.27k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1770
5.27k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1771
      // (CSRRW X0, 1, GPR:$rs)
1772
11
      AsmString = "fsflags $\x03";
1773
11
      break;
1774
11
    }
1775
5.26k
    if (MCInst_getNumOperands(MI) == 3 &&
1776
5.26k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1777
5.26k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1778
5.26k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1779
      // (CSRRW X0, csr_sysreg:$csr, GPR:$rs)
1780
1.50k
      AsmString = "csrw $\xFF\x02\x01, $\x03";
1781
1.50k
      break;
1782
1.50k
    }
1783
3.75k
    if (MCInst_getNumOperands(MI) == 3 &&
1784
3.75k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1785
3.75k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1786
3.75k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1787
3.75k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1788
3.75k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1789
3.75k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1790
      // (CSRRW GPR:$rd, 3, GPR:$rs)
1791
113
      AsmString = "fscsr $\x01, $\x03";
1792
113
      break;
1793
113
    }
1794
3.64k
    if (MCInst_getNumOperands(MI) == 3 &&
1795
3.64k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1796
3.64k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1797
3.64k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1798
3.64k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1799
3.64k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1800
3.64k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1801
      // (CSRRW GPR:$rd, 2, GPR:$rs)
1802
263
      AsmString = "fsrm $\x01, $\x03";
1803
263
      break;
1804
263
    }
1805
3.37k
    if (MCInst_getNumOperands(MI) == 3 &&
1806
3.37k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1807
3.37k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1808
3.37k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1809
3.37k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1810
3.37k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1811
3.37k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1812
      // (CSRRW GPR:$rd, 1, GPR:$rs)
1813
78
      AsmString = "fsflags $\x01, $\x03";
1814
78
      break;
1815
78
    }
1816
3.30k
    return false;
1817
2.46k
  case RISCV_CSRRWI:
1818
2.46k
    if (MCInst_getNumOperands(MI) == 3 &&
1819
2.46k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1820
2.46k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1821
2.46k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1822
      // (CSRRWI X0, 2, uimm5:$imm)
1823
57
      AsmString = "fsrmi $\x03";
1824
57
      break;
1825
57
    }
1826
2.40k
    if (MCInst_getNumOperands(MI) == 3 &&
1827
2.40k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1828
2.40k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1829
2.40k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1830
      // (CSRRWI X0, 1, uimm5:$imm)
1831
89
      AsmString = "fsflagsi $\x03";
1832
89
      break;
1833
89
    }
1834
2.31k
    if (MCInst_getNumOperands(MI) == 3 &&
1835
2.31k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1836
      // (CSRRWI X0, csr_sysreg:$csr, uimm5:$imm)
1837
489
      AsmString = "csrwi $\xFF\x02\x01, $\x03";
1838
489
      break;
1839
489
    }
1840
1.82k
    if (MCInst_getNumOperands(MI) == 3 &&
1841
1.82k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1842
1.82k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1843
1.82k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1844
1.82k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1845
      // (CSRRWI GPR:$rd, 2, uimm5:$imm)
1846
21
      AsmString = "fsrmi $\x01, $\x03";
1847
21
      break;
1848
21
    }
1849
1.80k
    if (MCInst_getNumOperands(MI) == 3 &&
1850
1.80k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1851
1.80k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1852
1.80k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1853
1.80k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1854
      // (CSRRWI GPR:$rd, 1, uimm5:$imm)
1855
17
      AsmString = "fsflagsi $\x01, $\x03";
1856
17
      break;
1857
17
    }
1858
1.78k
    return false;
1859
494
  case RISCV_FADD_D:
1860
494
    if (MCInst_getNumOperands(MI) == 4 &&
1861
494
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1862
494
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1863
494
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1864
494
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1865
494
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1866
494
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1867
494
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1868
494
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1869
      // (FADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
1870
351
      AsmString = "fadd.d $\x01, $\x02, $\x03";
1871
351
      break;
1872
351
    }
1873
143
    return false;
1874
784
  case RISCV_FADD_S:
1875
784
    if (MCInst_getNumOperands(MI) == 4 &&
1876
784
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1877
784
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1878
784
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1879
784
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1880
784
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1881
784
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1882
784
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1883
784
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1884
      // (FADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
1885
185
      AsmString = "fadd.s $\x01, $\x02, $\x03";
1886
185
      break;
1887
185
    }
1888
599
    return false;
1889
1.44k
  case RISCV_FCVT_D_L:
1890
1.44k
    if (MCInst_getNumOperands(MI) == 3 &&
1891
1.44k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1892
1.44k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1893
1.44k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1894
1.44k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1895
1.44k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1896
1.44k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1897
      // (FCVT_D_L FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1898
759
      AsmString = "fcvt.d.l $\x01, $\x02";
1899
759
      break;
1900
759
    }
1901
683
    return false;
1902
551
  case RISCV_FCVT_D_LU:
1903
551
    if (MCInst_getNumOperands(MI) == 3 &&
1904
551
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1905
551
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1906
551
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1907
551
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1908
551
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1909
551
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1910
      // (FCVT_D_LU FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1911
23
      AsmString = "fcvt.d.lu $\x01, $\x02";
1912
23
      break;
1913
23
    }
1914
528
    return false;
1915
74
  case RISCV_FCVT_LU_D:
1916
74
    if (MCInst_getNumOperands(MI) == 3 &&
1917
74
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1918
74
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1919
74
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1920
74
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1921
74
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1922
74
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1923
      // (FCVT_LU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1924
26
      AsmString = "fcvt.lu.d $\x01, $\x02";
1925
26
      break;
1926
26
    }
1927
48
    return false;
1928
706
  case RISCV_FCVT_LU_S:
1929
706
    if (MCInst_getNumOperands(MI) == 3 &&
1930
706
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1931
706
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1932
706
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1933
706
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1934
706
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1935
706
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1936
      // (FCVT_LU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1937
301
      AsmString = "fcvt.lu.s $\x01, $\x02";
1938
301
      break;
1939
301
    }
1940
405
    return false;
1941
361
  case RISCV_FCVT_L_D:
1942
361
    if (MCInst_getNumOperands(MI) == 3 &&
1943
361
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1944
361
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1945
361
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1946
361
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1947
361
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1948
361
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1949
      // (FCVT_L_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1950
97
      AsmString = "fcvt.l.d $\x01, $\x02";
1951
97
      break;
1952
97
    }
1953
264
    return false;
1954
706
  case RISCV_FCVT_L_S:
1955
706
    if (MCInst_getNumOperands(MI) == 3 &&
1956
706
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1957
706
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1958
706
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1959
706
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1960
706
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1961
706
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1962
      // (FCVT_L_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1963
224
      AsmString = "fcvt.l.s $\x01, $\x02";
1964
224
      break;
1965
224
    }
1966
482
    return false;
1967
347
  case RISCV_FCVT_S_D:
1968
347
    if (MCInst_getNumOperands(MI) == 3 &&
1969
347
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1970
347
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1971
347
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1972
347
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1973
347
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1974
347
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1975
      // (FCVT_S_D FPR32:$rd, FPR64:$rs1, { 1, 1, 1 })
1976
20
      AsmString = "fcvt.s.d $\x01, $\x02";
1977
20
      break;
1978
20
    }
1979
327
    return false;
1980
397
  case RISCV_FCVT_S_L:
1981
397
    if (MCInst_getNumOperands(MI) == 3 &&
1982
397
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1983
397
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1984
397
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1985
397
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1986
397
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1987
397
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1988
      // (FCVT_S_L FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
1989
223
      AsmString = "fcvt.s.l $\x01, $\x02";
1990
223
      break;
1991
223
    }
1992
174
    return false;
1993
56
  case RISCV_FCVT_S_LU:
1994
56
    if (MCInst_getNumOperands(MI) == 3 &&
1995
56
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1996
56
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1997
56
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1998
56
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1999
56
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2000
56
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2001
      // (FCVT_S_LU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2002
38
      AsmString = "fcvt.s.lu $\x01, $\x02";
2003
38
      break;
2004
38
    }
2005
18
    return false;
2006
1.49k
  case RISCV_FCVT_S_W:
2007
1.49k
    if (MCInst_getNumOperands(MI) == 3 &&
2008
1.49k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2009
1.49k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2010
1.49k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2011
1.49k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2012
1.49k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2013
1.49k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2014
      // (FCVT_S_W FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2015
1.04k
      AsmString = "fcvt.s.w $\x01, $\x02";
2016
1.04k
      break;
2017
1.04k
    }
2018
452
    return false;
2019
145
  case RISCV_FCVT_S_WU:
2020
145
    if (MCInst_getNumOperands(MI) == 3 &&
2021
145
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2022
145
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2023
145
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2024
145
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2025
145
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2026
145
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2027
      // (FCVT_S_WU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2028
127
      AsmString = "fcvt.s.wu $\x01, $\x02";
2029
127
      break;
2030
127
    }
2031
18
    return false;
2032
145
  case RISCV_FCVT_WU_D:
2033
145
    if (MCInst_getNumOperands(MI) == 3 &&
2034
145
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2035
145
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2036
145
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2037
145
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2038
145
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2039
145
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2040
      // (FCVT_WU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2041
23
      AsmString = "fcvt.wu.d $\x01, $\x02";
2042
23
      break;
2043
23
    }
2044
122
    return false;
2045
309
  case RISCV_FCVT_WU_S:
2046
309
    if (MCInst_getNumOperands(MI) == 3 &&
2047
309
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2048
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2049
309
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2050
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2051
309
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2052
309
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2053
      // (FCVT_WU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2054
17
      AsmString = "fcvt.wu.s $\x01, $\x02";
2055
17
      break;
2056
17
    }
2057
292
    return false;
2058
143
  case RISCV_FCVT_W_D:
2059
143
    if (MCInst_getNumOperands(MI) == 3 &&
2060
143
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2061
143
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2062
143
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2063
143
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2064
143
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2065
143
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2066
      // (FCVT_W_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2067
85
      AsmString = "fcvt.w.d $\x01, $\x02";
2068
85
      break;
2069
85
    }
2070
58
    return false;
2071
288
  case RISCV_FCVT_W_S:
2072
288
    if (MCInst_getNumOperands(MI) == 3 &&
2073
288
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2074
288
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2075
288
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2076
288
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2077
288
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2078
288
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2079
      // (FCVT_W_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2080
205
      AsmString = "fcvt.w.s $\x01, $\x02";
2081
205
      break;
2082
205
    }
2083
83
    return false;
2084
563
  case RISCV_FDIV_D:
2085
563
    if (MCInst_getNumOperands(MI) == 4 &&
2086
563
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2087
563
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2088
563
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2089
563
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2090
563
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2091
563
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2092
563
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2093
563
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2094
      // (FDIV_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2095
36
      AsmString = "fdiv.d $\x01, $\x02, $\x03";
2096
36
      break;
2097
36
    }
2098
527
    return false;
2099
140
  case RISCV_FDIV_S:
2100
140
    if (MCInst_getNumOperands(MI) == 4 &&
2101
140
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2102
140
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2103
140
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2104
140
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2105
140
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2106
140
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2107
140
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2108
140
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2109
      // (FDIV_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2110
70
      AsmString = "fdiv.s $\x01, $\x02, $\x03";
2111
70
      break;
2112
70
    }
2113
70
    return false;
2114
780
  case RISCV_FENCE:
2115
780
    if (MCInst_getNumOperands(MI) == 2 &&
2116
780
        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
2117
780
        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
2118
780
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
2119
780
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 15) {
2120
      // (FENCE 15, 15)
2121
42
      AsmString = "fence";
2122
42
      break;
2123
42
    }
2124
738
    return false;
2125
420
  case RISCV_FMADD_D:
2126
420
    if (MCInst_getNumOperands(MI) == 5 &&
2127
420
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2128
420
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2129
420
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2130
420
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2131
420
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2132
420
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2133
420
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2134
420
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2135
420
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2136
420
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2137
      // (FMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2138
72
      AsmString = "fmadd.d $\x01, $\x02, $\x03, $\x04";
2139
72
      break;
2140
72
    }
2141
348
    return false;
2142
206
  case RISCV_FMADD_S:
2143
206
    if (MCInst_getNumOperands(MI) == 5 &&
2144
206
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2145
206
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2146
206
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2147
206
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2148
206
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2149
206
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2150
206
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2151
206
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2152
206
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2153
206
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2154
      // (FMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2155
131
      AsmString = "fmadd.s $\x01, $\x02, $\x03, $\x04";
2156
131
      break;
2157
131
    }
2158
75
    return false;
2159
249
  case RISCV_FMSUB_D:
2160
249
    if (MCInst_getNumOperands(MI) == 5 &&
2161
249
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2162
249
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2163
249
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2164
249
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2165
249
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2166
249
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2167
249
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2168
249
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2169
249
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2170
249
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2171
      // (FMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2172
80
      AsmString = "fmsub.d $\x01, $\x02, $\x03, $\x04";
2173
80
      break;
2174
80
    }
2175
169
    return false;
2176
157
  case RISCV_FMSUB_S:
2177
157
    if (MCInst_getNumOperands(MI) == 5 &&
2178
157
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2179
157
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2180
157
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2181
157
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2182
157
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2183
157
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2184
157
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2185
157
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2186
157
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2187
157
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2188
      // (FMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2189
47
      AsmString = "fmsub.s $\x01, $\x02, $\x03, $\x04";
2190
47
      break;
2191
47
    }
2192
110
    return false;
2193
61
  case RISCV_FMUL_D:
2194
61
    if (MCInst_getNumOperands(MI) == 4 &&
2195
61
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2196
61
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2197
61
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2198
61
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2199
61
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2200
61
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2201
61
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2202
61
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2203
      // (FMUL_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2204
12
      AsmString = "fmul.d $\x01, $\x02, $\x03";
2205
12
      break;
2206
12
    }
2207
49
    return false;
2208
243
  case RISCV_FMUL_S:
2209
243
    if (MCInst_getNumOperands(MI) == 4 &&
2210
243
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2211
243
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2212
243
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2213
243
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2214
243
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2215
243
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2216
243
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2217
243
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2218
      // (FMUL_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2219
78
      AsmString = "fmul.s $\x01, $\x02, $\x03";
2220
78
      break;
2221
78
    }
2222
165
    return false;
2223
110
  case RISCV_FNMADD_D:
2224
110
    if (MCInst_getNumOperands(MI) == 5 &&
2225
110
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2226
110
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2227
110
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2228
110
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2229
110
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2230
110
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2231
110
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2232
110
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2233
110
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2234
110
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2235
      // (FNMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2236
39
      AsmString = "fnmadd.d $\x01, $\x02, $\x03, $\x04";
2237
39
      break;
2238
39
    }
2239
71
    return false;
2240
185
  case RISCV_FNMADD_S:
2241
185
    if (MCInst_getNumOperands(MI) == 5 &&
2242
185
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2243
185
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2244
185
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2245
185
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2246
185
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2247
185
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2248
185
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2249
185
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2250
185
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2251
185
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2252
      // (FNMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2253
98
      AsmString = "fnmadd.s $\x01, $\x02, $\x03, $\x04";
2254
98
      break;
2255
98
    }
2256
87
    return false;
2257
309
  case RISCV_FNMSUB_D:
2258
309
    if (MCInst_getNumOperands(MI) == 5 &&
2259
309
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2260
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2261
309
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2262
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2263
309
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2264
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2265
309
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2266
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2267
309
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2268
309
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2269
      // (FNMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2270
34
      AsmString = "fnmsub.d $\x01, $\x02, $\x03, $\x04";
2271
34
      break;
2272
34
    }
2273
275
    return false;
2274
383
  case RISCV_FNMSUB_S:
2275
383
    if (MCInst_getNumOperands(MI) == 5 &&
2276
383
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2277
383
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2278
383
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2279
383
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2280
383
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2281
383
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2282
383
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2283
383
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2284
383
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2285
383
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2286
      // (FNMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2287
119
      AsmString = "fnmsub.s $\x01, $\x02, $\x03, $\x04";
2288
119
      break;
2289
119
    }
2290
264
    return false;
2291
1.56k
  case RISCV_FSGNJN_D:
2292
1.56k
    if (MCInst_getNumOperands(MI) == 3 &&
2293
1.56k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2294
1.56k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2295
1.56k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2296
1.56k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2297
1.56k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2298
1.56k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2299
      // (FSGNJN_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2300
38
      AsmString = "fneg.d $\x01, $\x02";
2301
38
      break;
2302
38
    }
2303
1.52k
    return false;
2304
39
  case RISCV_FSGNJN_S:
2305
39
    if (MCInst_getNumOperands(MI) == 3 &&
2306
39
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2307
39
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2308
39
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2309
39
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2310
39
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2311
39
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2312
      // (FSGNJN_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2313
24
      AsmString = "fneg.s $\x01, $\x02";
2314
24
      break;
2315
24
    }
2316
15
    return false;
2317
62
  case RISCV_FSGNJX_D:
2318
62
    if (MCInst_getNumOperands(MI) == 3 &&
2319
62
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2320
62
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2321
62
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2322
62
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2323
62
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2324
62
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2325
      // (FSGNJX_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2326
45
      AsmString = "fabs.d $\x01, $\x02";
2327
45
      break;
2328
45
    }
2329
17
    return false;
2330
620
  case RISCV_FSGNJX_S:
2331
620
    if (MCInst_getNumOperands(MI) == 3 &&
2332
620
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2333
620
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2334
620
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2335
620
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2336
620
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2337
620
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2338
      // (FSGNJX_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2339
105
      AsmString = "fabs.s $\x01, $\x02";
2340
105
      break;
2341
105
    }
2342
515
    return false;
2343
103
  case RISCV_FSGNJ_D:
2344
103
    if (MCInst_getNumOperands(MI) == 3 &&
2345
103
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2346
103
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2347
103
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2348
103
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2349
103
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2350
103
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2351
      // (FSGNJ_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2352
69
      AsmString = "fmv.d $\x01, $\x02";
2353
69
      break;
2354
69
    }
2355
34
    return false;
2356
1.18k
  case RISCV_FSGNJ_S:
2357
1.18k
    if (MCInst_getNumOperands(MI) == 3 &&
2358
1.18k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2359
1.18k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2360
1.18k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2361
1.18k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2362
1.18k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2363
1.18k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2364
      // (FSGNJ_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2365
1.06k
      AsmString = "fmv.s $\x01, $\x02";
2366
1.06k
      break;
2367
1.06k
    }
2368
125
    return false;
2369
250
  case RISCV_FSQRT_D:
2370
250
    if (MCInst_getNumOperands(MI) == 3 &&
2371
250
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2372
250
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2373
250
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2374
250
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2375
250
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2376
250
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2377
      // (FSQRT_D FPR64:$rd, FPR64:$rs1, { 1, 1, 1 })
2378
103
      AsmString = "fsqrt.d $\x01, $\x02";
2379
103
      break;
2380
103
    }
2381
147
    return false;
2382
121
  case RISCV_FSQRT_S:
2383
121
    if (MCInst_getNumOperands(MI) == 3 &&
2384
121
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2385
121
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2386
121
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2387
121
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2388
121
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2389
121
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2390
      // (FSQRT_S FPR32:$rd, FPR32:$rs1, { 1, 1, 1 })
2391
10
      AsmString = "fsqrt.s $\x01, $\x02";
2392
10
      break;
2393
10
    }
2394
111
    return false;
2395
205
  case RISCV_FSUB_D:
2396
205
    if (MCInst_getNumOperands(MI) == 4 &&
2397
205
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2398
205
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2399
205
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2400
205
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2401
205
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2402
205
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2403
205
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2404
205
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2405
      // (FSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2406
75
      AsmString = "fsub.d $\x01, $\x02, $\x03";
2407
75
      break;
2408
75
    }
2409
130
    return false;
2410
32
  case RISCV_FSUB_S:
2411
32
    if (MCInst_getNumOperands(MI) == 4 &&
2412
32
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2413
32
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2414
32
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2415
32
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2416
32
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2417
32
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2418
32
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2419
32
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2420
      // (FSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2421
10
      AsmString = "fsub.s $\x01, $\x02, $\x03";
2422
10
      break;
2423
10
    }
2424
22
    return false;
2425
935
  case RISCV_JAL:
2426
935
    if (MCInst_getNumOperands(MI) == 2 &&
2427
935
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2428
935
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2429
      // (JAL X0, simm21_lsb0_jal:$offset)
2430
100
      AsmString = "j $\x02";
2431
100
      break;
2432
100
    }
2433
835
    if (MCInst_getNumOperands(MI) == 2 &&
2434
835
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2435
835
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2436
      // (JAL X1, simm21_lsb0_jal:$offset)
2437
104
      AsmString = "jal $\x02";
2438
104
      break;
2439
104
    }
2440
731
    return false;
2441
258
  case RISCV_JALR:
2442
258
    if (MCInst_getNumOperands(MI) == 3 &&
2443
258
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2444
258
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X1 &&
2445
258
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2446
258
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2447
      // (JALR X0, X1, 0)
2448
38
      AsmString = "ret";
2449
38
      break;
2450
38
    }
2451
220
    if (MCInst_getNumOperands(MI) == 3 &&
2452
220
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2453
220
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2454
220
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2455
220
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2456
220
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2457
      // (JALR X0, GPR:$rs, 0)
2458
21
      AsmString = "jr $\x02";
2459
21
      break;
2460
21
    }
2461
199
    if (MCInst_getNumOperands(MI) == 3 &&
2462
199
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2463
199
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2464
199
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2465
199
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2466
199
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2467
      // (JALR X1, GPR:$rs, 0)
2468
18
      AsmString = "jalr $\x02";
2469
18
      break;
2470
18
    }
2471
181
    return false;
2472
1.00k
  case RISCV_SFENCE_VMA:
2473
1.00k
    if (MCInst_getNumOperands(MI) == 2 &&
2474
1.00k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2475
1.00k
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2476
      // (SFENCE_VMA X0, X0)
2477
97
      AsmString = "sfence.vma";
2478
97
      break;
2479
97
    }
2480
904
    if (MCInst_getNumOperands(MI) == 2 &&
2481
904
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2482
904
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2483
904
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2484
      // (SFENCE_VMA GPR:$rs, X0)
2485
496
      AsmString = "sfence.vma $\x01";
2486
496
      break;
2487
496
    }
2488
408
    return false;
2489
236
  case RISCV_SLT:
2490
236
    if (MCInst_getNumOperands(MI) == 3 &&
2491
236
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2492
236
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2493
236
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2494
236
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2495
236
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
2496
      // (SLT GPR:$rd, GPR:$rs, X0)
2497
36
      AsmString = "sltz $\x01, $\x02";
2498
36
      break;
2499
36
    }
2500
200
    if (MCInst_getNumOperands(MI) == 3 &&
2501
200
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2502
200
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2503
200
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2504
200
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2505
200
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2506
      // (SLT GPR:$rd, X0, GPR:$rs)
2507
144
      AsmString = "sgtz $\x01, $\x03";
2508
144
      break;
2509
144
    }
2510
56
    return false;
2511
82
  case RISCV_SLTIU:
2512
82
    if (MCInst_getNumOperands(MI) == 3 &&
2513
82
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2514
82
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2515
82
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2516
82
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2517
82
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2518
82
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 1) {
2519
      // (SLTIU GPR:$rd, GPR:$rs, 1)
2520
36
      AsmString = "seqz $\x01, $\x02";
2521
36
      break;
2522
36
    }
2523
46
    return false;
2524
138
  case RISCV_SLTU:
2525
138
    if (MCInst_getNumOperands(MI) == 3 &&
2526
138
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2527
138
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2528
138
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2529
138
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2530
138
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2531
      // (SLTU GPR:$rd, X0, GPR:$rs)
2532
53
      AsmString = "snez $\x01, $\x03";
2533
53
      break;
2534
53
    }
2535
85
    return false;
2536
28
  case RISCV_SUB:
2537
28
    if (MCInst_getNumOperands(MI) == 3 &&
2538
28
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2539
28
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2540
28
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2541
28
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2542
28
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2543
      // (SUB GPR:$rd, X0, GPR:$rs)
2544
10
      AsmString = "neg $\x01, $\x03";
2545
10
      break;
2546
10
    }
2547
18
    return false;
2548
46
  case RISCV_SUBW:
2549
46
    if (MCInst_getNumOperands(MI) == 3 &&
2550
46
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2551
46
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2552
46
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2553
46
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2554
46
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2555
      // (SUBW GPR:$rd, X0, GPR:$rs)
2556
11
      AsmString = "negw $\x01, $\x03";
2557
11
      break;
2558
11
    }
2559
35
    return false;
2560
122
  case RISCV_XORI:
2561
122
    if (MCInst_getNumOperands(MI) == 3 &&
2562
122
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2563
122
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2564
122
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2565
122
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2566
122
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2567
122
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == -1) {
2568
      // (XORI GPR:$rd, GPR:$rs, -1)
2569
42
      AsmString = "not $\x01, $\x02";
2570
42
      break;
2571
42
    }
2572
80
    return false;
2573
66.2k
  }
2574
2575
14.6k
  AsmStringLen = strlen(AsmString);
2576
14.6k
  if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2577
0
    tmpString = cs_strdup(AsmString);
2578
14.6k
  else
2579
14.6k
    tmpString = memcpy(tmpString, AsmString, 1 + AsmStringLen);
2580
2581
100k
  while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
2582
100k
         AsmString[I] != '$' && AsmString[I] != '\0')
2583
85.8k
    ++I;
2584
14.6k
  tmpString[I] = 0;
2585
14.6k
  SStream_concat0(OS, tmpString);
2586
14.6k
  if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2587
    /* Free the possible cs_strdup() memory. PR#1424. */
2588
0
    cs_mem_free(tmpString);
2589
14.6k
#undef ASMSTRING_CONTAIN_SIZE
2590
2591
14.6k
  if (AsmString[I] != '\0') {
2592
14.1k
    if (AsmString[I] == ' ' || AsmString[I] == '\t') {
2593
14.1k
      SStream_concat0(OS, " ");
2594
14.1k
      ++I;
2595
14.1k
    }
2596
54.9k
    do {
2597
54.9k
      if (AsmString[I] == '$') {
2598
27.7k
        ++I;
2599
27.7k
        if (AsmString[I] == (char)0xff) {
2600
4.17k
          ++I;
2601
4.17k
          int OpIdx = AsmString[I++] - 1;
2602
4.17k
          int PrintMethodIdx = AsmString[I++] - 1;
2603
4.17k
          printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
2604
4.17k
        } else
2605
23.5k
          printOperand(MI, (unsigned)(AsmString[I++]) - 1, OS);
2606
27.7k
      } else {
2607
27.1k
        SStream_concat1(OS, AsmString[I++]);
2608
27.1k
      }
2609
54.9k
    } while (AsmString[I] != '\0');
2610
14.1k
  }
2611
2612
14.6k
  return true;
2613
66.2k
}
2614
2615
static void printCustomAliasOperand(
2616
         MCInst *MI, unsigned OpIdx,
2617
         unsigned PrintMethodIdx,
2618
4.17k
         SStream *OS) {
2619
4.17k
  switch (PrintMethodIdx) {
2620
0
  default:
2621
0
    CS_ASSERT(0 && "Unknown PrintMethod kind");
2622
0
    break;
2623
4.17k
  case 0:
2624
4.17k
    printCSRSystemRegister(MI, OpIdx, OS);
2625
4.17k
    break;
2626
4.17k
  }
2627
4.17k
}
2628
2629
static bool RISCVInstPrinterValidateMCOperand(MCOperand *MCOp,
2630
461
                  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
461
  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
461
}
2660
2661
#endif // PRINT_ALIAS_INSTR