Coverage Report

Created: 2026-01-09 06:55

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