Coverage Report

Created: 2025-11-16 06:38

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