Coverage Report

Created: 2026-01-10 06:34

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