Coverage Report

Created: 2025-08-26 06:30

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