Coverage Report

Created: 2026-01-10 06:34

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