Coverage Report

Created: 2025-10-28 07:02

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