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