Coverage Report

Created: 2026-04-12 06:30

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