Coverage Report

Created: 2025-12-05 06:11

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