Coverage Report

Created: 2025-10-10 06:20

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