Coverage Report

Created: 2026-08-14 06:51

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