Coverage Report

Created: 2025-11-09 07:00

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