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