• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|*                                                                            *|
3|* Assembly Writer Source Fragment                                            *|
4|*                                                                            *|
5|* Automatically generated file, do not edit!                                 *|
6|*                                                                            *|
7\*===----------------------------------------------------------------------===*/
8
9/// printInstruction - This method is automatically generated by tablegen
10/// from the instruction set description.
11void RISCVInstPrinter::printInstruction(const MCInst *MI, uint64_t Address, const MCSubtargetInfo &STI, raw_ostream &O) {
12  static const char AsmStrs[] = {
13  /* 0 */ 'c', '.', 's', 'r', 'a', 'i', '6', '4', 9, 0,
14  /* 10 */ 'c', '.', 's', 'l', 'l', 'i', '6', '4', 9, 0,
15  /* 20 */ 'c', '.', 's', 'r', 'l', 'i', '6', '4', 9, 0,
16  /* 30 */ 'l', 'l', 'a', 9, 0,
17  /* 35 */ 's', 'f', 'e', 'n', 'c', 'e', '.', 'v', 'm', 'a', 9, 0,
18  /* 47 */ 's', 'r', 'a', 9, 0,
19  /* 52 */ 'l', 'b', 9, 0,
20  /* 56 */ 's', 'b', 9, 0,
21  /* 60 */ 'c', '.', 's', 'u', 'b', 9, 0,
22  /* 67 */ 'a', 'u', 'i', 'p', 'c', 9, 0,
23  /* 74 */ 'c', 's', 'r', 'r', 'c', 9, 0,
24  /* 81 */ 'f', 's', 'u', 'b', '.', 'd', 9, 0,
25  /* 89 */ 'f', 'm', 's', 'u', 'b', '.', 'd', 9, 0,
26  /* 98 */ 'f', 'n', 'm', 's', 'u', 'b', '.', 'd', 9, 0,
27  /* 108 */ 's', 'c', '.', 'd', 9, 0,
28  /* 114 */ 'f', 'a', 'd', 'd', '.', 'd', 9, 0,
29  /* 122 */ 'f', 'm', 'a', 'd', 'd', '.', 'd', 9, 0,
30  /* 131 */ 'f', 'n', 'm', 'a', 'd', 'd', '.', 'd', 9, 0,
31  /* 141 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', 9, 0,
32  /* 151 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', 9, 0,
33  /* 161 */ 'f', 'l', 'e', '.', 'd', 9, 0,
34  /* 168 */ 'f', 's', 'g', 'n', 'j', '.', 'd', 9, 0,
35  /* 177 */ 'f', 'c', 'v', 't', '.', 'l', '.', 'd', 9, 0,
36  /* 187 */ 'f', 'm', 'u', 'l', '.', 'd', 9, 0,
37  /* 195 */ 'f', 'm', 'i', 'n', '.', 'd', 9, 0,
38  /* 203 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', 9, 0,
39  /* 213 */ 'f', 's', 'g', 'n', 'j', 'n', '.', 'd', 9, 0,
40  /* 223 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', 9, 0,
41  /* 234 */ 'f', 'e', 'q', '.', 'd', 9, 0,
42  /* 241 */ 'l', 'r', '.', 'd', 9, 0,
43  /* 247 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', 9, 0,
44  /* 256 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', 9, 0,
45  /* 266 */ 'f', 'c', 'v', 't', '.', 's', '.', 'd', 9, 0,
46  /* 276 */ 'f', 'c', 'l', 'a', 's', 's', '.', 'd', 9, 0,
47  /* 286 */ 'f', 'l', 't', '.', 'd', 9, 0,
48  /* 293 */ 'f', 's', 'q', 'r', 't', '.', 'd', 9, 0,
49  /* 302 */ 'f', 'c', 'v', 't', '.', 'l', 'u', '.', 'd', 9, 0,
50  /* 313 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', 9, 0,
51  /* 324 */ 'f', 'c', 'v', 't', '.', 'w', 'u', '.', 'd', 9, 0,
52  /* 335 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', 9, 0,
53  /* 346 */ 'f', 'd', 'i', 'v', '.', 'd', 9, 0,
54  /* 354 */ 'f', 'c', 'v', 't', '.', 'w', '.', 'd', 9, 0,
55  /* 364 */ 'f', 'm', 'v', '.', 'x', '.', 'd', 9, 0,
56  /* 373 */ 'f', 'm', 'a', 'x', '.', 'd', 9, 0,
57  /* 381 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', 9, 0,
58  /* 391 */ 'f', 's', 'g', 'n', 'j', 'x', '.', 'd', 9, 0,
59  /* 401 */ 'c', '.', 'a', 'd', 'd', 9, 0,
60  /* 408 */ 'l', 'a', '.', 't', 'l', 's', '.', 'g', 'd', 9, 0,
61  /* 419 */ 'c', '.', 'l', 'd', 9, 0,
62  /* 425 */ 'c', '.', 'f', 'l', 'd', 9, 0,
63  /* 432 */ 'c', '.', 'a', 'n', 'd', 9, 0,
64  /* 439 */ 'c', '.', 's', 'd', 9, 0,
65  /* 445 */ 'c', '.', 'f', 's', 'd', 9, 0,
66  /* 452 */ 'f', 'e', 'n', 'c', 'e', 9, 0,
67  /* 459 */ 'b', 'g', 'e', 9, 0,
68  /* 464 */ 'l', 'a', '.', 't', 'l', 's', '.', 'i', 'e', 9, 0,
69  /* 475 */ 'b', 'n', 'e', 9, 0,
70  /* 480 */ 'm', 'u', 'l', 'h', 9, 0,
71  /* 486 */ 's', 'h', 9, 0,
72  /* 490 */ 'f', 'e', 'n', 'c', 'e', '.', 'i', 9, 0,
73  /* 499 */ 'c', '.', 's', 'r', 'a', 'i', 9, 0,
74  /* 507 */ 'c', 's', 'r', 'r', 'c', 'i', 9, 0,
75  /* 515 */ 'c', '.', 'a', 'd', 'd', 'i', 9, 0,
76  /* 523 */ 'c', '.', 'a', 'n', 'd', 'i', 9, 0,
77  /* 531 */ 'w', 'f', 'i', 9, 0,
78  /* 536 */ 'c', '.', 'l', 'i', 9, 0,
79  /* 542 */ 'c', '.', 's', 'l', 'l', 'i', 9, 0,
80  /* 550 */ 'c', '.', 's', 'r', 'l', 'i', 9, 0,
81  /* 558 */ 'x', 'o', 'r', 'i', 9, 0,
82  /* 564 */ 'c', 's', 'r', 'r', 's', 'i', 9, 0,
83  /* 572 */ 's', 'l', 't', 'i', 9, 0,
84  /* 578 */ 'c', '.', 'l', 'u', 'i', 9, 0,
85  /* 585 */ 'c', 's', 'r', 'r', 'w', 'i', 9, 0,
86  /* 593 */ 'c', '.', 'j', 9, 0,
87  /* 598 */ 'c', '.', 'e', 'b', 'r', 'e', 'a', 'k', 9, 0,
88  /* 608 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'l', 9, 0,
89  /* 618 */ 'f', 'c', 'v', 't', '.', 's', '.', 'l', 9, 0,
90  /* 628 */ 'c', '.', 'j', 'a', 'l', 9, 0,
91  /* 635 */ 't', 'a', 'i', 'l', 9, 0,
92  /* 641 */ 'e', 'c', 'a', 'l', 'l', 9, 0,
93  /* 648 */ 's', 'l', 'l', 9, 0,
94  /* 653 */ 's', 'c', '.', 'd', '.', 'r', 'l', 9, 0,
95  /* 662 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'r', 'l', 9, 0,
96  /* 675 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'r', 'l', 9, 0,
97  /* 688 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'r', 'l', 9, 0,
98  /* 701 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'r', 'l', 9, 0,
99  /* 715 */ 'l', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
100  /* 724 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
101  /* 736 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
102  /* 749 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'r', 'l', 9, 0,
103  /* 763 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'r', 'l', 9, 0,
104  /* 777 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'r', 'l', 9, 0,
105  /* 790 */ 's', 'c', '.', 'w', '.', 'r', 'l', 9, 0,
106  /* 799 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'r', 'l', 9, 0,
107  /* 812 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'r', 'l', 9, 0,
108  /* 825 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'r', 'l', 9, 0,
109  /* 838 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'r', 'l', 9, 0,
110  /* 852 */ 'l', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
111  /* 861 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
112  /* 873 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
113  /* 886 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'r', 'l', 9, 0,
114  /* 900 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'r', 'l', 9, 0,
115  /* 914 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'r', 'l', 9, 0,
116  /* 927 */ 's', 'c', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
117  /* 938 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
118  /* 953 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
119  /* 968 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
120  /* 983 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
121  /* 999 */ 'l', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
122  /* 1010 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
123  /* 1024 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
124  /* 1039 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
125  /* 1055 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
126  /* 1071 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
127  /* 1086 */ 's', 'c', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
128  /* 1097 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
129  /* 1112 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
130  /* 1127 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
131  /* 1142 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
132  /* 1158 */ 'l', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
133  /* 1169 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
134  /* 1183 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
135  /* 1198 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
136  /* 1214 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
137  /* 1230 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
138  /* 1245 */ 's', 'r', 'l', 9, 0,
139  /* 1250 */ 'm', 'u', 'l', 9, 0,
140  /* 1255 */ 'r', 'e', 'm', 9, 0,
141  /* 1260 */ 'c', '.', 'a', 'd', 'd', 'i', '4', 's', 'p', 'n', 9, 0,
142  /* 1272 */ 'f', 'e', 'n', 'c', 'e', '.', 't', 's', 'o', 9, 0,
143  /* 1283 */ 'c', '.', 'u', 'n', 'i', 'm', 'p', 9, 0,
144  /* 1292 */ 'c', '.', 'n', 'o', 'p', 9, 0,
145  /* 1299 */ 'c', '.', 'a', 'd', 'd', 'i', '1', '6', 's', 'p', 9, 0,
146  /* 1311 */ 'c', '.', 'l', 'd', 's', 'p', 9, 0,
147  /* 1319 */ 'c', '.', 'f', 'l', 'd', 's', 'p', 9, 0,
148  /* 1328 */ 'c', '.', 's', 'd', 's', 'p', 9, 0,
149  /* 1336 */ 'c', '.', 'f', 's', 'd', 's', 'p', 9, 0,
150  /* 1345 */ 'c', '.', 'l', 'w', 's', 'p', 9, 0,
151  /* 1353 */ 'c', '.', 'f', 'l', 'w', 's', 'p', 9, 0,
152  /* 1362 */ 'c', '.', 's', 'w', 's', 'p', 9, 0,
153  /* 1370 */ 'c', '.', 'f', 's', 'w', 's', 'p', 9, 0,
154  /* 1379 */ 's', 'c', '.', 'd', '.', 'a', 'q', 9, 0,
155  /* 1388 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'a', 'q', 9, 0,
156  /* 1401 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'a', 'q', 9, 0,
157  /* 1414 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'a', 'q', 9, 0,
158  /* 1427 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'a', 'q', 9, 0,
159  /* 1441 */ 'l', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
160  /* 1450 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
161  /* 1462 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
162  /* 1475 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'a', 'q', 9, 0,
163  /* 1489 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'a', 'q', 9, 0,
164  /* 1503 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'a', 'q', 9, 0,
165  /* 1516 */ 's', 'c', '.', 'w', '.', 'a', 'q', 9, 0,
166  /* 1525 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'a', 'q', 9, 0,
167  /* 1538 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'a', 'q', 9, 0,
168  /* 1551 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'a', 'q', 9, 0,
169  /* 1564 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'a', 'q', 9, 0,
170  /* 1578 */ 'l', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
171  /* 1587 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
172  /* 1599 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
173  /* 1612 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'a', 'q', 9, 0,
174  /* 1626 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'a', 'q', 9, 0,
175  /* 1640 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'a', 'q', 9, 0,
176  /* 1653 */ 'b', 'e', 'q', 9, 0,
177  /* 1658 */ 'c', '.', 'j', 'r', 9, 0,
178  /* 1664 */ 'c', '.', 'j', 'a', 'l', 'r', 9, 0,
179  /* 1672 */ 'c', '.', 'o', 'r', 9, 0,
180  /* 1678 */ 'c', '.', 'x', 'o', 'r', 9, 0,
181  /* 1685 */ 'f', 's', 'u', 'b', '.', 's', 9, 0,
182  /* 1693 */ 'f', 'm', 's', 'u', 'b', '.', 's', 9, 0,
183  /* 1702 */ 'f', 'n', 'm', 's', 'u', 'b', '.', 's', 9, 0,
184  /* 1712 */ 'f', 'c', 'v', 't', '.', 'd', '.', 's', 9, 0,
185  /* 1722 */ 'f', 'a', 'd', 'd', '.', 's', 9, 0,
186  /* 1730 */ 'f', 'm', 'a', 'd', 'd', '.', 's', 9, 0,
187  /* 1739 */ 'f', 'n', 'm', 'a', 'd', 'd', '.', 's', 9, 0,
188  /* 1749 */ 'f', 'l', 'e', '.', 's', 9, 0,
189  /* 1756 */ 'f', 's', 'g', 'n', 'j', '.', 's', 9, 0,
190  /* 1765 */ 'f', 'c', 'v', 't', '.', 'l', '.', 's', 9, 0,
191  /* 1775 */ 'f', 'm', 'u', 'l', '.', 's', 9, 0,
192  /* 1783 */ 'f', 'm', 'i', 'n', '.', 's', 9, 0,
193  /* 1791 */ 'f', 's', 'g', 'n', 'j', 'n', '.', 's', 9, 0,
194  /* 1801 */ 'f', 'e', 'q', '.', 's', 9, 0,
195  /* 1808 */ 'f', 'c', 'l', 'a', 's', 's', '.', 's', 9, 0,
196  /* 1818 */ 'f', 'l', 't', '.', 's', 9, 0,
197  /* 1825 */ 'f', 's', 'q', 'r', 't', '.', 's', 9, 0,
198  /* 1834 */ 'f', 'c', 'v', 't', '.', 'l', 'u', '.', 's', 9, 0,
199  /* 1845 */ 'f', 'c', 'v', 't', '.', 'w', 'u', '.', 's', 9, 0,
200  /* 1856 */ 'f', 'd', 'i', 'v', '.', 's', 9, 0,
201  /* 1864 */ 'f', 'c', 'v', 't', '.', 'w', '.', 's', 9, 0,
202  /* 1874 */ 'f', 'm', 'a', 'x', '.', 's', 9, 0,
203  /* 1882 */ 'f', 's', 'g', 'n', 'j', 'x', '.', 's', 9, 0,
204  /* 1892 */ 'c', 's', 'r', 'r', 's', 9, 0,
205  /* 1899 */ 'm', 'r', 'e', 't', 9, 0,
206  /* 1905 */ 's', 'r', 'e', 't', 9, 0,
207  /* 1911 */ 'u', 'r', 'e', 't', 9, 0,
208  /* 1917 */ 'b', 'l', 't', 9, 0,
209  /* 1922 */ 's', 'l', 't', 9, 0,
210  /* 1927 */ 'l', 'b', 'u', 9, 0,
211  /* 1932 */ 'b', 'g', 'e', 'u', 9, 0,
212  /* 1938 */ 'm', 'u', 'l', 'h', 'u', 9, 0,
213  /* 1945 */ 's', 'l', 't', 'i', 'u', 9, 0,
214  /* 1952 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'l', 'u', 9, 0,
215  /* 1963 */ 'f', 'c', 'v', 't', '.', 's', '.', 'l', 'u', 9, 0,
216  /* 1974 */ 'r', 'e', 'm', 'u', 9, 0,
217  /* 1980 */ 'm', 'u', 'l', 'h', 's', 'u', 9, 0,
218  /* 1988 */ 'b', 'l', 't', 'u', 9, 0,
219  /* 1994 */ 's', 'l', 't', 'u', 9, 0,
220  /* 2000 */ 'd', 'i', 'v', 'u', 9, 0,
221  /* 2006 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'w', 'u', 9, 0,
222  /* 2017 */ 'f', 'c', 'v', 't', '.', 's', '.', 'w', 'u', 9, 0,
223  /* 2028 */ 'l', 'w', 'u', 9, 0,
224  /* 2033 */ 'd', 'i', 'v', 9, 0,
225  /* 2038 */ 'c', '.', 'm', 'v', 9, 0,
226  /* 2044 */ 's', 'c', '.', 'w', 9, 0,
227  /* 2050 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'w', 9, 0,
228  /* 2060 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', 9, 0,
229  /* 2070 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', 9, 0,
230  /* 2080 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', 9, 0,
231  /* 2090 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', 9, 0,
232  /* 2101 */ 'l', 'r', '.', 'w', 9, 0,
233  /* 2107 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', 9, 0,
234  /* 2116 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', 9, 0,
235  /* 2126 */ 'f', 'c', 'v', 't', '.', 's', '.', 'w', 9, 0,
236  /* 2136 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', 9, 0,
237  /* 2147 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', 9, 0,
238  /* 2158 */ 'f', 'm', 'v', '.', 'x', '.', 'w', 9, 0,
239  /* 2167 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', 9, 0,
240  /* 2177 */ 's', 'r', 'a', 'w', 9, 0,
241  /* 2183 */ 'c', '.', 's', 'u', 'b', 'w', 9, 0,
242  /* 2191 */ 'c', '.', 'a', 'd', 'd', 'w', 9, 0,
243  /* 2199 */ 's', 'r', 'a', 'i', 'w', 9, 0,
244  /* 2206 */ 'c', '.', 'a', 'd', 'd', 'i', 'w', 9, 0,
245  /* 2215 */ 's', 'l', 'l', 'i', 'w', 9, 0,
246  /* 2222 */ 's', 'r', 'l', 'i', 'w', 9, 0,
247  /* 2229 */ 'c', '.', 'l', 'w', 9, 0,
248  /* 2235 */ 'c', '.', 'f', 'l', 'w', 9, 0,
249  /* 2242 */ 's', 'l', 'l', 'w', 9, 0,
250  /* 2248 */ 's', 'r', 'l', 'w', 9, 0,
251  /* 2254 */ 'm', 'u', 'l', 'w', 9, 0,
252  /* 2260 */ 'r', 'e', 'm', 'w', 9, 0,
253  /* 2266 */ 'c', 's', 'r', 'r', 'w', 9, 0,
254  /* 2273 */ 'c', '.', 's', 'w', 9, 0,
255  /* 2279 */ 'c', '.', 'f', 's', 'w', 9, 0,
256  /* 2286 */ 'r', 'e', 'm', 'u', 'w', 9, 0,
257  /* 2293 */ 'd', 'i', 'v', 'u', 'w', 9, 0,
258  /* 2300 */ 'd', 'i', 'v', 'w', 9, 0,
259  /* 2306 */ 'f', 'm', 'v', '.', 'd', '.', 'x', 9, 0,
260  /* 2315 */ 'f', 'm', 'v', '.', 'w', '.', 'x', 9, 0,
261  /* 2324 */ 'c', '.', 'b', 'n', 'e', 'z', 9, 0,
262  /* 2332 */ 'c', '.', 'b', 'e', 'q', 'z', 9, 0,
263  /* 2340 */ '#', 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,
264  /* 2371 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'y', 'p', 'e', 'd', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
265  /* 2395 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
266  /* 2420 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
267  /* 2443 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
268  /* 2466 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
269  /* 2488 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
270  /* 2501 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
271  /* 2508 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
272  /* 2518 */ 'D', 'B', 'G', '_', 'L', 'A', 'B', 'E', 'L', 0,
273  /* 2528 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
274  /* 2543 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
275  };
276
277  static const uint16_t OpInfo0[] = {
278    0U,	// PHI
279    0U,	// INLINEASM
280    0U,	// INLINEASM_BR
281    0U,	// CFI_INSTRUCTION
282    0U,	// EH_LABEL
283    0U,	// GC_LABEL
284    0U,	// ANNOTATION_LABEL
285    0U,	// KILL
286    0U,	// EXTRACT_SUBREG
287    0U,	// INSERT_SUBREG
288    0U,	// IMPLICIT_DEF
289    0U,	// SUBREG_TO_REG
290    0U,	// COPY_TO_REGCLASS
291    2509U,	// DBG_VALUE
292    2519U,	// DBG_LABEL
293    0U,	// REG_SEQUENCE
294    0U,	// COPY
295    2502U,	// BUNDLE
296    2529U,	// LIFETIME_START
297    2489U,	// LIFETIME_END
298    0U,	// STACKMAP
299    2544U,	// FENTRY_CALL
300    0U,	// PATCHPOINT
301    0U,	// LOAD_STACK_GUARD
302    0U,	// STATEPOINT
303    0U,	// LOCAL_ESCAPE
304    0U,	// FAULTING_OP
305    0U,	// PATCHABLE_OP
306    2421U,	// PATCHABLE_FUNCTION_ENTER
307    2341U,	// PATCHABLE_RET
308    2467U,	// PATCHABLE_FUNCTION_EXIT
309    2444U,	// PATCHABLE_TAIL_CALL
310    2396U,	// PATCHABLE_EVENT_CALL
311    2372U,	// PATCHABLE_TYPED_EVENT_CALL
312    0U,	// ICALL_BRANCH_FUNNEL
313    0U,	// G_ADD
314    0U,	// G_SUB
315    0U,	// G_MUL
316    0U,	// G_SDIV
317    0U,	// G_UDIV
318    0U,	// G_SREM
319    0U,	// G_UREM
320    0U,	// G_AND
321    0U,	// G_OR
322    0U,	// G_XOR
323    0U,	// G_IMPLICIT_DEF
324    0U,	// G_PHI
325    0U,	// G_FRAME_INDEX
326    0U,	// G_GLOBAL_VALUE
327    0U,	// G_EXTRACT
328    0U,	// G_UNMERGE_VALUES
329    0U,	// G_INSERT
330    0U,	// G_MERGE_VALUES
331    0U,	// G_BUILD_VECTOR
332    0U,	// G_BUILD_VECTOR_TRUNC
333    0U,	// G_CONCAT_VECTORS
334    0U,	// G_PTRTOINT
335    0U,	// G_INTTOPTR
336    0U,	// G_BITCAST
337    0U,	// G_INTRINSIC_TRUNC
338    0U,	// G_INTRINSIC_ROUND
339    0U,	// G_READCYCLECOUNTER
340    0U,	// G_LOAD
341    0U,	// G_SEXTLOAD
342    0U,	// G_ZEXTLOAD
343    0U,	// G_INDEXED_LOAD
344    0U,	// G_INDEXED_SEXTLOAD
345    0U,	// G_INDEXED_ZEXTLOAD
346    0U,	// G_STORE
347    0U,	// G_INDEXED_STORE
348    0U,	// G_ATOMIC_CMPXCHG_WITH_SUCCESS
349    0U,	// G_ATOMIC_CMPXCHG
350    0U,	// G_ATOMICRMW_XCHG
351    0U,	// G_ATOMICRMW_ADD
352    0U,	// G_ATOMICRMW_SUB
353    0U,	// G_ATOMICRMW_AND
354    0U,	// G_ATOMICRMW_NAND
355    0U,	// G_ATOMICRMW_OR
356    0U,	// G_ATOMICRMW_XOR
357    0U,	// G_ATOMICRMW_MAX
358    0U,	// G_ATOMICRMW_MIN
359    0U,	// G_ATOMICRMW_UMAX
360    0U,	// G_ATOMICRMW_UMIN
361    0U,	// G_ATOMICRMW_FADD
362    0U,	// G_ATOMICRMW_FSUB
363    0U,	// G_FENCE
364    0U,	// G_BRCOND
365    0U,	// G_BRINDIRECT
366    0U,	// G_INTRINSIC
367    0U,	// G_INTRINSIC_W_SIDE_EFFECTS
368    0U,	// G_ANYEXT
369    0U,	// G_TRUNC
370    0U,	// G_CONSTANT
371    0U,	// G_FCONSTANT
372    0U,	// G_VASTART
373    0U,	// G_VAARG
374    0U,	// G_SEXT
375    0U,	// G_SEXT_INREG
376    0U,	// G_ZEXT
377    0U,	// G_SHL
378    0U,	// G_LSHR
379    0U,	// G_ASHR
380    0U,	// G_ICMP
381    0U,	// G_FCMP
382    0U,	// G_SELECT
383    0U,	// G_UADDO
384    0U,	// G_UADDE
385    0U,	// G_USUBO
386    0U,	// G_USUBE
387    0U,	// G_SADDO
388    0U,	// G_SADDE
389    0U,	// G_SSUBO
390    0U,	// G_SSUBE
391    0U,	// G_UMULO
392    0U,	// G_SMULO
393    0U,	// G_UMULH
394    0U,	// G_SMULH
395    0U,	// G_FADD
396    0U,	// G_FSUB
397    0U,	// G_FMUL
398    0U,	// G_FMA
399    0U,	// G_FMAD
400    0U,	// G_FDIV
401    0U,	// G_FREM
402    0U,	// G_FPOW
403    0U,	// G_FEXP
404    0U,	// G_FEXP2
405    0U,	// G_FLOG
406    0U,	// G_FLOG2
407    0U,	// G_FLOG10
408    0U,	// G_FNEG
409    0U,	// G_FPEXT
410    0U,	// G_FPTRUNC
411    0U,	// G_FPTOSI
412    0U,	// G_FPTOUI
413    0U,	// G_SITOFP
414    0U,	// G_UITOFP
415    0U,	// G_FABS
416    0U,	// G_FCOPYSIGN
417    0U,	// G_FCANONICALIZE
418    0U,	// G_FMINNUM
419    0U,	// G_FMAXNUM
420    0U,	// G_FMINNUM_IEEE
421    0U,	// G_FMAXNUM_IEEE
422    0U,	// G_FMINIMUM
423    0U,	// G_FMAXIMUM
424    0U,	// G_PTR_ADD
425    0U,	// G_PTR_MASK
426    0U,	// G_SMIN
427    0U,	// G_SMAX
428    0U,	// G_UMIN
429    0U,	// G_UMAX
430    0U,	// G_BR
431    0U,	// G_BRJT
432    0U,	// G_INSERT_VECTOR_ELT
433    0U,	// G_EXTRACT_VECTOR_ELT
434    0U,	// G_SHUFFLE_VECTOR
435    0U,	// G_CTTZ
436    0U,	// G_CTTZ_ZERO_UNDEF
437    0U,	// G_CTLZ
438    0U,	// G_CTLZ_ZERO_UNDEF
439    0U,	// G_CTPOP
440    0U,	// G_BSWAP
441    0U,	// G_BITREVERSE
442    0U,	// G_FCEIL
443    0U,	// G_FCOS
444    0U,	// G_FSIN
445    0U,	// G_FSQRT
446    0U,	// G_FFLOOR
447    0U,	// G_FRINT
448    0U,	// G_FNEARBYINT
449    0U,	// G_ADDRSPACE_CAST
450    0U,	// G_BLOCK_ADDR
451    0U,	// G_JUMP_TABLE
452    0U,	// G_DYN_STACKALLOC
453    0U,	// G_READ_REGISTER
454    0U,	// G_WRITE_REGISTER
455    9U,	// ADJCALLSTACKDOWN
456    9U,	// ADJCALLSTACKUP
457    9U,	// BuildPairF64Pseudo
458    4500U,	// PseudoAddTPRel
459    9U,	// PseudoAtomicLoadNand32
460    9U,	// PseudoAtomicLoadNand64
461    9U,	// PseudoBR
462    9U,	// PseudoBRIND
463    21123U,	// PseudoCALL
464    9U,	// PseudoCALLIndirect
465    4739U,	// PseudoCALLReg
466    9U,	// PseudoCmpXchg32
467    9U,	// PseudoCmpXchg64
468    37292U,	// PseudoFLD
469    39102U,	// PseudoFLW
470    37312U,	// PseudoFSD
471    39146U,	// PseudoFSW
472    4128U,	// PseudoLA
473    4505U,	// PseudoLA_TLS_GD
474    4561U,	// PseudoLA_TLS_IE
475    4149U,	// PseudoLB
476    6024U,	// PseudoLBU
477    4518U,	// PseudoLD
478    4579U,	// PseudoLH
479    6037U,	// PseudoLHU
480    4635U,	// PseudoLI
481    4127U,	// PseudoLLA
482    6328U,	// PseudoLW
483    6125U,	// PseudoLWU
484    9U,	// PseudoMaskedAtomicLoadAdd32
485    9U,	// PseudoMaskedAtomicLoadMax32
486    9U,	// PseudoMaskedAtomicLoadMin32
487    9U,	// PseudoMaskedAtomicLoadNand32
488    9U,	// PseudoMaskedAtomicLoadSub32
489    9U,	// PseudoMaskedAtomicLoadUMax32
490    9U,	// PseudoMaskedAtomicLoadUMin32
491    9U,	// PseudoMaskedAtomicSwap32
492    9U,	// PseudoMaskedCmpXchg32
493    9U,	// PseudoRET
494    36921U,	// PseudoSB
495    37306U,	// PseudoSD
496    37351U,	// PseudoSH
497    39140U,	// PseudoSW
498    21116U,	// PseudoTAIL
499    9U,	// PseudoTAILIndirect
500    9U,	// ReadCycleWide
501    9U,	// Select_FPR32_Using_CC_GPR
502    9U,	// Select_FPR64_Using_CC_GPR
503    9U,	// Select_GPR_Using_CC_GPR
504    9U,	// SplitF64Pseudo
505    4500U,	// ADD
506    4614U,	// ADDI
507    6305U,	// ADDIW
508    6290U,	// ADDW
509    37006U,	// AMOADD_D
510    38253U,	// AMOADD_D_AQ
511    37803U,	// AMOADD_D_AQ_RL
512    37527U,	// AMOADD_D_RL
513    38925U,	// AMOADD_W
514    38390U,	// AMOADD_W_AQ
515    37962U,	// AMOADD_W_AQ_RL
516    37664U,	// AMOADD_W_RL
517    37016U,	// AMOAND_D
518    38266U,	// AMOAND_D_AQ
519    37818U,	// AMOAND_D_AQ_RL
520    37540U,	// AMOAND_D_RL
521    38935U,	// AMOAND_W
522    38403U,	// AMOAND_W_AQ
523    37977U,	// AMOAND_W_AQ_RL
524    37677U,	// AMOAND_W_RL
525    37200U,	// AMOMAXU_D
526    38354U,	// AMOMAXU_D_AQ
527    37920U,	// AMOMAXU_D_AQ_RL
528    37628U,	// AMOMAXU_D_RL
529    39012U,	// AMOMAXU_W
530    38491U,	// AMOMAXU_W_AQ
531    38079U,	// AMOMAXU_W_AQ_RL
532    37765U,	// AMOMAXU_W_RL
533    37246U,	// AMOMAX_D
534    38368U,	// AMOMAX_D_AQ
535    37936U,	// AMOMAX_D_AQ_RL
536    37642U,	// AMOMAX_D_RL
537    39032U,	// AMOMAX_W
538    38505U,	// AMOMAX_W_AQ
539    38095U,	// AMOMAX_W_AQ_RL
540    37779U,	// AMOMAX_W_RL
541    37178U,	// AMOMINU_D
542    38340U,	// AMOMINU_D_AQ
543    37904U,	// AMOMINU_D_AQ_RL
544    37614U,	// AMOMINU_D_RL
545    39001U,	// AMOMINU_W
546    38477U,	// AMOMINU_W_AQ
547    38063U,	// AMOMINU_W_AQ_RL
548    37751U,	// AMOMINU_W_RL
549    37068U,	// AMOMIN_D
550    38279U,	// AMOMIN_D_AQ
551    37833U,	// AMOMIN_D_AQ_RL
552    37553U,	// AMOMIN_D_RL
553    38945U,	// AMOMIN_W
554    38416U,	// AMOMIN_W_AQ
555    37992U,	// AMOMIN_W_AQ_RL
556    37690U,	// AMOMIN_W_RL
557    37112U,	// AMOOR_D
558    38315U,	// AMOOR_D_AQ
559    37875U,	// AMOOR_D_AQ_RL
560    37589U,	// AMOOR_D_RL
561    38972U,	// AMOOR_W
562    38452U,	// AMOOR_W_AQ
563    38034U,	// AMOOR_W_AQ_RL
564    37726U,	// AMOOR_W_RL
565    37088U,	// AMOSWAP_D
566    38292U,	// AMOSWAP_D_AQ
567    37848U,	// AMOSWAP_D_AQ_RL
568    37566U,	// AMOSWAP_D_RL
569    38955U,	// AMOSWAP_W
570    38429U,	// AMOSWAP_W_AQ
571    38007U,	// AMOSWAP_W_AQ_RL
572    37703U,	// AMOSWAP_W_RL
573    37121U,	// AMOXOR_D
574    38327U,	// AMOXOR_D_AQ
575    37889U,	// AMOXOR_D_AQ_RL
576    37601U,	// AMOXOR_D_RL
577    38981U,	// AMOXOR_W
578    38464U,	// AMOXOR_W_AQ
579    38048U,	// AMOXOR_W_AQ_RL
580    37738U,	// AMOXOR_W_RL
581    4531U,	// AND
582    4622U,	// ANDI
583    4164U,	// AUIPC
584    5750U,	// BEQ
585    4556U,	// BGE
586    6029U,	// BGEU
587    6014U,	// BLT
588    6085U,	// BLTU
589    4572U,	// BNE
590    4171U,	// CSRRC
591    4604U,	// CSRRCI
592    5989U,	// CSRRS
593    4661U,	// CSRRSI
594    6363U,	// CSRRW
595    4682U,	// CSRRWI
596    41362U,	// C_ADD
597    41476U,	// C_ADDI
598    42260U,	// C_ADDI16SP
599    5357U,	// C_ADDI4SPN
600    43167U,	// C_ADDIW
601    41476U,	// C_ADDI_HINT_IMM_ZERO
602    41476U,	// C_ADDI_HINT_X0
603    41476U,	// C_ADDI_NOP
604    43152U,	// C_ADDW
605    41362U,	// C_ADD_HINT
606    41393U,	// C_AND
607    41484U,	// C_ANDI
608    6429U,	// C_BEQZ
609    6421U,	// C_BNEZ
610    599U,	// C_EBREAK
611    37290U,	// C_FLD
612    38184U,	// C_FLDSP
613    39100U,	// C_FLW
614    38218U,	// C_FLWSP
615    37310U,	// C_FSD
616    38201U,	// C_FSDSP
617    39144U,	// C_FSW
618    38235U,	// C_FSWSP
619    21074U,	// C_J
620    21109U,	// C_JAL
621    22145U,	// C_JALR
622    22139U,	// C_JR
623    37284U,	// C_LD
624    38176U,	// C_LDSP
625    4633U,	// C_LI
626    4633U,	// C_LI_HINT
627    4675U,	// C_LUI
628    4675U,	// C_LUI_HINT
629    39094U,	// C_LW
630    38210U,	// C_LWSP
631    6135U,	// C_MV
632    6135U,	// C_MV_HINT
633    1293U,	// C_NOP
634    21773U,	// C_NOP_HINT
635    42633U,	// C_OR
636    37304U,	// C_SD
637    38193U,	// C_SDSP
638    41503U,	// C_SLLI
639    24587U,	// C_SLLI64_HINT
640    41503U,	// C_SLLI_HINT
641    41460U,	// C_SRAI
642    24577U,	// C_SRAI64_HINT
643    41511U,	// C_SRLI
644    24597U,	// C_SRLI64_HINT
645    41021U,	// C_SUB
646    43144U,	// C_SUBW
647    39138U,	// C_SW
648    38227U,	// C_SWSP
649    1284U,	// C_UNIMP
650    42639U,	// C_XOR
651    6130U,	// DIV
652    6097U,	// DIVU
653    6390U,	// DIVUW
654    6397U,	// DIVW
655    601U,	// EBREAK
656    642U,	// ECALL
657    4211U,	// FADD_D
658    5819U,	// FADD_S
659    4373U,	// FCLASS_D
660    5905U,	// FCLASS_S
661    4705U,	// FCVT_D_L
662    6049U,	// FCVT_D_LU
663    5809U,	// FCVT_D_S
664    6147U,	// FCVT_D_W
665    6103U,	// FCVT_D_WU
666    4399U,	// FCVT_LU_D
667    5931U,	// FCVT_LU_S
668    4274U,	// FCVT_L_D
669    5862U,	// FCVT_L_S
670    4363U,	// FCVT_S_D
671    4715U,	// FCVT_S_L
672    6060U,	// FCVT_S_LU
673    6223U,	// FCVT_S_W
674    6114U,	// FCVT_S_WU
675    4421U,	// FCVT_WU_D
676    5942U,	// FCVT_WU_S
677    4451U,	// FCVT_W_D
678    5961U,	// FCVT_W_S
679    4443U,	// FDIV_D
680    5953U,	// FDIV_S
681    12741U,	// FENCE
682    491U,	// FENCE_I
683    1273U,	// FENCE_TSO
684    4331U,	// FEQ_D
685    5898U,	// FEQ_S
686    37292U,	// FLD
687    4258U,	// FLE_D
688    5846U,	// FLE_S
689    4383U,	// FLT_D
690    5915U,	// FLT_S
691    39102U,	// FLW
692    4219U,	// FMADD_D
693    5827U,	// FMADD_S
694    4470U,	// FMAX_D
695    5971U,	// FMAX_S
696    4292U,	// FMIN_D
697    5880U,	// FMIN_S
698    4186U,	// FMSUB_D
699    5790U,	// FMSUB_S
700    4284U,	// FMUL_D
701    5872U,	// FMUL_S
702    6403U,	// FMV_D_X
703    6412U,	// FMV_W_X
704    4461U,	// FMV_X_D
705    6255U,	// FMV_X_W
706    4228U,	// FNMADD_D
707    5836U,	// FNMADD_S
708    4195U,	// FNMSUB_D
709    5799U,	// FNMSUB_S
710    37312U,	// FSD
711    4310U,	// FSGNJN_D
712    5888U,	// FSGNJN_S
713    4488U,	// FSGNJX_D
714    5979U,	// FSGNJX_S
715    4265U,	// FSGNJ_D
716    5853U,	// FSGNJ_S
717    4390U,	// FSQRT_D
718    5922U,	// FSQRT_S
719    4178U,	// FSUB_D
720    5782U,	// FSUB_S
721    39146U,	// FSW
722    4727U,	// JAL
723    38531U,	// JALR
724    36917U,	// LB
725    38792U,	// LBU
726    37286U,	// LD
727    37347U,	// LH
728    38805U,	// LHU
729    37106U,	// LR_D
730    38306U,	// LR_D_AQ
731    37864U,	// LR_D_AQ_RL
732    37580U,	// LR_D_RL
733    38966U,	// LR_W
734    38443U,	// LR_W_AQ
735    38023U,	// LR_W_AQ_RL
736    37717U,	// LR_W_RL
737    4677U,	// LUI
738    39096U,	// LW
739    38893U,	// LWU
740    1900U,	// MRET
741    5347U,	// MUL
742    4577U,	// MULH
743    6077U,	// MULHSU
744    6035U,	// MULHU
745    6351U,	// MULW
746    5771U,	// OR
747    4656U,	// ORI
748    5352U,	// REM
749    6071U,	// REMU
750    6383U,	// REMUW
751    6357U,	// REMW
752    36921U,	// SB
753    36973U,	// SC_D
754    38244U,	// SC_D_AQ
755    37792U,	// SC_D_AQ_RL
756    37518U,	// SC_D_RL
757    38909U,	// SC_W
758    38381U,	// SC_W_AQ
759    37951U,	// SC_W_AQ_RL
760    37655U,	// SC_W_RL
761    37306U,	// SD
762    4132U,	// SFENCE_VMA
763    37351U,	// SH
764    4745U,	// SLL
765    4641U,	// SLLI
766    6312U,	// SLLIW
767    6339U,	// SLLW
768    6019U,	// SLT
769    4669U,	// SLTI
770    6042U,	// SLTIU
771    6091U,	// SLTU
772    4144U,	// SRA
773    4598U,	// SRAI
774    6296U,	// SRAIW
775    6274U,	// SRAW
776    1906U,	// SRET
777    5342U,	// SRL
778    4649U,	// SRLI
779    6319U,	// SRLIW
780    6345U,	// SRLW
781    4159U,	// SUB
782    6282U,	// SUBW
783    39140U,	// SW
784    1286U,	// UNIMP
785    1912U,	// URET
786    532U,	// WFI
787    5777U,	// XOR
788    4655U,	// XORI
789  };
790
791  static const uint8_t OpInfo1[] = {
792    0U,	// PHI
793    0U,	// INLINEASM
794    0U,	// INLINEASM_BR
795    0U,	// CFI_INSTRUCTION
796    0U,	// EH_LABEL
797    0U,	// GC_LABEL
798    0U,	// ANNOTATION_LABEL
799    0U,	// KILL
800    0U,	// EXTRACT_SUBREG
801    0U,	// INSERT_SUBREG
802    0U,	// IMPLICIT_DEF
803    0U,	// SUBREG_TO_REG
804    0U,	// COPY_TO_REGCLASS
805    0U,	// DBG_VALUE
806    0U,	// DBG_LABEL
807    0U,	// REG_SEQUENCE
808    0U,	// COPY
809    0U,	// BUNDLE
810    0U,	// LIFETIME_START
811    0U,	// LIFETIME_END
812    0U,	// STACKMAP
813    0U,	// FENTRY_CALL
814    0U,	// PATCHPOINT
815    0U,	// LOAD_STACK_GUARD
816    0U,	// STATEPOINT
817    0U,	// LOCAL_ESCAPE
818    0U,	// FAULTING_OP
819    0U,	// PATCHABLE_OP
820    0U,	// PATCHABLE_FUNCTION_ENTER
821    0U,	// PATCHABLE_RET
822    0U,	// PATCHABLE_FUNCTION_EXIT
823    0U,	// PATCHABLE_TAIL_CALL
824    0U,	// PATCHABLE_EVENT_CALL
825    0U,	// PATCHABLE_TYPED_EVENT_CALL
826    0U,	// ICALL_BRANCH_FUNNEL
827    0U,	// G_ADD
828    0U,	// G_SUB
829    0U,	// G_MUL
830    0U,	// G_SDIV
831    0U,	// G_UDIV
832    0U,	// G_SREM
833    0U,	// G_UREM
834    0U,	// G_AND
835    0U,	// G_OR
836    0U,	// G_XOR
837    0U,	// G_IMPLICIT_DEF
838    0U,	// G_PHI
839    0U,	// G_FRAME_INDEX
840    0U,	// G_GLOBAL_VALUE
841    0U,	// G_EXTRACT
842    0U,	// G_UNMERGE_VALUES
843    0U,	// G_INSERT
844    0U,	// G_MERGE_VALUES
845    0U,	// G_BUILD_VECTOR
846    0U,	// G_BUILD_VECTOR_TRUNC
847    0U,	// G_CONCAT_VECTORS
848    0U,	// G_PTRTOINT
849    0U,	// G_INTTOPTR
850    0U,	// G_BITCAST
851    0U,	// G_INTRINSIC_TRUNC
852    0U,	// G_INTRINSIC_ROUND
853    0U,	// G_READCYCLECOUNTER
854    0U,	// G_LOAD
855    0U,	// G_SEXTLOAD
856    0U,	// G_ZEXTLOAD
857    0U,	// G_INDEXED_LOAD
858    0U,	// G_INDEXED_SEXTLOAD
859    0U,	// G_INDEXED_ZEXTLOAD
860    0U,	// G_STORE
861    0U,	// G_INDEXED_STORE
862    0U,	// G_ATOMIC_CMPXCHG_WITH_SUCCESS
863    0U,	// G_ATOMIC_CMPXCHG
864    0U,	// G_ATOMICRMW_XCHG
865    0U,	// G_ATOMICRMW_ADD
866    0U,	// G_ATOMICRMW_SUB
867    0U,	// G_ATOMICRMW_AND
868    0U,	// G_ATOMICRMW_NAND
869    0U,	// G_ATOMICRMW_OR
870    0U,	// G_ATOMICRMW_XOR
871    0U,	// G_ATOMICRMW_MAX
872    0U,	// G_ATOMICRMW_MIN
873    0U,	// G_ATOMICRMW_UMAX
874    0U,	// G_ATOMICRMW_UMIN
875    0U,	// G_ATOMICRMW_FADD
876    0U,	// G_ATOMICRMW_FSUB
877    0U,	// G_FENCE
878    0U,	// G_BRCOND
879    0U,	// G_BRINDIRECT
880    0U,	// G_INTRINSIC
881    0U,	// G_INTRINSIC_W_SIDE_EFFECTS
882    0U,	// G_ANYEXT
883    0U,	// G_TRUNC
884    0U,	// G_CONSTANT
885    0U,	// G_FCONSTANT
886    0U,	// G_VASTART
887    0U,	// G_VAARG
888    0U,	// G_SEXT
889    0U,	// G_SEXT_INREG
890    0U,	// G_ZEXT
891    0U,	// G_SHL
892    0U,	// G_LSHR
893    0U,	// G_ASHR
894    0U,	// G_ICMP
895    0U,	// G_FCMP
896    0U,	// G_SELECT
897    0U,	// G_UADDO
898    0U,	// G_UADDE
899    0U,	// G_USUBO
900    0U,	// G_USUBE
901    0U,	// G_SADDO
902    0U,	// G_SADDE
903    0U,	// G_SSUBO
904    0U,	// G_SSUBE
905    0U,	// G_UMULO
906    0U,	// G_SMULO
907    0U,	// G_UMULH
908    0U,	// G_SMULH
909    0U,	// G_FADD
910    0U,	// G_FSUB
911    0U,	// G_FMUL
912    0U,	// G_FMA
913    0U,	// G_FMAD
914    0U,	// G_FDIV
915    0U,	// G_FREM
916    0U,	// G_FPOW
917    0U,	// G_FEXP
918    0U,	// G_FEXP2
919    0U,	// G_FLOG
920    0U,	// G_FLOG2
921    0U,	// G_FLOG10
922    0U,	// G_FNEG
923    0U,	// G_FPEXT
924    0U,	// G_FPTRUNC
925    0U,	// G_FPTOSI
926    0U,	// G_FPTOUI
927    0U,	// G_SITOFP
928    0U,	// G_UITOFP
929    0U,	// G_FABS
930    0U,	// G_FCOPYSIGN
931    0U,	// G_FCANONICALIZE
932    0U,	// G_FMINNUM
933    0U,	// G_FMAXNUM
934    0U,	// G_FMINNUM_IEEE
935    0U,	// G_FMAXNUM_IEEE
936    0U,	// G_FMINIMUM
937    0U,	// G_FMAXIMUM
938    0U,	// G_PTR_ADD
939    0U,	// G_PTR_MASK
940    0U,	// G_SMIN
941    0U,	// G_SMAX
942    0U,	// G_UMIN
943    0U,	// G_UMAX
944    0U,	// G_BR
945    0U,	// G_BRJT
946    0U,	// G_INSERT_VECTOR_ELT
947    0U,	// G_EXTRACT_VECTOR_ELT
948    0U,	// G_SHUFFLE_VECTOR
949    0U,	// G_CTTZ
950    0U,	// G_CTTZ_ZERO_UNDEF
951    0U,	// G_CTLZ
952    0U,	// G_CTLZ_ZERO_UNDEF
953    0U,	// G_CTPOP
954    0U,	// G_BSWAP
955    0U,	// G_BITREVERSE
956    0U,	// G_FCEIL
957    0U,	// G_FCOS
958    0U,	// G_FSIN
959    0U,	// G_FSQRT
960    0U,	// G_FFLOOR
961    0U,	// G_FRINT
962    0U,	// G_FNEARBYINT
963    0U,	// G_ADDRSPACE_CAST
964    0U,	// G_BLOCK_ADDR
965    0U,	// G_JUMP_TABLE
966    0U,	// G_DYN_STACKALLOC
967    0U,	// G_READ_REGISTER
968    0U,	// G_WRITE_REGISTER
969    0U,	// ADJCALLSTACKDOWN
970    0U,	// ADJCALLSTACKUP
971    0U,	// BuildPairF64Pseudo
972    0U,	// PseudoAddTPRel
973    0U,	// PseudoAtomicLoadNand32
974    0U,	// PseudoAtomicLoadNand64
975    0U,	// PseudoBR
976    0U,	// PseudoBRIND
977    0U,	// PseudoCALL
978    0U,	// PseudoCALLIndirect
979    2U,	// PseudoCALLReg
980    0U,	// PseudoCmpXchg32
981    0U,	// PseudoCmpXchg64
982    8U,	// PseudoFLD
983    8U,	// PseudoFLW
984    8U,	// PseudoFSD
985    8U,	// PseudoFSW
986    2U,	// PseudoLA
987    2U,	// PseudoLA_TLS_GD
988    2U,	// PseudoLA_TLS_IE
989    2U,	// PseudoLB
990    2U,	// PseudoLBU
991    2U,	// PseudoLD
992    2U,	// PseudoLH
993    2U,	// PseudoLHU
994    2U,	// PseudoLI
995    2U,	// PseudoLLA
996    2U,	// PseudoLW
997    2U,	// PseudoLWU
998    0U,	// PseudoMaskedAtomicLoadAdd32
999    0U,	// PseudoMaskedAtomicLoadMax32
1000    0U,	// PseudoMaskedAtomicLoadMin32
1001    0U,	// PseudoMaskedAtomicLoadNand32
1002    0U,	// PseudoMaskedAtomicLoadSub32
1003    0U,	// PseudoMaskedAtomicLoadUMax32
1004    0U,	// PseudoMaskedAtomicLoadUMin32
1005    0U,	// PseudoMaskedAtomicSwap32
1006    0U,	// PseudoMaskedCmpXchg32
1007    0U,	// PseudoRET
1008    8U,	// PseudoSB
1009    8U,	// PseudoSD
1010    8U,	// PseudoSH
1011    8U,	// PseudoSW
1012    0U,	// PseudoTAIL
1013    0U,	// PseudoTAILIndirect
1014    0U,	// ReadCycleWide
1015    0U,	// Select_FPR32_Using_CC_GPR
1016    0U,	// Select_FPR64_Using_CC_GPR
1017    0U,	// Select_GPR_Using_CC_GPR
1018    0U,	// SplitF64Pseudo
1019    32U,	// ADD
1020    32U,	// ADDI
1021    32U,	// ADDIW
1022    32U,	// ADDW
1023    16U,	// AMOADD_D
1024    16U,	// AMOADD_D_AQ
1025    16U,	// AMOADD_D_AQ_RL
1026    16U,	// AMOADD_D_RL
1027    16U,	// AMOADD_W
1028    16U,	// AMOADD_W_AQ
1029    16U,	// AMOADD_W_AQ_RL
1030    16U,	// AMOADD_W_RL
1031    16U,	// AMOAND_D
1032    16U,	// AMOAND_D_AQ
1033    16U,	// AMOAND_D_AQ_RL
1034    16U,	// AMOAND_D_RL
1035    16U,	// AMOAND_W
1036    16U,	// AMOAND_W_AQ
1037    16U,	// AMOAND_W_AQ_RL
1038    16U,	// AMOAND_W_RL
1039    16U,	// AMOMAXU_D
1040    16U,	// AMOMAXU_D_AQ
1041    16U,	// AMOMAXU_D_AQ_RL
1042    16U,	// AMOMAXU_D_RL
1043    16U,	// AMOMAXU_W
1044    16U,	// AMOMAXU_W_AQ
1045    16U,	// AMOMAXU_W_AQ_RL
1046    16U,	// AMOMAXU_W_RL
1047    16U,	// AMOMAX_D
1048    16U,	// AMOMAX_D_AQ
1049    16U,	// AMOMAX_D_AQ_RL
1050    16U,	// AMOMAX_D_RL
1051    16U,	// AMOMAX_W
1052    16U,	// AMOMAX_W_AQ
1053    16U,	// AMOMAX_W_AQ_RL
1054    16U,	// AMOMAX_W_RL
1055    16U,	// AMOMINU_D
1056    16U,	// AMOMINU_D_AQ
1057    16U,	// AMOMINU_D_AQ_RL
1058    16U,	// AMOMINU_D_RL
1059    16U,	// AMOMINU_W
1060    16U,	// AMOMINU_W_AQ
1061    16U,	// AMOMINU_W_AQ_RL
1062    16U,	// AMOMINU_W_RL
1063    16U,	// AMOMIN_D
1064    16U,	// AMOMIN_D_AQ
1065    16U,	// AMOMIN_D_AQ_RL
1066    16U,	// AMOMIN_D_RL
1067    16U,	// AMOMIN_W
1068    16U,	// AMOMIN_W_AQ
1069    16U,	// AMOMIN_W_AQ_RL
1070    16U,	// AMOMIN_W_RL
1071    16U,	// AMOOR_D
1072    16U,	// AMOOR_D_AQ
1073    16U,	// AMOOR_D_AQ_RL
1074    16U,	// AMOOR_D_RL
1075    16U,	// AMOOR_W
1076    16U,	// AMOOR_W_AQ
1077    16U,	// AMOOR_W_AQ_RL
1078    16U,	// AMOOR_W_RL
1079    16U,	// AMOSWAP_D
1080    16U,	// AMOSWAP_D_AQ
1081    16U,	// AMOSWAP_D_AQ_RL
1082    16U,	// AMOSWAP_D_RL
1083    16U,	// AMOSWAP_W
1084    16U,	// AMOSWAP_W_AQ
1085    16U,	// AMOSWAP_W_AQ_RL
1086    16U,	// AMOSWAP_W_RL
1087    16U,	// AMOXOR_D
1088    16U,	// AMOXOR_D_AQ
1089    16U,	// AMOXOR_D_AQ_RL
1090    16U,	// AMOXOR_D_RL
1091    16U,	// AMOXOR_W
1092    16U,	// AMOXOR_W_AQ
1093    16U,	// AMOXOR_W_AQ_RL
1094    16U,	// AMOXOR_W_RL
1095    32U,	// AND
1096    32U,	// ANDI
1097    2U,	// AUIPC
1098    32U,	// BEQ
1099    32U,	// BGE
1100    32U,	// BGEU
1101    32U,	// BLT
1102    32U,	// BLTU
1103    32U,	// BNE
1104    1U,	// CSRRC
1105    1U,	// CSRRCI
1106    1U,	// CSRRS
1107    1U,	// CSRRSI
1108    1U,	// CSRRW
1109    1U,	// CSRRWI
1110    2U,	// C_ADD
1111    2U,	// C_ADDI
1112    2U,	// C_ADDI16SP
1113    32U,	// C_ADDI4SPN
1114    2U,	// C_ADDIW
1115    2U,	// C_ADDI_HINT_IMM_ZERO
1116    2U,	// C_ADDI_HINT_X0
1117    2U,	// C_ADDI_NOP
1118    2U,	// C_ADDW
1119    2U,	// C_ADD_HINT
1120    2U,	// C_AND
1121    2U,	// C_ANDI
1122    2U,	// C_BEQZ
1123    2U,	// C_BNEZ
1124    0U,	// C_EBREAK
1125    4U,	// C_FLD
1126    4U,	// C_FLDSP
1127    4U,	// C_FLW
1128    4U,	// C_FLWSP
1129    4U,	// C_FSD
1130    4U,	// C_FSDSP
1131    4U,	// C_FSW
1132    4U,	// C_FSWSP
1133    0U,	// C_J
1134    0U,	// C_JAL
1135    0U,	// C_JALR
1136    0U,	// C_JR
1137    4U,	// C_LD
1138    4U,	// C_LDSP
1139    2U,	// C_LI
1140    2U,	// C_LI_HINT
1141    2U,	// C_LUI
1142    2U,	// C_LUI_HINT
1143    4U,	// C_LW
1144    4U,	// C_LWSP
1145    2U,	// C_MV
1146    2U,	// C_MV_HINT
1147    0U,	// C_NOP
1148    0U,	// C_NOP_HINT
1149    2U,	// C_OR
1150    4U,	// C_SD
1151    4U,	// C_SDSP
1152    2U,	// C_SLLI
1153    0U,	// C_SLLI64_HINT
1154    2U,	// C_SLLI_HINT
1155    2U,	// C_SRAI
1156    0U,	// C_SRAI64_HINT
1157    2U,	// C_SRLI
1158    0U,	// C_SRLI64_HINT
1159    2U,	// C_SUB
1160    2U,	// C_SUBW
1161    4U,	// C_SW
1162    4U,	// C_SWSP
1163    0U,	// C_UNIMP
1164    2U,	// C_XOR
1165    32U,	// DIV
1166    32U,	// DIVU
1167    32U,	// DIVUW
1168    32U,	// DIVW
1169    0U,	// EBREAK
1170    0U,	// ECALL
1171    64U,	// FADD_D
1172    64U,	// FADD_S
1173    2U,	// FCLASS_D
1174    2U,	// FCLASS_S
1175    24U,	// FCVT_D_L
1176    24U,	// FCVT_D_LU
1177    2U,	// FCVT_D_S
1178    2U,	// FCVT_D_W
1179    2U,	// FCVT_D_WU
1180    24U,	// FCVT_LU_D
1181    24U,	// FCVT_LU_S
1182    24U,	// FCVT_L_D
1183    24U,	// FCVT_L_S
1184    24U,	// FCVT_S_D
1185    24U,	// FCVT_S_L
1186    24U,	// FCVT_S_LU
1187    24U,	// FCVT_S_W
1188    24U,	// FCVT_S_WU
1189    24U,	// FCVT_WU_D
1190    24U,	// FCVT_WU_S
1191    24U,	// FCVT_W_D
1192    24U,	// FCVT_W_S
1193    64U,	// FDIV_D
1194    64U,	// FDIV_S
1195    0U,	// FENCE
1196    0U,	// FENCE_I
1197    0U,	// FENCE_TSO
1198    32U,	// FEQ_D
1199    32U,	// FEQ_S
1200    4U,	// FLD
1201    32U,	// FLE_D
1202    32U,	// FLE_S
1203    32U,	// FLT_D
1204    32U,	// FLT_S
1205    4U,	// FLW
1206    128U,	// FMADD_D
1207    128U,	// FMADD_S
1208    32U,	// FMAX_D
1209    32U,	// FMAX_S
1210    32U,	// FMIN_D
1211    32U,	// FMIN_S
1212    128U,	// FMSUB_D
1213    128U,	// FMSUB_S
1214    64U,	// FMUL_D
1215    64U,	// FMUL_S
1216    2U,	// FMV_D_X
1217    2U,	// FMV_W_X
1218    2U,	// FMV_X_D
1219    2U,	// FMV_X_W
1220    128U,	// FNMADD_D
1221    128U,	// FNMADD_S
1222    128U,	// FNMSUB_D
1223    128U,	// FNMSUB_S
1224    4U,	// FSD
1225    32U,	// FSGNJN_D
1226    32U,	// FSGNJN_S
1227    32U,	// FSGNJX_D
1228    32U,	// FSGNJX_S
1229    32U,	// FSGNJ_D
1230    32U,	// FSGNJ_S
1231    24U,	// FSQRT_D
1232    24U,	// FSQRT_S
1233    64U,	// FSUB_D
1234    64U,	// FSUB_S
1235    4U,	// FSW
1236    2U,	// JAL
1237    4U,	// JALR
1238    4U,	// LB
1239    4U,	// LBU
1240    4U,	// LD
1241    4U,	// LH
1242    4U,	// LHU
1243    1U,	// LR_D
1244    1U,	// LR_D_AQ
1245    1U,	// LR_D_AQ_RL
1246    1U,	// LR_D_RL
1247    1U,	// LR_W
1248    1U,	// LR_W_AQ
1249    1U,	// LR_W_AQ_RL
1250    1U,	// LR_W_RL
1251    2U,	// LUI
1252    4U,	// LW
1253    4U,	// LWU
1254    0U,	// MRET
1255    32U,	// MUL
1256    32U,	// MULH
1257    32U,	// MULHSU
1258    32U,	// MULHU
1259    32U,	// MULW
1260    32U,	// OR
1261    32U,	// ORI
1262    32U,	// REM
1263    32U,	// REMU
1264    32U,	// REMUW
1265    32U,	// REMW
1266    4U,	// SB
1267    16U,	// SC_D
1268    16U,	// SC_D_AQ
1269    16U,	// SC_D_AQ_RL
1270    16U,	// SC_D_RL
1271    16U,	// SC_W
1272    16U,	// SC_W_AQ
1273    16U,	// SC_W_AQ_RL
1274    16U,	// SC_W_RL
1275    4U,	// SD
1276    2U,	// SFENCE_VMA
1277    4U,	// SH
1278    32U,	// SLL
1279    32U,	// SLLI
1280    32U,	// SLLIW
1281    32U,	// SLLW
1282    32U,	// SLT
1283    32U,	// SLTI
1284    32U,	// SLTIU
1285    32U,	// SLTU
1286    32U,	// SRA
1287    32U,	// SRAI
1288    32U,	// SRAIW
1289    32U,	// SRAW
1290    0U,	// SRET
1291    32U,	// SRL
1292    32U,	// SRLI
1293    32U,	// SRLIW
1294    32U,	// SRLW
1295    32U,	// SUB
1296    32U,	// SUBW
1297    4U,	// SW
1298    0U,	// UNIMP
1299    0U,	// URET
1300    0U,	// WFI
1301    32U,	// XOR
1302    32U,	// XORI
1303  };
1304
1305  O << "\t";
1306
1307  // Emit the opcode for the instruction.
1308  uint32_t Bits = 0;
1309  Bits |= OpInfo0[MI->getOpcode()] << 0;
1310  Bits |= OpInfo1[MI->getOpcode()] << 16;
1311  assert(Bits != 0 && "Cannot print this instruction.");
1312  O << AsmStrs+(Bits & 4095)-1;
1313
1314
1315  // Fragment 0 encoded into 2 bits for 4 unique commands.
1316  switch ((Bits >> 12) & 3) {
1317  default: llvm_unreachable("Invalid command number.");
1318  case 0:
1319    // DBG_VALUE, DBG_LABEL, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CAL...
1320    return;
1321    break;
1322  case 1:
1323    // PseudoAddTPRel, PseudoCALL, PseudoCALLReg, PseudoFLD, PseudoFLW, Pseud...
1324    printOperand(MI, 0, STI, O);
1325    break;
1326  case 2:
1327    // C_ADD, C_ADDI, C_ADDI16SP, C_ADDIW, C_ADDI_HINT_IMM_ZERO, C_ADDI_HINT_...
1328    printOperand(MI, 1, STI, O);
1329    break;
1330  case 3:
1331    // FENCE
1332    printFenceArg(MI, 0, STI, O);
1333    O << ", ";
1334    printFenceArg(MI, 1, STI, O);
1335    return;
1336    break;
1337  }
1338
1339
1340  // Fragment 1 encoded into 1 bits for 2 unique commands.
1341  if ((Bits >> 14) & 1) {
1342    // PseudoCALL, PseudoTAIL, C_J, C_JAL, C_JALR, C_JR, C_NOP_HINT, C_SLLI64...
1343    return;
1344  } else {
1345    // PseudoAddTPRel, PseudoCALLReg, PseudoFLD, PseudoFLW, PseudoFSD, Pseudo...
1346    O << ", ";
1347  }
1348
1349
1350  // Fragment 2 encoded into 2 bits for 4 unique commands.
1351  switch ((Bits >> 15) & 3) {
1352  default: llvm_unreachable("Invalid command number.");
1353  case 0:
1354    // PseudoAddTPRel, PseudoCALLReg, PseudoLA, PseudoLA_TLS_GD, PseudoLA_TLS...
1355    printOperand(MI, 1, STI, O);
1356    break;
1357  case 1:
1358    // PseudoFLD, PseudoFLW, PseudoFSD, PseudoFSW, PseudoSB, PseudoSD, Pseudo...
1359    printOperand(MI, 2, STI, O);
1360    break;
1361  case 2:
1362    // CSRRC, CSRRCI, CSRRS, CSRRSI, CSRRW, CSRRWI
1363    printCSRSystemRegister(MI, 1, STI, O);
1364    O << ", ";
1365    printOperand(MI, 2, STI, O);
1366    return;
1367    break;
1368  case 3:
1369    // LR_D, LR_D_AQ, LR_D_AQ_RL, LR_D_RL, LR_W, LR_W_AQ, LR_W_AQ_RL, LR_W_RL
1370    printAtomicMemOp(MI, 1, STI, O);
1371    return;
1372    break;
1373  }
1374
1375
1376  // Fragment 3 encoded into 2 bits for 3 unique commands.
1377  switch ((Bits >> 17) & 3) {
1378  default: llvm_unreachable("Invalid command number.");
1379  case 0:
1380    // PseudoAddTPRel, PseudoFLD, PseudoFLW, PseudoFSD, PseudoFSW, PseudoSB, ...
1381    O << ", ";
1382    break;
1383  case 1:
1384    // PseudoCALLReg, PseudoLA, PseudoLA_TLS_GD, PseudoLA_TLS_IE, PseudoLB, P...
1385    return;
1386    break;
1387  case 2:
1388    // C_FLD, C_FLDSP, C_FLW, C_FLWSP, C_FSD, C_FSDSP, C_FSW, C_FSWSP, C_LD, ...
1389    O << '(';
1390    printOperand(MI, 1, STI, O);
1391    O << ')';
1392    return;
1393    break;
1394  }
1395
1396
1397  // Fragment 4 encoded into 2 bits for 4 unique commands.
1398  switch ((Bits >> 19) & 3) {
1399  default: llvm_unreachable("Invalid command number.");
1400  case 0:
1401    // PseudoAddTPRel, ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT...
1402    printOperand(MI, 2, STI, O);
1403    break;
1404  case 1:
1405    // PseudoFLD, PseudoFLW, PseudoFSD, PseudoFSW, PseudoSB, PseudoSD, Pseudo...
1406    printOperand(MI, 1, STI, O);
1407    return;
1408    break;
1409  case 2:
1410    // AMOADD_D, AMOADD_D_AQ, AMOADD_D_AQ_RL, AMOADD_D_RL, AMOADD_W, AMOADD_W...
1411    printAtomicMemOp(MI, 1, STI, O);
1412    return;
1413    break;
1414  case 3:
1415    // FCVT_D_L, FCVT_D_LU, FCVT_LU_D, FCVT_LU_S, FCVT_L_D, FCVT_L_S, FCVT_S_...
1416    printFRMArg(MI, 2, STI, O);
1417    return;
1418    break;
1419  }
1420
1421
1422  // Fragment 5 encoded into 1 bits for 2 unique commands.
1423  if ((Bits >> 21) & 1) {
1424    // ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT, BLTU, BNE, C_A...
1425    return;
1426  } else {
1427    // PseudoAddTPRel, FADD_D, FADD_S, FDIV_D, FDIV_S, FMADD_D, FMADD_S, FMSU...
1428    O << ", ";
1429  }
1430
1431
1432  // Fragment 6 encoded into 1 bits for 2 unique commands.
1433  if ((Bits >> 22) & 1) {
1434    // FADD_D, FADD_S, FDIV_D, FDIV_S, FMUL_D, FMUL_S, FSUB_D, FSUB_S
1435    printFRMArg(MI, 3, STI, O);
1436    return;
1437  } else {
1438    // PseudoAddTPRel, FMADD_D, FMADD_S, FMSUB_D, FMSUB_S, FNMADD_D, FNMADD_S...
1439    printOperand(MI, 3, STI, O);
1440  }
1441
1442
1443  // Fragment 7 encoded into 1 bits for 2 unique commands.
1444  if ((Bits >> 23) & 1) {
1445    // FMADD_D, FMADD_S, FMSUB_D, FMSUB_S, FNMADD_D, FNMADD_S, FNMSUB_D, FNMS...
1446    O << ", ";
1447    printFRMArg(MI, 4, STI, O);
1448    return;
1449  } else {
1450    // PseudoAddTPRel
1451    return;
1452  }
1453
1454}
1455
1456
1457/// getRegisterName - This method is automatically generated by tblgen
1458/// from the register set description.  This returns the assembler name
1459/// for the specified register.
1460const char *RISCVInstPrinter::
1461getRegisterName(unsigned RegNo, unsigned AltIdx) {
1462  assert(RegNo && RegNo < 97 && "Invalid register number!");
1463
1464  static const char AsmStrsABIRegAltName[] = {
1465  /* 0 */ 'f', 's', '1', '0', 0,
1466  /* 5 */ 'f', 't', '1', '0', 0,
1467  /* 10 */ 'f', 'a', '0', 0,
1468  /* 14 */ 'f', 's', '0', 0,
1469  /* 18 */ 'f', 't', '0', 0,
1470  /* 22 */ 'f', 's', '1', '1', 0,
1471  /* 27 */ 'f', 't', '1', '1', 0,
1472  /* 32 */ 'f', 'a', '1', 0,
1473  /* 36 */ 'f', 's', '1', 0,
1474  /* 40 */ 'f', 't', '1', 0,
1475  /* 44 */ 'f', 'a', '2', 0,
1476  /* 48 */ 'f', 's', '2', 0,
1477  /* 52 */ 'f', 't', '2', 0,
1478  /* 56 */ 'f', 'a', '3', 0,
1479  /* 60 */ 'f', 's', '3', 0,
1480  /* 64 */ 'f', 't', '3', 0,
1481  /* 68 */ 'f', 'a', '4', 0,
1482  /* 72 */ 'f', 's', '4', 0,
1483  /* 76 */ 'f', 't', '4', 0,
1484  /* 80 */ 'f', 'a', '5', 0,
1485  /* 84 */ 'f', 's', '5', 0,
1486  /* 88 */ 'f', 't', '5', 0,
1487  /* 92 */ 'f', 'a', '6', 0,
1488  /* 96 */ 'f', 's', '6', 0,
1489  /* 100 */ 'f', 't', '6', 0,
1490  /* 104 */ 'f', 'a', '7', 0,
1491  /* 108 */ 'f', 's', '7', 0,
1492  /* 112 */ 'f', 't', '7', 0,
1493  /* 116 */ 'f', 's', '8', 0,
1494  /* 120 */ 'f', 't', '8', 0,
1495  /* 124 */ 'f', 's', '9', 0,
1496  /* 128 */ 'f', 't', '9', 0,
1497  /* 132 */ 'r', 'a', 0,
1498  /* 135 */ 'z', 'e', 'r', 'o', 0,
1499  /* 140 */ 'g', 'p', 0,
1500  /* 143 */ 's', 'p', 0,
1501  /* 146 */ 't', 'p', 0,
1502  };
1503
1504  static const uint8_t RegAsmOffsetABIRegAltName[] = {
1505    135, 132, 143, 140, 146, 19, 41, 53, 15, 37, 11, 33, 45, 57,
1506    69, 81, 93, 105, 49, 61, 73, 85, 97, 109, 117, 125, 1, 23,
1507    65, 77, 89, 101, 18, 40, 52, 64, 76, 88, 100, 112, 14, 36,
1508    10, 32, 44, 56, 68, 80, 92, 104, 48, 60, 72, 84, 96, 108,
1509    116, 124, 0, 22, 120, 128, 5, 27, 18, 40, 52, 64, 76, 88,
1510    100, 112, 14, 36, 10, 32, 44, 56, 68, 80, 92, 104, 48, 60,
1511    72, 84, 96, 108, 116, 124, 0, 22, 120, 128, 5, 27,
1512  };
1513
1514  static const char AsmStrsNoRegAltName[] = {
1515  /* 0 */ 'f', '1', '0', 0,
1516  /* 4 */ 'x', '1', '0', 0,
1517  /* 8 */ 'f', '2', '0', 0,
1518  /* 12 */ 'x', '2', '0', 0,
1519  /* 16 */ 'f', '3', '0', 0,
1520  /* 20 */ 'x', '3', '0', 0,
1521  /* 24 */ 'f', '0', 0,
1522  /* 27 */ 'x', '0', 0,
1523  /* 30 */ 'f', '1', '1', 0,
1524  /* 34 */ 'x', '1', '1', 0,
1525  /* 38 */ 'f', '2', '1', 0,
1526  /* 42 */ 'x', '2', '1', 0,
1527  /* 46 */ 'f', '3', '1', 0,
1528  /* 50 */ 'x', '3', '1', 0,
1529  /* 54 */ 'f', '1', 0,
1530  /* 57 */ 'x', '1', 0,
1531  /* 60 */ 'f', '1', '2', 0,
1532  /* 64 */ 'x', '1', '2', 0,
1533  /* 68 */ 'f', '2', '2', 0,
1534  /* 72 */ 'x', '2', '2', 0,
1535  /* 76 */ 'f', '2', 0,
1536  /* 79 */ 'x', '2', 0,
1537  /* 82 */ 'f', '1', '3', 0,
1538  /* 86 */ 'x', '1', '3', 0,
1539  /* 90 */ 'f', '2', '3', 0,
1540  /* 94 */ 'x', '2', '3', 0,
1541  /* 98 */ 'f', '3', 0,
1542  /* 101 */ 'x', '3', 0,
1543  /* 104 */ 'f', '1', '4', 0,
1544  /* 108 */ 'x', '1', '4', 0,
1545  /* 112 */ 'f', '2', '4', 0,
1546  /* 116 */ 'x', '2', '4', 0,
1547  /* 120 */ 'f', '4', 0,
1548  /* 123 */ 'x', '4', 0,
1549  /* 126 */ 'f', '1', '5', 0,
1550  /* 130 */ 'x', '1', '5', 0,
1551  /* 134 */ 'f', '2', '5', 0,
1552  /* 138 */ 'x', '2', '5', 0,
1553  /* 142 */ 'f', '5', 0,
1554  /* 145 */ 'x', '5', 0,
1555  /* 148 */ 'f', '1', '6', 0,
1556  /* 152 */ 'x', '1', '6', 0,
1557  /* 156 */ 'f', '2', '6', 0,
1558  /* 160 */ 'x', '2', '6', 0,
1559  /* 164 */ 'f', '6', 0,
1560  /* 167 */ 'x', '6', 0,
1561  /* 170 */ 'f', '1', '7', 0,
1562  /* 174 */ 'x', '1', '7', 0,
1563  /* 178 */ 'f', '2', '7', 0,
1564  /* 182 */ 'x', '2', '7', 0,
1565  /* 186 */ 'f', '7', 0,
1566  /* 189 */ 'x', '7', 0,
1567  /* 192 */ 'f', '1', '8', 0,
1568  /* 196 */ 'x', '1', '8', 0,
1569  /* 200 */ 'f', '2', '8', 0,
1570  /* 204 */ 'x', '2', '8', 0,
1571  /* 208 */ 'f', '8', 0,
1572  /* 211 */ 'x', '8', 0,
1573  /* 214 */ 'f', '1', '9', 0,
1574  /* 218 */ 'x', '1', '9', 0,
1575  /* 222 */ 'f', '2', '9', 0,
1576  /* 226 */ 'x', '2', '9', 0,
1577  /* 230 */ 'f', '9', 0,
1578  /* 233 */ 'x', '9', 0,
1579  };
1580
1581  static const uint8_t RegAsmOffsetNoRegAltName[] = {
1582    27, 57, 79, 101, 123, 145, 167, 189, 211, 233, 4, 34, 64, 86,
1583    108, 130, 152, 174, 196, 218, 12, 42, 72, 94, 116, 138, 160, 182,
1584    204, 226, 20, 50, 24, 54, 76, 98, 120, 142, 164, 186, 208, 230,
1585    0, 30, 60, 82, 104, 126, 148, 170, 192, 214, 8, 38, 68, 90,
1586    112, 134, 156, 178, 200, 222, 16, 46, 24, 54, 76, 98, 120, 142,
1587    164, 186, 208, 230, 0, 30, 60, 82, 104, 126, 148, 170, 192, 214,
1588    8, 38, 68, 90, 112, 134, 156, 178, 200, 222, 16, 46,
1589  };
1590
1591  switch(AltIdx) {
1592  default: llvm_unreachable("Invalid register alt name index!");
1593  case RISCV::ABIRegAltName:
1594    assert(*(AsmStrsABIRegAltName+RegAsmOffsetABIRegAltName[RegNo-1]) &&
1595           "Invalid alt name index for register!");
1596    return AsmStrsABIRegAltName+RegAsmOffsetABIRegAltName[RegNo-1];
1597  case RISCV::NoRegAltName:
1598    assert(*(AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1]) &&
1599           "Invalid alt name index for register!");
1600    return AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1];
1601  }
1602}
1603
1604#ifdef PRINT_ALIAS_INSTR
1605#undef PRINT_ALIAS_INSTR
1606
1607static bool RISCVInstPrinterValidateMCOperand(const MCOperand &MCOp,
1608                  const MCSubtargetInfo &STI,
1609                  unsigned PredicateIndex);
1610bool RISCVInstPrinter::printAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI, raw_ostream &OS) {
1611  static const PatternsForOpcode OpToPatterns[] = {
1612    {RISCV::ADDI, 0, 2 },
1613    {RISCV::ADDIW, 2, 1 },
1614    {RISCV::BEQ, 3, 1 },
1615    {RISCV::BGE, 4, 2 },
1616    {RISCV::BLT, 6, 2 },
1617    {RISCV::BNE, 8, 1 },
1618    {RISCV::CSRRC, 9, 1 },
1619    {RISCV::CSRRCI, 10, 1 },
1620    {RISCV::CSRRS, 11, 11 },
1621    {RISCV::CSRRSI, 22, 1 },
1622    {RISCV::CSRRW, 23, 7 },
1623    {RISCV::CSRRWI, 30, 5 },
1624    {RISCV::FADD_D, 35, 1 },
1625    {RISCV::FADD_S, 36, 1 },
1626    {RISCV::FCVT_D_L, 37, 1 },
1627    {RISCV::FCVT_D_LU, 38, 1 },
1628    {RISCV::FCVT_LU_D, 39, 1 },
1629    {RISCV::FCVT_LU_S, 40, 1 },
1630    {RISCV::FCVT_L_D, 41, 1 },
1631    {RISCV::FCVT_L_S, 42, 1 },
1632    {RISCV::FCVT_S_D, 43, 1 },
1633    {RISCV::FCVT_S_L, 44, 1 },
1634    {RISCV::FCVT_S_LU, 45, 1 },
1635    {RISCV::FCVT_S_W, 46, 1 },
1636    {RISCV::FCVT_S_WU, 47, 1 },
1637    {RISCV::FCVT_WU_D, 48, 1 },
1638    {RISCV::FCVT_WU_S, 49, 1 },
1639    {RISCV::FCVT_W_D, 50, 1 },
1640    {RISCV::FCVT_W_S, 51, 1 },
1641    {RISCV::FDIV_D, 52, 1 },
1642    {RISCV::FDIV_S, 53, 1 },
1643    {RISCV::FENCE, 54, 1 },
1644    {RISCV::FMADD_D, 55, 1 },
1645    {RISCV::FMADD_S, 56, 1 },
1646    {RISCV::FMSUB_D, 57, 1 },
1647    {RISCV::FMSUB_S, 58, 1 },
1648    {RISCV::FMUL_D, 59, 1 },
1649    {RISCV::FMUL_S, 60, 1 },
1650    {RISCV::FNMADD_D, 61, 1 },
1651    {RISCV::FNMADD_S, 62, 1 },
1652    {RISCV::FNMSUB_D, 63, 1 },
1653    {RISCV::FNMSUB_S, 64, 1 },
1654    {RISCV::FSGNJN_D, 65, 1 },
1655    {RISCV::FSGNJN_S, 66, 1 },
1656    {RISCV::FSGNJX_D, 67, 1 },
1657    {RISCV::FSGNJX_S, 68, 1 },
1658    {RISCV::FSGNJ_D, 69, 1 },
1659    {RISCV::FSGNJ_S, 70, 1 },
1660    {RISCV::FSQRT_D, 71, 1 },
1661    {RISCV::FSQRT_S, 72, 1 },
1662    {RISCV::FSUB_D, 73, 1 },
1663    {RISCV::FSUB_S, 74, 1 },
1664    {RISCV::JAL, 75, 2 },
1665    {RISCV::JALR, 77, 6 },
1666    {RISCV::SFENCE_VMA, 83, 2 },
1667    {RISCV::SLT, 85, 2 },
1668    {RISCV::SLTIU, 87, 1 },
1669    {RISCV::SLTU, 88, 1 },
1670    {RISCV::SUB, 89, 1 },
1671    {RISCV::SUBW, 90, 1 },
1672    {RISCV::XORI, 91, 1 },
1673  };
1674
1675  static const AliasPattern Patterns[] = {
1676    // RISCV::ADDI - 0
1677    {0, 0, 3, 3 },
1678    {4, 3, 3, 3 },
1679    // RISCV::ADDIW - 2
1680    {14, 6, 3, 4 },
1681    // RISCV::BEQ - 3
1682    {28, 10, 3, 3 },
1683    // RISCV::BGE - 4
1684    {40, 13, 3, 3 },
1685    {52, 16, 3, 3 },
1686    // RISCV::BLT - 6
1687    {64, 19, 3, 3 },
1688    {76, 22, 3, 3 },
1689    // RISCV::BNE - 8
1690    {88, 25, 3, 3 },
1691    // RISCV::CSRRC - 9
1692    {100, 28, 3, 3 },
1693    // RISCV::CSRRCI - 10
1694    {114, 31, 3, 2 },
1695    // RISCV::CSRRS - 11
1696    {129, 33, 3, 4 },
1697    {138, 37, 3, 4 },
1698    {146, 41, 3, 4 },
1699    {157, 45, 3, 3 },
1700    {170, 48, 3, 3 },
1701    {181, 51, 3, 3 },
1702    {191, 54, 3, 4 },
1703    {205, 58, 3, 4 },
1704    {217, 62, 3, 4 },
1705    {228, 66, 3, 3 },
1706    {242, 69, 3, 3 },
1707    // RISCV::CSRRSI - 22
1708    {256, 72, 3, 2 },
1709    // RISCV::CSRRW - 23
1710    {271, 74, 3, 4 },
1711    {280, 78, 3, 4 },
1712    {288, 82, 3, 4 },
1713    {299, 86, 3, 3 },
1714    {313, 89, 3, 4 },
1715    {326, 93, 3, 4 },
1716    {338, 97, 3, 4 },
1717    // RISCV::CSRRWI - 30
1718    {353, 101, 3, 3 },
1719    {362, 104, 3, 3 },
1720    {374, 107, 3, 2 },
1721    {389, 109, 3, 3 },
1722    {402, 112, 3, 3 },
1723    // RISCV::FADD_D - 35
1724    {418, 115, 4, 5 },
1725    // RISCV::FADD_S - 36
1726    {436, 120, 4, 5 },
1727    // RISCV::FCVT_D_L - 37
1728    {454, 125, 3, 5 },
1729    // RISCV::FCVT_D_LU - 38
1730    {470, 130, 3, 5 },
1731    // RISCV::FCVT_LU_D - 39
1732    {487, 135, 3, 5 },
1733    // RISCV::FCVT_LU_S - 40
1734    {504, 140, 3, 5 },
1735    // RISCV::FCVT_L_D - 41
1736    {521, 145, 3, 5 },
1737    // RISCV::FCVT_L_S - 42
1738    {537, 150, 3, 5 },
1739    // RISCV::FCVT_S_D - 43
1740    {553, 155, 3, 4 },
1741    // RISCV::FCVT_S_L - 44
1742    {569, 159, 3, 5 },
1743    // RISCV::FCVT_S_LU - 45
1744    {585, 164, 3, 5 },
1745    // RISCV::FCVT_S_W - 46
1746    {602, 169, 3, 4 },
1747    // RISCV::FCVT_S_WU - 47
1748    {618, 173, 3, 4 },
1749    // RISCV::FCVT_WU_D - 48
1750    {635, 177, 3, 4 },
1751    // RISCV::FCVT_WU_S - 49
1752    {652, 181, 3, 4 },
1753    // RISCV::FCVT_W_D - 50
1754    {669, 185, 3, 4 },
1755    // RISCV::FCVT_W_S - 51
1756    {685, 189, 3, 4 },
1757    // RISCV::FDIV_D - 52
1758    {701, 193, 4, 5 },
1759    // RISCV::FDIV_S - 53
1760    {719, 198, 4, 5 },
1761    // RISCV::FENCE - 54
1762    {737, 203, 2, 2 },
1763    // RISCV::FMADD_D - 55
1764    {743, 205, 5, 6 },
1765    // RISCV::FMADD_S - 56
1766    {766, 211, 5, 6 },
1767    // RISCV::FMSUB_D - 57
1768    {789, 217, 5, 6 },
1769    // RISCV::FMSUB_S - 58
1770    {812, 223, 5, 6 },
1771    // RISCV::FMUL_D - 59
1772    {835, 229, 4, 5 },
1773    // RISCV::FMUL_S - 60
1774    {853, 234, 4, 5 },
1775    // RISCV::FNMADD_D - 61
1776    {871, 239, 5, 6 },
1777    // RISCV::FNMADD_S - 62
1778    {895, 245, 5, 6 },
1779    // RISCV::FNMSUB_D - 63
1780    {919, 251, 5, 6 },
1781    // RISCV::FNMSUB_S - 64
1782    {943, 257, 5, 6 },
1783    // RISCV::FSGNJN_D - 65
1784    {967, 263, 3, 4 },
1785    // RISCV::FSGNJN_S - 66
1786    {981, 267, 3, 4 },
1787    // RISCV::FSGNJX_D - 67
1788    {995, 271, 3, 4 },
1789    // RISCV::FSGNJX_S - 68
1790    {1009, 275, 3, 4 },
1791    // RISCV::FSGNJ_D - 69
1792    {1023, 279, 3, 4 },
1793    // RISCV::FSGNJ_S - 70
1794    {1036, 283, 3, 4 },
1795    // RISCV::FSQRT_D - 71
1796    {1049, 287, 3, 4 },
1797    // RISCV::FSQRT_S - 72
1798    {1064, 291, 3, 4 },
1799    // RISCV::FSUB_D - 73
1800    {1079, 295, 4, 5 },
1801    // RISCV::FSUB_S - 74
1802    {1097, 300, 4, 5 },
1803    // RISCV::JAL - 75
1804    {1115, 305, 2, 2 },
1805    {1120, 307, 2, 2 },
1806    // RISCV::JALR - 77
1807    {1127, 309, 3, 3 },
1808    {1131, 312, 3, 3 },
1809    {1137, 315, 3, 3 },
1810    {1145, 318, 3, 3 },
1811    {1157, 321, 3, 3 },
1812    {1167, 324, 3, 3 },
1813    // RISCV::SFENCE_VMA - 83
1814    {1179, 327, 2, 2 },
1815    {1190, 329, 2, 2 },
1816    // RISCV::SLT - 85
1817    {1204, 331, 3, 3 },
1818    {1216, 334, 3, 3 },
1819    // RISCV::SLTIU - 87
1820    {1228, 337, 3, 3 },
1821    // RISCV::SLTU - 88
1822    {1240, 340, 3, 3 },
1823    // RISCV::SUB - 89
1824    {1252, 343, 3, 3 },
1825    // RISCV::SUBW - 90
1826    {1263, 346, 3, 4 },
1827    // RISCV::XORI - 91
1828    {1275, 350, 3, 3 },
1829  };
1830
1831  static const AliasPatternCond Conds[] = {
1832    // (ADDI X0, X0, 0) - 0
1833    {AliasPatternCond::K_Reg, RISCV::X0},
1834    {AliasPatternCond::K_Reg, RISCV::X0},
1835    {AliasPatternCond::K_Imm, uint32_t(0)},
1836    // (ADDI GPR:$rd, GPR:$rs, 0) - 3
1837    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1838    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1839    {AliasPatternCond::K_Imm, uint32_t(0)},
1840    // (ADDIW GPR:$rd, GPR:$rs, 0) - 6
1841    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1842    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1843    {AliasPatternCond::K_Imm, uint32_t(0)},
1844    {AliasPatternCond::K_Feature, RISCV::Feature64Bit},
1845    // (BEQ GPR:$rs, X0, simm13_lsb0:$offset) - 10
1846    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1847    {AliasPatternCond::K_Reg, RISCV::X0},
1848    {AliasPatternCond::K_Custom, 1},
1849    // (BGE X0, GPR:$rs, simm13_lsb0:$offset) - 13
1850    {AliasPatternCond::K_Reg, RISCV::X0},
1851    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1852    {AliasPatternCond::K_Custom, 1},
1853    // (BGE GPR:$rs, X0, simm13_lsb0:$offset) - 16
1854    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1855    {AliasPatternCond::K_Reg, RISCV::X0},
1856    {AliasPatternCond::K_Custom, 1},
1857    // (BLT GPR:$rs, X0, simm13_lsb0:$offset) - 19
1858    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1859    {AliasPatternCond::K_Reg, RISCV::X0},
1860    {AliasPatternCond::K_Custom, 1},
1861    // (BLT X0, GPR:$rs, simm13_lsb0:$offset) - 22
1862    {AliasPatternCond::K_Reg, RISCV::X0},
1863    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1864    {AliasPatternCond::K_Custom, 1},
1865    // (BNE GPR:$rs, X0, simm13_lsb0:$offset) - 25
1866    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1867    {AliasPatternCond::K_Reg, RISCV::X0},
1868    {AliasPatternCond::K_Custom, 1},
1869    // (CSRRC X0, csr_sysreg:$csr, GPR:$rs) - 28
1870    {AliasPatternCond::K_Reg, RISCV::X0},
1871    {AliasPatternCond::K_Ignore, 0},
1872    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1873    // (CSRRCI X0, csr_sysreg:$csr, uimm5:$imm) - 31
1874    {AliasPatternCond::K_Reg, RISCV::X0},
1875    {AliasPatternCond::K_Ignore, 0},
1876    // (CSRRS GPR:$rd, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 }, X0) - 33
1877    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1878    {AliasPatternCond::K_Imm, uint32_t(3)},
1879    {AliasPatternCond::K_Reg, RISCV::X0},
1880    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1881    // (CSRRS GPR:$rd, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, X0) - 37
1882    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1883    {AliasPatternCond::K_Imm, uint32_t(2)},
1884    {AliasPatternCond::K_Reg, RISCV::X0},
1885    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1886    // (CSRRS GPR:$rd, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, X0) - 41
1887    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1888    {AliasPatternCond::K_Imm, uint32_t(1)},
1889    {AliasPatternCond::K_Reg, RISCV::X0},
1890    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1891    // (CSRRS GPR:$rd, { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, X0) - 45
1892    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1893    {AliasPatternCond::K_Imm, uint32_t(3074)},
1894    {AliasPatternCond::K_Reg, RISCV::X0},
1895    // (CSRRS GPR:$rd, { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, X0) - 48
1896    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1897    {AliasPatternCond::K_Imm, uint32_t(3072)},
1898    {AliasPatternCond::K_Reg, RISCV::X0},
1899    // (CSRRS GPR:$rd, { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, X0) - 51
1900    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1901    {AliasPatternCond::K_Imm, uint32_t(3073)},
1902    {AliasPatternCond::K_Reg, RISCV::X0},
1903    // (CSRRS GPR:$rd, { 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 }, X0) - 54
1904    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1905    {AliasPatternCond::K_Imm, uint32_t(3202)},
1906    {AliasPatternCond::K_Reg, RISCV::X0},
1907    {AliasPatternCond::K_NegFeature, RISCV::Feature64Bit},
1908    // (CSRRS GPR:$rd, { 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, X0) - 58
1909    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1910    {AliasPatternCond::K_Imm, uint32_t(3200)},
1911    {AliasPatternCond::K_Reg, RISCV::X0},
1912    {AliasPatternCond::K_NegFeature, RISCV::Feature64Bit},
1913    // (CSRRS GPR:$rd, { 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 }, X0) - 62
1914    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1915    {AliasPatternCond::K_Imm, uint32_t(3201)},
1916    {AliasPatternCond::K_Reg, RISCV::X0},
1917    {AliasPatternCond::K_NegFeature, RISCV::Feature64Bit},
1918    // (CSRRS GPR:$rd, csr_sysreg:$csr, X0) - 66
1919    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1920    {AliasPatternCond::K_Ignore, 0},
1921    {AliasPatternCond::K_Reg, RISCV::X0},
1922    // (CSRRS X0, csr_sysreg:$csr, GPR:$rs) - 69
1923    {AliasPatternCond::K_Reg, RISCV::X0},
1924    {AliasPatternCond::K_Ignore, 0},
1925    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1926    // (CSRRSI X0, csr_sysreg:$csr, uimm5:$imm) - 72
1927    {AliasPatternCond::K_Reg, RISCV::X0},
1928    {AliasPatternCond::K_Ignore, 0},
1929    // (CSRRW X0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 }, GPR:$rs) - 74
1930    {AliasPatternCond::K_Reg, RISCV::X0},
1931    {AliasPatternCond::K_Imm, uint32_t(3)},
1932    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1933    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1934    // (CSRRW X0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, GPR:$rs) - 78
1935    {AliasPatternCond::K_Reg, RISCV::X0},
1936    {AliasPatternCond::K_Imm, uint32_t(2)},
1937    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1938    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1939    // (CSRRW X0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, GPR:$rs) - 82
1940    {AliasPatternCond::K_Reg, RISCV::X0},
1941    {AliasPatternCond::K_Imm, uint32_t(1)},
1942    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1943    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1944    // (CSRRW X0, csr_sysreg:$csr, GPR:$rs) - 86
1945    {AliasPatternCond::K_Reg, RISCV::X0},
1946    {AliasPatternCond::K_Ignore, 0},
1947    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1948    // (CSRRW GPR:$rd, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 }, GPR:$rs) - 89
1949    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1950    {AliasPatternCond::K_Imm, uint32_t(3)},
1951    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1952    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1953    // (CSRRW GPR:$rd, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, GPR:$rs) - 93
1954    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1955    {AliasPatternCond::K_Imm, uint32_t(2)},
1956    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1957    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1958    // (CSRRW GPR:$rd, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, GPR:$rs) - 97
1959    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1960    {AliasPatternCond::K_Imm, uint32_t(1)},
1961    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1962    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1963    // (CSRRWI X0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, uimm5:$imm) - 101
1964    {AliasPatternCond::K_Reg, RISCV::X0},
1965    {AliasPatternCond::K_Imm, uint32_t(2)},
1966    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1967    // (CSRRWI X0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, uimm5:$imm) - 104
1968    {AliasPatternCond::K_Reg, RISCV::X0},
1969    {AliasPatternCond::K_Imm, uint32_t(1)},
1970    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1971    // (CSRRWI X0, csr_sysreg:$csr, uimm5:$imm) - 107
1972    {AliasPatternCond::K_Reg, RISCV::X0},
1973    {AliasPatternCond::K_Ignore, 0},
1974    // (CSRRWI GPR:$rd, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, uimm5:$imm) - 109
1975    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1976    {AliasPatternCond::K_Imm, uint32_t(2)},
1977    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1978    // (CSRRWI GPR:$rd, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, uimm5:$imm) - 112
1979    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1980    {AliasPatternCond::K_Imm, uint32_t(1)},
1981    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1982    // (FADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 }) - 115
1983    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
1984    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
1985    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
1986    {AliasPatternCond::K_Imm, uint32_t(7)},
1987    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
1988    // (FADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 }) - 120
1989    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
1990    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
1991    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
1992    {AliasPatternCond::K_Imm, uint32_t(7)},
1993    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
1994    // (FCVT_D_L FPR64:$rd, GPR:$rs1, { 1, 1, 1 }) - 125
1995    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
1996    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
1997    {AliasPatternCond::K_Imm, uint32_t(7)},
1998    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
1999    {AliasPatternCond::K_Feature, RISCV::Feature64Bit},
2000    // (FCVT_D_LU FPR64:$rd, GPR:$rs1, { 1, 1, 1 }) - 130
2001    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2002    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2003    {AliasPatternCond::K_Imm, uint32_t(7)},
2004    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2005    {AliasPatternCond::K_Feature, RISCV::Feature64Bit},
2006    // (FCVT_LU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 }) - 135
2007    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2008    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2009    {AliasPatternCond::K_Imm, uint32_t(7)},
2010    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2011    {AliasPatternCond::K_Feature, RISCV::Feature64Bit},
2012    // (FCVT_LU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 }) - 140
2013    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2014    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2015    {AliasPatternCond::K_Imm, uint32_t(7)},
2016    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2017    {AliasPatternCond::K_Feature, RISCV::Feature64Bit},
2018    // (FCVT_L_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 }) - 145
2019    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2020    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2021    {AliasPatternCond::K_Imm, uint32_t(7)},
2022    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2023    {AliasPatternCond::K_Feature, RISCV::Feature64Bit},
2024    // (FCVT_L_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 }) - 150
2025    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2026    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2027    {AliasPatternCond::K_Imm, uint32_t(7)},
2028    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2029    {AliasPatternCond::K_Feature, RISCV::Feature64Bit},
2030    // (FCVT_S_D FPR32:$rd, FPR64:$rs1, { 1, 1, 1 }) - 155
2031    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2032    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2033    {AliasPatternCond::K_Imm, uint32_t(7)},
2034    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2035    // (FCVT_S_L FPR32:$rd, GPR:$rs1, { 1, 1, 1 }) - 159
2036    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2037    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2038    {AliasPatternCond::K_Imm, uint32_t(7)},
2039    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2040    {AliasPatternCond::K_Feature, RISCV::Feature64Bit},
2041    // (FCVT_S_LU FPR32:$rd, GPR:$rs1, { 1, 1, 1 }) - 164
2042    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2043    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2044    {AliasPatternCond::K_Imm, uint32_t(7)},
2045    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2046    {AliasPatternCond::K_Feature, RISCV::Feature64Bit},
2047    // (FCVT_S_W FPR32:$rd, GPR:$rs1, { 1, 1, 1 }) - 169
2048    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2049    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2050    {AliasPatternCond::K_Imm, uint32_t(7)},
2051    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2052    // (FCVT_S_WU FPR32:$rd, GPR:$rs1, { 1, 1, 1 }) - 173
2053    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2054    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2055    {AliasPatternCond::K_Imm, uint32_t(7)},
2056    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2057    // (FCVT_WU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 }) - 177
2058    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2059    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2060    {AliasPatternCond::K_Imm, uint32_t(7)},
2061    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2062    // (FCVT_WU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 }) - 181
2063    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2064    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2065    {AliasPatternCond::K_Imm, uint32_t(7)},
2066    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2067    // (FCVT_W_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 }) - 185
2068    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2069    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2070    {AliasPatternCond::K_Imm, uint32_t(7)},
2071    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2072    // (FCVT_W_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 }) - 189
2073    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2074    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2075    {AliasPatternCond::K_Imm, uint32_t(7)},
2076    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2077    // (FDIV_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 }) - 193
2078    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2079    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2080    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2081    {AliasPatternCond::K_Imm, uint32_t(7)},
2082    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2083    // (FDIV_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 }) - 198
2084    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2085    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2086    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2087    {AliasPatternCond::K_Imm, uint32_t(7)},
2088    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2089    // (FENCE 15, 15) - 203
2090    {AliasPatternCond::K_Imm, uint32_t(15)},
2091    {AliasPatternCond::K_Imm, uint32_t(15)},
2092    // (FMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 }) - 205
2093    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2094    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2095    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2096    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2097    {AliasPatternCond::K_Imm, uint32_t(7)},
2098    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2099    // (FMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 }) - 211
2100    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2101    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2102    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2103    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2104    {AliasPatternCond::K_Imm, uint32_t(7)},
2105    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2106    // (FMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 }) - 217
2107    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2108    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2109    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2110    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2111    {AliasPatternCond::K_Imm, uint32_t(7)},
2112    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2113    // (FMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 }) - 223
2114    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2115    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2116    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2117    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2118    {AliasPatternCond::K_Imm, uint32_t(7)},
2119    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2120    // (FMUL_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 }) - 229
2121    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2122    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2123    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2124    {AliasPatternCond::K_Imm, uint32_t(7)},
2125    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2126    // (FMUL_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 }) - 234
2127    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2128    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2129    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2130    {AliasPatternCond::K_Imm, uint32_t(7)},
2131    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2132    // (FNMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 }) - 239
2133    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2134    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2135    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2136    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2137    {AliasPatternCond::K_Imm, uint32_t(7)},
2138    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2139    // (FNMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 }) - 245
2140    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2141    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2142    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2143    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2144    {AliasPatternCond::K_Imm, uint32_t(7)},
2145    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2146    // (FNMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 }) - 251
2147    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2148    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2149    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2150    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2151    {AliasPatternCond::K_Imm, uint32_t(7)},
2152    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2153    // (FNMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 }) - 257
2154    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2155    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2156    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2157    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2158    {AliasPatternCond::K_Imm, uint32_t(7)},
2159    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2160    // (FSGNJN_D FPR64:$rd, FPR64:$rs, FPR64:$rs) - 263
2161    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2162    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2163    {AliasPatternCond::K_TiedReg, 1},
2164    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2165    // (FSGNJN_S FPR32:$rd, FPR32:$rs, FPR32:$rs) - 267
2166    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2167    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2168    {AliasPatternCond::K_TiedReg, 1},
2169    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2170    // (FSGNJX_D FPR64:$rd, FPR64:$rs, FPR64:$rs) - 271
2171    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2172    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2173    {AliasPatternCond::K_TiedReg, 1},
2174    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2175    // (FSGNJX_S FPR32:$rd, FPR32:$rs, FPR32:$rs) - 275
2176    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2177    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2178    {AliasPatternCond::K_TiedReg, 1},
2179    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2180    // (FSGNJ_D FPR64:$rd, FPR64:$rs, FPR64:$rs) - 279
2181    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2182    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2183    {AliasPatternCond::K_TiedReg, 1},
2184    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2185    // (FSGNJ_S FPR32:$rd, FPR32:$rs, FPR32:$rs) - 283
2186    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2187    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2188    {AliasPatternCond::K_TiedReg, 1},
2189    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2190    // (FSQRT_D FPR64:$rd, FPR64:$rs1, { 1, 1, 1 }) - 287
2191    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2192    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2193    {AliasPatternCond::K_Imm, uint32_t(7)},
2194    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2195    // (FSQRT_S FPR32:$rd, FPR32:$rs1, { 1, 1, 1 }) - 291
2196    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2197    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2198    {AliasPatternCond::K_Imm, uint32_t(7)},
2199    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2200    // (FSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 }) - 295
2201    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2202    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2203    {AliasPatternCond::K_RegClass, RISCV::FPR64RegClassID},
2204    {AliasPatternCond::K_Imm, uint32_t(7)},
2205    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtD},
2206    // (FSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 }) - 300
2207    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2208    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2209    {AliasPatternCond::K_RegClass, RISCV::FPR32RegClassID},
2210    {AliasPatternCond::K_Imm, uint32_t(7)},
2211    {AliasPatternCond::K_Feature, RISCV::FeatureStdExtF},
2212    // (JAL X0, simm21_lsb0_jal:$offset) - 305
2213    {AliasPatternCond::K_Reg, RISCV::X0},
2214    {AliasPatternCond::K_Custom, 2},
2215    // (JAL X1, simm21_lsb0_jal:$offset) - 307
2216    {AliasPatternCond::K_Reg, RISCV::X1},
2217    {AliasPatternCond::K_Custom, 2},
2218    // (JALR X0, X1, 0) - 309
2219    {AliasPatternCond::K_Reg, RISCV::X0},
2220    {AliasPatternCond::K_Reg, RISCV::X1},
2221    {AliasPatternCond::K_Imm, uint32_t(0)},
2222    // (JALR X0, GPR:$rs, 0) - 312
2223    {AliasPatternCond::K_Reg, RISCV::X0},
2224    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2225    {AliasPatternCond::K_Imm, uint32_t(0)},
2226    // (JALR X1, GPR:$rs, 0) - 315
2227    {AliasPatternCond::K_Reg, RISCV::X1},
2228    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2229    {AliasPatternCond::K_Imm, uint32_t(0)},
2230    // (JALR GPR:$rd, GPR:$rs, 0) - 318
2231    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2232    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2233    {AliasPatternCond::K_Imm, uint32_t(0)},
2234    // (JALR X0, GPR:$rs, simm12:$offset) - 321
2235    {AliasPatternCond::K_Reg, RISCV::X0},
2236    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2237    {AliasPatternCond::K_Custom, 3},
2238    // (JALR X1, GPR:$rs, simm12:$offset) - 324
2239    {AliasPatternCond::K_Reg, RISCV::X1},
2240    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2241    {AliasPatternCond::K_Custom, 3},
2242    // (SFENCE_VMA X0, X0) - 327
2243    {AliasPatternCond::K_Reg, RISCV::X0},
2244    {AliasPatternCond::K_Reg, RISCV::X0},
2245    // (SFENCE_VMA GPR:$rs, X0) - 329
2246    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2247    {AliasPatternCond::K_Reg, RISCV::X0},
2248    // (SLT GPR:$rd, GPR:$rs, X0) - 331
2249    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2250    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2251    {AliasPatternCond::K_Reg, RISCV::X0},
2252    // (SLT GPR:$rd, X0, GPR:$rs) - 334
2253    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2254    {AliasPatternCond::K_Reg, RISCV::X0},
2255    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2256    // (SLTIU GPR:$rd, GPR:$rs, 1) - 337
2257    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2258    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2259    {AliasPatternCond::K_Imm, uint32_t(1)},
2260    // (SLTU GPR:$rd, X0, GPR:$rs) - 340
2261    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2262    {AliasPatternCond::K_Reg, RISCV::X0},
2263    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2264    // (SUB GPR:$rd, X0, GPR:$rs) - 343
2265    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2266    {AliasPatternCond::K_Reg, RISCV::X0},
2267    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2268    // (SUBW GPR:$rd, X0, GPR:$rs) - 346
2269    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2270    {AliasPatternCond::K_Reg, RISCV::X0},
2271    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2272    {AliasPatternCond::K_Feature, RISCV::Feature64Bit},
2273    // (XORI GPR:$rd, GPR:$rs, -1) - 350
2274    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2275    {AliasPatternCond::K_RegClass, RISCV::GPRRegClassID},
2276    {AliasPatternCond::K_Imm, uint32_t(-1)},
2277  };
2278
2279  static const char AsmStrings[] =
2280    /* 0 */ "nop\0"
2281    /* 4 */ "mv $\x01, $\x02\0"
2282    /* 14 */ "sext.w $\x01, $\x02\0"
2283    /* 28 */ "beqz $\x01, $\x03\0"
2284    /* 40 */ "blez $\x02, $\x03\0"
2285    /* 52 */ "bgez $\x01, $\x03\0"
2286    /* 64 */ "bltz $\x01, $\x03\0"
2287    /* 76 */ "bgtz $\x02, $\x03\0"
2288    /* 88 */ "bnez $\x01, $\x03\0"
2289    /* 100 */ "csrc $\xFF\x02\x01, $\x03\0"
2290    /* 114 */ "csrci $\xFF\x02\x01, $\x03\0"
2291    /* 129 */ "frcsr $\x01\0"
2292    /* 138 */ "frrm $\x01\0"
2293    /* 146 */ "frflags $\x01\0"
2294    /* 157 */ "rdinstret $\x01\0"
2295    /* 170 */ "rdcycle $\x01\0"
2296    /* 181 */ "rdtime $\x01\0"
2297    /* 191 */ "rdinstreth $\x01\0"
2298    /* 205 */ "rdcycleh $\x01\0"
2299    /* 217 */ "rdtimeh $\x01\0"
2300    /* 228 */ "csrr $\x01, $\xFF\x02\x01\0"
2301    /* 242 */ "csrs $\xFF\x02\x01, $\x03\0"
2302    /* 256 */ "csrsi $\xFF\x02\x01, $\x03\0"
2303    /* 271 */ "fscsr $\x03\0"
2304    /* 280 */ "fsrm $\x03\0"
2305    /* 288 */ "fsflags $\x03\0"
2306    /* 299 */ "csrw $\xFF\x02\x01, $\x03\0"
2307    /* 313 */ "fscsr $\x01, $\x03\0"
2308    /* 326 */ "fsrm $\x01, $\x03\0"
2309    /* 338 */ "fsflags $\x01, $\x03\0"
2310    /* 353 */ "fsrmi $\x03\0"
2311    /* 362 */ "fsflagsi $\x03\0"
2312    /* 374 */ "csrwi $\xFF\x02\x01, $\x03\0"
2313    /* 389 */ "fsrmi $\x01, $\x03\0"
2314    /* 402 */ "fsflagsi $\x01, $\x03\0"
2315    /* 418 */ "fadd.d $\x01, $\x02, $\x03\0"
2316    /* 436 */ "fadd.s $\x01, $\x02, $\x03\0"
2317    /* 454 */ "fcvt.d.l $\x01, $\x02\0"
2318    /* 470 */ "fcvt.d.lu $\x01, $\x02\0"
2319    /* 487 */ "fcvt.lu.d $\x01, $\x02\0"
2320    /* 504 */ "fcvt.lu.s $\x01, $\x02\0"
2321    /* 521 */ "fcvt.l.d $\x01, $\x02\0"
2322    /* 537 */ "fcvt.l.s $\x01, $\x02\0"
2323    /* 553 */ "fcvt.s.d $\x01, $\x02\0"
2324    /* 569 */ "fcvt.s.l $\x01, $\x02\0"
2325    /* 585 */ "fcvt.s.lu $\x01, $\x02\0"
2326    /* 602 */ "fcvt.s.w $\x01, $\x02\0"
2327    /* 618 */ "fcvt.s.wu $\x01, $\x02\0"
2328    /* 635 */ "fcvt.wu.d $\x01, $\x02\0"
2329    /* 652 */ "fcvt.wu.s $\x01, $\x02\0"
2330    /* 669 */ "fcvt.w.d $\x01, $\x02\0"
2331    /* 685 */ "fcvt.w.s $\x01, $\x02\0"
2332    /* 701 */ "fdiv.d $\x01, $\x02, $\x03\0"
2333    /* 719 */ "fdiv.s $\x01, $\x02, $\x03\0"
2334    /* 737 */ "fence\0"
2335    /* 743 */ "fmadd.d $\x01, $\x02, $\x03, $\x04\0"
2336    /* 766 */ "fmadd.s $\x01, $\x02, $\x03, $\x04\0"
2337    /* 789 */ "fmsub.d $\x01, $\x02, $\x03, $\x04\0"
2338    /* 812 */ "fmsub.s $\x01, $\x02, $\x03, $\x04\0"
2339    /* 835 */ "fmul.d $\x01, $\x02, $\x03\0"
2340    /* 853 */ "fmul.s $\x01, $\x02, $\x03\0"
2341    /* 871 */ "fnmadd.d $\x01, $\x02, $\x03, $\x04\0"
2342    /* 895 */ "fnmadd.s $\x01, $\x02, $\x03, $\x04\0"
2343    /* 919 */ "fnmsub.d $\x01, $\x02, $\x03, $\x04\0"
2344    /* 943 */ "fnmsub.s $\x01, $\x02, $\x03, $\x04\0"
2345    /* 967 */ "fneg.d $\x01, $\x02\0"
2346    /* 981 */ "fneg.s $\x01, $\x02\0"
2347    /* 995 */ "fabs.d $\x01, $\x02\0"
2348    /* 1009 */ "fabs.s $\x01, $\x02\0"
2349    /* 1023 */ "fmv.d $\x01, $\x02\0"
2350    /* 1036 */ "fmv.s $\x01, $\x02\0"
2351    /* 1049 */ "fsqrt.d $\x01, $\x02\0"
2352    /* 1064 */ "fsqrt.s $\x01, $\x02\0"
2353    /* 1079 */ "fsub.d $\x01, $\x02, $\x03\0"
2354    /* 1097 */ "fsub.s $\x01, $\x02, $\x03\0"
2355    /* 1115 */ "j $\x02\0"
2356    /* 1120 */ "jal $\x02\0"
2357    /* 1127 */ "ret\0"
2358    /* 1131 */ "jr $\x02\0"
2359    /* 1137 */ "jalr $\x02\0"
2360    /* 1145 */ "jalr $\x01, $\x02\0"
2361    /* 1157 */ "jr $\x03($\x02)\0"
2362    /* 1167 */ "jalr $\x03($\x02)\0"
2363    /* 1179 */ "sfence.vma\0"
2364    /* 1190 */ "sfence.vma $\x01\0"
2365    /* 1204 */ "sltz $\x01, $\x02\0"
2366    /* 1216 */ "sgtz $\x01, $\x03\0"
2367    /* 1228 */ "seqz $\x01, $\x02\0"
2368    /* 1240 */ "snez $\x01, $\x03\0"
2369    /* 1252 */ "neg $\x01, $\x03\0"
2370    /* 1263 */ "negw $\x01, $\x03\0"
2371    /* 1275 */ "not $\x01, $\x02\0"
2372  ;
2373
2374#ifndef NDEBUG
2375  static struct SortCheck {
2376    SortCheck(ArrayRef<PatternsForOpcode> OpToPatterns) {
2377      assert(std::is_sorted(
2378                 OpToPatterns.begin(), OpToPatterns.end(),
2379                 [](const PatternsForOpcode &L, const PatternsForOpcode &R) {
2380                   return L.Opcode < R.Opcode;
2381                 }) &&
2382             "tablegen failed to sort opcode patterns");
2383    }
2384  } sortCheckVar(OpToPatterns);
2385#endif
2386
2387  AliasMatchingData M {
2388    makeArrayRef(OpToPatterns),
2389    makeArrayRef(Patterns),
2390    makeArrayRef(Conds),
2391    StringRef(AsmStrings, array_lengthof(AsmStrings)),
2392    &RISCVInstPrinterValidateMCOperand,
2393  };
2394  const char *AsmString = matchAliasPatterns(MI, &STI, M);
2395  if (!AsmString) return false;
2396
2397  unsigned I = 0;
2398  while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
2399         AsmString[I] != '$' && AsmString[I] != '\0')
2400    ++I;
2401  OS << '\t' << StringRef(AsmString, I);
2402  if (AsmString[I] != '\0') {
2403    if (AsmString[I] == ' ' || AsmString[I] == '\t') {
2404      OS << '\t';
2405      ++I;
2406    }
2407    do {
2408      if (AsmString[I] == '$') {
2409        ++I;
2410        if (AsmString[I] == (char)0xff) {
2411          ++I;
2412          int OpIdx = AsmString[I++] - 1;
2413          int PrintMethodIdx = AsmString[I++] - 1;
2414          printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, STI, OS);
2415        } else
2416          printOperand(MI, unsigned(AsmString[I++]) - 1, STI, OS);
2417      } else {
2418        OS << AsmString[I++];
2419      }
2420    } while (AsmString[I] != '\0');
2421  }
2422
2423  return true;
2424}
2425
2426void RISCVInstPrinter::printCustomAliasOperand(
2427         const MCInst *MI, unsigned OpIdx,
2428         unsigned PrintMethodIdx,
2429         const MCSubtargetInfo &STI,
2430         raw_ostream &OS) {
2431  switch (PrintMethodIdx) {
2432  default:
2433    llvm_unreachable("Unknown PrintMethod kind");
2434    break;
2435  case 0:
2436    printCSRSystemRegister(MI, OpIdx, STI, OS);
2437    break;
2438  }
2439}
2440
2441static bool RISCVInstPrinterValidateMCOperand(const MCOperand &MCOp,
2442                  const MCSubtargetInfo &STI,
2443                  unsigned PredicateIndex) {
2444  switch (PredicateIndex) {
2445  default:
2446    llvm_unreachable("Unknown MCOperandPredicate kind");
2447    break;
2448  case 1: {
2449
2450    int64_t Imm;
2451    if (MCOp.evaluateAsConstantImm(Imm))
2452      return isShiftedInt<12, 1>(Imm);
2453    return MCOp.isBareSymbolRef();
2454
2455    }
2456  case 2: {
2457
2458    int64_t Imm;
2459    if (MCOp.evaluateAsConstantImm(Imm))
2460      return isShiftedInt<20, 1>(Imm);
2461    return MCOp.isBareSymbolRef();
2462
2463    }
2464  case 3: {
2465
2466    int64_t Imm;
2467    if (MCOp.evaluateAsConstantImm(Imm))
2468      return isInt<12>(Imm);
2469    return MCOp.isBareSymbolRef();
2470
2471    }
2472  }
2473}
2474
2475#endif // PRINT_ALIAS_INSTR
2476