Coverage Report

Created: 2026-04-29 06:06

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