Coverage Report

Created: 2025-07-18 06:43

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