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
175k
{
1494
175k
  MCRegisterInfo *MRI = (MCRegisterInfo *) info;
1495
175k
  const char *AsmString;
1496
175k
  unsigned I = 0;
1497
175k
#define ASMSTRING_CONTAIN_SIZE 64
1498
175k
  unsigned AsmStringLen = 0;
1499
175k
  char tmpString_[ASMSTRING_CONTAIN_SIZE];
1500
175k
  char *tmpString = tmpString_;
1501
175k
  switch (MCInst_getOpcode(MI)) {
1502
19.3k
  default: return false;
1503
1.03k
  case RISCV_ADDI:
1504
1.03k
    if (MCInst_getNumOperands(MI) == 3 &&
1505
1.03k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1506
1.03k
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1507
1.03k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1508
1.03k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1509
      // (ADDI X0, X0, 0)
1510
391
      AsmString = "nop";
1511
391
      break;
1512
391
    }
1513
645
    if (MCInst_getNumOperands(MI) == 3 &&
1514
645
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1515
645
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1516
645
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1517
645
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1518
645
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1519
645
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1520
      // (ADDI GPR:$rd, GPR:$rs, 0)
1521
155
      AsmString = "mv $\x01, $\x02";
1522
155
      break;
1523
155
    }
1524
490
    return false;
1525
630
  case RISCV_ADDIW:
1526
630
    if (MCInst_getNumOperands(MI) == 3 &&
1527
630
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1528
630
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1529
630
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1530
630
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1531
630
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1532
630
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1533
      // (ADDIW GPR:$rd, GPR:$rs, 0)
1534
116
      AsmString = "sext.w $\x01, $\x02";
1535
116
      break;
1536
116
    }
1537
514
    return false;
1538
420
  case RISCV_BEQ:
1539
420
    if (MCInst_getNumOperands(MI) == 3 &&
1540
420
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1541
420
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1542
420
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1543
420
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1544
      // (BEQ GPR:$rs, X0, simm13_lsb0:$offset)
1545
157
      AsmString = "beqz $\x01, $\x03";
1546
157
      break;
1547
157
    }
1548
263
    return false;
1549
550
  case RISCV_BGE:
1550
550
    if (MCInst_getNumOperands(MI) == 3 &&
1551
550
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1552
550
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1553
550
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1554
550
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1555
      // (BGE X0, GPR:$rs, simm13_lsb0:$offset)
1556
87
      AsmString = "blez $\x02, $\x03";
1557
87
      break;
1558
87
    }
1559
463
    if (MCInst_getNumOperands(MI) == 3 &&
1560
463
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1561
463
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1562
463
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1563
463
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1564
      // (BGE GPR:$rs, X0, simm13_lsb0:$offset)
1565
81
      AsmString = "bgez $\x01, $\x03";
1566
81
      break;
1567
81
    }
1568
382
    return false;
1569
437
  case RISCV_BLT:
1570
437
    if (MCInst_getNumOperands(MI) == 3 &&
1571
437
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1572
437
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1573
437
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1574
437
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1575
      // (BLT GPR:$rs, X0, simm13_lsb0:$offset)
1576
77
      AsmString = "bltz $\x01, $\x03";
1577
77
      break;
1578
77
    }
1579
360
    if (MCInst_getNumOperands(MI) == 3 &&
1580
360
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1581
360
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1582
360
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1583
360
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1584
      // (BLT X0, GPR:$rs, simm13_lsb0:$offset)
1585
142
      AsmString = "bgtz $\x02, $\x03";
1586
142
      break;
1587
142
    }
1588
218
    return false;
1589
489
  case RISCV_BNE:
1590
489
    if (MCInst_getNumOperands(MI) == 3 &&
1591
489
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1592
489
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1593
489
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1594
489
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1595
      // (BNE GPR:$rs, X0, simm13_lsb0:$offset)
1596
139
      AsmString = "bnez $\x01, $\x03";
1597
139
      break;
1598
139
    }
1599
350
    return false;
1600
11.8k
  case RISCV_CSRRC:
1601
11.8k
    if (MCInst_getNumOperands(MI) == 3 &&
1602
11.8k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1603
11.8k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1604
11.8k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1605
      // (CSRRC X0, csr_sysreg:$csr, GPR:$rs)
1606
1.18k
      AsmString = "csrc $\xFF\x02\x01, $\x03";
1607
1.18k
      break;
1608
1.18k
    }
1609
10.6k
    return false;
1610
14.9k
  case RISCV_CSRRCI:
1611
14.9k
    if (MCInst_getNumOperands(MI) == 3 &&
1612
14.9k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1613
      // (CSRRCI X0, csr_sysreg:$csr, uimm5:$imm)
1614
1.13k
      AsmString = "csrci $\xFF\x02\x01, $\x03";
1615
1.13k
      break;
1616
1.13k
    }
1617
13.8k
    return false;
1618
26.8k
  case RISCV_CSRRS:
1619
26.8k
    if (MCInst_getNumOperands(MI) == 3 &&
1620
26.8k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1621
26.8k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1622
26.8k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1623
26.8k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1624
26.8k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1625
      // (CSRRS GPR:$rd, 3, X0)
1626
197
      AsmString = "frcsr $\x01";
1627
197
      break;
1628
197
    }
1629
26.6k
    if (MCInst_getNumOperands(MI) == 3 &&
1630
26.6k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1631
26.6k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1632
26.6k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1633
26.6k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1634
26.6k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1635
      // (CSRRS GPR:$rd, 2, X0)
1636
121
      AsmString = "frrm $\x01";
1637
121
      break;
1638
121
    }
1639
26.5k
    if (MCInst_getNumOperands(MI) == 3 &&
1640
26.5k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1641
26.5k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1642
26.5k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1643
26.5k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1644
26.5k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1645
      // (CSRRS GPR:$rd, 1, X0)
1646
117
      AsmString = "frflags $\x01";
1647
117
      break;
1648
117
    }
1649
26.4k
    if (MCInst_getNumOperands(MI) == 3 &&
1650
26.4k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1651
26.4k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1652
26.4k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1653
26.4k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3074 &&
1654
26.4k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1655
      // (CSRRS GPR:$rd, 3074, X0)
1656
1.36k
      AsmString = "rdinstret $\x01";
1657
1.36k
      break;
1658
1.36k
    }
1659
25.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1660
25.0k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1661
25.0k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1662
25.0k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1663
25.0k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3072 &&
1664
25.0k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1665
      // (CSRRS GPR:$rd, 3072, X0)
1666
637
      AsmString = "rdcycle $\x01";
1667
637
      break;
1668
637
    }
1669
24.4k
    if (MCInst_getNumOperands(MI) == 3 &&
1670
24.4k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1671
24.4k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1672
24.4k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1673
24.4k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3073 &&
1674
24.4k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1675
      // (CSRRS GPR:$rd, 3073, X0)
1676
154
      AsmString = "rdtime $\x01";
1677
154
      break;
1678
154
    }
1679
24.2k
    if (MCInst_getNumOperands(MI) == 3 &&
1680
24.2k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1681
24.2k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1682
24.2k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1683
24.2k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3202 &&
1684
24.2k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1685
      // (CSRRS GPR:$rd, 3202, X0)
1686
489
      AsmString = "rdinstreth $\x01";
1687
489
      break;
1688
489
    }
1689
23.7k
    if (MCInst_getNumOperands(MI) == 3 &&
1690
23.7k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1691
23.7k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1692
23.7k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1693
23.7k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3200 &&
1694
23.7k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1695
      // (CSRRS GPR:$rd, 3200, X0)
1696
231
      AsmString = "rdcycleh $\x01";
1697
231
      break;
1698
231
    }
1699
23.5k
    if (MCInst_getNumOperands(MI) == 3 &&
1700
23.5k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1701
23.5k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1702
23.5k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1703
23.5k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3201 &&
1704
23.5k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1705
      // (CSRRS GPR:$rd, 3201, X0)
1706
338
      AsmString = "rdtimeh $\x01";
1707
338
      break;
1708
338
    }
1709
23.2k
    if (MCInst_getNumOperands(MI) == 3 &&
1710
23.2k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1711
23.2k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1712
23.2k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1713
      // (CSRRS GPR:$rd, csr_sysreg:$csr, X0)
1714
3.02k
      AsmString = "csrr $\x01, $\xFF\x02\x01";
1715
3.02k
      break;
1716
3.02k
    }
1717
20.2k
    if (MCInst_getNumOperands(MI) == 3 &&
1718
20.2k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1719
20.2k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1720
20.2k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1721
      // (CSRRS X0, csr_sysreg:$csr, GPR:$rs)
1722
4.21k
      AsmString = "csrs $\xFF\x02\x01, $\x03";
1723
4.21k
      break;
1724
4.21k
    }
1725
15.9k
    return false;
1726
13.0k
  case RISCV_CSRRSI:
1727
13.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1728
13.0k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1729
      // (CSRRSI X0, csr_sysreg:$csr, uimm5:$imm)
1730
452
      AsmString = "csrsi $\xFF\x02\x01, $\x03";
1731
452
      break;
1732
452
    }
1733
12.6k
    return false;
1734
17.6k
  case RISCV_CSRRW:
1735
17.6k
    if (MCInst_getNumOperands(MI) == 3 &&
1736
17.6k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1737
17.6k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1738
17.6k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1739
17.6k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1740
17.6k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1741
      // (CSRRW X0, 3, GPR:$rs)
1742
996
      AsmString = "fscsr $\x03";
1743
996
      break;
1744
996
    }
1745
16.7k
    if (MCInst_getNumOperands(MI) == 3 &&
1746
16.7k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1747
16.7k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1748
16.7k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1749
16.7k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1750
16.7k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1751
      // (CSRRW X0, 2, GPR:$rs)
1752
244
      AsmString = "fsrm $\x03";
1753
244
      break;
1754
244
    }
1755
16.4k
    if (MCInst_getNumOperands(MI) == 3 &&
1756
16.4k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1757
16.4k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1758
16.4k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1759
16.4k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1760
16.4k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1761
      // (CSRRW X0, 1, GPR:$rs)
1762
584
      AsmString = "fsflags $\x03";
1763
584
      break;
1764
584
    }
1765
15.8k
    if (MCInst_getNumOperands(MI) == 3 &&
1766
15.8k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1767
15.8k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1768
15.8k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1769
      // (CSRRW X0, csr_sysreg:$csr, GPR:$rs)
1770
2.90k
      AsmString = "csrw $\xFF\x02\x01, $\x03";
1771
2.90k
      break;
1772
2.90k
    }
1773
12.9k
    if (MCInst_getNumOperands(MI) == 3 &&
1774
12.9k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1775
12.9k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1776
12.9k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1777
12.9k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1778
12.9k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1779
12.9k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1780
      // (CSRRW GPR:$rd, 3, GPR:$rs)
1781
150
      AsmString = "fscsr $\x01, $\x03";
1782
150
      break;
1783
150
    }
1784
12.8k
    if (MCInst_getNumOperands(MI) == 3 &&
1785
12.8k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1786
12.8k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1787
12.8k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1788
12.8k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1789
12.8k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1790
12.8k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1791
      // (CSRRW GPR:$rd, 2, GPR:$rs)
1792
298
      AsmString = "fsrm $\x01, $\x03";
1793
298
      break;
1794
298
    }
1795
12.5k
    if (MCInst_getNumOperands(MI) == 3 &&
1796
12.5k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1797
12.5k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1798
12.5k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1799
12.5k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1800
12.5k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1801
12.5k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1802
      // (CSRRW GPR:$rd, 1, GPR:$rs)
1803
361
      AsmString = "fsflags $\x01, $\x03";
1804
361
      break;
1805
361
    }
1806
12.1k
    return false;
1807
13.3k
  case RISCV_CSRRWI:
1808
13.3k
    if (MCInst_getNumOperands(MI) == 3 &&
1809
13.3k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1810
13.3k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1811
13.3k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1812
      // (CSRRWI X0, 2, uimm5:$imm)
1813
263
      AsmString = "fsrmi $\x03";
1814
263
      break;
1815
263
    }
1816
13.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1817
13.0k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1818
13.0k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1819
13.0k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1820
      // (CSRRWI X0, 1, uimm5:$imm)
1821
558
      AsmString = "fsflagsi $\x03";
1822
558
      break;
1823
558
    }
1824
12.5k
    if (MCInst_getNumOperands(MI) == 3 &&
1825
12.5k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1826
      // (CSRRWI X0, csr_sysreg:$csr, uimm5:$imm)
1827
2.14k
      AsmString = "csrwi $\xFF\x02\x01, $\x03";
1828
2.14k
      break;
1829
2.14k
    }
1830
10.3k
    if (MCInst_getNumOperands(MI) == 3 &&
1831
10.3k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1832
10.3k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1833
10.3k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1834
10.3k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1835
      // (CSRRWI GPR:$rd, 2, uimm5:$imm)
1836
334
      AsmString = "fsrmi $\x01, $\x03";
1837
334
      break;
1838
334
    }
1839
10.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1840
10.0k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1841
10.0k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1842
10.0k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1843
10.0k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1844
      // (CSRRWI GPR:$rd, 1, uimm5:$imm)
1845
1.06k
      AsmString = "fsflagsi $\x01, $\x03";
1846
1.06k
      break;
1847
1.06k
    }
1848
8.97k
    return false;
1849
1.36k
  case RISCV_FADD_D:
1850
1.36k
    if (MCInst_getNumOperands(MI) == 4 &&
1851
1.36k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1852
1.36k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1853
1.36k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1854
1.36k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1855
1.36k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1856
1.36k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1857
1.36k
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1858
1.36k
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1859
      // (FADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
1860
811
      AsmString = "fadd.d $\x01, $\x02, $\x03";
1861
811
      break;
1862
811
    }
1863
557
    return false;
1864
1.99k
  case RISCV_FADD_S:
1865
1.99k
    if (MCInst_getNumOperands(MI) == 4 &&
1866
1.99k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1867
1.99k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1868
1.99k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1869
1.99k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1870
1.99k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1871
1.99k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1872
1.99k
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1873
1.99k
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1874
      // (FADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
1875
568
      AsmString = "fadd.s $\x01, $\x02, $\x03";
1876
568
      break;
1877
568
    }
1878
1.42k
    return false;
1879
2.56k
  case RISCV_FCVT_D_L:
1880
2.56k
    if (MCInst_getNumOperands(MI) == 3 &&
1881
2.56k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1882
2.56k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1883
2.56k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1884
2.56k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1885
2.56k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1886
2.56k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1887
      // (FCVT_D_L FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1888
1.07k
      AsmString = "fcvt.d.l $\x01, $\x02";
1889
1.07k
      break;
1890
1.07k
    }
1891
1.48k
    return false;
1892
1.89k
  case RISCV_FCVT_D_LU:
1893
1.89k
    if (MCInst_getNumOperands(MI) == 3 &&
1894
1.89k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1895
1.89k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1896
1.89k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1897
1.89k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1898
1.89k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1899
1.89k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1900
      // (FCVT_D_LU FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1901
702
      AsmString = "fcvt.d.lu $\x01, $\x02";
1902
702
      break;
1903
702
    }
1904
1.19k
    return false;
1905
786
  case RISCV_FCVT_LU_D:
1906
786
    if (MCInst_getNumOperands(MI) == 3 &&
1907
786
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1908
786
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1909
786
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1910
786
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1911
786
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1912
786
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1913
      // (FCVT_LU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1914
566
      AsmString = "fcvt.lu.d $\x01, $\x02";
1915
566
      break;
1916
566
    }
1917
220
    return false;
1918
1.37k
  case RISCV_FCVT_LU_S:
1919
1.37k
    if (MCInst_getNumOperands(MI) == 3 &&
1920
1.37k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1921
1.37k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1922
1.37k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1923
1.37k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1924
1.37k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1925
1.37k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1926
      // (FCVT_LU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1927
355
      AsmString = "fcvt.lu.s $\x01, $\x02";
1928
355
      break;
1929
355
    }
1930
1.02k
    return false;
1931
890
  case RISCV_FCVT_L_D:
1932
890
    if (MCInst_getNumOperands(MI) == 3 &&
1933
890
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1934
890
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1935
890
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1936
890
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1937
890
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1938
890
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1939
      // (FCVT_L_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1940
237
      AsmString = "fcvt.l.d $\x01, $\x02";
1941
237
      break;
1942
237
    }
1943
653
    return false;
1944
987
  case RISCV_FCVT_L_S:
1945
987
    if (MCInst_getNumOperands(MI) == 3 &&
1946
987
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1947
987
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1948
987
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1949
987
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1950
987
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1951
987
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1952
      // (FCVT_L_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1953
305
      AsmString = "fcvt.l.s $\x01, $\x02";
1954
305
      break;
1955
305
    }
1956
682
    return false;
1957
599
  case RISCV_FCVT_S_D:
1958
599
    if (MCInst_getNumOperands(MI) == 3 &&
1959
599
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1960
599
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1961
599
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1962
599
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1963
599
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1964
599
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1965
      // (FCVT_S_D FPR32:$rd, FPR64:$rs1, { 1, 1, 1 })
1966
64
      AsmString = "fcvt.s.d $\x01, $\x02";
1967
64
      break;
1968
64
    }
1969
535
    return false;
1970
1.74k
  case RISCV_FCVT_S_L:
1971
1.74k
    if (MCInst_getNumOperands(MI) == 3 &&
1972
1.74k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1973
1.74k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1974
1.74k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1975
1.74k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1976
1.74k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1977
1.74k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1978
      // (FCVT_S_L FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
1979
839
      AsmString = "fcvt.s.l $\x01, $\x02";
1980
839
      break;
1981
839
    }
1982
907
    return false;
1983
1.04k
  case RISCV_FCVT_S_LU:
1984
1.04k
    if (MCInst_getNumOperands(MI) == 3 &&
1985
1.04k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1986
1.04k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1987
1.04k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1988
1.04k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1989
1.04k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1990
1.04k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1991
      // (FCVT_S_LU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
1992
875
      AsmString = "fcvt.s.lu $\x01, $\x02";
1993
875
      break;
1994
875
    }
1995
171
    return false;
1996
2.02k
  case RISCV_FCVT_S_W:
1997
2.02k
    if (MCInst_getNumOperands(MI) == 3 &&
1998
2.02k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1999
2.02k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2000
2.02k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2001
2.02k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2002
2.02k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2003
2.02k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2004
      // (FCVT_S_W FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2005
1.47k
      AsmString = "fcvt.s.w $\x01, $\x02";
2006
1.47k
      break;
2007
1.47k
    }
2008
541
    return false;
2009
1.38k
  case RISCV_FCVT_S_WU:
2010
1.38k
    if (MCInst_getNumOperands(MI) == 3 &&
2011
1.38k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2012
1.38k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2013
1.38k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2014
1.38k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2015
1.38k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2016
1.38k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2017
      // (FCVT_S_WU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2018
240
      AsmString = "fcvt.s.wu $\x01, $\x02";
2019
240
      break;
2020
240
    }
2021
1.14k
    return false;
2022
253
  case RISCV_FCVT_WU_D:
2023
253
    if (MCInst_getNumOperands(MI) == 3 &&
2024
253
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2025
253
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2026
253
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2027
253
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2028
253
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2029
253
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2030
      // (FCVT_WU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2031
57
      AsmString = "fcvt.wu.d $\x01, $\x02";
2032
57
      break;
2033
57
    }
2034
196
    return false;
2035
1.72k
  case RISCV_FCVT_WU_S:
2036
1.72k
    if (MCInst_getNumOperands(MI) == 3 &&
2037
1.72k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2038
1.72k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2039
1.72k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2040
1.72k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2041
1.72k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2042
1.72k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2043
      // (FCVT_WU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2044
978
      AsmString = "fcvt.wu.s $\x01, $\x02";
2045
978
      break;
2046
978
    }
2047
747
    return false;
2048
931
  case RISCV_FCVT_W_D:
2049
931
    if (MCInst_getNumOperands(MI) == 3 &&
2050
931
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2051
931
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2052
931
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2053
931
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2054
931
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2055
931
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2056
      // (FCVT_W_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2057
125
      AsmString = "fcvt.w.d $\x01, $\x02";
2058
125
      break;
2059
125
    }
2060
806
    return false;
2061
612
  case RISCV_FCVT_W_S:
2062
612
    if (MCInst_getNumOperands(MI) == 3 &&
2063
612
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2064
612
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2065
612
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2066
612
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2067
612
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2068
612
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2069
      // (FCVT_W_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2070
264
      AsmString = "fcvt.w.s $\x01, $\x02";
2071
264
      break;
2072
264
    }
2073
348
    return false;
2074
940
  case RISCV_FDIV_D:
2075
940
    if (MCInst_getNumOperands(MI) == 4 &&
2076
940
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2077
940
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2078
940
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2079
940
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2080
940
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2081
940
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2082
940
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2083
940
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2084
      // (FDIV_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2085
319
      AsmString = "fdiv.d $\x01, $\x02, $\x03";
2086
319
      break;
2087
319
    }
2088
621
    return false;
2089
2.59k
  case RISCV_FDIV_S:
2090
2.59k
    if (MCInst_getNumOperands(MI) == 4 &&
2091
2.59k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2092
2.59k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2093
2.59k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2094
2.59k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2095
2.59k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2096
2.59k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2097
2.59k
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2098
2.59k
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2099
      // (FDIV_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2100
1.79k
      AsmString = "fdiv.s $\x01, $\x02, $\x03";
2101
1.79k
      break;
2102
1.79k
    }
2103
803
    return false;
2104
2.31k
  case RISCV_FENCE:
2105
2.31k
    if (MCInst_getNumOperands(MI) == 2 &&
2106
2.31k
        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
2107
2.31k
        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
2108
2.31k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
2109
2.31k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 15) {
2110
      // (FENCE 15, 15)
2111
52
      AsmString = "fence";
2112
52
      break;
2113
52
    }
2114
2.26k
    return false;
2115
989
  case RISCV_FMADD_D:
2116
989
    if (MCInst_getNumOperands(MI) == 5 &&
2117
989
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2118
989
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2119
989
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2120
989
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2121
989
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2122
989
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2123
989
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2124
989
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2125
989
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2126
989
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2127
      // (FMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2128
271
      AsmString = "fmadd.d $\x01, $\x02, $\x03, $\x04";
2129
271
      break;
2130
271
    }
2131
718
    return false;
2132
507
  case RISCV_FMADD_S:
2133
507
    if (MCInst_getNumOperands(MI) == 5 &&
2134
507
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2135
507
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2136
507
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2137
507
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2138
507
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2139
507
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2140
507
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2141
507
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2142
507
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2143
507
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2144
      // (FMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2145
226
      AsmString = "fmadd.s $\x01, $\x02, $\x03, $\x04";
2146
226
      break;
2147
226
    }
2148
281
    return false;
2149
506
  case RISCV_FMSUB_D:
2150
506
    if (MCInst_getNumOperands(MI) == 5 &&
2151
506
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2152
506
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2153
506
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2154
506
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2155
506
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2156
506
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2157
506
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2158
506
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2159
506
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2160
506
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2161
      // (FMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2162
168
      AsmString = "fmsub.d $\x01, $\x02, $\x03, $\x04";
2163
168
      break;
2164
168
    }
2165
338
    return false;
2166
798
  case RISCV_FMSUB_S:
2167
798
    if (MCInst_getNumOperands(MI) == 5 &&
2168
798
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2169
798
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2170
798
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2171
798
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2172
798
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2173
798
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2174
798
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2175
798
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2176
798
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2177
798
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2178
      // (FMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2179
359
      AsmString = "fmsub.s $\x01, $\x02, $\x03, $\x04";
2180
359
      break;
2181
359
    }
2182
439
    return false;
2183
175
  case RISCV_FMUL_D:
2184
175
    if (MCInst_getNumOperands(MI) == 4 &&
2185
175
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2186
175
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2187
175
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2188
175
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2189
175
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2190
175
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2191
175
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2192
175
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2193
      // (FMUL_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2194
90
      AsmString = "fmul.d $\x01, $\x02, $\x03";
2195
90
      break;
2196
90
    }
2197
85
    return false;
2198
1.77k
  case RISCV_FMUL_S:
2199
1.77k
    if (MCInst_getNumOperands(MI) == 4 &&
2200
1.77k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2201
1.77k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2202
1.77k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2203
1.77k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2204
1.77k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2205
1.77k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2206
1.77k
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2207
1.77k
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2208
      // (FMUL_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2209
979
      AsmString = "fmul.s $\x01, $\x02, $\x03";
2210
979
      break;
2211
979
    }
2212
794
    return false;
2213
204
  case RISCV_FNMADD_D:
2214
204
    if (MCInst_getNumOperands(MI) == 5 &&
2215
204
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2216
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2217
204
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2218
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2219
204
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2220
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2221
204
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2222
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2223
204
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2224
204
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2225
      // (FNMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2226
58
      AsmString = "fnmadd.d $\x01, $\x02, $\x03, $\x04";
2227
58
      break;
2228
58
    }
2229
146
    return false;
2230
517
  case RISCV_FNMADD_S:
2231
517
    if (MCInst_getNumOperands(MI) == 5 &&
2232
517
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2233
517
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2234
517
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2235
517
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2236
517
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2237
517
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2238
517
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2239
517
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2240
517
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2241
517
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2242
      // (FNMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2243
167
      AsmString = "fnmadd.s $\x01, $\x02, $\x03, $\x04";
2244
167
      break;
2245
167
    }
2246
350
    return false;
2247
980
  case RISCV_FNMSUB_D:
2248
980
    if (MCInst_getNumOperands(MI) == 5 &&
2249
980
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2250
980
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2251
980
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2252
980
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2253
980
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2254
980
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2255
980
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2256
980
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2257
980
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2258
980
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2259
      // (FNMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2260
283
      AsmString = "fnmsub.d $\x01, $\x02, $\x03, $\x04";
2261
283
      break;
2262
283
    }
2263
697
    return false;
2264
847
  case RISCV_FNMSUB_S:
2265
847
    if (MCInst_getNumOperands(MI) == 5 &&
2266
847
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2267
847
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2268
847
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2269
847
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2270
847
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2271
847
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2272
847
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2273
847
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2274
847
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2275
847
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2276
      // (FNMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2277
366
      AsmString = "fnmsub.s $\x01, $\x02, $\x03, $\x04";
2278
366
      break;
2279
366
    }
2280
481
    return false;
2281
2.80k
  case RISCV_FSGNJN_D:
2282
2.80k
    if (MCInst_getNumOperands(MI) == 3 &&
2283
2.80k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2284
2.80k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2285
2.80k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2286
2.80k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2287
2.80k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2288
2.80k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2289
      // (FSGNJN_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2290
145
      AsmString = "fneg.d $\x01, $\x02";
2291
145
      break;
2292
145
    }
2293
2.65k
    return false;
2294
852
  case RISCV_FSGNJN_S:
2295
852
    if (MCInst_getNumOperands(MI) == 3 &&
2296
852
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2297
852
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2298
852
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2299
852
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2300
852
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2301
852
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2302
      // (FSGNJN_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2303
478
      AsmString = "fneg.s $\x01, $\x02";
2304
478
      break;
2305
478
    }
2306
374
    return false;
2307
995
  case RISCV_FSGNJX_D:
2308
995
    if (MCInst_getNumOperands(MI) == 3 &&
2309
995
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2310
995
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2311
995
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2312
995
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2313
995
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2314
995
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2315
      // (FSGNJX_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2316
628
      AsmString = "fabs.d $\x01, $\x02";
2317
628
      break;
2318
628
    }
2319
367
    return false;
2320
1.74k
  case RISCV_FSGNJX_S:
2321
1.74k
    if (MCInst_getNumOperands(MI) == 3 &&
2322
1.74k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2323
1.74k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2324
1.74k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2325
1.74k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2326
1.74k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2327
1.74k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2328
      // (FSGNJX_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2329
406
      AsmString = "fabs.s $\x01, $\x02";
2330
406
      break;
2331
406
    }
2332
1.34k
    return false;
2333
1.09k
  case RISCV_FSGNJ_D:
2334
1.09k
    if (MCInst_getNumOperands(MI) == 3 &&
2335
1.09k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2336
1.09k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2337
1.09k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2338
1.09k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2339
1.09k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2340
1.09k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2341
      // (FSGNJ_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2342
546
      AsmString = "fmv.d $\x01, $\x02";
2343
546
      break;
2344
546
    }
2345
546
    return false;
2346
2.78k
  case RISCV_FSGNJ_S:
2347
2.78k
    if (MCInst_getNumOperands(MI) == 3 &&
2348
2.78k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2349
2.78k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2350
2.78k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2351
2.78k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2352
2.78k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2353
2.78k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2354
      // (FSGNJ_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2355
1.35k
      AsmString = "fmv.s $\x01, $\x02";
2356
1.35k
      break;
2357
1.35k
    }
2358
1.42k
    return false;
2359
377
  case RISCV_FSQRT_D:
2360
377
    if (MCInst_getNumOperands(MI) == 3 &&
2361
377
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2362
377
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2363
377
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2364
377
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2365
377
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2366
377
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2367
      // (FSQRT_D FPR64:$rd, FPR64:$rs1, { 1, 1, 1 })
2368
145
      AsmString = "fsqrt.d $\x01, $\x02";
2369
145
      break;
2370
145
    }
2371
232
    return false;
2372
773
  case RISCV_FSQRT_S:
2373
773
    if (MCInst_getNumOperands(MI) == 3 &&
2374
773
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2375
773
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2376
773
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2377
773
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2378
773
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2379
773
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2380
      // (FSQRT_S FPR32:$rd, FPR32:$rs1, { 1, 1, 1 })
2381
227
      AsmString = "fsqrt.s $\x01, $\x02";
2382
227
      break;
2383
227
    }
2384
546
    return false;
2385
498
  case RISCV_FSUB_D:
2386
498
    if (MCInst_getNumOperands(MI) == 4 &&
2387
498
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2388
498
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2389
498
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2390
498
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2391
498
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2392
498
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2393
498
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2394
498
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2395
      // (FSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2396
207
      AsmString = "fsub.d $\x01, $\x02, $\x03";
2397
207
      break;
2398
207
    }
2399
291
    return false;
2400
182
  case RISCV_FSUB_S:
2401
182
    if (MCInst_getNumOperands(MI) == 4 &&
2402
182
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2403
182
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2404
182
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2405
182
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2406
182
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2407
182
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2408
182
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2409
182
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2410
      // (FSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2411
20
      AsmString = "fsub.s $\x01, $\x02, $\x03";
2412
20
      break;
2413
20
    }
2414
162
    return false;
2415
2.13k
  case RISCV_JAL:
2416
2.13k
    if (MCInst_getNumOperands(MI) == 2 &&
2417
2.13k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2418
2.13k
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2419
      // (JAL X0, simm21_lsb0_jal:$offset)
2420
334
      AsmString = "j $\x02";
2421
334
      break;
2422
334
    }
2423
1.80k
    if (MCInst_getNumOperands(MI) == 2 &&
2424
1.80k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2425
1.80k
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2426
      // (JAL X1, simm21_lsb0_jal:$offset)
2427
328
      AsmString = "jal $\x02";
2428
328
      break;
2429
328
    }
2430
1.47k
    return false;
2431
1.17k
  case RISCV_JALR:
2432
1.17k
    if (MCInst_getNumOperands(MI) == 3 &&
2433
1.17k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2434
1.17k
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X1 &&
2435
1.17k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2436
1.17k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2437
      // (JALR X0, X1, 0)
2438
108
      AsmString = "ret";
2439
108
      break;
2440
108
    }
2441
1.06k
    if (MCInst_getNumOperands(MI) == 3 &&
2442
1.06k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2443
1.06k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2444
1.06k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2445
1.06k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2446
1.06k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2447
      // (JALR X0, GPR:$rs, 0)
2448
139
      AsmString = "jr $\x02";
2449
139
      break;
2450
139
    }
2451
927
    if (MCInst_getNumOperands(MI) == 3 &&
2452
927
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2453
927
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2454
927
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2455
927
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2456
927
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2457
      // (JALR X1, GPR:$rs, 0)
2458
53
      AsmString = "jalr $\x02";
2459
53
      break;
2460
53
    }
2461
874
    return false;
2462
1.12k
  case RISCV_SFENCE_VMA:
2463
1.12k
    if (MCInst_getNumOperands(MI) == 2 &&
2464
1.12k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2465
1.12k
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2466
      // (SFENCE_VMA X0, X0)
2467
117
      AsmString = "sfence.vma";
2468
117
      break;
2469
117
    }
2470
1.00k
    if (MCInst_getNumOperands(MI) == 2 &&
2471
1.00k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2472
1.00k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2473
1.00k
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2474
      // (SFENCE_VMA GPR:$rs, X0)
2475
515
      AsmString = "sfence.vma $\x01";
2476
515
      break;
2477
515
    }
2478
493
    return false;
2479
761
  case RISCV_SLT:
2480
761
    if (MCInst_getNumOperands(MI) == 3 &&
2481
761
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2482
761
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2483
761
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2484
761
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2485
761
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
2486
      // (SLT GPR:$rd, GPR:$rs, X0)
2487
492
      AsmString = "sltz $\x01, $\x02";
2488
492
      break;
2489
492
    }
2490
269
    if (MCInst_getNumOperands(MI) == 3 &&
2491
269
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2492
269
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2493
269
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2494
269
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2495
269
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2496
      // (SLT GPR:$rd, X0, GPR:$rs)
2497
178
      AsmString = "sgtz $\x01, $\x03";
2498
178
      break;
2499
178
    }
2500
91
    return false;
2501
325
  case RISCV_SLTIU:
2502
325
    if (MCInst_getNumOperands(MI) == 3 &&
2503
325
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2504
325
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2505
325
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2506
325
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2507
325
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2508
325
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 1) {
2509
      // (SLTIU GPR:$rd, GPR:$rs, 1)
2510
70
      AsmString = "seqz $\x01, $\x02";
2511
70
      break;
2512
70
    }
2513
255
    return false;
2514
376
  case RISCV_SLTU:
2515
376
    if (MCInst_getNumOperands(MI) == 3 &&
2516
376
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2517
376
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2518
376
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2519
376
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2520
376
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2521
      // (SLTU GPR:$rd, X0, GPR:$rs)
2522
223
      AsmString = "snez $\x01, $\x03";
2523
223
      break;
2524
223
    }
2525
153
    return false;
2526
82
  case RISCV_SUB:
2527
82
    if (MCInst_getNumOperands(MI) == 3 &&
2528
82
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2529
82
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2530
82
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2531
82
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2532
82
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2533
      // (SUB GPR:$rd, X0, GPR:$rs)
2534
44
      AsmString = "neg $\x01, $\x03";
2535
44
      break;
2536
44
    }
2537
38
    return false;
2538
631
  case RISCV_SUBW:
2539
631
    if (MCInst_getNumOperands(MI) == 3 &&
2540
631
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2541
631
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2542
631
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2543
631
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2544
631
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2545
      // (SUBW GPR:$rd, X0, GPR:$rs)
2546
220
      AsmString = "negw $\x01, $\x03";
2547
220
      break;
2548
220
    }
2549
411
    return false;
2550
367
  case RISCV_XORI:
2551
367
    if (MCInst_getNumOperands(MI) == 3 &&
2552
367
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2553
367
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2554
367
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2555
367
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2556
367
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2557
367
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == -1) {
2558
      // (XORI GPR:$rd, GPR:$rs, -1)
2559
76
      AsmString = "not $\x01, $\x02";
2560
76
      break;
2561
76
    }
2562
291
    return false;
2563
175k
  }
2564
2565
46.6k
  AsmStringLen = strlen(AsmString);
2566
46.6k
  if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2567
0
    tmpString = cs_strdup(AsmString);
2568
46.6k
  else
2569
46.6k
    tmpString = memcpy(tmpString, AsmString, 1 + AsmStringLen);
2570
2571
322k
  while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
2572
322k
         AsmString[I] != '$' && AsmString[I] != '\0')
2573
276k
    ++I;
2574
46.6k
  tmpString[I] = 0;
2575
46.6k
  SStream_concat0(OS, tmpString);
2576
46.6k
  if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2577
    /* Free the possible cs_strdup() memory. PR#1424. */
2578
0
    cs_mem_free(tmpString);
2579
46.6k
#undef ASMSTRING_CONTAIN_SIZE
2580
2581
46.6k
  if (AsmString[I] != '\0') {
2582
45.9k
    if (AsmString[I] == ' ' || AsmString[I] == '\t') {
2583
45.9k
      SStream_concat0(OS, " ");
2584
45.9k
      ++I;
2585
45.9k
    }
2586
186k
    do {
2587
186k
      if (AsmString[I] == '$') {
2588
92.8k
        ++I;
2589
92.8k
        if (AsmString[I] == (char)0xff) {
2590
15.0k
          ++I;
2591
15.0k
          int OpIdx = AsmString[I++] - 1;
2592
15.0k
          int PrintMethodIdx = AsmString[I++] - 1;
2593
15.0k
          printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
2594
15.0k
        } else
2595
77.8k
          printOperand(MI, (unsigned)(AsmString[I++]) - 1, OS);
2596
93.7k
      } else {
2597
93.7k
        SStream_concat1(OS, AsmString[I++]);
2598
93.7k
      }
2599
186k
    } while (AsmString[I] != '\0');
2600
45.9k
  }
2601
2602
46.6k
  return true;
2603
175k
}
2604
2605
static void printCustomAliasOperand(
2606
         MCInst *MI, unsigned OpIdx,
2607
         unsigned PrintMethodIdx,
2608
15.0k
         SStream *OS) {
2609
15.0k
  switch (PrintMethodIdx) {
2610
0
  default:
2611
0
    CS_ASSERT(0 && "Unknown PrintMethod kind");
2612
0
    break;
2613
15.0k
  case 0:
2614
15.0k
    printCSRSystemRegister(MI, OpIdx, OS);
2615
15.0k
    break;
2616
15.0k
  }
2617
15.0k
}
2618
2619
static bool RISCVInstPrinterValidateMCOperand(MCOperand *MCOp,
2620
1.34k
                  unsigned PredicateIndex) {
2621
  // TODO: need some constant untils operate the MCOperand,
2622
  // but current CAPSTONE does't have.
2623
  // So, We just return true
2624
1.34k
  return true;
2625
2626
#if 0
2627
  switch (PredicateIndex) {
2628
  default:
2629
    llvm_unreachable("Unknown MCOperandPredicate kind");
2630
    break;
2631
  case 1: {
2632
2633
    int64_t Imm;
2634
    if (MCOp.evaluateAsConstantImm(Imm))
2635
      return isShiftedInt<12, 1>(Imm);
2636
    return MCOp.isBareSymbolRef();
2637
  
2638
    }
2639
  case 2: {
2640
2641
    int64_t Imm;
2642
    if (MCOp.evaluateAsConstantImm(Imm))
2643
      return isShiftedInt<20, 1>(Imm);
2644
    return MCOp.isBareSymbolRef();
2645
  
2646
    }
2647
  }
2648
#endif
2649
1.34k
}
2650
2651
#endif // PRINT_ALIAS_INSTR