Coverage Report

Created: 2026-08-13 06:59

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