Coverage Report

Created: 2025-08-29 06:29

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