Coverage Report

Created: 2026-09-28 06:34

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