Coverage Report

Created: 2025-10-12 06:32

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