Coverage Report

Created: 2026-11-12 06:22

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