Coverage Report

Created: 2023-12-08 06:05

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