Coverage Report

Created: 2024-09-08 06:22

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