Coverage Report

Created: 2025-07-18 06:43

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