Coverage Report

Created: 2026-05-30 06:22

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