Coverage Report

Created: 2023-09-25 06:24

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