Coverage Report

Created: 2026-01-17 06:58

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