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
10.9k
{
1504
10.9k
  MCRegisterInfo *MRI = (MCRegisterInfo *) info;
1505
10.9k
  const char *AsmString;
1506
10.9k
  unsigned I = 0;
1507
10.9k
#define ASMSTRING_CONTAIN_SIZE 64
1508
10.9k
  unsigned AsmStringLen = 0;
1509
10.9k
  char tmpString_[ASMSTRING_CONTAIN_SIZE];
1510
10.9k
  char *tmpString = tmpString_;
1511
10.9k
  switch (MCInst_getOpcode(MI)) {
1512
2.17k
  default: return false;
1513
92
  case RISCV_ADDI:
1514
92
    if (MCInst_getNumOperands(MI) == 3 &&
1515
92
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1516
56
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1517
52
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1518
52
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1519
      // (ADDI X0, X0, 0)
1520
49
      AsmString = "nop";
1521
49
      break;
1522
49
    }
1523
43
    if (MCInst_getNumOperands(MI) == 3 &&
1524
43
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1525
43
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1526
43
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1527
43
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1528
43
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1529
43
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1530
      // (ADDI GPR:$rd, GPR:$rs, 0)
1531
36
      AsmString = "mv $\x01, $\x02";
1532
36
      break;
1533
36
    }
1534
7
    return false;
1535
10
  case RISCV_ADDIW:
1536
10
    if (MCInst_getNumOperands(MI) == 3 &&
1537
10
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1538
10
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1539
10
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1540
10
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1541
10
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1542
10
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1543
      // (ADDIW GPR:$rd, GPR:$rs, 0)
1544
0
      AsmString = "sext.w $\x01, $\x02";
1545
0
      break;
1546
0
    }
1547
10
    return false;
1548
30
  case RISCV_BEQ:
1549
30
    if (MCInst_getNumOperands(MI) == 3 &&
1550
30
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1551
30
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1552
30
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1553
3
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1554
      // (BEQ GPR:$rs, X0, simm13_lsb0:$offset)
1555
3
      AsmString = "beqz $\x01, $\x03";
1556
3
      break;
1557
3
    }
1558
27
    return false;
1559
30
  case RISCV_BGE:
1560
30
    if (MCInst_getNumOperands(MI) == 3 &&
1561
30
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1562
0
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1563
0
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1564
0
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1565
      // (BGE X0, GPR:$rs, simm13_lsb0:$offset)
1566
0
      AsmString = "blez $\x02, $\x03";
1567
0
      break;
1568
0
    }
1569
30
    if (MCInst_getNumOperands(MI) == 3 &&
1570
30
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1571
30
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1572
30
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1573
4
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1574
      // (BGE GPR:$rs, X0, simm13_lsb0:$offset)
1575
4
      AsmString = "bgez $\x01, $\x03";
1576
4
      break;
1577
4
    }
1578
26
    return false;
1579
52
  case RISCV_BLT:
1580
52
    if (MCInst_getNumOperands(MI) == 3 &&
1581
52
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1582
52
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1583
52
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1584
17
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1585
      // (BLT GPR:$rs, X0, simm13_lsb0:$offset)
1586
17
      AsmString = "bltz $\x01, $\x03";
1587
17
      break;
1588
17
    }
1589
35
    if (MCInst_getNumOperands(MI) == 3 &&
1590
35
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1591
32
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1592
32
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1593
32
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1594
      // (BLT X0, GPR:$rs, simm13_lsb0:$offset)
1595
32
      AsmString = "bgtz $\x02, $\x03";
1596
32
      break;
1597
32
    }
1598
3
    return false;
1599
108
  case RISCV_BNE:
1600
108
    if (MCInst_getNumOperands(MI) == 3 &&
1601
108
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1602
108
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1603
108
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1604
39
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1605
      // (BNE GPR:$rs, X0, simm13_lsb0:$offset)
1606
39
      AsmString = "bnez $\x01, $\x03";
1607
39
      break;
1608
39
    }
1609
69
    return false;
1610
587
  case RISCV_CSRRC:
1611
587
    if (MCInst_getNumOperands(MI) == 3 &&
1612
587
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1613
57
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1614
57
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1615
      // (CSRRC X0, csr_sysreg:$csr, GPR:$rs)
1616
57
      AsmString = "csrc $\xFF\x02\x01, $\x03";
1617
57
      break;
1618
57
    }
1619
530
    return false;
1620
740
  case RISCV_CSRRCI:
1621
740
    if (MCInst_getNumOperands(MI) == 3 &&
1622
740
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1623
      // (CSRRCI X0, csr_sysreg:$csr, uimm5:$imm)
1624
63
      AsmString = "csrci $\xFF\x02\x01, $\x03";
1625
63
      break;
1626
63
    }
1627
677
    return false;
1628
2.16k
  case RISCV_CSRRS:
1629
2.16k
    if (MCInst_getNumOperands(MI) == 3 &&
1630
2.16k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1631
2.16k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1632
2.16k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1633
2.16k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1634
53
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1635
      // (CSRRS GPR:$rd, 3, X0)
1636
34
      AsmString = "frcsr $\x01";
1637
34
      break;
1638
34
    }
1639
2.12k
    if (MCInst_getNumOperands(MI) == 3 &&
1640
2.12k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1641
2.12k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1642
2.12k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1643
2.12k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1644
25
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1645
      // (CSRRS GPR:$rd, 2, X0)
1646
1
      AsmString = "frrm $\x01";
1647
1
      break;
1648
1
    }
1649
2.12k
    if (MCInst_getNumOperands(MI) == 3 &&
1650
2.12k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1651
2.12k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1652
2.12k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1653
2.12k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1654
18
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1655
      // (CSRRS GPR:$rd, 1, X0)
1656
17
      AsmString = "frflags $\x01";
1657
17
      break;
1658
17
    }
1659
2.11k
    if (MCInst_getNumOperands(MI) == 3 &&
1660
2.11k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1661
2.11k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1662
2.11k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1663
2.11k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3074 &&
1664
12
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1665
      // (CSRRS GPR:$rd, 3074, X0)
1666
6
      AsmString = "rdinstret $\x01";
1667
6
      break;
1668
6
    }
1669
2.10k
    if (MCInst_getNumOperands(MI) == 3 &&
1670
2.10k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1671
2.10k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1672
2.10k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1673
2.10k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3072 &&
1674
508
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1675
      // (CSRRS GPR:$rd, 3072, X0)
1676
176
      AsmString = "rdcycle $\x01";
1677
176
      break;
1678
176
    }
1679
1.92k
    if (MCInst_getNumOperands(MI) == 3 &&
1680
1.92k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1681
1.92k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1682
1.92k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1683
1.92k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3073 &&
1684
269
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1685
      // (CSRRS GPR:$rd, 3073, X0)
1686
35
      AsmString = "rdtime $\x01";
1687
35
      break;
1688
35
    }
1689
1.89k
    if (MCInst_getNumOperands(MI) == 3 &&
1690
1.89k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1691
1.89k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1692
1.89k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1693
1.89k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3202 &&
1694
22
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1695
      // (CSRRS GPR:$rd, 3202, X0)
1696
0
      AsmString = "rdinstreth $\x01";
1697
0
      break;
1698
0
    }
1699
1.89k
    if (MCInst_getNumOperands(MI) == 3 &&
1700
1.89k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1701
1.89k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1702
1.89k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1703
1.89k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3200 &&
1704
1
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1705
      // (CSRRS GPR:$rd, 3200, X0)
1706
0
      AsmString = "rdcycleh $\x01";
1707
0
      break;
1708
0
    }
1709
1.89k
    if (MCInst_getNumOperands(MI) == 3 &&
1710
1.89k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1711
1.89k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1712
1.89k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1713
1.89k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3201 &&
1714
0
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1715
      // (CSRRS GPR:$rd, 3201, X0)
1716
0
      AsmString = "rdtimeh $\x01";
1717
0
      break;
1718
0
    }
1719
1.89k
    if (MCInst_getNumOperands(MI) == 3 &&
1720
1.89k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1721
1.89k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1722
1.89k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1723
      // (CSRRS GPR:$rd, csr_sysreg:$csr, X0)
1724
108
      AsmString = "csrr $\x01, $\xFF\x02\x01";
1725
108
      break;
1726
108
    }
1727
1.78k
    if (MCInst_getNumOperands(MI) == 3 &&
1728
1.78k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1729
331
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1730
331
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1731
      // (CSRRS X0, csr_sysreg:$csr, GPR:$rs)
1732
331
      AsmString = "csrs $\xFF\x02\x01, $\x03";
1733
331
      break;
1734
331
    }
1735
1.45k
    return false;
1736
1.08k
  case RISCV_CSRRSI:
1737
1.08k
    if (MCInst_getNumOperands(MI) == 3 &&
1738
1.08k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1739
      // (CSRRSI X0, csr_sysreg:$csr, uimm5:$imm)
1740
195
      AsmString = "csrsi $\xFF\x02\x01, $\x03";
1741
195
      break;
1742
195
    }
1743
887
    return false;
1744
777
  case RISCV_CSRRW:
1745
777
    if (MCInst_getNumOperands(MI) == 3 &&
1746
777
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1747
1
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1748
1
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1749
0
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1750
0
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1751
      // (CSRRW X0, 3, GPR:$rs)
1752
0
      AsmString = "fscsr $\x03";
1753
0
      break;
1754
0
    }
1755
777
    if (MCInst_getNumOperands(MI) == 3 &&
1756
777
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1757
1
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1758
1
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1759
0
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1760
0
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1761
      // (CSRRW X0, 2, GPR:$rs)
1762
0
      AsmString = "fsrm $\x03";
1763
0
      break;
1764
0
    }
1765
777
    if (MCInst_getNumOperands(MI) == 3 &&
1766
777
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1767
1
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1768
1
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1769
0
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1770
0
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1771
      // (CSRRW X0, 1, GPR:$rs)
1772
0
      AsmString = "fsflags $\x03";
1773
0
      break;
1774
0
    }
1775
777
    if (MCInst_getNumOperands(MI) == 3 &&
1776
777
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1777
1
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1778
1
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1779
      // (CSRRW X0, csr_sysreg:$csr, GPR:$rs)
1780
1
      AsmString = "csrw $\xFF\x02\x01, $\x03";
1781
1
      break;
1782
1
    }
1783
776
    if (MCInst_getNumOperands(MI) == 3 &&
1784
776
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1785
776
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1786
776
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1787
776
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1788
34
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1789
34
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1790
      // (CSRRW GPR:$rd, 3, GPR:$rs)
1791
34
      AsmString = "fscsr $\x01, $\x03";
1792
34
      break;
1793
34
    }
1794
742
    if (MCInst_getNumOperands(MI) == 3 &&
1795
742
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1796
742
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1797
742
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1798
742
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1799
50
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1800
50
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1801
      // (CSRRW GPR:$rd, 2, GPR:$rs)
1802
50
      AsmString = "fsrm $\x01, $\x03";
1803
50
      break;
1804
50
    }
1805
692
    if (MCInst_getNumOperands(MI) == 3 &&
1806
692
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1807
692
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1808
692
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1809
692
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1810
0
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1811
0
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1812
      // (CSRRW GPR:$rd, 1, GPR:$rs)
1813
0
      AsmString = "fsflags $\x01, $\x03";
1814
0
      break;
1815
0
    }
1816
692
    return false;
1817
806
  case RISCV_CSRRWI:
1818
806
    if (MCInst_getNumOperands(MI) == 3 &&
1819
806
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1820
98
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1821
98
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1822
      // (CSRRWI X0, 2, uimm5:$imm)
1823
3
      AsmString = "fsrmi $\x03";
1824
3
      break;
1825
3
    }
1826
803
    if (MCInst_getNumOperands(MI) == 3 &&
1827
803
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1828
95
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1829
95
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1830
      // (CSRRWI X0, 1, uimm5:$imm)
1831
3
      AsmString = "fsflagsi $\x03";
1832
3
      break;
1833
3
    }
1834
800
    if (MCInst_getNumOperands(MI) == 3 &&
1835
800
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1836
      // (CSRRWI X0, csr_sysreg:$csr, uimm5:$imm)
1837
92
      AsmString = "csrwi $\xFF\x02\x01, $\x03";
1838
92
      break;
1839
92
    }
1840
708
    if (MCInst_getNumOperands(MI) == 3 &&
1841
708
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1842
708
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1843
708
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1844
708
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1845
      // (CSRRWI GPR:$rd, 2, uimm5:$imm)
1846
2
      AsmString = "fsrmi $\x01, $\x03";
1847
2
      break;
1848
2
    }
1849
706
    if (MCInst_getNumOperands(MI) == 3 &&
1850
706
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1851
706
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1852
706
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1853
706
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1854
      // (CSRRWI GPR:$rd, 1, uimm5:$imm)
1855
37
      AsmString = "fsflagsi $\x01, $\x03";
1856
37
      break;
1857
37
    }
1858
669
    return false;
1859
206
  case RISCV_FADD_D:
1860
206
    if (MCInst_getNumOperands(MI) == 4 &&
1861
206
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1862
206
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1863
206
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1864
206
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1865
206
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1866
206
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1867
206
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1868
206
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1869
      // (FADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
1870
150
      AsmString = "fadd.d $\x01, $\x02, $\x03";
1871
150
      break;
1872
150
    }
1873
56
    return false;
1874
150
  case RISCV_FADD_S:
1875
150
    if (MCInst_getNumOperands(MI) == 4 &&
1876
150
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1877
150
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1878
150
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1879
150
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1880
150
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1881
150
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1882
150
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1883
150
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1884
      // (FADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
1885
4
      AsmString = "fadd.s $\x01, $\x02, $\x03";
1886
4
      break;
1887
4
    }
1888
146
    return false;
1889
4
  case RISCV_FCVT_D_L:
1890
4
    if (MCInst_getNumOperands(MI) == 3 &&
1891
4
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1892
4
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1893
4
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1894
4
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1895
4
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1896
4
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1897
      // (FCVT_D_L FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1898
0
      AsmString = "fcvt.d.l $\x01, $\x02";
1899
0
      break;
1900
0
    }
1901
4
    return false;
1902
35
  case RISCV_FCVT_D_LU:
1903
35
    if (MCInst_getNumOperands(MI) == 3 &&
1904
35
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1905
35
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1906
35
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1907
35
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1908
35
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1909
35
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1910
      // (FCVT_D_LU FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1911
10
      AsmString = "fcvt.d.lu $\x01, $\x02";
1912
10
      break;
1913
10
    }
1914
25
    return false;
1915
98
  case RISCV_FCVT_LU_D:
1916
98
    if (MCInst_getNumOperands(MI) == 3 &&
1917
98
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1918
98
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1919
98
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1920
98
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1921
98
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1922
98
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1923
      // (FCVT_LU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1924
29
      AsmString = "fcvt.lu.d $\x01, $\x02";
1925
29
      break;
1926
29
    }
1927
69
    return false;
1928
143
  case RISCV_FCVT_LU_S:
1929
143
    if (MCInst_getNumOperands(MI) == 3 &&
1930
143
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1931
143
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1932
143
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1933
143
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1934
143
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1935
143
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1936
      // (FCVT_LU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1937
68
      AsmString = "fcvt.lu.s $\x01, $\x02";
1938
68
      break;
1939
68
    }
1940
75
    return false;
1941
140
  case RISCV_FCVT_L_D:
1942
140
    if (MCInst_getNumOperands(MI) == 3 &&
1943
140
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1944
140
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1945
140
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1946
140
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1947
140
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1948
140
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1949
      // (FCVT_L_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1950
44
      AsmString = "fcvt.l.d $\x01, $\x02";
1951
44
      break;
1952
44
    }
1953
96
    return false;
1954
116
  case RISCV_FCVT_L_S:
1955
116
    if (MCInst_getNumOperands(MI) == 3 &&
1956
116
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1957
116
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1958
116
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1959
116
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1960
116
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1961
116
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1962
      // (FCVT_L_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1963
59
      AsmString = "fcvt.l.s $\x01, $\x02";
1964
59
      break;
1965
59
    }
1966
57
    return false;
1967
20
  case RISCV_FCVT_S_D:
1968
20
    if (MCInst_getNumOperands(MI) == 3 &&
1969
20
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1970
20
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1971
20
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1972
20
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1973
20
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1974
20
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1975
      // (FCVT_S_D FPR32:$rd, FPR64:$rs1, { 1, 1, 1 })
1976
7
      AsmString = "fcvt.s.d $\x01, $\x02";
1977
7
      break;
1978
7
    }
1979
13
    return false;
1980
2
  case RISCV_FCVT_S_L:
1981
2
    if (MCInst_getNumOperands(MI) == 3 &&
1982
2
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1983
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1984
2
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1985
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1986
2
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1987
2
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1988
      // (FCVT_S_L FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
1989
2
      AsmString = "fcvt.s.l $\x01, $\x02";
1990
2
      break;
1991
2
    }
1992
0
    return false;
1993
11
  case RISCV_FCVT_S_LU:
1994
11
    if (MCInst_getNumOperands(MI) == 3 &&
1995
11
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1996
11
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1997
11
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1998
11
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1999
11
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2000
11
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2001
      // (FCVT_S_LU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2002
8
      AsmString = "fcvt.s.lu $\x01, $\x02";
2003
8
      break;
2004
8
    }
2005
3
    return false;
2006
4
  case RISCV_FCVT_S_W:
2007
4
    if (MCInst_getNumOperands(MI) == 3 &&
2008
4
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2009
4
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2010
4
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2011
4
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2012
4
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2013
4
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2014
      // (FCVT_S_W FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2015
4
      AsmString = "fcvt.s.w $\x01, $\x02";
2016
4
      break;
2017
4
    }
2018
0
    return false;
2019
5
  case RISCV_FCVT_S_WU:
2020
5
    if (MCInst_getNumOperands(MI) == 3 &&
2021
5
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2022
5
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2023
5
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2024
5
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2025
5
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2026
5
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2027
      // (FCVT_S_WU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2028
3
      AsmString = "fcvt.s.wu $\x01, $\x02";
2029
3
      break;
2030
3
    }
2031
2
    return false;
2032
20
  case RISCV_FCVT_WU_D:
2033
20
    if (MCInst_getNumOperands(MI) == 3 &&
2034
20
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2035
20
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2036
20
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2037
20
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2038
20
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2039
20
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2040
      // (FCVT_WU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2041
0
      AsmString = "fcvt.wu.d $\x01, $\x02";
2042
0
      break;
2043
0
    }
2044
20
    return false;
2045
63
  case RISCV_FCVT_WU_S:
2046
63
    if (MCInst_getNumOperands(MI) == 3 &&
2047
63
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2048
63
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2049
63
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2050
63
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2051
63
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2052
63
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2053
      // (FCVT_WU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2054
4
      AsmString = "fcvt.wu.s $\x01, $\x02";
2055
4
      break;
2056
4
    }
2057
59
    return false;
2058
147
  case RISCV_FCVT_W_D:
2059
147
    if (MCInst_getNumOperands(MI) == 3 &&
2060
147
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2061
147
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2062
147
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2063
147
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2064
147
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2065
147
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2066
      // (FCVT_W_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2067
130
      AsmString = "fcvt.w.d $\x01, $\x02";
2068
130
      break;
2069
130
    }
2070
17
    return false;
2071
83
  case RISCV_FCVT_W_S:
2072
83
    if (MCInst_getNumOperands(MI) == 3 &&
2073
83
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2074
83
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2075
83
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2076
83
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2077
83
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2078
83
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2079
      // (FCVT_W_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2080
49
      AsmString = "fcvt.w.s $\x01, $\x02";
2081
49
      break;
2082
49
    }
2083
34
    return false;
2084
15
  case RISCV_FDIV_D:
2085
15
    if (MCInst_getNumOperands(MI) == 4 &&
2086
15
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2087
15
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2088
15
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2089
15
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2090
15
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2091
15
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2092
15
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2093
15
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2094
      // (FDIV_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2095
6
      AsmString = "fdiv.d $\x01, $\x02, $\x03";
2096
6
      break;
2097
6
    }
2098
9
    return false;
2099
0
  case RISCV_FDIV_S:
2100
0
    if (MCInst_getNumOperands(MI) == 4 &&
2101
0
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2102
0
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2103
0
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2104
0
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2105
0
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2106
0
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2107
0
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2108
0
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2109
      // (FDIV_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2110
0
      AsmString = "fdiv.s $\x01, $\x02, $\x03";
2111
0
      break;
2112
0
    }
2113
0
    return false;
2114
70
  case RISCV_FENCE:
2115
70
    if (MCInst_getNumOperands(MI) == 2 &&
2116
70
        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
2117
70
        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
2118
34
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
2119
34
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 15) {
2120
      // (FENCE 15, 15)
2121
4
      AsmString = "fence";
2122
4
      break;
2123
4
    }
2124
66
    return false;
2125
9
  case RISCV_FMADD_D:
2126
9
    if (MCInst_getNumOperands(MI) == 5 &&
2127
9
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2128
9
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2129
9
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2130
9
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2131
9
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2132
9
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2133
9
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2134
9
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2135
9
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2136
9
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2137
      // (FMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2138
4
      AsmString = "fmadd.d $\x01, $\x02, $\x03, $\x04";
2139
4
      break;
2140
4
    }
2141
5
    return false;
2142
2
  case RISCV_FMADD_S:
2143
2
    if (MCInst_getNumOperands(MI) == 5 &&
2144
2
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2145
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2146
2
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2147
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2148
2
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2149
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2150
2
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2151
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2152
2
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2153
2
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2154
      // (FMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2155
0
      AsmString = "fmadd.s $\x01, $\x02, $\x03, $\x04";
2156
0
      break;
2157
0
    }
2158
2
    return false;
2159
57
  case RISCV_FMSUB_D:
2160
57
    if (MCInst_getNumOperands(MI) == 5 &&
2161
57
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2162
57
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2163
57
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2164
57
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2165
57
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2166
57
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2167
57
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2168
57
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2169
57
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2170
57
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2171
      // (FMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2172
3
      AsmString = "fmsub.d $\x01, $\x02, $\x03, $\x04";
2173
3
      break;
2174
3
    }
2175
54
    return false;
2176
23
  case RISCV_FMSUB_S:
2177
23
    if (MCInst_getNumOperands(MI) == 5 &&
2178
23
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2179
23
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2180
23
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2181
23
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2182
23
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2183
23
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2184
23
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2185
23
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2186
23
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2187
23
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2188
      // (FMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2189
1
      AsmString = "fmsub.s $\x01, $\x02, $\x03, $\x04";
2190
1
      break;
2191
1
    }
2192
22
    return false;
2193
5
  case RISCV_FMUL_D:
2194
5
    if (MCInst_getNumOperands(MI) == 4 &&
2195
5
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2196
5
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2197
5
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2198
5
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2199
5
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2200
5
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2201
5
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2202
5
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2203
      // (FMUL_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2204
0
      AsmString = "fmul.d $\x01, $\x02, $\x03";
2205
0
      break;
2206
0
    }
2207
5
    return false;
2208
46
  case RISCV_FMUL_S:
2209
46
    if (MCInst_getNumOperands(MI) == 4 &&
2210
46
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2211
46
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2212
46
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2213
46
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2214
46
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2215
46
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2216
46
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2217
46
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2218
      // (FMUL_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2219
0
      AsmString = "fmul.s $\x01, $\x02, $\x03";
2220
0
      break;
2221
0
    }
2222
46
    return false;
2223
2
  case RISCV_FNMADD_D:
2224
2
    if (MCInst_getNumOperands(MI) == 5 &&
2225
2
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2226
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2227
2
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2228
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2229
2
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2230
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2231
2
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2232
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2233
2
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2234
2
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2235
      // (FNMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2236
1
      AsmString = "fnmadd.d $\x01, $\x02, $\x03, $\x04";
2237
1
      break;
2238
1
    }
2239
1
    return false;
2240
16
  case RISCV_FNMADD_S:
2241
16
    if (MCInst_getNumOperands(MI) == 5 &&
2242
16
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2243
16
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2244
16
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2245
16
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2246
16
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2247
16
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2248
16
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2249
16
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2250
16
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2251
16
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2252
      // (FNMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2253
2
      AsmString = "fnmadd.s $\x01, $\x02, $\x03, $\x04";
2254
2
      break;
2255
2
    }
2256
14
    return false;
2257
13
  case RISCV_FNMSUB_D:
2258
13
    if (MCInst_getNumOperands(MI) == 5 &&
2259
13
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2260
13
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2261
13
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2262
13
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2263
13
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2264
13
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2265
13
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2266
13
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2267
13
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2268
13
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2269
      // (FNMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2270
4
      AsmString = "fnmsub.d $\x01, $\x02, $\x03, $\x04";
2271
4
      break;
2272
4
    }
2273
9
    return false;
2274
1
  case RISCV_FNMSUB_S:
2275
1
    if (MCInst_getNumOperands(MI) == 5 &&
2276
1
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2277
1
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2278
1
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2279
1
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2280
1
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2281
1
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2282
1
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2283
1
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2284
1
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2285
1
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2286
      // (FNMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2287
0
      AsmString = "fnmsub.s $\x01, $\x02, $\x03, $\x04";
2288
0
      break;
2289
0
    }
2290
1
    return false;
2291
32
  case RISCV_FSGNJN_D:
2292
32
    if (MCInst_getNumOperands(MI) == 3 &&
2293
32
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2294
32
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2295
32
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2296
32
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2297
32
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2298
32
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2299
      // (FSGNJN_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2300
0
      AsmString = "fneg.d $\x01, $\x02";
2301
0
      break;
2302
0
    }
2303
32
    return false;
2304
7
  case RISCV_FSGNJN_S:
2305
7
    if (MCInst_getNumOperands(MI) == 3 &&
2306
7
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2307
7
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2308
7
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2309
7
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2310
7
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2311
7
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2312
      // (FSGNJN_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2313
4
      AsmString = "fneg.s $\x01, $\x02";
2314
4
      break;
2315
4
    }
2316
3
    return false;
2317
19
  case RISCV_FSGNJX_D:
2318
19
    if (MCInst_getNumOperands(MI) == 3 &&
2319
19
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2320
19
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2321
19
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2322
19
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2323
19
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2324
19
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2325
      // (FSGNJX_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2326
16
      AsmString = "fabs.d $\x01, $\x02";
2327
16
      break;
2328
16
    }
2329
3
    return false;
2330
46
  case RISCV_FSGNJX_S:
2331
46
    if (MCInst_getNumOperands(MI) == 3 &&
2332
46
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2333
46
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2334
46
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2335
46
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2336
46
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2337
46
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2338
      // (FSGNJX_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2339
2
      AsmString = "fabs.s $\x01, $\x02";
2340
2
      break;
2341
2
    }
2342
44
    return false;
2343
3
  case RISCV_FSGNJ_D:
2344
3
    if (MCInst_getNumOperands(MI) == 3 &&
2345
3
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2346
3
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2347
3
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2348
3
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2349
3
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2350
3
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2351
      // (FSGNJ_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2352
2
      AsmString = "fmv.d $\x01, $\x02";
2353
2
      break;
2354
2
    }
2355
1
    return false;
2356
92
  case RISCV_FSGNJ_S:
2357
92
    if (MCInst_getNumOperands(MI) == 3 &&
2358
92
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2359
92
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2360
92
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2361
92
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2362
92
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2363
92
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2364
      // (FSGNJ_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2365
85
      AsmString = "fmv.s $\x01, $\x02";
2366
85
      break;
2367
85
    }
2368
7
    return false;
2369
2
  case RISCV_FSQRT_D:
2370
2
    if (MCInst_getNumOperands(MI) == 3 &&
2371
2
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2372
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2373
2
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2374
2
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2375
2
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2376
2
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2377
      // (FSQRT_D FPR64:$rd, FPR64:$rs1, { 1, 1, 1 })
2378
2
      AsmString = "fsqrt.d $\x01, $\x02";
2379
2
      break;
2380
2
    }
2381
0
    return false;
2382
0
  case RISCV_FSQRT_S:
2383
0
    if (MCInst_getNumOperands(MI) == 3 &&
2384
0
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2385
0
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2386
0
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2387
0
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2388
0
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2389
0
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2390
      // (FSQRT_S FPR32:$rd, FPR32:$rs1, { 1, 1, 1 })
2391
0
      AsmString = "fsqrt.s $\x01, $\x02";
2392
0
      break;
2393
0
    }
2394
0
    return false;
2395
24
  case RISCV_FSUB_D:
2396
24
    if (MCInst_getNumOperands(MI) == 4 &&
2397
24
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2398
24
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2399
24
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2400
24
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2401
24
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2402
24
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2403
24
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2404
24
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2405
      // (FSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2406
4
      AsmString = "fsub.d $\x01, $\x02, $\x03";
2407
4
      break;
2408
4
    }
2409
20
    return false;
2410
3
  case RISCV_FSUB_S:
2411
3
    if (MCInst_getNumOperands(MI) == 4 &&
2412
3
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2413
3
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2414
3
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2415
3
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2416
3
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2417
3
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2418
3
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2419
3
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2420
      // (FSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2421
3
      AsmString = "fsub.s $\x01, $\x02, $\x03";
2422
3
      break;
2423
3
    }
2424
0
    return false;
2425
162
  case RISCV_JAL:
2426
162
    if (MCInst_getNumOperands(MI) == 2 &&
2427
162
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2428
9
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2429
      // (JAL X0, simm21_lsb0_jal:$offset)
2430
9
      AsmString = "j $\x02";
2431
9
      break;
2432
9
    }
2433
153
    if (MCInst_getNumOperands(MI) == 2 &&
2434
153
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2435
6
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2436
      // (JAL X1, simm21_lsb0_jal:$offset)
2437
6
      AsmString = "jal $\x02";
2438
6
      break;
2439
6
    }
2440
147
    return false;
2441
15
  case RISCV_JALR:
2442
15
    if (MCInst_getNumOperands(MI) == 3 &&
2443
15
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2444
11
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X1 &&
2445
3
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2446
3
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2447
      // (JALR X0, X1, 0)
2448
0
      AsmString = "ret";
2449
0
      break;
2450
0
    }
2451
15
    if (MCInst_getNumOperands(MI) == 3 &&
2452
15
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2453
11
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2454
11
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2455
11
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2456
11
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2457
      // (JALR X0, GPR:$rs, 0)
2458
8
      AsmString = "jr $\x02";
2459
8
      break;
2460
8
    }
2461
7
    if (MCInst_getNumOperands(MI) == 3 &&
2462
7
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2463
4
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2464
4
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2465
4
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2466
4
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2467
      // (JALR X1, GPR:$rs, 0)
2468
2
      AsmString = "jalr $\x02";
2469
2
      break;
2470
2
    }
2471
5
    return false;
2472
254
  case RISCV_SFENCE_VMA:
2473
254
    if (MCInst_getNumOperands(MI) == 2 &&
2474
254
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2475
35
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2476
      // (SFENCE_VMA X0, X0)
2477
35
      AsmString = "sfence.vma";
2478
35
      break;
2479
35
    }
2480
219
    if (MCInst_getNumOperands(MI) == 2 &&
2481
219
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2482
219
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2483
219
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2484
      // (SFENCE_VMA GPR:$rs, X0)
2485
91
      AsmString = "sfence.vma $\x01";
2486
91
      break;
2487
91
    }
2488
128
    return false;
2489
41
  case RISCV_SLT:
2490
41
    if (MCInst_getNumOperands(MI) == 3 &&
2491
41
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2492
41
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2493
41
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2494
41
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2495
41
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
2496
      // (SLT GPR:$rd, GPR:$rs, X0)
2497
8
      AsmString = "sltz $\x01, $\x02";
2498
8
      break;
2499
8
    }
2500
33
    if (MCInst_getNumOperands(MI) == 3 &&
2501
33
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2502
33
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2503
33
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2504
25
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2505
25
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2506
      // (SLT GPR:$rd, X0, GPR:$rs)
2507
25
      AsmString = "sgtz $\x01, $\x03";
2508
25
      break;
2509
25
    }
2510
8
    return false;
2511
24
  case RISCV_SLTIU:
2512
24
    if (MCInst_getNumOperands(MI) == 3 &&
2513
24
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2514
24
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2515
24
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2516
24
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2517
24
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2518
24
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 1) {
2519
      // (SLTIU GPR:$rd, GPR:$rs, 1)
2520
18
      AsmString = "seqz $\x01, $\x02";
2521
18
      break;
2522
18
    }
2523
6
    return false;
2524
27
  case RISCV_SLTU:
2525
27
    if (MCInst_getNumOperands(MI) == 3 &&
2526
27
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2527
27
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2528
27
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2529
24
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2530
24
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2531
      // (SLTU GPR:$rd, X0, GPR:$rs)
2532
24
      AsmString = "snez $\x01, $\x03";
2533
24
      break;
2534
24
    }
2535
3
    return false;
2536
3
  case RISCV_SUB:
2537
3
    if (MCInst_getNumOperands(MI) == 3 &&
2538
3
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2539
3
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2540
3
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2541
3
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2542
3
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2543
      // (SUB GPR:$rd, X0, GPR:$rs)
2544
3
      AsmString = "neg $\x01, $\x03";
2545
3
      break;
2546
3
    }
2547
0
    return false;
2548
4
  case RISCV_SUBW:
2549
4
    if (MCInst_getNumOperands(MI) == 3 &&
2550
4
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2551
4
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2552
4
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2553
4
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2554
4
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2555
      // (SUBW GPR:$rd, X0, GPR:$rs)
2556
4
      AsmString = "negw $\x01, $\x03";
2557
4
      break;
2558
4
    }
2559
0
    return false;
2560
4
  case RISCV_XORI:
2561
4
    if (MCInst_getNumOperands(MI) == 3 &&
2562
4
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2563
4
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2564
4
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2565
4
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2566
4
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2567
4
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == -1) {
2568
      // (XORI GPR:$rd, GPR:$rs, -1)
2569
0
      AsmString = "not $\x01, $\x02";
2570
0
      break;
2571
0
    }
2572
4
    return false;
2573
10.9k
  }
2574
2575
2.37k
  AsmStringLen = strlen(AsmString);
2576
2.37k
  if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2577
0
    tmpString = cs_strdup(AsmString);
2578
2.37k
  else
2579
2.37k
    tmpString = memcpy(tmpString, AsmString, 1 + AsmStringLen);
2580
2581
16.0k
  while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
2582
13.7k
         AsmString[I] != '$' && AsmString[I] != '\0')
2583
13.6k
    ++I;
2584
2.37k
  tmpString[I] = 0;
2585
2.37k
  SStream_concat0(OS, tmpString);
2586
2.37k
  if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2587
    /* Free the possible cs_strdup() memory. PR#1424. */
2588
0
    cs_mem_free(tmpString);
2589
2.37k
#undef ASMSTRING_CONTAIN_SIZE
2590
2591
2.37k
  if (AsmString[I] != '\0') {
2592
2.28k
    if (AsmString[I] == ' ' || AsmString[I] == '\t') {
2593
2.28k
      SStream_concat0(OS, " ");
2594
2.28k
      ++I;
2595
2.28k
    }
2596
8.55k
    do {
2597
8.55k
      if (AsmString[I] == '$') {
2598
4.37k
        ++I;
2599
4.37k
        if (AsmString[I] == (char)0xff) {
2600
847
          ++I;
2601
847
          int OpIdx = AsmString[I++] - 1;
2602
847
          int PrintMethodIdx = AsmString[I++] - 1;
2603
847
          printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
2604
847
        } else
2605
3.52k
          printOperand(MI, (unsigned)(AsmString[I++]) - 1, OS);
2606
4.37k
      } else {
2607
4.18k
        SStream_concat1(OS, AsmString[I++]);
2608
4.18k
      }
2609
8.55k
    } while (AsmString[I] != '\0');
2610
2.28k
  }
2611
2612
2.37k
  return true;
2613
10.9k
}
2614
2615
static void printCustomAliasOperand(
2616
         MCInst *MI, unsigned OpIdx,
2617
         unsigned PrintMethodIdx,
2618
847
         SStream *OS) {
2619
847
  switch (PrintMethodIdx) {
2620
0
  default:
2621
0
    CS_ASSERT(0 && "Unknown PrintMethod kind");
2622
0
    break;
2623
847
  case 0:
2624
847
    printCSRSystemRegister(MI, OpIdx, OS);
2625
847
    break;
2626
847
  }
2627
847
}
2628
2629
static bool RISCVInstPrinterValidateMCOperand(MCOperand *MCOp,
2630
110
                  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
110
  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
110
}
2660
2661
#endif // PRINT_ALIAS_INSTR