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
165k
{
1504
165k
  MCRegisterInfo *MRI = (MCRegisterInfo *) info;
1505
165k
  const char *AsmString;
1506
165k
  unsigned I = 0;
1507
165k
#define ASMSTRING_CONTAIN_SIZE 64
1508
165k
  unsigned AsmStringLen = 0;
1509
165k
  char tmpString_[ASMSTRING_CONTAIN_SIZE];
1510
165k
  char *tmpString = tmpString_;
1511
165k
  switch (MCInst_getOpcode(MI)) {
1512
16.2k
  default: return false;
1513
1.21k
  case RISCV_ADDI:
1514
1.21k
    if (MCInst_getNumOperands(MI) == 3 &&
1515
1.21k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1516
846
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1517
717
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1518
717
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1519
      // (ADDI X0, X0, 0)
1520
325
      AsmString = "nop";
1521
325
      break;
1522
325
    }
1523
889
    if (MCInst_getNumOperands(MI) == 3 &&
1524
889
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1525
889
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1526
889
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1527
889
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1528
889
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1529
889
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1530
      // (ADDI GPR:$rd, GPR:$rs, 0)
1531
161
      AsmString = "mv $\x01, $\x02";
1532
161
      break;
1533
161
    }
1534
728
    return false;
1535
532
  case RISCV_ADDIW:
1536
532
    if (MCInst_getNumOperands(MI) == 3 &&
1537
532
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1538
532
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1539
532
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1540
532
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1541
532
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1542
532
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1543
      // (ADDIW GPR:$rd, GPR:$rs, 0)
1544
146
      AsmString = "sext.w $\x01, $\x02";
1545
146
      break;
1546
146
    }
1547
386
    return false;
1548
509
  case RISCV_BEQ:
1549
509
    if (MCInst_getNumOperands(MI) == 3 &&
1550
509
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1551
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1552
509
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1553
146
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1554
      // (BEQ GPR:$rs, X0, simm13_lsb0:$offset)
1555
146
      AsmString = "beqz $\x01, $\x03";
1556
146
      break;
1557
146
    }
1558
363
    return false;
1559
800
  case RISCV_BGE:
1560
800
    if (MCInst_getNumOperands(MI) == 3 &&
1561
800
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1562
212
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1563
212
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1564
212
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1565
      // (BGE X0, GPR:$rs, simm13_lsb0:$offset)
1566
212
      AsmString = "blez $\x02, $\x03";
1567
212
      break;
1568
212
    }
1569
588
    if (MCInst_getNumOperands(MI) == 3 &&
1570
588
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1571
588
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1572
588
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1573
241
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1574
      // (BGE GPR:$rs, X0, simm13_lsb0:$offset)
1575
241
      AsmString = "bgez $\x01, $\x03";
1576
241
      break;
1577
241
    }
1578
347
    return false;
1579
746
  case RISCV_BLT:
1580
746
    if (MCInst_getNumOperands(MI) == 3 &&
1581
746
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1582
746
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1583
746
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1584
277
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1585
      // (BLT GPR:$rs, X0, simm13_lsb0:$offset)
1586
277
      AsmString = "bltz $\x01, $\x03";
1587
277
      break;
1588
277
    }
1589
469
    if (MCInst_getNumOperands(MI) == 3 &&
1590
469
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1591
147
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1592
147
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1593
147
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1594
      // (BLT X0, GPR:$rs, simm13_lsb0:$offset)
1595
147
      AsmString = "bgtz $\x02, $\x03";
1596
147
      break;
1597
147
    }
1598
322
    return false;
1599
428
  case RISCV_BNE:
1600
428
    if (MCInst_getNumOperands(MI) == 3 &&
1601
428
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1602
428
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1603
428
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1604
120
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1605
      // (BNE GPR:$rs, X0, simm13_lsb0:$offset)
1606
120
      AsmString = "bnez $\x01, $\x03";
1607
120
      break;
1608
120
    }
1609
308
    return false;
1610
14.0k
  case RISCV_CSRRC:
1611
14.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1612
14.0k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1613
2.17k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1614
2.17k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1615
      // (CSRRC X0, csr_sysreg:$csr, GPR:$rs)
1616
2.17k
      AsmString = "csrc $\xFF\x02\x01, $\x03";
1617
2.17k
      break;
1618
2.17k
    }
1619
11.8k
    return false;
1620
15.1k
  case RISCV_CSRRCI:
1621
15.1k
    if (MCInst_getNumOperands(MI) == 3 &&
1622
15.1k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1623
      // (CSRRCI X0, csr_sysreg:$csr, uimm5:$imm)
1624
1.55k
      AsmString = "csrci $\xFF\x02\x01, $\x03";
1625
1.55k
      break;
1626
1.55k
    }
1627
13.5k
    return false;
1628
24.2k
  case RISCV_CSRRS:
1629
24.2k
    if (MCInst_getNumOperands(MI) == 3 &&
1630
24.2k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1631
24.2k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1632
24.2k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1633
24.2k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1634
476
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1635
      // (CSRRS GPR:$rd, 3, X0)
1636
172
      AsmString = "frcsr $\x01";
1637
172
      break;
1638
172
    }
1639
24.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1640
24.0k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1641
24.0k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1642
24.0k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1643
24.0k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1644
512
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1645
      // (CSRRS GPR:$rd, 2, X0)
1646
91
      AsmString = "frrm $\x01";
1647
91
      break;
1648
91
    }
1649
24.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1650
24.0k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1651
24.0k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1652
24.0k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1653
24.0k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1654
287
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1655
      // (CSRRS GPR:$rd, 1, X0)
1656
26
      AsmString = "frflags $\x01";
1657
26
      break;
1658
26
    }
1659
23.9k
    if (MCInst_getNumOperands(MI) == 3 &&
1660
23.9k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1661
23.9k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1662
23.9k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1663
23.9k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3074 &&
1664
388
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1665
      // (CSRRS GPR:$rd, 3074, X0)
1666
181
      AsmString = "rdinstret $\x01";
1667
181
      break;
1668
181
    }
1669
23.7k
    if (MCInst_getNumOperands(MI) == 3 &&
1670
23.7k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1671
23.7k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1672
23.7k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1673
23.7k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3072 &&
1674
1.46k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1675
      // (CSRRS GPR:$rd, 3072, X0)
1676
671
      AsmString = "rdcycle $\x01";
1677
671
      break;
1678
671
    }
1679
23.1k
    if (MCInst_getNumOperands(MI) == 3 &&
1680
23.1k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1681
23.1k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1682
23.1k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1683
23.1k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3073 &&
1684
1.03k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1685
      // (CSRRS GPR:$rd, 3073, X0)
1686
287
      AsmString = "rdtime $\x01";
1687
287
      break;
1688
287
    }
1689
22.8k
    if (MCInst_getNumOperands(MI) == 3 &&
1690
22.8k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1691
22.8k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1692
22.8k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1693
22.8k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3202 &&
1694
897
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1695
      // (CSRRS GPR:$rd, 3202, X0)
1696
372
      AsmString = "rdinstreth $\x01";
1697
372
      break;
1698
372
    }
1699
22.4k
    if (MCInst_getNumOperands(MI) == 3 &&
1700
22.4k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1701
22.4k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1702
22.4k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1703
22.4k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3200 &&
1704
461
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1705
      // (CSRRS GPR:$rd, 3200, X0)
1706
121
      AsmString = "rdcycleh $\x01";
1707
121
      break;
1708
121
    }
1709
22.3k
    if (MCInst_getNumOperands(MI) == 3 &&
1710
22.3k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1711
22.3k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1712
22.3k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1713
22.3k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3201 &&
1714
359
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1715
      // (CSRRS GPR:$rd, 3201, X0)
1716
141
      AsmString = "rdtimeh $\x01";
1717
141
      break;
1718
141
    }
1719
22.2k
    if (MCInst_getNumOperands(MI) == 3 &&
1720
22.2k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1721
22.2k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1722
22.2k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1723
      // (CSRRS GPR:$rd, csr_sysreg:$csr, X0)
1724
3.33k
      AsmString = "csrr $\x01, $\xFF\x02\x01";
1725
3.33k
      break;
1726
3.33k
    }
1727
18.8k
    if (MCInst_getNumOperands(MI) == 3 &&
1728
18.8k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1729
2.94k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1730
2.94k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1731
      // (CSRRS X0, csr_sysreg:$csr, GPR:$rs)
1732
2.94k
      AsmString = "csrs $\xFF\x02\x01, $\x03";
1733
2.94k
      break;
1734
2.94k
    }
1735
15.9k
    return false;
1736
12.9k
  case RISCV_CSRRSI:
1737
12.9k
    if (MCInst_getNumOperands(MI) == 3 &&
1738
12.9k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1739
      // (CSRRSI X0, csr_sysreg:$csr, uimm5:$imm)
1740
718
      AsmString = "csrsi $\xFF\x02\x01, $\x03";
1741
718
      break;
1742
718
    }
1743
12.2k
    return false;
1744
20.3k
  case RISCV_CSRRW:
1745
20.3k
    if (MCInst_getNumOperands(MI) == 3 &&
1746
20.3k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1747
4.28k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1748
4.28k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1749
1.21k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1750
1.21k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1751
      // (CSRRW X0, 3, GPR:$rs)
1752
1.21k
      AsmString = "fscsr $\x03";
1753
1.21k
      break;
1754
1.21k
    }
1755
19.1k
    if (MCInst_getNumOperands(MI) == 3 &&
1756
19.1k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1757
3.06k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1758
3.06k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1759
408
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1760
408
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1761
      // (CSRRW X0, 2, GPR:$rs)
1762
408
      AsmString = "fsrm $\x03";
1763
408
      break;
1764
408
    }
1765
18.6k
    if (MCInst_getNumOperands(MI) == 3 &&
1766
18.6k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1767
2.65k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1768
2.65k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1769
123
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1770
123
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1771
      // (CSRRW X0, 1, GPR:$rs)
1772
123
      AsmString = "fsflags $\x03";
1773
123
      break;
1774
123
    }
1775
18.5k
    if (MCInst_getNumOperands(MI) == 3 &&
1776
18.5k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1777
2.53k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1778
2.53k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1779
      // (CSRRW X0, csr_sysreg:$csr, GPR:$rs)
1780
2.53k
      AsmString = "csrw $\xFF\x02\x01, $\x03";
1781
2.53k
      break;
1782
2.53k
    }
1783
16.0k
    if (MCInst_getNumOperands(MI) == 3 &&
1784
16.0k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1785
16.0k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1786
16.0k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1787
16.0k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1788
116
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1789
116
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1790
      // (CSRRW GPR:$rd, 3, GPR:$rs)
1791
116
      AsmString = "fscsr $\x01, $\x03";
1792
116
      break;
1793
116
    }
1794
15.9k
    if (MCInst_getNumOperands(MI) == 3 &&
1795
15.9k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1796
15.9k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1797
15.9k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1798
15.9k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1799
546
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1800
546
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1801
      // (CSRRW GPR:$rd, 2, GPR:$rs)
1802
546
      AsmString = "fsrm $\x01, $\x03";
1803
546
      break;
1804
546
    }
1805
15.3k
    if (MCInst_getNumOperands(MI) == 3 &&
1806
15.3k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1807
15.3k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1808
15.3k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1809
15.3k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1810
578
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1811
578
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1812
      // (CSRRW GPR:$rd, 1, GPR:$rs)
1813
578
      AsmString = "fsflags $\x01, $\x03";
1814
578
      break;
1815
578
    }
1816
14.7k
    return false;
1817
11.2k
  case RISCV_CSRRWI:
1818
11.2k
    if (MCInst_getNumOperands(MI) == 3 &&
1819
11.2k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1820
2.76k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1821
2.76k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1822
      // (CSRRWI X0, 2, uimm5:$imm)
1823
285
      AsmString = "fsrmi $\x03";
1824
285
      break;
1825
285
    }
1826
10.9k
    if (MCInst_getNumOperands(MI) == 3 &&
1827
10.9k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1828
2.47k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1829
2.47k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1830
      // (CSRRWI X0, 1, uimm5:$imm)
1831
413
      AsmString = "fsflagsi $\x03";
1832
413
      break;
1833
413
    }
1834
10.5k
    if (MCInst_getNumOperands(MI) == 3 &&
1835
10.5k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1836
      // (CSRRWI X0, csr_sysreg:$csr, uimm5:$imm)
1837
2.06k
      AsmString = "csrwi $\xFF\x02\x01, $\x03";
1838
2.06k
      break;
1839
2.06k
    }
1840
8.46k
    if (MCInst_getNumOperands(MI) == 3 &&
1841
8.46k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1842
8.46k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1843
8.46k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1844
8.46k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1845
      // (CSRRWI GPR:$rd, 2, uimm5:$imm)
1846
462
      AsmString = "fsrmi $\x01, $\x03";
1847
462
      break;
1848
462
    }
1849
7.99k
    if (MCInst_getNumOperands(MI) == 3 &&
1850
7.99k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1851
7.99k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1852
7.99k
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1853
7.99k
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1854
      // (CSRRWI GPR:$rd, 1, uimm5:$imm)
1855
125
      AsmString = "fsflagsi $\x01, $\x03";
1856
125
      break;
1857
125
    }
1858
7.87k
    return false;
1859
2.26k
  case RISCV_FADD_D:
1860
2.26k
    if (MCInst_getNumOperands(MI) == 4 &&
1861
2.26k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1862
2.26k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1863
2.26k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1864
2.26k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1865
2.26k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1866
2.26k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1867
2.26k
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1868
2.26k
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1869
      // (FADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
1870
1.57k
      AsmString = "fadd.d $\x01, $\x02, $\x03";
1871
1.57k
      break;
1872
1.57k
    }
1873
692
    return false;
1874
1.13k
  case RISCV_FADD_S:
1875
1.13k
    if (MCInst_getNumOperands(MI) == 4 &&
1876
1.13k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1877
1.13k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1878
1.13k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1879
1.13k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1880
1.13k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1881
1.13k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1882
1.13k
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1883
1.13k
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1884
      // (FADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
1885
198
      AsmString = "fadd.s $\x01, $\x02, $\x03";
1886
198
      break;
1887
198
    }
1888
936
    return false;
1889
1.67k
  case RISCV_FCVT_D_L:
1890
1.67k
    if (MCInst_getNumOperands(MI) == 3 &&
1891
1.67k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1892
1.67k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1893
1.67k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1894
1.67k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1895
1.67k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1896
1.67k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1897
      // (FCVT_D_L FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1898
677
      AsmString = "fcvt.d.l $\x01, $\x02";
1899
677
      break;
1900
677
    }
1901
1.00k
    return false;
1902
653
  case RISCV_FCVT_D_LU:
1903
653
    if (MCInst_getNumOperands(MI) == 3 &&
1904
653
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1905
653
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1906
653
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1907
653
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1908
653
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1909
653
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1910
      // (FCVT_D_LU FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1911
390
      AsmString = "fcvt.d.lu $\x01, $\x02";
1912
390
      break;
1913
390
    }
1914
263
    return false;
1915
1.47k
  case RISCV_FCVT_LU_D:
1916
1.47k
    if (MCInst_getNumOperands(MI) == 3 &&
1917
1.47k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1918
1.47k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1919
1.47k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1920
1.47k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1921
1.47k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1922
1.47k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1923
      // (FCVT_LU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1924
832
      AsmString = "fcvt.lu.d $\x01, $\x02";
1925
832
      break;
1926
832
    }
1927
647
    return false;
1928
2.23k
  case RISCV_FCVT_LU_S:
1929
2.23k
    if (MCInst_getNumOperands(MI) == 3 &&
1930
2.23k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1931
2.23k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1932
2.23k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1933
2.23k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1934
2.23k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1935
2.23k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1936
      // (FCVT_LU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1937
1.12k
      AsmString = "fcvt.lu.s $\x01, $\x02";
1938
1.12k
      break;
1939
1.12k
    }
1940
1.10k
    return false;
1941
1.39k
  case RISCV_FCVT_L_D:
1942
1.39k
    if (MCInst_getNumOperands(MI) == 3 &&
1943
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1944
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1945
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1946
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1947
1.39k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1948
1.39k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1949
      // (FCVT_L_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1950
381
      AsmString = "fcvt.l.d $\x01, $\x02";
1951
381
      break;
1952
381
    }
1953
1.01k
    return false;
1954
1.36k
  case RISCV_FCVT_L_S:
1955
1.36k
    if (MCInst_getNumOperands(MI) == 3 &&
1956
1.36k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1957
1.36k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1958
1.36k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1959
1.36k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1960
1.36k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1961
1.36k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1962
      // (FCVT_L_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1963
352
      AsmString = "fcvt.l.s $\x01, $\x02";
1964
352
      break;
1965
352
    }
1966
1.01k
    return false;
1967
1.13k
  case RISCV_FCVT_S_D:
1968
1.13k
    if (MCInst_getNumOperands(MI) == 3 &&
1969
1.13k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1970
1.13k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1971
1.13k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1972
1.13k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1973
1.13k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1974
1.13k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1975
      // (FCVT_S_D FPR32:$rd, FPR64:$rs1, { 1, 1, 1 })
1976
291
      AsmString = "fcvt.s.d $\x01, $\x02";
1977
291
      break;
1978
291
    }
1979
840
    return false;
1980
1.43k
  case RISCV_FCVT_S_L:
1981
1.43k
    if (MCInst_getNumOperands(MI) == 3 &&
1982
1.43k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1983
1.43k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1984
1.43k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1985
1.43k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1986
1.43k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1987
1.43k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1988
      // (FCVT_S_L FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
1989
728
      AsmString = "fcvt.s.l $\x01, $\x02";
1990
728
      break;
1991
728
    }
1992
710
    return false;
1993
651
  case RISCV_FCVT_S_LU:
1994
651
    if (MCInst_getNumOperands(MI) == 3 &&
1995
651
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1996
651
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1997
651
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1998
651
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1999
651
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2000
651
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2001
      // (FCVT_S_LU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2002
440
      AsmString = "fcvt.s.lu $\x01, $\x02";
2003
440
      break;
2004
440
    }
2005
211
    return false;
2006
537
  case RISCV_FCVT_S_W:
2007
537
    if (MCInst_getNumOperands(MI) == 3 &&
2008
537
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2009
537
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2010
537
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2011
537
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2012
537
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2013
537
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2014
      // (FCVT_S_W FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2015
426
      AsmString = "fcvt.s.w $\x01, $\x02";
2016
426
      break;
2017
426
    }
2018
111
    return false;
2019
509
  case RISCV_FCVT_S_WU:
2020
509
    if (MCInst_getNumOperands(MI) == 3 &&
2021
509
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2022
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2023
509
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2024
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2025
509
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2026
509
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2027
      // (FCVT_S_WU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2028
241
      AsmString = "fcvt.s.wu $\x01, $\x02";
2029
241
      break;
2030
241
    }
2031
268
    return false;
2032
680
  case RISCV_FCVT_WU_D:
2033
680
    if (MCInst_getNumOperands(MI) == 3 &&
2034
680
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2035
680
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2036
680
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2037
680
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2038
680
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2039
680
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2040
      // (FCVT_WU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2041
74
      AsmString = "fcvt.wu.d $\x01, $\x02";
2042
74
      break;
2043
74
    }
2044
606
    return false;
2045
1.50k
  case RISCV_FCVT_WU_S:
2046
1.50k
    if (MCInst_getNumOperands(MI) == 3 &&
2047
1.50k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2048
1.50k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2049
1.50k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2050
1.50k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2051
1.50k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2052
1.50k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2053
      // (FCVT_WU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2054
968
      AsmString = "fcvt.wu.s $\x01, $\x02";
2055
968
      break;
2056
968
    }
2057
532
    return false;
2058
913
  case RISCV_FCVT_W_D:
2059
913
    if (MCInst_getNumOperands(MI) == 3 &&
2060
913
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2061
913
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2062
913
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2063
913
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2064
913
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2065
913
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2066
      // (FCVT_W_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2067
826
      AsmString = "fcvt.w.d $\x01, $\x02";
2068
826
      break;
2069
826
    }
2070
87
    return false;
2071
928
  case RISCV_FCVT_W_S:
2072
928
    if (MCInst_getNumOperands(MI) == 3 &&
2073
928
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2074
928
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2075
928
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2076
928
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2077
928
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2078
928
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2079
      // (FCVT_W_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2080
445
      AsmString = "fcvt.w.s $\x01, $\x02";
2081
445
      break;
2082
445
    }
2083
483
    return false;
2084
343
  case RISCV_FDIV_D:
2085
343
    if (MCInst_getNumOperands(MI) == 4 &&
2086
343
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2087
343
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2088
343
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2089
343
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2090
343
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2091
343
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2092
343
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2093
343
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2094
      // (FDIV_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2095
84
      AsmString = "fdiv.d $\x01, $\x02, $\x03";
2096
84
      break;
2097
84
    }
2098
259
    return false;
2099
1.05k
  case RISCV_FDIV_S:
2100
1.05k
    if (MCInst_getNumOperands(MI) == 4 &&
2101
1.05k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2102
1.05k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2103
1.05k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2104
1.05k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2105
1.05k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2106
1.05k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2107
1.05k
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2108
1.05k
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2109
      // (FDIV_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2110
674
      AsmString = "fdiv.s $\x01, $\x02, $\x03";
2111
674
      break;
2112
674
    }
2113
377
    return false;
2114
957
  case RISCV_FENCE:
2115
957
    if (MCInst_getNumOperands(MI) == 2 &&
2116
957
        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
2117
957
        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
2118
509
        MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
2119
509
        MCOperand_getImm(MCInst_getOperand(MI, 1)) == 15) {
2120
      // (FENCE 15, 15)
2121
77
      AsmString = "fence";
2122
77
      break;
2123
77
    }
2124
880
    return false;
2125
841
  case RISCV_FMADD_D:
2126
841
    if (MCInst_getNumOperands(MI) == 5 &&
2127
841
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2128
841
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2129
841
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2130
841
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2131
841
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2132
841
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2133
841
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2134
841
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2135
841
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2136
841
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2137
      // (FMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2138
212
      AsmString = "fmadd.d $\x01, $\x02, $\x03, $\x04";
2139
212
      break;
2140
212
    }
2141
629
    return false;
2142
730
  case RISCV_FMADD_S:
2143
730
    if (MCInst_getNumOperands(MI) == 5 &&
2144
730
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2145
730
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2146
730
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2147
730
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2148
730
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2149
730
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2150
730
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2151
730
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2152
730
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2153
730
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2154
      // (FMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2155
311
      AsmString = "fmadd.s $\x01, $\x02, $\x03, $\x04";
2156
311
      break;
2157
311
    }
2158
419
    return false;
2159
1.39k
  case RISCV_FMSUB_D:
2160
1.39k
    if (MCInst_getNumOperands(MI) == 5 &&
2161
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2162
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2163
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2164
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2165
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2166
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2167
1.39k
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2168
1.39k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2169
1.39k
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2170
1.39k
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2171
      // (FMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2172
325
      AsmString = "fmsub.d $\x01, $\x02, $\x03, $\x04";
2173
325
      break;
2174
325
    }
2175
1.06k
    return false;
2176
509
  case RISCV_FMSUB_S:
2177
509
    if (MCInst_getNumOperands(MI) == 5 &&
2178
509
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2179
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2180
509
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2181
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2182
509
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2183
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2184
509
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2185
509
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2186
509
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2187
509
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2188
      // (FMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2189
120
      AsmString = "fmsub.s $\x01, $\x02, $\x03, $\x04";
2190
120
      break;
2191
120
    }
2192
389
    return false;
2193
309
  case RISCV_FMUL_D:
2194
309
    if (MCInst_getNumOperands(MI) == 4 &&
2195
309
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2196
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2197
309
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2198
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2199
309
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2200
309
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2201
309
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2202
309
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2203
      // (FMUL_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2204
105
      AsmString = "fmul.d $\x01, $\x02, $\x03";
2205
105
      break;
2206
105
    }
2207
204
    return false;
2208
710
  case RISCV_FMUL_S:
2209
710
    if (MCInst_getNumOperands(MI) == 4 &&
2210
710
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2211
710
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2212
710
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2213
710
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2214
710
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2215
710
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2216
710
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2217
710
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2218
      // (FMUL_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2219
415
      AsmString = "fmul.s $\x01, $\x02, $\x03";
2220
415
      break;
2221
415
    }
2222
295
    return false;
2223
204
  case RISCV_FNMADD_D:
2224
204
    if (MCInst_getNumOperands(MI) == 5 &&
2225
204
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2226
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2227
204
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2228
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2229
204
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2230
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2231
204
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2232
204
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2233
204
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2234
204
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2235
      // (FNMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2236
103
      AsmString = "fnmadd.d $\x01, $\x02, $\x03, $\x04";
2237
103
      break;
2238
103
    }
2239
101
    return false;
2240
1.19k
  case RISCV_FNMADD_S:
2241
1.19k
    if (MCInst_getNumOperands(MI) == 5 &&
2242
1.19k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2243
1.19k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2244
1.19k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2245
1.19k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2246
1.19k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2247
1.19k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2248
1.19k
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2249
1.19k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2250
1.19k
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2251
1.19k
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2252
      // (FNMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2253
525
      AsmString = "fnmadd.s $\x01, $\x02, $\x03, $\x04";
2254
525
      break;
2255
525
    }
2256
671
    return false;
2257
560
  case RISCV_FNMSUB_D:
2258
560
    if (MCInst_getNumOperands(MI) == 5 &&
2259
560
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2260
560
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2261
560
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2262
560
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2263
560
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2264
560
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2265
560
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2266
560
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2267
560
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2268
560
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2269
      // (FNMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2270
272
      AsmString = "fnmsub.d $\x01, $\x02, $\x03, $\x04";
2271
272
      break;
2272
272
    }
2273
288
    return false;
2274
627
  case RISCV_FNMSUB_S:
2275
627
    if (MCInst_getNumOperands(MI) == 5 &&
2276
627
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2277
627
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2278
627
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2279
627
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2280
627
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2281
627
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2282
627
        MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2283
627
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2284
627
        MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2285
627
        MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2286
      // (FNMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2287
213
      AsmString = "fnmsub.s $\x01, $\x02, $\x03, $\x04";
2288
213
      break;
2289
213
    }
2290
414
    return false;
2291
409
  case RISCV_FSGNJN_D:
2292
409
    if (MCInst_getNumOperands(MI) == 3 &&
2293
409
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2294
409
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2295
409
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2296
409
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2297
409
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2298
409
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2299
      // (FSGNJN_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2300
133
      AsmString = "fneg.d $\x01, $\x02";
2301
133
      break;
2302
133
    }
2303
276
    return false;
2304
742
  case RISCV_FSGNJN_S:
2305
742
    if (MCInst_getNumOperands(MI) == 3 &&
2306
742
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2307
742
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2308
742
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2309
742
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2310
742
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2311
742
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2312
      // (FSGNJN_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2313
588
      AsmString = "fneg.s $\x01, $\x02";
2314
588
      break;
2315
588
    }
2316
154
    return false;
2317
197
  case RISCV_FSGNJX_D:
2318
197
    if (MCInst_getNumOperands(MI) == 3 &&
2319
197
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2320
197
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2321
197
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2322
197
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2323
197
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2324
197
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2325
      // (FSGNJX_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2326
90
      AsmString = "fabs.d $\x01, $\x02";
2327
90
      break;
2328
90
    }
2329
107
    return false;
2330
1.86k
  case RISCV_FSGNJX_S:
2331
1.86k
    if (MCInst_getNumOperands(MI) == 3 &&
2332
1.86k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2333
1.86k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2334
1.86k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2335
1.86k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2336
1.86k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2337
1.86k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2338
      // (FSGNJX_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2339
433
      AsmString = "fabs.s $\x01, $\x02";
2340
433
      break;
2341
433
    }
2342
1.43k
    return false;
2343
913
  case RISCV_FSGNJ_D:
2344
913
    if (MCInst_getNumOperands(MI) == 3 &&
2345
913
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2346
913
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2347
913
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2348
913
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2349
913
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2350
913
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2351
      // (FSGNJ_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2352
177
      AsmString = "fmv.d $\x01, $\x02";
2353
177
      break;
2354
177
    }
2355
736
    return false;
2356
2.12k
  case RISCV_FSGNJ_S:
2357
2.12k
    if (MCInst_getNumOperands(MI) == 3 &&
2358
2.12k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2359
2.12k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2360
2.12k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2361
2.12k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2362
2.12k
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2363
2.12k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2364
      // (FSGNJ_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2365
1.84k
      AsmString = "fmv.s $\x01, $\x02";
2366
1.84k
      break;
2367
1.84k
    }
2368
285
    return false;
2369
1.71k
  case RISCV_FSQRT_D:
2370
1.71k
    if (MCInst_getNumOperands(MI) == 3 &&
2371
1.71k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2372
1.71k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2373
1.71k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2374
1.71k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2375
1.71k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2376
1.71k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2377
      // (FSQRT_D FPR64:$rd, FPR64:$rs1, { 1, 1, 1 })
2378
918
      AsmString = "fsqrt.d $\x01, $\x02";
2379
918
      break;
2380
918
    }
2381
801
    return false;
2382
1.28k
  case RISCV_FSQRT_S:
2383
1.28k
    if (MCInst_getNumOperands(MI) == 3 &&
2384
1.28k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2385
1.28k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2386
1.28k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2387
1.28k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2388
1.28k
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2389
1.28k
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2390
      // (FSQRT_S FPR32:$rd, FPR32:$rs1, { 1, 1, 1 })
2391
512
      AsmString = "fsqrt.s $\x01, $\x02";
2392
512
      break;
2393
512
    }
2394
773
    return false;
2395
488
  case RISCV_FSUB_D:
2396
488
    if (MCInst_getNumOperands(MI) == 4 &&
2397
488
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2398
488
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2399
488
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2400
488
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2401
488
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2402
488
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2403
488
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2404
488
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2405
      // (FSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2406
226
      AsmString = "fsub.d $\x01, $\x02, $\x03";
2407
226
      break;
2408
226
    }
2409
262
    return false;
2410
425
  case RISCV_FSUB_S:
2411
425
    if (MCInst_getNumOperands(MI) == 4 &&
2412
425
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2413
425
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2414
425
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2415
425
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2416
425
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2417
425
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2418
425
        MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2419
425
        MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2420
      // (FSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2421
309
      AsmString = "fsub.s $\x01, $\x02, $\x03";
2422
309
      break;
2423
309
    }
2424
116
    return false;
2425
1.15k
  case RISCV_JAL:
2426
1.15k
    if (MCInst_getNumOperands(MI) == 2 &&
2427
1.15k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2428
317
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2429
      // (JAL X0, simm21_lsb0_jal:$offset)
2430
317
      AsmString = "j $\x02";
2431
317
      break;
2432
317
    }
2433
833
    if (MCInst_getNumOperands(MI) == 2 &&
2434
833
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2435
131
        RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2436
      // (JAL X1, simm21_lsb0_jal:$offset)
2437
131
      AsmString = "jal $\x02";
2438
131
      break;
2439
131
    }
2440
702
    return false;
2441
1.58k
  case RISCV_JALR:
2442
1.58k
    if (MCInst_getNumOperands(MI) == 3 &&
2443
1.58k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2444
1.31k
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X1 &&
2445
651
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2446
651
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2447
      // (JALR X0, X1, 0)
2448
368
      AsmString = "ret";
2449
368
      break;
2450
368
    }
2451
1.21k
    if (MCInst_getNumOperands(MI) == 3 &&
2452
1.21k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2453
946
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2454
946
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2455
946
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2456
946
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2457
      // (JALR X0, GPR:$rs, 0)
2458
187
      AsmString = "jr $\x02";
2459
187
      break;
2460
187
    }
2461
1.03k
    if (MCInst_getNumOperands(MI) == 3 &&
2462
1.03k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2463
200
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2464
200
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2465
200
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2466
200
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2467
      // (JALR X1, GPR:$rs, 0)
2468
42
      AsmString = "jalr $\x02";
2469
42
      break;
2470
42
    }
2471
988
    return false;
2472
1.12k
  case RISCV_SFENCE_VMA:
2473
1.12k
    if (MCInst_getNumOperands(MI) == 2 &&
2474
1.12k
        MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2475
800
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2476
      // (SFENCE_VMA X0, X0)
2477
305
      AsmString = "sfence.vma";
2478
305
      break;
2479
305
    }
2480
819
    if (MCInst_getNumOperands(MI) == 2 &&
2481
819
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2482
819
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2483
819
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2484
      // (SFENCE_VMA GPR:$rs, X0)
2485
158
      AsmString = "sfence.vma $\x01";
2486
158
      break;
2487
158
    }
2488
661
    return false;
2489
1.54k
  case RISCV_SLT:
2490
1.54k
    if (MCInst_getNumOperands(MI) == 3 &&
2491
1.54k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2492
1.54k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2493
1.54k
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2494
1.54k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2495
1.54k
        MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
2496
      // (SLT GPR:$rd, GPR:$rs, X0)
2497
253
      AsmString = "sltz $\x01, $\x02";
2498
253
      break;
2499
253
    }
2500
1.28k
    if (MCInst_getNumOperands(MI) == 3 &&
2501
1.28k
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2502
1.28k
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2503
1.28k
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2504
938
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2505
938
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2506
      // (SLT GPR:$rd, X0, GPR:$rs)
2507
938
      AsmString = "sgtz $\x01, $\x03";
2508
938
      break;
2509
938
    }
2510
349
    return false;
2511
296
  case RISCV_SLTIU:
2512
296
    if (MCInst_getNumOperands(MI) == 3 &&
2513
296
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2514
296
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2515
296
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2516
296
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2517
296
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2518
296
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 1) {
2519
      // (SLTIU GPR:$rd, GPR:$rs, 1)
2520
139
      AsmString = "seqz $\x01, $\x02";
2521
139
      break;
2522
139
    }
2523
157
    return false;
2524
205
  case RISCV_SLTU:
2525
205
    if (MCInst_getNumOperands(MI) == 3 &&
2526
205
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2527
205
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2528
205
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2529
152
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2530
152
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2531
      // (SLTU GPR:$rd, X0, GPR:$rs)
2532
152
      AsmString = "snez $\x01, $\x03";
2533
152
      break;
2534
152
    }
2535
53
    return false;
2536
188
  case RISCV_SUB:
2537
188
    if (MCInst_getNumOperands(MI) == 3 &&
2538
188
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2539
188
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2540
188
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2541
101
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2542
101
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2543
      // (SUB GPR:$rd, X0, GPR:$rs)
2544
101
      AsmString = "neg $\x01, $\x03";
2545
101
      break;
2546
101
    }
2547
87
    return false;
2548
114
  case RISCV_SUBW:
2549
114
    if (MCInst_getNumOperands(MI) == 3 &&
2550
114
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2551
114
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2552
114
        MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2553
70
        MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2554
70
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2555
      // (SUBW GPR:$rd, X0, GPR:$rs)
2556
70
      AsmString = "negw $\x01, $\x03";
2557
70
      break;
2558
70
    }
2559
44
    return false;
2560
455
  case RISCV_XORI:
2561
455
    if (MCInst_getNumOperands(MI) == 3 &&
2562
455
        MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2563
455
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2564
455
        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2565
455
        MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2566
455
        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2567
455
        MCOperand_getImm(MCInst_getOperand(MI, 2)) == -1) {
2568
      // (XORI GPR:$rd, GPR:$rs, -1)
2569
91
      AsmString = "not $\x01, $\x02";
2570
91
      break;
2571
91
    }
2572
364
    return false;
2573
165k
  }
2574
2575
45.3k
  AsmStringLen = strlen(AsmString);
2576
45.3k
  if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2577
0
    tmpString = cs_strdup(AsmString);
2578
45.3k
  else
2579
45.3k
    tmpString = memcpy(tmpString, AsmString, 1 + AsmStringLen);
2580
2581
304k
  while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
2582
260k
         AsmString[I] != '$' && AsmString[I] != '\0')
2583
259k
    ++I;
2584
45.3k
  tmpString[I] = 0;
2585
45.3k
  SStream_concat0(OS, tmpString);
2586
45.3k
  if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2587
    /* Free the possible cs_strdup() memory. PR#1424. */
2588
0
    cs_mem_free(tmpString);
2589
45.3k
#undef ASMSTRING_CONTAIN_SIZE
2590
2591
45.3k
  if (AsmString[I] != '\0') {
2592
44.2k
    if (AsmString[I] == ' ' || AsmString[I] == '\t') {
2593
44.2k
      SStream_concat0(OS, " ");
2594
44.2k
      ++I;
2595
44.2k
    }
2596
184k
    do {
2597
184k
      if (AsmString[I] == '$') {
2598
90.8k
        ++I;
2599
90.8k
        if (AsmString[I] == (char)0xff) {
2600
15.3k
          ++I;
2601
15.3k
          int OpIdx = AsmString[I++] - 1;
2602
15.3k
          int PrintMethodIdx = AsmString[I++] - 1;
2603
15.3k
          printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
2604
15.3k
        } else
2605
75.5k
          printOperand(MI, (unsigned)(AsmString[I++]) - 1, OS);
2606
93.2k
      } else {
2607
93.2k
        SStream_concat1(OS, AsmString[I++]);
2608
93.2k
      }
2609
184k
    } while (AsmString[I] != '\0');
2610
44.2k
  }
2611
2612
45.3k
  return true;
2613
165k
}
2614
2615
static void printCustomAliasOperand(
2616
         MCInst *MI, unsigned OpIdx,
2617
         unsigned PrintMethodIdx,
2618
15.3k
         SStream *OS) {
2619
15.3k
  switch (PrintMethodIdx) {
2620
0
  default:
2621
0
    CS_ASSERT(0 && "Unknown PrintMethod kind");
2622
0
    break;
2623
15.3k
  case 0:
2624
15.3k
    printCSRSystemRegister(MI, OpIdx, OS);
2625
15.3k
    break;
2626
15.3k
  }
2627
15.3k
}
2628
2629
static bool RISCVInstPrinterValidateMCOperand(MCOperand *MCOp,
2630
1.59k
                  unsigned PredicateIndex) {
2631
  // TODO: need some constant untils operate the MCOperand,
2632
  // but current CAPSTONE doesn't have.
2633
  // So, We just return true
2634
1.59k
  return true;
2635
2636
#if 0
2637
  switch (PredicateIndex) {
2638
  default:
2639
    llvm_unreachable("Unknown MCOperandPredicate kind");
2640
    break;
2641
  case 1: {
2642
2643
    int64_t Imm;
2644
    if (MCOp.evaluateAsConstantImm(Imm))
2645
      return isShiftedInt<12, 1>(Imm);
2646
    return MCOp.isBareSymbolRef();
2647
  
2648
    }
2649
  case 2: {
2650
2651
    int64_t Imm;
2652
    if (MCOp.evaluateAsConstantImm(Imm))
2653
      return isShiftedInt<20, 1>(Imm);
2654
    return MCOp.isBareSymbolRef();
2655
  
2656
    }
2657
  }
2658
#endif
2659
1.59k
}
2660
2661
#endif // PRINT_ALIAS_INSTR