Coverage Report

Created: 2025-12-14 06:36

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