/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Assembly Writer Source Fragment                                            *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

/// printInstruction - This method is automatically generated by tablegen
/// from the instruction set description.
void AArch64InstPrinter::printInstruction(const MCInst *MI, const MCSubtargetInfo &STI, raw_ostream &O) {
  static const char AsmStrs[] = {
  /* 0 */ 's', 'h', 'a', '1', 's', 'u', '0', 9, 0,
  /* 9 */ 's', 'h', 'a', '5', '1', '2', 's', 'u', '0', 9, 0,
  /* 20 */ 's', 'h', 'a', '2', '5', '6', 's', 'u', '0', 9, 0,
  /* 31 */ 'l', 'd', '1', 9, 0,
  /* 36 */ 't', 'r', 'n', '1', 9, 0,
  /* 42 */ 'z', 'i', 'p', '1', 9, 0,
  /* 48 */ 'u', 'z', 'p', '1', 9, 0,
  /* 54 */ 'd', 'c', 'p', 's', '1', 9, 0,
  /* 61 */ 's', 'm', '3', 's', 's', '1', 9, 0,
  /* 69 */ 's', 't', '1', 9, 0,
  /* 74 */ 's', 'h', 'a', '1', 's', 'u', '1', 9, 0,
  /* 83 */ 's', 'h', 'a', '5', '1', '2', 's', 'u', '1', 9, 0,
  /* 94 */ 's', 'h', 'a', '2', '5', '6', 's', 'u', '1', 9, 0,
  /* 105 */ 's', 'm', '3', 'p', 'a', 'r', 't', 'w', '1', 9, 0,
  /* 116 */ 'r', 'a', 'x', '1', 9, 0,
  /* 122 */ 'r', 'e', 'v', '3', '2', 9, 0,
  /* 129 */ 'l', 'd', '2', 9, 0,
  /* 134 */ 's', 'h', 'a', '5', '1', '2', 'h', '2', 9, 0,
  /* 144 */ 's', 'h', 'a', '2', '5', '6', 'h', '2', 9, 0,
  /* 154 */ 's', 'a', 'b', 'a', 'l', '2', 9, 0,
  /* 162 */ 'u', 'a', 'b', 'a', 'l', '2', 9, 0,
  /* 170 */ 's', 'q', 'd', 'm', 'l', 'a', 'l', '2', 9, 0,
  /* 180 */ 's', 'm', 'l', 'a', 'l', '2', 9, 0,
  /* 188 */ 'u', 'm', 'l', 'a', 'l', '2', 9, 0,
  /* 196 */ 's', 's', 'u', 'b', 'l', '2', 9, 0,
  /* 204 */ 'u', 's', 'u', 'b', 'l', '2', 9, 0,
  /* 212 */ 's', 'a', 'b', 'd', 'l', '2', 9, 0,
  /* 220 */ 'u', 'a', 'b', 'd', 'l', '2', 9, 0,
  /* 228 */ 's', 'a', 'd', 'd', 'l', '2', 9, 0,
  /* 236 */ 'u', 'a', 'd', 'd', 'l', '2', 9, 0,
  /* 244 */ 's', 's', 'h', 'l', 'l', '2', 9, 0,
  /* 252 */ 'u', 's', 'h', 'l', 'l', '2', 9, 0,
  /* 260 */ 's', 'q', 'd', 'm', 'u', 'l', 'l', '2', 9, 0,
  /* 270 */ 'p', 'm', 'u', 'l', 'l', '2', 9, 0,
  /* 278 */ 's', 'm', 'u', 'l', 'l', '2', 9, 0,
  /* 286 */ 'u', 'm', 'u', 'l', 'l', '2', 9, 0,
  /* 294 */ 's', 'q', 'd', 'm', 'l', 's', 'l', '2', 9, 0,
  /* 304 */ 's', 'm', 'l', 's', 'l', '2', 9, 0,
  /* 312 */ 'u', 'm', 'l', 's', 'l', '2', 9, 0,
  /* 320 */ 'f', 'c', 'v', 't', 'l', '2', 9, 0,
  /* 328 */ 'r', 's', 'u', 'b', 'h', 'n', '2', 9, 0,
  /* 337 */ 'r', 'a', 'd', 'd', 'h', 'n', '2', 9, 0,
  /* 346 */ 's', 'q', 's', 'h', 'r', 'n', '2', 9, 0,
  /* 355 */ 'u', 'q', 's', 'h', 'r', 'n', '2', 9, 0,
  /* 364 */ 's', 'q', 'r', 's', 'h', 'r', 'n', '2', 9, 0,
  /* 374 */ 'u', 'q', 'r', 's', 'h', 'r', 'n', '2', 9, 0,
  /* 384 */ 't', 'r', 'n', '2', 9, 0,
  /* 390 */ 'f', 'c', 'v', 't', 'n', '2', 9, 0,
  /* 398 */ 's', 'q', 'x', 't', 'n', '2', 9, 0,
  /* 406 */ 'u', 'q', 'x', 't', 'n', '2', 9, 0,
  /* 414 */ 's', 'q', 's', 'h', 'r', 'u', 'n', '2', 9, 0,
  /* 424 */ 's', 'q', 'r', 's', 'h', 'r', 'u', 'n', '2', 9, 0,
  /* 435 */ 's', 'q', 'x', 't', 'u', 'n', '2', 9, 0,
  /* 444 */ 'f', 'c', 'v', 't', 'x', 'n', '2', 9, 0,
  /* 453 */ 'z', 'i', 'p', '2', 9, 0,
  /* 459 */ 'u', 'z', 'p', '2', 9, 0,
  /* 465 */ 'd', 'c', 'p', 's', '2', 9, 0,
  /* 472 */ 's', 't', '2', 9, 0,
  /* 477 */ 's', 's', 'u', 'b', 'w', '2', 9, 0,
  /* 485 */ 'u', 's', 'u', 'b', 'w', '2', 9, 0,
  /* 493 */ 's', 'a', 'd', 'd', 'w', '2', 9, 0,
  /* 501 */ 'u', 'a', 'd', 'd', 'w', '2', 9, 0,
  /* 509 */ 's', 'm', '3', 'p', 'a', 'r', 't', 'w', '2', 9, 0,
  /* 520 */ 'l', 'd', '3', 9, 0,
  /* 525 */ 'e', 'o', 'r', '3', 9, 0,
  /* 531 */ 'd', 'c', 'p', 's', '3', 9, 0,
  /* 538 */ 's', 't', '3', 9, 0,
  /* 543 */ 'r', 'e', 'v', '6', '4', 9, 0,
  /* 550 */ 'l', 'd', '4', 9, 0,
  /* 555 */ 's', 't', '4', 9, 0,
  /* 560 */ 's', 'e', 't', 'f', '1', '6', 9, 0,
  /* 568 */ 'r', 'e', 'v', '1', '6', 9, 0,
  /* 575 */ 's', 'e', 't', 'f', '8', 9, 0,
  /* 582 */ 's', 'm', '3', 't', 't', '1', 'a', 9, 0,
  /* 591 */ 's', 'm', '3', 't', 't', '2', 'a', 9, 0,
  /* 600 */ 'b', 'r', 'a', 'a', 9, 0,
  /* 606 */ 'l', 'd', 'r', 'a', 'a', 9, 0,
  /* 613 */ 'b', 'l', 'r', 'a', 'a', 9, 0,
  /* 620 */ 's', 'a', 'b', 'a', 9, 0,
  /* 626 */ 'u', 'a', 'b', 'a', 9, 0,
  /* 632 */ 'p', 'a', 'c', 'd', 'a', 9, 0,
  /* 639 */ 'l', 'd', 'a', 'd', 'd', 'a', 9, 0,
  /* 647 */ 'f', 'a', 'd', 'd', 'a', 9, 0,
  /* 654 */ 'a', 'u', 't', 'd', 'a', 9, 0,
  /* 661 */ 'p', 'a', 'c', 'g', 'a', 9, 0,
  /* 668 */ 'p', 'a', 'c', 'i', 'a', 9, 0,
  /* 675 */ 'a', 'u', 't', 'i', 'a', 9, 0,
  /* 682 */ 'b', 'r', 'k', 'a', 9, 0,
  /* 688 */ 'f', 'c', 'm', 'l', 'a', 9, 0,
  /* 695 */ 'f', 'm', 'l', 'a', 9, 0,
  /* 701 */ 'f', 'n', 'm', 'l', 'a', 9, 0,
  /* 708 */ 'l', 'd', 's', 'm', 'i', 'n', 'a', 9, 0,
  /* 717 */ 'l', 'd', 'u', 'm', 'i', 'n', 'a', 9, 0,
  /* 726 */ 'b', 'r', 'k', 'p', 'a', 9, 0,
  /* 733 */ 'c', 'a', 's', 'p', 'a', 9, 0,
  /* 740 */ 's', 'w', 'p', 'a', 9, 0,
  /* 746 */ 'f', 'e', 'x', 'p', 'a', 9, 0,
  /* 753 */ 'l', 'd', 'c', 'l', 'r', 'a', 9, 0,
  /* 761 */ 'l', 'd', 'e', 'o', 'r', 'a', 9, 0,
  /* 769 */ 's', 'r', 's', 'r', 'a', 9, 0,
  /* 776 */ 'u', 'r', 's', 'r', 'a', 9, 0,
  /* 783 */ 's', 's', 'r', 'a', 9, 0,
  /* 789 */ 'u', 's', 'r', 'a', 9, 0,
  /* 795 */ 'c', 'a', 's', 'a', 9, 0,
  /* 801 */ 'l', 'd', 's', 'e', 't', 'a', 9, 0,
  /* 809 */ 'f', 'r', 'i', 'n', 't', 'a', 9, 0,
  /* 817 */ 'c', 'l', 'a', 's', 't', 'a', 9, 0,
  /* 825 */ 'l', 'd', 's', 'm', 'a', 'x', 'a', 9, 0,
  /* 834 */ 'l', 'd', 'u', 'm', 'a', 'x', 'a', 9, 0,
  /* 843 */ 'p', 'a', 'c', 'd', 'z', 'a', 9, 0,
  /* 851 */ 'a', 'u', 't', 'd', 'z', 'a', 9, 0,
  /* 859 */ 'p', 'a', 'c', 'i', 'z', 'a', 9, 0,
  /* 867 */ 'a', 'u', 't', 'i', 'z', 'a', 9, 0,
  /* 875 */ 'l', 'd', '1', 'b', 9, 0,
  /* 881 */ 'l', 'd', 'f', 'f', '1', 'b', 9, 0,
  /* 889 */ 'l', 'd', 'n', 'f', '1', 'b', 9, 0,
  /* 897 */ 'l', 'd', 'n', 't', '1', 'b', 9, 0,
  /* 905 */ 's', 't', 'n', 't', '1', 'b', 9, 0,
  /* 913 */ 's', 't', '1', 'b', 9, 0,
  /* 919 */ 's', 'm', '3', 't', 't', '1', 'b', 9, 0,
  /* 928 */ 'c', 'r', 'c', '3', '2', 'b', 9, 0,
  /* 936 */ 'l', 'd', '2', 'b', 9, 0,
  /* 942 */ 's', 't', '2', 'b', 9, 0,
  /* 948 */ 's', 'm', '3', 't', 't', '2', 'b', 9, 0,
  /* 957 */ 'l', 'd', '3', 'b', 9, 0,
  /* 963 */ 's', 't', '3', 'b', 9, 0,
  /* 969 */ 'l', 'd', '4', 'b', 9, 0,
  /* 975 */ 's', 't', '4', 'b', 9, 0,
  /* 981 */ 'l', 'd', 'a', 'd', 'd', 'a', 'b', 9, 0,
  /* 990 */ 'l', 'd', 's', 'm', 'i', 'n', 'a', 'b', 9, 0,
  /* 1000 */ 'l', 'd', 'u', 'm', 'i', 'n', 'a', 'b', 9, 0,
  /* 1010 */ 's', 'w', 'p', 'a', 'b', 9, 0,
  /* 1017 */ 'b', 'r', 'a', 'b', 9, 0,
  /* 1023 */ 'l', 'd', 'r', 'a', 'b', 9, 0,
  /* 1030 */ 'b', 'l', 'r', 'a', 'b', 9, 0,
  /* 1037 */ 'l', 'd', 'c', 'l', 'r', 'a', 'b', 9, 0,
  /* 1046 */ 'l', 'd', 'e', 'o', 'r', 'a', 'b', 9, 0,
  /* 1055 */ 'c', 'a', 's', 'a', 'b', 9, 0,
  /* 1062 */ 'l', 'd', 's', 'e', 't', 'a', 'b', 9, 0,
  /* 1071 */ 'l', 'd', 's', 'm', 'a', 'x', 'a', 'b', 9, 0,
  /* 1081 */ 'l', 'd', 'u', 'm', 'a', 'x', 'a', 'b', 9, 0,
  /* 1091 */ 'c', 'r', 'c', '3', '2', 'c', 'b', 9, 0,
  /* 1100 */ 's', 'q', 'd', 'e', 'c', 'b', 9, 0,
  /* 1108 */ 'u', 'q', 'd', 'e', 'c', 'b', 9, 0,
  /* 1116 */ 's', 'q', 'i', 'n', 'c', 'b', 9, 0,
  /* 1124 */ 'u', 'q', 'i', 'n', 'c', 'b', 9, 0,
  /* 1132 */ 'p', 'a', 'c', 'd', 'b', 9, 0,
  /* 1139 */ 'l', 'd', 'a', 'd', 'd', 'b', 9, 0,
  /* 1147 */ 'a', 'u', 't', 'd', 'b', 9, 0,
  /* 1154 */ 'p', 'r', 'f', 'b', 9, 0,
  /* 1160 */ 'p', 'a', 'c', 'i', 'b', 9, 0,
  /* 1167 */ 'a', 'u', 't', 'i', 'b', 9, 0,
  /* 1174 */ 'b', 'r', 'k', 'b', 9, 0,
  /* 1180 */ 'l', 'd', 'a', 'd', 'd', 'a', 'l', 'b', 9, 0,
  /* 1190 */ 'l', 'd', 's', 'm', 'i', 'n', 'a', 'l', 'b', 9, 0,
  /* 1201 */ 'l', 'd', 'u', 'm', 'i', 'n', 'a', 'l', 'b', 9, 0,
  /* 1212 */ 's', 'w', 'p', 'a', 'l', 'b', 9, 0,
  /* 1220 */ 'l', 'd', 'c', 'l', 'r', 'a', 'l', 'b', 9, 0,
  /* 1230 */ 'l', 'd', 'e', 'o', 'r', 'a', 'l', 'b', 9, 0,
  /* 1240 */ 'c', 'a', 's', 'a', 'l', 'b', 9, 0,
  /* 1248 */ 'l', 'd', 's', 'e', 't', 'a', 'l', 'b', 9, 0,
  /* 1258 */ 'l', 'd', 's', 'm', 'a', 'x', 'a', 'l', 'b', 9, 0,
  /* 1269 */ 'l', 'd', 'u', 'm', 'a', 'x', 'a', 'l', 'b', 9, 0,
  /* 1280 */ 'l', 'd', 'a', 'd', 'd', 'l', 'b', 9, 0,
  /* 1289 */ 'l', 'd', 's', 'm', 'i', 'n', 'l', 'b', 9, 0,
  /* 1299 */ 'l', 'd', 'u', 'm', 'i', 'n', 'l', 'b', 9, 0,
  /* 1309 */ 's', 'w', 'p', 'l', 'b', 9, 0,
  /* 1316 */ 'l', 'd', 'c', 'l', 'r', 'l', 'b', 9, 0,
  /* 1325 */ 'l', 'd', 'e', 'o', 'r', 'l', 'b', 9, 0,
  /* 1334 */ 'c', 'a', 's', 'l', 'b', 9, 0,
  /* 1341 */ 'l', 'd', 's', 'e', 't', 'l', 'b', 9, 0,
  /* 1350 */ 'l', 'd', 's', 'm', 'a', 'x', 'l', 'b', 9, 0,
  /* 1360 */ 'l', 'd', 'u', 'm', 'a', 'x', 'l', 'b', 9, 0,
  /* 1370 */ 'd', 'm', 'b', 9, 0,
  /* 1375 */ 'l', 'd', 's', 'm', 'i', 'n', 'b', 9, 0,
  /* 1384 */ 'l', 'd', 'u', 'm', 'i', 'n', 'b', 9, 0,
  /* 1393 */ 'b', 'r', 'k', 'p', 'b', 9, 0,
  /* 1400 */ 's', 'w', 'p', 'b', 9, 0,
  /* 1406 */ 'l', 'd', '1', 'r', 'q', 'b', 9, 0,
  /* 1414 */ 'l', 'd', '1', 'r', 'b', 9, 0,
  /* 1421 */ 'l', 'd', 'a', 'r', 'b', 9, 0,
  /* 1428 */ 'l', 'd', 'l', 'a', 'r', 'b', 9, 0,
  /* 1436 */ 'l', 'd', 'r', 'b', 9, 0,
  /* 1442 */ 'l', 'd', 'c', 'l', 'r', 'b', 9, 0,
  /* 1450 */ 's', 't', 'l', 'l', 'r', 'b', 9, 0,
  /* 1458 */ 's', 't', 'l', 'r', 'b', 9, 0,
  /* 1465 */ 'l', 'd', 'e', 'o', 'r', 'b', 9, 0,
  /* 1473 */ 'l', 'd', 'a', 'p', 'r', 'b', 9, 0,
  /* 1481 */ 'l', 'd', 't', 'r', 'b', 9, 0,
  /* 1488 */ 's', 't', 'r', 'b', 9, 0,
  /* 1494 */ 's', 't', 't', 'r', 'b', 9, 0,
  /* 1501 */ 'l', 'd', 'u', 'r', 'b', 9, 0,
  /* 1508 */ 's', 't', 'l', 'u', 'r', 'b', 9, 0,
  /* 1516 */ 'l', 'd', 'a', 'p', 'u', 'r', 'b', 9, 0,
  /* 1525 */ 's', 't', 'u', 'r', 'b', 9, 0,
  /* 1532 */ 'l', 'd', 'a', 'x', 'r', 'b', 9, 0,
  /* 1540 */ 'l', 'd', 'x', 'r', 'b', 9, 0,
  /* 1547 */ 's', 't', 'l', 'x', 'r', 'b', 9, 0,
  /* 1555 */ 's', 't', 'x', 'r', 'b', 9, 0,
  /* 1562 */ 'l', 'd', '1', 's', 'b', 9, 0,
  /* 1569 */ 'l', 'd', 'f', 'f', '1', 's', 'b', 9, 0,
  /* 1578 */ 'l', 'd', 'n', 'f', '1', 's', 'b', 9, 0,
  /* 1587 */ 'c', 'a', 's', 'b', 9, 0,
  /* 1593 */ 'd', 's', 'b', 9, 0,
  /* 1598 */ 'i', 's', 'b', 9, 0,
  /* 1603 */ 'f', 'm', 's', 'b', 9, 0,
  /* 1609 */ 'f', 'n', 'm', 's', 'b', 9, 0,
  /* 1616 */ 'l', 'd', '1', 'r', 's', 'b', 9, 0,
  /* 1624 */ 'l', 'd', 'r', 's', 'b', 9, 0,
  /* 1631 */ 'l', 'd', 't', 'r', 's', 'b', 9, 0,
  /* 1639 */ 'l', 'd', 'u', 'r', 's', 'b', 9, 0,
  /* 1647 */ 'l', 'd', 'a', 'p', 'u', 'r', 's', 'b', 9, 0,
  /* 1657 */ 't', 's', 'b', 9, 0,
  /* 1662 */ 'l', 'd', 's', 'e', 't', 'b', 9, 0,
  /* 1670 */ 'c', 'n', 't', 'b', 9, 0,
  /* 1676 */ 'c', 'l', 'a', 's', 't', 'b', 9, 0,
  /* 1684 */ 's', 'x', 't', 'b', 9, 0,
  /* 1690 */ 'u', 'x', 't', 'b', 9, 0,
  /* 1696 */ 'f', 's', 'u', 'b', 9, 0,
  /* 1702 */ 's', 'h', 's', 'u', 'b', 9, 0,
  /* 1709 */ 'u', 'h', 's', 'u', 'b', 9, 0,
  /* 1716 */ 'f', 'm', 's', 'u', 'b', 9, 0,
  /* 1723 */ 'f', 'n', 'm', 's', 'u', 'b', 9, 0,
  /* 1731 */ 's', 'q', 's', 'u', 'b', 9, 0,
  /* 1738 */ 'u', 'q', 's', 'u', 'b', 9, 0,
  /* 1745 */ 'r', 'e', 'v', 'b', 9, 0,
  /* 1751 */ 'l', 'd', 's', 'm', 'a', 'x', 'b', 9, 0,
  /* 1760 */ 'l', 'd', 'u', 'm', 'a', 'x', 'b', 9, 0,
  /* 1769 */ 'p', 'a', 'c', 'd', 'z', 'b', 9, 0,
  /* 1777 */ 'a', 'u', 't', 'd', 'z', 'b', 9, 0,
  /* 1785 */ 'p', 'a', 'c', 'i', 'z', 'b', 9, 0,
  /* 1793 */ 'a', 'u', 't', 'i', 'z', 'b', 9, 0,
  /* 1801 */ 's', 'h', 'a', '1', 'c', 9, 0,
  /* 1808 */ 's', 'b', 'c', 9, 0,
  /* 1813 */ 'a', 'd', 'c', 9, 0,
  /* 1818 */ 'b', 'i', 'c', 9, 0,
  /* 1823 */ 'a', 'e', 's', 'i', 'm', 'c', 9, 0,
  /* 1831 */ 'a', 'e', 's', 'm', 'c', 9, 0,
  /* 1838 */ 'c', 's', 'i', 'n', 'c', 9, 0,
  /* 1845 */ 'h', 'v', 'c', 9, 0,
  /* 1850 */ 's', 'v', 'c', 9, 0,
  /* 1855 */ 'l', 'd', '1', 'd', 9, 0,
  /* 1861 */ 'l', 'd', 'f', 'f', '1', 'd', 9, 0,
  /* 1869 */ 'l', 'd', 'n', 'f', '1', 'd', 9, 0,
  /* 1877 */ 'l', 'd', 'n', 't', '1', 'd', 9, 0,
  /* 1885 */ 's', 't', 'n', 't', '1', 'd', 9, 0,
  /* 1893 */ 's', 't', '1', 'd', 9, 0,
  /* 1899 */ 'l', 'd', '2', 'd', 9, 0,
  /* 1905 */ 's', 't', '2', 'd', 9, 0,
  /* 1911 */ 'l', 'd', '3', 'd', 9, 0,
  /* 1917 */ 's', 't', '3', 'd', 9, 0,
  /* 1923 */ 'l', 'd', '4', 'd', 9, 0,
  /* 1929 */ 's', 't', '4', 'd', 9, 0,
  /* 1935 */ 'f', 'm', 'a', 'd', 9, 0,
  /* 1941 */ 'f', 'n', 'm', 'a', 'd', 9, 0,
  /* 1948 */ 'f', 't', 'm', 'a', 'd', 9, 0,
  /* 1955 */ 'f', 'a', 'b', 'd', 9, 0,
  /* 1961 */ 's', 'a', 'b', 'd', 9, 0,
  /* 1967 */ 'u', 'a', 'b', 'd', 9, 0,
  /* 1973 */ 'x', 'p', 'a', 'c', 'd', 9, 0,
  /* 1980 */ 's', 'q', 'd', 'e', 'c', 'd', 9, 0,
  /* 1988 */ 'u', 'q', 'd', 'e', 'c', 'd', 9, 0,
  /* 1996 */ 's', 'q', 'i', 'n', 'c', 'd', 9, 0,
  /* 2004 */ 'u', 'q', 'i', 'n', 'c', 'd', 9, 0,
  /* 2012 */ 'f', 'c', 'a', 'd', 'd', 9, 0,
  /* 2019 */ 'l', 'd', 'a', 'd', 'd', 9, 0,
  /* 2026 */ 'f', 'a', 'd', 'd', 9, 0,
  /* 2032 */ 's', 'r', 'h', 'a', 'd', 'd', 9, 0,
  /* 2040 */ 'u', 'r', 'h', 'a', 'd', 'd', 9, 0,
  /* 2048 */ 's', 'h', 'a', 'd', 'd', 9, 0,
  /* 2055 */ 'u', 'h', 'a', 'd', 'd', 9, 0,
  /* 2062 */ 'f', 'm', 'a', 'd', 'd', 9, 0,
  /* 2069 */ 'f', 'n', 'm', 'a', 'd', 'd', 9, 0,
  /* 2077 */ 'u', 's', 'q', 'a', 'd', 'd', 9, 0,
  /* 2085 */ 's', 'u', 'q', 'a', 'd', 'd', 9, 0,
  /* 2093 */ 'p', 'r', 'f', 'd', 9, 0,
  /* 2099 */ 'n', 'a', 'n', 'd', 9, 0,
  /* 2105 */ 'l', 'd', '1', 'r', 'q', 'd', 9, 0,
  /* 2113 */ 'l', 'd', '1', 'r', 'd', 9, 0,
  /* 2120 */ 'a', 's', 'r', 'd', 9, 0,
  /* 2126 */ 'a', 'e', 's', 'd', 9, 0,
  /* 2132 */ 'c', 'n', 't', 'd', 9, 0,
  /* 2138 */ 's', 'm', '4', 'e', 9, 0,
  /* 2144 */ 's', 'p', 'l', 'i', 'c', 'e', 9, 0,
  /* 2152 */ 'f', 'a', 'c', 'g', 'e', 9, 0,
  /* 2159 */ 'f', 'c', 'm', 'g', 'e', 9, 0,
  /* 2166 */ 'c', 'm', 'p', 'g', 'e', 9, 0,
  /* 2173 */ 'f', 's', 'c', 'a', 'l', 'e', 9, 0,
  /* 2181 */ 'w', 'h', 'i', 'l', 'e', 'l', 'e', 9, 0,
  /* 2190 */ 'f', 'c', 'm', 'l', 'e', 9, 0,
  /* 2197 */ 'c', 'm', 'p', 'l', 'e', 9, 0,
  /* 2204 */ 'f', 'c', 'm', 'n', 'e', 9, 0,
  /* 2211 */ 'c', 't', 'e', 'r', 'm', 'n', 'e', 9, 0,
  /* 2220 */ 'c', 'm', 'p', 'n', 'e', 9, 0,
  /* 2227 */ 'f', 'r', 'e', 'c', 'p', 'e', 9, 0,
  /* 2235 */ 'u', 'r', 'e', 'c', 'p', 'e', 9, 0,
  /* 2243 */ 'f', 'c', 'c', 'm', 'p', 'e', 9, 0,
  /* 2251 */ 'f', 'c', 'm', 'p', 'e', 9, 0,
  /* 2258 */ 'a', 'e', 's', 'e', 9, 0,
  /* 2264 */ 'p', 'f', 'a', 'l', 's', 'e', 9, 0,
  /* 2272 */ 'f', 'r', 's', 'q', 'r', 't', 'e', 9, 0,
  /* 2281 */ 'u', 'r', 's', 'q', 'r', 't', 'e', 9, 0,
  /* 2290 */ 'p', 't', 'r', 'u', 'e', 9, 0,
  /* 2297 */ 'b', 'i', 'f', 9, 0,
  /* 2302 */ 'r', 'm', 'i', 'f', 9, 0,
  /* 2308 */ 's', 'c', 'v', 't', 'f', 9, 0,
  /* 2315 */ 'u', 'c', 'v', 't', 'f', 9, 0,
  /* 2322 */ 'f', 'n', 'e', 'g', 9, 0,
  /* 2328 */ 's', 'q', 'n', 'e', 'g', 9, 0,
  /* 2335 */ 'c', 's', 'n', 'e', 'g', 9, 0,
  /* 2342 */ 's', 'h', 'a', '1', 'h', 9, 0,
  /* 2349 */ 'l', 'd', '1', 'h', 9, 0,
  /* 2355 */ 'l', 'd', 'f', 'f', '1', 'h', 9, 0,
  /* 2363 */ 'l', 'd', 'n', 'f', '1', 'h', 9, 0,
  /* 2371 */ 'l', 'd', 'n', 't', '1', 'h', 9, 0,
  /* 2379 */ 's', 't', 'n', 't', '1', 'h', 9, 0,
  /* 2387 */ 's', 't', '1', 'h', 9, 0,
  /* 2393 */ 's', 'h', 'a', '5', '1', '2', 'h', 9, 0,
  /* 2402 */ 'c', 'r', 'c', '3', '2', 'h', 9, 0,
  /* 2410 */ 'l', 'd', '2', 'h', 9, 0,
  /* 2416 */ 's', 't', '2', 'h', 9, 0,
  /* 2422 */ 'l', 'd', '3', 'h', 9, 0,
  /* 2428 */ 's', 't', '3', 'h', 9, 0,
  /* 2434 */ 'l', 'd', '4', 'h', 9, 0,
  /* 2440 */ 's', 't', '4', 'h', 9, 0,
  /* 2446 */ 's', 'h', 'a', '2', '5', '6', 'h', 9, 0,
  /* 2455 */ 'l', 'd', 'a', 'd', 'd', 'a', 'h', 9, 0,
  /* 2464 */ 's', 'q', 'r', 'd', 'm', 'l', 'a', 'h', 9, 0,
  /* 2474 */ 'l', 'd', 's', 'm', 'i', 'n', 'a', 'h', 9, 0,
  /* 2484 */ 'l', 'd', 'u', 'm', 'i', 'n', 'a', 'h', 9, 0,
  /* 2494 */ 's', 'w', 'p', 'a', 'h', 9, 0,
  /* 2501 */ 'l', 'd', 'c', 'l', 'r', 'a', 'h', 9, 0,
  /* 2510 */ 'l', 'd', 'e', 'o', 'r', 'a', 'h', 9, 0,
  /* 2519 */ 'c', 'a', 's', 'a', 'h', 9, 0,
  /* 2526 */ 'l', 'd', 's', 'e', 't', 'a', 'h', 9, 0,
  /* 2535 */ 'l', 'd', 's', 'm', 'a', 'x', 'a', 'h', 9, 0,
  /* 2545 */ 'l', 'd', 'u', 'm', 'a', 'x', 'a', 'h', 9, 0,
  /* 2555 */ 'c', 'r', 'c', '3', '2', 'c', 'h', 9, 0,
  /* 2564 */ 's', 'q', 'd', 'e', 'c', 'h', 9, 0,
  /* 2572 */ 'u', 'q', 'd', 'e', 'c', 'h', 9, 0,
  /* 2580 */ 's', 'q', 'i', 'n', 'c', 'h', 9, 0,
  /* 2588 */ 'u', 'q', 'i', 'n', 'c', 'h', 9, 0,
  /* 2596 */ 'l', 'd', 'a', 'd', 'd', 'h', 9, 0,
  /* 2604 */ 'p', 'r', 'f', 'h', 9, 0,
  /* 2610 */ 'l', 'd', 'a', 'd', 'd', 'a', 'l', 'h', 9, 0,
  /* 2620 */ 'l', 'd', 's', 'm', 'i', 'n', 'a', 'l', 'h', 9, 0,
  /* 2631 */ 'l', 'd', 'u', 'm', 'i', 'n', 'a', 'l', 'h', 9, 0,
  /* 2642 */ 's', 'w', 'p', 'a', 'l', 'h', 9, 0,
  /* 2650 */ 'l', 'd', 'c', 'l', 'r', 'a', 'l', 'h', 9, 0,
  /* 2660 */ 'l', 'd', 'e', 'o', 'r', 'a', 'l', 'h', 9, 0,
  /* 2670 */ 'c', 'a', 's', 'a', 'l', 'h', 9, 0,
  /* 2678 */ 'l', 'd', 's', 'e', 't', 'a', 'l', 'h', 9, 0,
  /* 2688 */ 'l', 'd', 's', 'm', 'a', 'x', 'a', 'l', 'h', 9, 0,
  /* 2699 */ 'l', 'd', 'u', 'm', 'a', 'x', 'a', 'l', 'h', 9, 0,
  /* 2710 */ 'l', 'd', 'a', 'd', 'd', 'l', 'h', 9, 0,
  /* 2719 */ 'l', 'd', 's', 'm', 'i', 'n', 'l', 'h', 9, 0,
  /* 2729 */ 'l', 'd', 'u', 'm', 'i', 'n', 'l', 'h', 9, 0,
  /* 2739 */ 's', 'w', 'p', 'l', 'h', 9, 0,
  /* 2746 */ 'l', 'd', 'c', 'l', 'r', 'l', 'h', 9, 0,
  /* 2755 */ 'l', 'd', 'e', 'o', 'r', 'l', 'h', 9, 0,
  /* 2764 */ 'c', 'a', 's', 'l', 'h', 9, 0,
  /* 2771 */ 'l', 'd', 's', 'e', 't', 'l', 'h', 9, 0,
  /* 2780 */ 's', 'q', 'd', 'm', 'u', 'l', 'h', 9, 0,
  /* 2789 */ 's', 'q', 'r', 'd', 'm', 'u', 'l', 'h', 9, 0,
  /* 2799 */ 's', 'm', 'u', 'l', 'h', 9, 0,
  /* 2806 */ 'u', 'm', 'u', 'l', 'h', 9, 0,
  /* 2813 */ 'l', 'd', 's', 'm', 'a', 'x', 'l', 'h', 9, 0,
  /* 2823 */ 'l', 'd', 'u', 'm', 'a', 'x', 'l', 'h', 9, 0,
  /* 2833 */ 'l', 'd', 's', 'm', 'i', 'n', 'h', 9, 0,
  /* 2842 */ 'l', 'd', 'u', 'm', 'i', 'n', 'h', 9, 0,
  /* 2851 */ 's', 'w', 'p', 'h', 9, 0,
  /* 2857 */ 'l', 'd', '1', 'r', 'q', 'h', 9, 0,
  /* 2865 */ 'l', 'd', '1', 'r', 'h', 9, 0,
  /* 2872 */ 'l', 'd', 'a', 'r', 'h', 9, 0,
  /* 2879 */ 'l', 'd', 'l', 'a', 'r', 'h', 9, 0,
  /* 2887 */ 'l', 'd', 'r', 'h', 9, 0,
  /* 2893 */ 'l', 'd', 'c', 'l', 'r', 'h', 9, 0,
  /* 2901 */ 's', 't', 'l', 'l', 'r', 'h', 9, 0,
  /* 2909 */ 's', 't', 'l', 'r', 'h', 9, 0,
  /* 2916 */ 'l', 'd', 'e', 'o', 'r', 'h', 9, 0,
  /* 2924 */ 'l', 'd', 'a', 'p', 'r', 'h', 9, 0,
  /* 2932 */ 'l', 'd', 't', 'r', 'h', 9, 0,
  /* 2939 */ 's', 't', 'r', 'h', 9, 0,
  /* 2945 */ 's', 't', 't', 'r', 'h', 9, 0,
  /* 2952 */ 'l', 'd', 'u', 'r', 'h', 9, 0,
  /* 2959 */ 's', 't', 'l', 'u', 'r', 'h', 9, 0,
  /* 2967 */ 'l', 'd', 'a', 'p', 'u', 'r', 'h', 9, 0,
  /* 2976 */ 's', 't', 'u', 'r', 'h', 9, 0,
  /* 2983 */ 'l', 'd', 'a', 'x', 'r', 'h', 9, 0,
  /* 2991 */ 'l', 'd', 'x', 'r', 'h', 9, 0,
  /* 2998 */ 's', 't', 'l', 'x', 'r', 'h', 9, 0,
  /* 3006 */ 's', 't', 'x', 'r', 'h', 9, 0,
  /* 3013 */ 'l', 'd', '1', 's', 'h', 9, 0,
  /* 3020 */ 'l', 'd', 'f', 'f', '1', 's', 'h', 9, 0,
  /* 3029 */ 'l', 'd', 'n', 'f', '1', 's', 'h', 9, 0,
  /* 3038 */ 'c', 'a', 's', 'h', 9, 0,
  /* 3044 */ 's', 'q', 'r', 'd', 'm', 'l', 's', 'h', 9, 0,
  /* 3054 */ 'l', 'd', '1', 'r', 's', 'h', 9, 0,
  /* 3062 */ 'l', 'd', 'r', 's', 'h', 9, 0,
  /* 3069 */ 'l', 'd', 't', 'r', 's', 'h', 9, 0,
  /* 3077 */ 'l', 'd', 'u', 'r', 's', 'h', 9, 0,
  /* 3085 */ 'l', 'd', 'a', 'p', 'u', 'r', 's', 'h', 9, 0,
  /* 3095 */ 'l', 'd', 's', 'e', 't', 'h', 9, 0,
  /* 3103 */ 'c', 'n', 't', 'h', 9, 0,
  /* 3109 */ 's', 'x', 't', 'h', 9, 0,
  /* 3115 */ 'u', 'x', 't', 'h', 9, 0,
  /* 3121 */ 'r', 'e', 'v', 'h', 9, 0,
  /* 3127 */ 'l', 'd', 's', 'm', 'a', 'x', 'h', 9, 0,
  /* 3136 */ 'l', 'd', 'u', 'm', 'a', 'x', 'h', 9, 0,
  /* 3145 */ 'x', 'p', 'a', 'c', 'i', 9, 0,
  /* 3152 */ 'p', 'u', 'n', 'p', 'k', 'h', 'i', 9, 0,
  /* 3161 */ 's', 'u', 'n', 'p', 'k', 'h', 'i', 9, 0,
  /* 3170 */ 'u', 'u', 'n', 'p', 'k', 'h', 'i', 9, 0,
  /* 3179 */ 'c', 'm', 'h', 'i', 9, 0,
  /* 3185 */ 'c', 'm', 'p', 'h', 'i', 9, 0,
  /* 3192 */ 's', 'l', 'i', 9, 0,
  /* 3197 */ 'm', 'v', 'n', 'i', 9, 0,
  /* 3203 */ 's', 'r', 'i', 9, 0,
  /* 3208 */ 'f', 'r', 'i', 'n', 't', 'i', 9, 0,
  /* 3216 */ 'm', 'o', 'v', 'i', 9, 0,
  /* 3222 */ 'b', 'r', 'k', 9, 0,
  /* 3227 */ 'm', 'o', 'v', 'k', 9, 0,
  /* 3233 */ 's', 'a', 'b', 'a', 'l', 9, 0,
  /* 3240 */ 'u', 'a', 'b', 'a', 'l', 9, 0,
  /* 3247 */ 'l', 'd', 'a', 'd', 'd', 'a', 'l', 9, 0,
  /* 3256 */ 's', 'q', 'd', 'm', 'l', 'a', 'l', 9, 0,
  /* 3265 */ 's', 'm', 'l', 'a', 'l', 9, 0,
  /* 3272 */ 'u', 'm', 'l', 'a', 'l', 9, 0,
  /* 3279 */ 'l', 'd', 's', 'm', 'i', 'n', 'a', 'l', 9, 0,
  /* 3289 */ 'l', 'd', 'u', 'm', 'i', 'n', 'a', 'l', 9, 0,
  /* 3299 */ 'c', 'a', 's', 'p', 'a', 'l', 9, 0,
  /* 3307 */ 's', 'w', 'p', 'a', 'l', 9, 0,
  /* 3314 */ 'l', 'd', 'c', 'l', 'r', 'a', 'l', 9, 0,
  /* 3323 */ 'l', 'd', 'e', 'o', 'r', 'a', 'l', 9, 0,
  /* 3332 */ 'c', 'a', 's', 'a', 'l', 9, 0,
  /* 3339 */ 'l', 'd', 's', 'e', 't', 'a', 'l', 9, 0,
  /* 3348 */ 'l', 'd', 's', 'm', 'a', 'x', 'a', 'l', 9, 0,
  /* 3358 */ 'l', 'd', 'u', 'm', 'a', 'x', 'a', 'l', 9, 0,
  /* 3368 */ 't', 'b', 'l', 9, 0,
  /* 3373 */ 's', 'm', 's', 'u', 'b', 'l', 9, 0,
  /* 3381 */ 'u', 'm', 's', 'u', 'b', 'l', 9, 0,
  /* 3389 */ 's', 's', 'u', 'b', 'l', 9, 0,
  /* 3396 */ 'u', 's', 'u', 'b', 'l', 9, 0,
  /* 3403 */ 's', 'a', 'b', 'd', 'l', 9, 0,
  /* 3410 */ 'u', 'a', 'b', 'd', 'l', 9, 0,
  /* 3417 */ 'l', 'd', 'a', 'd', 'd', 'l', 9, 0,
  /* 3425 */ 's', 'm', 'a', 'd', 'd', 'l', 9, 0,
  /* 3433 */ 'u', 'm', 'a', 'd', 'd', 'l', 9, 0,
  /* 3441 */ 's', 'a', 'd', 'd', 'l', 9, 0,
  /* 3448 */ 'u', 'a', 'd', 'd', 'l', 9, 0,
  /* 3455 */ 'f', 'c', 's', 'e', 'l', 9, 0,
  /* 3462 */ 'f', 't', 's', 's', 'e', 'l', 9, 0,
  /* 3470 */ 's', 'q', 's', 'h', 'l', 9, 0,
  /* 3477 */ 'u', 'q', 's', 'h', 'l', 9, 0,
  /* 3484 */ 's', 'q', 'r', 's', 'h', 'l', 9, 0,
  /* 3492 */ 'u', 'q', 'r', 's', 'h', 'l', 9, 0,
  /* 3500 */ 's', 'r', 's', 'h', 'l', 9, 0,
  /* 3507 */ 'u', 'r', 's', 'h', 'l', 9, 0,
  /* 3514 */ 's', 's', 'h', 'l', 9, 0,
  /* 3520 */ 'u', 's', 'h', 'l', 9, 0,
  /* 3526 */ 's', 's', 'h', 'l', 'l', 9, 0,
  /* 3533 */ 'u', 's', 'h', 'l', 'l', 9, 0,
  /* 3540 */ 's', 'q', 'd', 'm', 'u', 'l', 'l', 9, 0,
  /* 3549 */ 'p', 'm', 'u', 'l', 'l', 9, 0,
  /* 3556 */ 's', 'm', 'u', 'l', 'l', 9, 0,
  /* 3563 */ 'u', 'm', 'u', 'l', 'l', 9, 0,
  /* 3570 */ 'l', 'd', 's', 'm', 'i', 'n', 'l', 9, 0,
  /* 3579 */ 'l', 'd', 'u', 'm', 'i', 'n', 'l', 9, 0,
  /* 3588 */ 'a', 'd', 'd', 'p', 'l', 9, 0,
  /* 3595 */ 'c', 'a', 's', 'p', 'l', 9, 0,
  /* 3602 */ 's', 'w', 'p', 'l', 9, 0,
  /* 3608 */ 'l', 'd', 'c', 'l', 'r', 'l', 9, 0,
  /* 3616 */ 'l', 'd', 'e', 'o', 'r', 'l', 9, 0,
  /* 3624 */ 'c', 'a', 's', 'l', 9, 0,
  /* 3630 */ 'b', 's', 'l', 9, 0,
  /* 3635 */ 's', 'q', 'd', 'm', 'l', 's', 'l', 9, 0,
  /* 3644 */ 's', 'm', 'l', 's', 'l', 9, 0,
  /* 3651 */ 'u', 'm', 'l', 's', 'l', 9, 0,
  /* 3658 */ 's', 'y', 's', 'l', 9, 0,
  /* 3664 */ 'l', 'd', 's', 'e', 't', 'l', 9, 0,
  /* 3672 */ 'f', 'c', 'v', 't', 'l', 9, 0,
  /* 3679 */ 'f', 'm', 'u', 'l', 9, 0,
  /* 3685 */ 'f', 'n', 'm', 'u', 'l', 9, 0,
  /* 3692 */ 'p', 'm', 'u', 'l', 9, 0,
  /* 3698 */ 'f', 't', 's', 'm', 'u', 'l', 9, 0,
  /* 3706 */ 'a', 'd', 'd', 'v', 'l', 9, 0,
  /* 3713 */ 'r', 'd', 'v', 'l', 9, 0,
  /* 3719 */ 'l', 'd', 's', 'm', 'a', 'x', 'l', 9, 0,
  /* 3728 */ 'l', 'd', 'u', 'm', 'a', 'x', 'l', 9, 0,
  /* 3737 */ 's', 'h', 'a', '1', 'm', 9, 0,
  /* 3744 */ 's', 'b', 'f', 'm', 9, 0,
  /* 3750 */ 'u', 'b', 'f', 'm', 9, 0,
  /* 3756 */ 'p', 'r', 'f', 'm', 9, 0,
  /* 3762 */ 'f', 'm', 'i', 'n', 'n', 'm', 9, 0,
  /* 3770 */ 'f', 'm', 'a', 'x', 'n', 'm', 9, 0,
  /* 3778 */ 'd', 'u', 'p', 'm', 9, 0,
  /* 3784 */ 'f', 'r', 'i', 'n', 't', 'm', 9, 0,
  /* 3792 */ 'p', 'r', 'f', 'u', 'm', 9, 0,
  /* 3799 */ 'r', 's', 'u', 'b', 'h', 'n', 9, 0,
  /* 3807 */ 'r', 'a', 'd', 'd', 'h', 'n', 9, 0,
  /* 3815 */ 'f', 'm', 'i', 'n', 9, 0,
  /* 3821 */ 'l', 'd', 's', 'm', 'i', 'n', 9, 0,
  /* 3829 */ 'l', 'd', 'u', 'm', 'i', 'n', 9, 0,
  /* 3837 */ 'b', 'r', 'k', 'n', 9, 0,
  /* 3843 */ 'c', 'c', 'm', 'n', 9, 0,
  /* 3849 */ 'e', 'o', 'n', 9, 0,
  /* 3854 */ 's', 'q', 's', 'h', 'r', 'n', 9, 0,
  /* 3862 */ 'u', 'q', 's', 'h', 'r', 'n', 9, 0,
  /* 3870 */ 's', 'q', 'r', 's', 'h', 'r', 'n', 9, 0,
  /* 3879 */ 'u', 'q', 'r', 's', 'h', 'r', 'n', 9, 0,
  /* 3888 */ 'o', 'r', 'n', 9, 0,
  /* 3893 */ 'f', 'r', 'i', 'n', 't', 'n', 9, 0,
  /* 3901 */ 'f', 'c', 'v', 't', 'n', 9, 0,
  /* 3908 */ 's', 'q', 'x', 't', 'n', 9, 0,
  /* 3915 */ 'u', 'q', 'x', 't', 'n', 9, 0,
  /* 3922 */ 's', 'q', 's', 'h', 'r', 'u', 'n', 9, 0,
  /* 3931 */ 's', 'q', 'r', 's', 'h', 'r', 'u', 'n', 9, 0,
  /* 3941 */ 's', 'q', 'x', 't', 'u', 'n', 9, 0,
  /* 3949 */ 'm', 'o', 'v', 'n', 9, 0,
  /* 3955 */ 'f', 'c', 'v', 't', 'x', 'n', 9, 0,
  /* 3963 */ 'w', 'h', 'i', 'l', 'e', 'l', 'o', 9, 0,
  /* 3972 */ 'p', 'u', 'n', 'p', 'k', 'l', 'o', 9, 0,
  /* 3981 */ 's', 'u', 'n', 'p', 'k', 'l', 'o', 9, 0,
  /* 3990 */ 'u', 'u', 'n', 'p', 'k', 'l', 'o', 9, 0,
  /* 3999 */ 'c', 'm', 'p', 'l', 'o', 9, 0,
  /* 4006 */ 'f', 'c', 'm', 'u', 'o', 9, 0,
  /* 4013 */ 's', 'h', 'a', '1', 'p', 9, 0,
  /* 4020 */ 's', 'q', 'd', 'e', 'c', 'p', 9, 0,
  /* 4028 */ 'u', 'q', 'd', 'e', 'c', 'p', 9, 0,
  /* 4036 */ 's', 'q', 'i', 'n', 'c', 'p', 9, 0,
  /* 4044 */ 'u', 'q', 'i', 'n', 'c', 'p', 9, 0,
  /* 4052 */ 'f', 'a', 'd', 'd', 'p', 9, 0,
  /* 4059 */ 'l', 'd', 'p', 9, 0,
  /* 4064 */ 's', 'a', 'd', 'a', 'l', 'p', 9, 0,
  /* 4072 */ 'u', 'a', 'd', 'a', 'l', 'p', 9, 0,
  /* 4080 */ 's', 'a', 'd', 'd', 'l', 'p', 9, 0,
  /* 4088 */ 'u', 'a', 'd', 'd', 'l', 'p', 9, 0,
  /* 4096 */ 'f', 'c', 'c', 'm', 'p', 9, 0,
  /* 4103 */ 'f', 'c', 'm', 'p', 9, 0,
  /* 4109 */ 'f', 'm', 'i', 'n', 'n', 'm', 'p', 9, 0,
  /* 4118 */ 'f', 'm', 'a', 'x', 'n', 'm', 'p', 9, 0,
  /* 4127 */ 'l', 'd', 'n', 'p', 9, 0,
  /* 4133 */ 'f', 'm', 'i', 'n', 'p', 9, 0,
  /* 4140 */ 's', 'm', 'i', 'n', 'p', 9, 0,
  /* 4147 */ 'u', 'm', 'i', 'n', 'p', 9, 0,
  /* 4154 */ 's', 't', 'n', 'p', 9, 0,
  /* 4160 */ 'a', 'd', 'r', 'p', 9, 0,
  /* 4166 */ 'c', 'a', 's', 'p', 9, 0,
  /* 4172 */ 'c', 'n', 't', 'p', 9, 0,
  /* 4178 */ 'f', 'r', 'i', 'n', 't', 'p', 9, 0,
  /* 4186 */ 's', 't', 'p', 9, 0,
  /* 4191 */ 'f', 'd', 'u', 'p', 9, 0,
  /* 4197 */ 's', 'w', 'p', 9, 0,
  /* 4202 */ 'l', 'd', 'a', 'x', 'p', 9, 0,
  /* 4209 */ 'f', 'm', 'a', 'x', 'p', 9, 0,
  /* 4216 */ 's', 'm', 'a', 'x', 'p', 9, 0,
  /* 4223 */ 'u', 'm', 'a', 'x', 'p', 9, 0,
  /* 4230 */ 'l', 'd', 'x', 'p', 9, 0,
  /* 4236 */ 's', 't', 'l', 'x', 'p', 9, 0,
  /* 4243 */ 's', 't', 'x', 'p', 9, 0,
  /* 4249 */ 'f', 'c', 'm', 'e', 'q', 9, 0,
  /* 4256 */ 'c', 't', 'e', 'r', 'm', 'e', 'q', 9, 0,
  /* 4265 */ 'c', 'm', 'p', 'e', 'q', 9, 0,
  /* 4272 */ 'l', 'd', '1', 'r', 9, 0,
  /* 4278 */ 'l', 'd', '2', 'r', 9, 0,
  /* 4284 */ 'l', 'd', '3', 'r', 9, 0,
  /* 4290 */ 'l', 'd', '4', 'r', 9, 0,
  /* 4296 */ 'l', 'd', 'a', 'r', 9, 0,
  /* 4302 */ 'l', 'd', 'l', 'a', 'r', 9, 0,
  /* 4309 */ 'x', 'a', 'r', 9, 0,
  /* 4314 */ 'f', 's', 'u', 'b', 'r', 9, 0,
  /* 4321 */ 'a', 'd', 'r', 9, 0,
  /* 4326 */ 'l', 'd', 'r', 9, 0,
  /* 4331 */ 'r', 'd', 'f', 'f', 'r', 9, 0,
  /* 4338 */ 'w', 'r', 'f', 'f', 'r', 9, 0,
  /* 4345 */ 's', 'r', 's', 'h', 'r', 9, 0,
  /* 4352 */ 'u', 'r', 's', 'h', 'r', 9, 0,
  /* 4359 */ 's', 's', 'h', 'r', 9, 0,
  /* 4365 */ 'u', 's', 'h', 'r', 9, 0,
  /* 4371 */ 'b', 'l', 'r', 9, 0,
  /* 4376 */ 'l', 'd', 'c', 'l', 'r', 9, 0,
  /* 4383 */ 's', 't', 'l', 'l', 'r', 9, 0,
  /* 4390 */ 'l', 's', 'l', 'r', 9, 0,
  /* 4396 */ 's', 't', 'l', 'r', 9, 0,
  /* 4402 */ 'l', 'd', 'e', 'o', 'r', 9, 0,
  /* 4409 */ 'n', 'o', 'r', 9, 0,
  /* 4414 */ 'r', 'o', 'r', 9, 0,
  /* 4419 */ 'l', 'd', 'a', 'p', 'r', 9, 0,
  /* 4426 */ 'o', 'r', 'r', 9, 0,
  /* 4431 */ 'a', 's', 'r', 'r', 9, 0,
  /* 4437 */ 'l', 's', 'r', 'r', 9, 0,
  /* 4443 */ 'a', 's', 'r', 9, 0,
  /* 4448 */ 'l', 's', 'r', 9, 0,
  /* 4453 */ 'm', 's', 'r', 9, 0,
  /* 4458 */ 'i', 'n', 's', 'r', 9, 0,
  /* 4464 */ 'l', 'd', 't', 'r', 9, 0,
  /* 4470 */ 's', 't', 'r', 9, 0,
  /* 4475 */ 's', 't', 't', 'r', 9, 0,
  /* 4481 */ 'e', 'x', 't', 'r', 9, 0,
  /* 4487 */ 'l', 'd', 'u', 'r', 9, 0,
  /* 4493 */ 's', 't', 'l', 'u', 'r', 9, 0,
  /* 4500 */ 'l', 'd', 'a', 'p', 'u', 'r', 9, 0,
  /* 4508 */ 's', 't', 'u', 'r', 9, 0,
  /* 4514 */ 'f', 'd', 'i', 'v', 'r', 9, 0,
  /* 4521 */ 's', 'd', 'i', 'v', 'r', 9, 0,
  /* 4528 */ 'u', 'd', 'i', 'v', 'r', 9, 0,
  /* 4535 */ 'l', 'd', 'a', 'x', 'r', 9, 0,
  /* 4542 */ 'l', 'd', 'x', 'r', 9, 0,
  /* 4548 */ 's', 't', 'l', 'x', 'r', 9, 0,
  /* 4555 */ 's', 't', 'x', 'r', 9, 0,
  /* 4561 */ 'c', 'a', 's', 9, 0,
  /* 4566 */ 'b', 'r', 'k', 'a', 's', 9, 0,
  /* 4573 */ 'b', 'r', 'k', 'p', 'a', 's', 9, 0,
  /* 4581 */ 'f', 'c', 'v', 't', 'a', 's', 9, 0,
  /* 4589 */ 'f', 'a', 'b', 's', 9, 0,
  /* 4595 */ 's', 'q', 'a', 'b', 's', 9, 0,
  /* 4602 */ 'b', 'r', 'k', 'b', 's', 9, 0,
  /* 4609 */ 'b', 'r', 'k', 'p', 'b', 's', 9, 0,
  /* 4617 */ 's', 'u', 'b', 's', 9, 0,
  /* 4623 */ 's', 'b', 'c', 's', 9, 0,
  /* 4629 */ 'a', 'd', 'c', 's', 9, 0,
  /* 4635 */ 'b', 'i', 'c', 's', 9, 0,
  /* 4641 */ 'a', 'd', 'd', 's', 9, 0,
  /* 4647 */ 'n', 'a', 'n', 'd', 's', 9, 0,
  /* 4654 */ 'p', 't', 'r', 'u', 'e', 's', 9, 0,
  /* 4662 */ 'c', 'm', 'h', 's', 9, 0,
  /* 4668 */ 'c', 'm', 'p', 'h', 's', 9, 0,
  /* 4675 */ 'c', 'l', 's', 9, 0,
  /* 4680 */ 'w', 'h', 'i', 'l', 'e', 'l', 's', 9, 0,
  /* 4689 */ 'f', 'm', 'l', 's', 9, 0,
  /* 4695 */ 'f', 'n', 'm', 'l', 's', 9, 0,
  /* 4702 */ 'c', 'm', 'p', 'l', 's', 9, 0,
  /* 4709 */ 'f', 'c', 'v', 't', 'm', 's', 9, 0,
  /* 4717 */ 'i', 'n', 's', 9, 0,
  /* 4722 */ 'b', 'r', 'k', 'n', 's', 9, 0,
  /* 4729 */ 'o', 'r', 'n', 's', 9, 0,
  /* 4735 */ 'f', 'c', 'v', 't', 'n', 's', 9, 0,
  /* 4743 */ 'f', 'r', 'e', 'c', 'p', 's', 9, 0,
  /* 4751 */ 'f', 'c', 'v', 't', 'p', 's', 9, 0,
  /* 4759 */ 'r', 'd', 'f', 'f', 'r', 's', 9, 0,
  /* 4767 */ 'm', 'r', 's', 9, 0,
  /* 4772 */ 'e', 'o', 'r', 's', 9, 0,
  /* 4778 */ 'n', 'o', 'r', 's', 9, 0,
  /* 4784 */ 'o', 'r', 'r', 's', 9, 0,
  /* 4790 */ 'f', 'r', 's', 'q', 'r', 't', 's', 9, 0,
  /* 4799 */ 's', 'y', 's', 9, 0,
  /* 4804 */ 'f', 'c', 'v', 't', 'z', 's', 9, 0,
  /* 4812 */ 'f', 'j', 'c', 'v', 't', 'z', 's', 9, 0,
  /* 4821 */ 'c', 'o', 'm', 'p', 'a', 'c', 't', 9, 0,
  /* 4830 */ 'r', 'e', 't', 9, 0,
  /* 4835 */ 'l', 'd', 's', 'e', 't', 9, 0,
  /* 4842 */ 'f', 'a', 'c', 'g', 't', 9, 0,
  /* 4849 */ 'f', 'c', 'm', 'g', 't', 9, 0,
  /* 4856 */ 'c', 'm', 'p', 'g', 't', 9, 0,
  /* 4863 */ 'r', 'b', 'i', 't', 9, 0,
  /* 4869 */ 'w', 'h', 'i', 'l', 'e', 'l', 't', 9, 0,
  /* 4878 */ 'h', 'l', 't', 9, 0,
  /* 4883 */ 'f', 'c', 'm', 'l', 't', 9, 0,
  /* 4890 */ 'c', 'm', 'p', 'l', 't', 9, 0,
  /* 4897 */ 'c', 'n', 't', 9, 0,
  /* 4902 */ 'h', 'i', 'n', 't', 9, 0,
  /* 4908 */ 's', 'd', 'o', 't', 9, 0,
  /* 4914 */ 'u', 'd', 'o', 't', 9, 0,
  /* 4920 */ 'c', 'n', 'o', 't', 9, 0,
  /* 4926 */ 'f', 's', 'q', 'r', 't', 9, 0,
  /* 4933 */ 'p', 't', 'e', 's', 't', 9, 0,
  /* 4940 */ 'p', 'f', 'i', 'r', 's', 't', 9, 0,
  /* 4948 */ 'c', 'm', 't', 's', 't', 9, 0,
  /* 4955 */ 'f', 'c', 'v', 't', 9, 0,
  /* 4961 */ 'p', 'n', 'e', 'x', 't', 9, 0,
  /* 4968 */ 'f', 'c', 'v', 't', 'a', 'u', 9, 0,
  /* 4976 */ 's', 'q', 's', 'h', 'l', 'u', 9, 0,
  /* 4984 */ 'f', 'c', 'v', 't', 'm', 'u', 9, 0,
  /* 4992 */ 'f', 'c', 'v', 't', 'n', 'u', 9, 0,
  /* 5000 */ 'f', 'c', 'v', 't', 'p', 'u', 9, 0,
  /* 5008 */ 'f', 'c', 'v', 't', 'z', 'u', 9, 0,
  /* 5016 */ 'f', 'a', 'd', 'd', 'v', 9, 0,
  /* 5023 */ 's', 'a', 'd', 'd', 'v', 9, 0,
  /* 5030 */ 'u', 'a', 'd', 'd', 'v', 9, 0,
  /* 5037 */ 'a', 'n', 'd', 'v', 9, 0,
  /* 5043 */ 'r', 'e', 'v', 9, 0,
  /* 5048 */ 'f', 'd', 'i', 'v', 9, 0,
  /* 5054 */ 's', 'd', 'i', 'v', 9, 0,
  /* 5060 */ 'u', 'd', 'i', 'v', 9, 0,
  /* 5066 */ 's', 'a', 'd', 'd', 'l', 'v', 9, 0,
  /* 5074 */ 'u', 'a', 'd', 'd', 'l', 'v', 9, 0,
  /* 5082 */ 'f', 'm', 'i', 'n', 'n', 'm', 'v', 9, 0,
  /* 5091 */ 'f', 'm', 'a', 'x', 'n', 'm', 'v', 9, 0,
  /* 5100 */ 'f', 'm', 'i', 'n', 'v', 9, 0,
  /* 5107 */ 's', 'm', 'i', 'n', 'v', 9, 0,
  /* 5114 */ 'u', 'm', 'i', 'n', 'v', 9, 0,
  /* 5121 */ 'c', 's', 'i', 'n', 'v', 9, 0,
  /* 5128 */ 'f', 'm', 'o', 'v', 9, 0,
  /* 5134 */ 's', 'm', 'o', 'v', 9, 0,
  /* 5140 */ 'u', 'm', 'o', 'v', 9, 0,
  /* 5146 */ 'e', 'o', 'r', 'v', 9, 0,
  /* 5152 */ 'f', 'm', 'a', 'x', 'v', 9, 0,
  /* 5159 */ 's', 'm', 'a', 'x', 'v', 9, 0,
  /* 5166 */ 'u', 'm', 'a', 'x', 'v', 9, 0,
  /* 5173 */ 'l', 'd', '1', 'w', 9, 0,
  /* 5179 */ 'l', 'd', 'f', 'f', '1', 'w', 9, 0,
  /* 5187 */ 'l', 'd', 'n', 'f', '1', 'w', 9, 0,
  /* 5195 */ 'l', 'd', 'n', 't', '1', 'w', 9, 0,
  /* 5203 */ 's', 't', 'n', 't', '1', 'w', 9, 0,
  /* 5211 */ 's', 't', '1', 'w', 9, 0,
  /* 5217 */ 'c', 'r', 'c', '3', '2', 'w', 9, 0,
  /* 5225 */ 'l', 'd', '2', 'w', 9, 0,
  /* 5231 */ 's', 't', '2', 'w', 9, 0,
  /* 5237 */ 'l', 'd', '3', 'w', 9, 0,
  /* 5243 */ 's', 't', '3', 'w', 9, 0,
  /* 5249 */ 'l', 'd', '4', 'w', 9, 0,
  /* 5255 */ 's', 't', '4', 'w', 9, 0,
  /* 5261 */ 's', 's', 'u', 'b', 'w', 9, 0,
  /* 5268 */ 'u', 's', 'u', 'b', 'w', 9, 0,
  /* 5275 */ 'c', 'r', 'c', '3', '2', 'c', 'w', 9, 0,
  /* 5284 */ 's', 'q', 'd', 'e', 'c', 'w', 9, 0,
  /* 5292 */ 'u', 'q', 'd', 'e', 'c', 'w', 9, 0,
  /* 5300 */ 's', 'q', 'i', 'n', 'c', 'w', 9, 0,
  /* 5308 */ 'u', 'q', 'i', 'n', 'c', 'w', 9, 0,
  /* 5316 */ 's', 'a', 'd', 'd', 'w', 9, 0,
  /* 5323 */ 'u', 'a', 'd', 'd', 'w', 9, 0,
  /* 5330 */ 'p', 'r', 'f', 'w', 9, 0,
  /* 5336 */ 'l', 'd', '1', 'r', 'q', 'w', 9, 0,
  /* 5344 */ 'l', 'd', '1', 'r', 'w', 9, 0,
  /* 5351 */ 'l', 'd', '1', 's', 'w', 9, 0,
  /* 5358 */ 'l', 'd', 'f', 'f', '1', 's', 'w', 9, 0,
  /* 5367 */ 'l', 'd', 'n', 'f', '1', 's', 'w', 9, 0,
  /* 5376 */ 'l', 'd', 'p', 's', 'w', 9, 0,
  /* 5383 */ 'l', 'd', '1', 'r', 's', 'w', 9, 0,
  /* 5391 */ 'l', 'd', 'r', 's', 'w', 9, 0,
  /* 5398 */ 'l', 'd', 't', 'r', 's', 'w', 9, 0,
  /* 5406 */ 'l', 'd', 'u', 'r', 's', 'w', 9, 0,
  /* 5414 */ 'l', 'd', 'a', 'p', 'u', 'r', 's', 'w', 9, 0,
  /* 5424 */ 'c', 'n', 't', 'w', 9, 0,
  /* 5430 */ 's', 'x', 't', 'w', 9, 0,
  /* 5436 */ 'u', 'x', 't', 'w', 9, 0,
  /* 5442 */ 'r', 'e', 'v', 'w', 9, 0,
  /* 5448 */ 'c', 'r', 'c', '3', '2', 'x', 9, 0,
  /* 5456 */ 'b', 'c', 'a', 'x', 9, 0,
  /* 5462 */ 'f', 'm', 'a', 'x', 9, 0,
  /* 5468 */ 'l', 'd', 's', 'm', 'a', 'x', 9, 0,
  /* 5476 */ 'l', 'd', 'u', 'm', 'a', 'x', 9, 0,
  /* 5484 */ 't', 'b', 'x', 9, 0,
  /* 5489 */ 'c', 'r', 'c', '3', '2', 'c', 'x', 9, 0,
  /* 5498 */ 'i', 'n', 'd', 'e', 'x', 9, 0,
  /* 5505 */ 'c', 'l', 'r', 'e', 'x', 9, 0,
  /* 5512 */ 'm', 'o', 'v', 'p', 'r', 'f', 'x', 9, 0,
  /* 5521 */ 'f', 'm', 'u', 'l', 'x', 9, 0,
  /* 5528 */ 'f', 'r', 'e', 'c', 'p', 'x', 9, 0,
  /* 5536 */ 'f', 'r', 'i', 'n', 't', 'x', 9, 0,
  /* 5544 */ 's', 'm', '4', 'e', 'k', 'e', 'y', 9, 0,
  /* 5553 */ 'f', 'c', 'p', 'y', 9, 0,
  /* 5559 */ 'b', 'r', 'a', 'a', 'z', 9, 0,
  /* 5566 */ 'b', 'l', 'r', 'a', 'a', 'z', 9, 0,
  /* 5574 */ 'b', 'r', 'a', 'b', 'z', 9, 0,
  /* 5581 */ 'b', 'l', 'r', 'a', 'b', 'z', 9, 0,
  /* 5589 */ 'c', 'b', 'z', 9, 0,
  /* 5594 */ 't', 'b', 'z', 9, 0,
  /* 5599 */ 'c', 'l', 'z', 9, 0,
  /* 5604 */ 'c', 'b', 'n', 'z', 9, 0,
  /* 5610 */ 't', 'b', 'n', 'z', 9, 0,
  /* 5616 */ 'f', 'r', 'i', 'n', 't', 'z', 9, 0,
  /* 5624 */ 'm', 'o', 'v', 'z', 9, 0,
  /* 5630 */ '.', 't', 'l', 's', 'd', 'e', 's', 'c', 'c', 'a', 'l', 'l', 32, 0,
  /* 5644 */ '#', 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,
  /* 5675 */ 'b', '.', 0,
  /* 5678 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'y', 'p', 'e', 'd', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
  /* 5702 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
  /* 5727 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
  /* 5750 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
  /* 5773 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
  /* 5795 */ 'p', 'a', 'c', 'i', 'a', '1', '7', '1', '6', 0,
  /* 5805 */ 'a', 'u', 't', 'i', 'a', '1', '7', '1', '6', 0,
  /* 5815 */ 'p', 'a', 'c', 'i', 'b', '1', '7', '1', '6', 0,
  /* 5825 */ 'a', 'u', 't', 'i', 'b', '1', '7', '1', '6', 0,
  /* 5835 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
  /* 5848 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
  /* 5855 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
  /* 5865 */ 'D', 'B', 'G', '_', 'L', 'A', 'B', 'E', 'L', 0,
  /* 5875 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
  /* 5890 */ 'e', 'r', 'e', 't', 'a', 'a', 0,
  /* 5897 */ 'e', 'r', 'e', 't', 'a', 'b', 0,
  /* 5904 */ 'x', 'p', 'a', 'c', 'l', 'r', 'i', 0,
  /* 5912 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
  /* 5926 */ 'p', 'a', 'c', 'i', 'a', 's', 'p', 0,
  /* 5934 */ 'a', 'u', 't', 'i', 'a', 's', 'p', 0,
  /* 5942 */ 'p', 'a', 'c', 'i', 'b', 's', 'p', 0,
  /* 5950 */ 'a', 'u', 't', 'i', 'b', 's', 'p', 0,
  /* 5958 */ 's', 'e', 't', 'f', 'f', 'r', 0,
  /* 5965 */ 'd', 'r', 'p', 's', 0,
  /* 5970 */ 'e', 'r', 'e', 't', 0,
  /* 5975 */ 'c', 'f', 'i', 'n', 'v', 0,
  /* 5981 */ 'p', 'a', 'c', 'i', 'a', 'z', 0,
  /* 5988 */ 'a', 'u', 't', 'i', 'a', 'z', 0,
  /* 5995 */ 'p', 'a', 'c', 'i', 'b', 'z', 0,
  /* 6002 */ 'a', 'u', 't', 'i', 'b', 'z', 0,
  };

  static const uint32_t OpInfo0[] = {
    0U,	// PHI
    0U,	// INLINEASM
    0U,	// CFI_INSTRUCTION
    0U,	// EH_LABEL
    0U,	// GC_LABEL
    0U,	// ANNOTATION_LABEL
    0U,	// KILL
    0U,	// EXTRACT_SUBREG
    0U,	// INSERT_SUBREG
    0U,	// IMPLICIT_DEF
    0U,	// SUBREG_TO_REG
    0U,	// COPY_TO_REGCLASS
    5856U,	// DBG_VALUE
    5866U,	// DBG_LABEL
    0U,	// REG_SEQUENCE
    0U,	// COPY
    5849U,	// BUNDLE
    5876U,	// LIFETIME_START
    5836U,	// LIFETIME_END
    0U,	// STACKMAP
    5913U,	// FENTRY_CALL
    0U,	// PATCHPOINT
    0U,	// LOAD_STACK_GUARD
    0U,	// STATEPOINT
    0U,	// LOCAL_ESCAPE
    0U,	// FAULTING_OP
    0U,	// PATCHABLE_OP
    5728U,	// PATCHABLE_FUNCTION_ENTER
    5645U,	// PATCHABLE_RET
    5774U,	// PATCHABLE_FUNCTION_EXIT
    5751U,	// PATCHABLE_TAIL_CALL
    5703U,	// PATCHABLE_EVENT_CALL
    5679U,	// PATCHABLE_TYPED_EVENT_CALL
    0U,	// ICALL_BRANCH_FUNNEL
    0U,	// G_ADD
    0U,	// G_SUB
    0U,	// G_MUL
    0U,	// G_SDIV
    0U,	// G_UDIV
    0U,	// G_SREM
    0U,	// G_UREM
    0U,	// G_AND
    0U,	// G_OR
    0U,	// G_XOR
    0U,	// G_IMPLICIT_DEF
    0U,	// G_PHI
    0U,	// G_FRAME_INDEX
    0U,	// G_GLOBAL_VALUE
    0U,	// G_EXTRACT
    0U,	// G_UNMERGE_VALUES
    0U,	// G_INSERT
    0U,	// G_MERGE_VALUES
    0U,	// G_PTRTOINT
    0U,	// G_INTTOPTR
    0U,	// G_BITCAST
    0U,	// G_LOAD
    0U,	// G_SEXTLOAD
    0U,	// G_ZEXTLOAD
    0U,	// G_STORE
    0U,	// G_ATOMIC_CMPXCHG_WITH_SUCCESS
    0U,	// G_ATOMIC_CMPXCHG
    0U,	// G_ATOMICRMW_XCHG
    0U,	// G_ATOMICRMW_ADD
    0U,	// G_ATOMICRMW_SUB
    0U,	// G_ATOMICRMW_AND
    0U,	// G_ATOMICRMW_NAND
    0U,	// G_ATOMICRMW_OR
    0U,	// G_ATOMICRMW_XOR
    0U,	// G_ATOMICRMW_MAX
    0U,	// G_ATOMICRMW_MIN
    0U,	// G_ATOMICRMW_UMAX
    0U,	// G_ATOMICRMW_UMIN
    0U,	// G_BRCOND
    0U,	// G_BRINDIRECT
    0U,	// G_INTRINSIC
    0U,	// G_INTRINSIC_W_SIDE_EFFECTS
    0U,	// G_ANYEXT
    0U,	// G_TRUNC
    0U,	// G_CONSTANT
    0U,	// G_FCONSTANT
    0U,	// G_VASTART
    0U,	// G_VAARG
    0U,	// G_SEXT
    0U,	// G_ZEXT
    0U,	// G_SHL
    0U,	// G_LSHR
    0U,	// G_ASHR
    0U,	// G_ICMP
    0U,	// G_FCMP
    0U,	// G_SELECT
    0U,	// G_UADDE
    0U,	// G_USUBE
    0U,	// G_SADDO
    0U,	// G_SSUBO
    0U,	// G_UMULO
    0U,	// G_SMULO
    0U,	// G_UMULH
    0U,	// G_SMULH
    0U,	// G_FADD
    0U,	// G_FSUB
    0U,	// G_FMUL
    0U,	// G_FMA
    0U,	// G_FDIV
    0U,	// G_FREM
    0U,	// G_FPOW
    0U,	// G_FEXP
    0U,	// G_FEXP2
    0U,	// G_FLOG
    0U,	// G_FLOG2
    0U,	// G_FNEG
    0U,	// G_FPEXT
    0U,	// G_FPTRUNC
    0U,	// G_FPTOSI
    0U,	// G_FPTOUI
    0U,	// G_SITOFP
    0U,	// G_UITOFP
    0U,	// G_FABS
    0U,	// G_GEP
    0U,	// G_PTR_MASK
    0U,	// G_BR
    0U,	// G_INSERT_VECTOR_ELT
    0U,	// G_EXTRACT_VECTOR_ELT
    0U,	// G_SHUFFLE_VECTOR
    0U,	// G_BSWAP
    0U,	// G_ADDRSPACE_CAST
    0U,	// G_BLOCK_ADDR
    12783U,	// ABS_ZPmZ_B
    20975U,	// ABS_ZPmZ_D
    2181591535U,	// ABS_ZPmZ_H
    37359U,	// ABS_ZPmZ_S
    68202991U,	// ABSv16i8
    2248200687U,	// ABSv1i64
    68727279U,	// ABSv2i32
    2216735215U,	// ABSv2i64
    69775855U,	// ABSv4i16
    2217783791U,	// ABSv4i32
    70824431U,	// ABSv8i16
    2218832367U,	// ABSv8i8
    100717078U,	// ADCSWr
    100717078U,	// ADCSXr
    100714262U,	// ADCWr
    100714262U,	// ADCXr
    2216210145U,	// ADDHNv2i64_v2i32
    2284904787U,	// ADDHNv2i64_v4i32
    69775073U,	// ADDHNv4i32_v4i16
    137945427U,	// ADDHNv4i32_v8i16
    2282807635U,	// ADDHNv8i16_v16i8
    2218831585U,	// ADDHNv8i16_v8i8
    100716037U,	// ADDPL_XXI
    68202454U,	// ADDPv16i8
    2216210390U,	// ADDPv2i32
    2216734678U,	// ADDPv2i64
    2214645718U,	// ADDPv2i64p
    69775318U,	// ADDPv4i16
    70299606U,	// ADDPv4i32
    2218307542U,	// ADDPv8i16
    2218831830U,	// ADDPv8i8
    100717090U,	// ADDSWri
    0U,	// ADDSWrr
    100717090U,	// ADDSWrs
    100717090U,	// ADDSWrx
    100717090U,	// ADDSXri
    0U,	// ADDSXrr
    100717090U,	// ADDSXrs
    100717090U,	// ADDSXrx
    100717090U,	// ADDSXrx64
    100716155U,	// ADDVL_XXI
    67163034U,	// ADDVv16i8v
    67163034U,	// ADDVv4i16v
    2214646682U,	// ADDVv4i32v
    67163034U,	// ADDVv8i16v
    2214646682U,	// ADDVv8i8v
    100714463U,	// ADDWri
    0U,	// ADDWrr
    100714463U,	// ADDWrs
    100714463U,	// ADDWrx
    100714463U,	// ADDXri
    0U,	// ADDXrr
    100714463U,	// ADDXrs
    100714463U,	// ADDXrx
    100714463U,	// ADDXrx64
    167782367U,	// ADD_ZI_B
    201344991U,	// ADD_ZI_D
    239626207U,	// ADD_ZI_H
    268470239U,	// ADD_ZI_S
    302000095U,	// ADD_ZPmZ_B
    302008287U,	// ADD_ZPmZ_D
    2186307551U,	// ADD_ZPmZ_H
    302024671U,	// ADD_ZPmZ_S
    167782367U,	// ADD_ZZZ_B
    201344991U,	// ADD_ZZZ_D
    2387109855U,	// ADD_ZZZ_H
    268470239U,	// ADD_ZZZ_S
    0U,	// ADDlowTLS
    68200415U,	// ADDv16i8
    100714463U,	// ADDv1i64
    2216208351U,	// ADDv2i32
    2216732639U,	// ADDv2i64
    69773279U,	// ADDv4i16
    70297567U,	// ADDv4i32
    2218305503U,	// ADDv8i16
    2218829791U,	// ADDv8i8
    0U,	// ADJCALLSTACKDOWN
    0U,	// ADJCALLSTACKUP
    2248200418U,	// ADR
    335597633U,	// ADRP
    207114466U,	// ADR_LSL_ZZZ_D_0
    207114466U,	// ADR_LSL_ZZZ_D_1
    207114466U,	// ADR_LSL_ZZZ_D_2
    207114466U,	// ADR_LSL_ZZZ_D_3
    274239714U,	// ADR_LSL_ZZZ_S_0
    274239714U,	// ADR_LSL_ZZZ_S_1
    274239714U,	// ADR_LSL_ZZZ_S_2
    274239714U,	// ADR_LSL_ZZZ_S_3
    207114466U,	// ADR_SXTW_ZZZ_D_0
    207114466U,	// ADR_SXTW_ZZZ_D_1
    207114466U,	// ADR_SXTW_ZZZ_D_2
    207114466U,	// ADR_SXTW_ZZZ_D_3
    207114466U,	// ADR_UXTW_ZZZ_D_0
    207114466U,	// ADR_UXTW_ZZZ_D_1
    207114466U,	// ADR_UXTW_ZZZ_D_2
    207114466U,	// ADR_UXTW_ZZZ_D_3
    135325775U,	// AESDrr
    135325907U,	// AESErr
    68200224U,	// AESIMCrr
    0U,	// AESIMCrrTied
    68200232U,	// AESMCrr
    0U,	// AESMCrrTied
    100717097U,	// ANDSWri
    0U,	// ANDSWrr
    100717097U,	// ANDSWrs
    100717097U,	// ANDSXri
    0U,	// ANDSXrr
    100717097U,	// ANDSXrs
    302002729U,	// ANDS_PPzPP
    302044078U,	// ANDV_VPZ_B
    302044078U,	// ANDV_VPZ_D
    302044078U,	// ANDV_VPZ_H
    302044078U,	// ANDV_VPZ_S
    100714549U,	// ANDWri
    0U,	// ANDWrr
    100714549U,	// ANDWrs
    100714549U,	// ANDXri
    0U,	// ANDXrr
    100714549U,	// ANDXrs
    302000181U,	// AND_PPzPP
    201345077U,	// AND_ZI
    302000181U,	// AND_ZPmZ_B
    302008373U,	// AND_ZPmZ_D
    2186307637U,	// AND_ZPmZ_H
    302024757U,	// AND_ZPmZ_S
    201345077U,	// AND_ZZZ
    68200501U,	// ANDv16i8
    2218829877U,	// ANDv8i8
    302000201U,	// ASRD_ZPmI_B
    302008393U,	// ASRD_ZPmI_D
    2186307657U,	// ASRD_ZPmI_H
    302024777U,	// ASRD_ZPmI_S
    302002512U,	// ASRR_ZPmZ_B
    302010704U,	// ASRR_ZPmZ_D
    2186309968U,	// ASRR_ZPmZ_H
    302027088U,	// ASRR_ZPmZ_S
    100716892U,	// ASRVWr
    100716892U,	// ASRVXr
    302002524U,	// ASR_WIDE_ZPmZ_B
    2186309980U,	// ASR_WIDE_ZPmZ_H
    302027100U,	// ASR_WIDE_ZPmZ_S
    167784796U,	// ASR_WIDE_ZZZ_B
    2387112284U,	// ASR_WIDE_ZZZ_H
    268472668U,	// ASR_WIDE_ZZZ_S
    302002524U,	// ASR_ZPmI_B
    302010716U,	// ASR_ZPmI_D
    2186309980U,	// ASR_ZPmI_H
    302027100U,	// ASR_ZPmI_S
    302002524U,	// ASR_ZPmZ_B
    302010716U,	// ASR_ZPmZ_D
    2186309980U,	// ASR_ZPmZ_H
    302027100U,	// ASR_ZPmZ_S
    167784796U,	// ASR_ZZI_B
    201347420U,	// ASR_ZZI_D
    239628636U,	// ASR_ZZI_H
    268472668U,	// ASR_ZZI_S
    2248196751U,	// AUTDA
    2248197244U,	// AUTDB
    6341460U,	// AUTDZA
    6342386U,	// AUTDZB
    2248196772U,	// AUTIA
    5806U,	// AUTIA1716
    5935U,	// AUTIASP
    5989U,	// AUTIAZ
    2248197264U,	// AUTIB
    5826U,	// AUTIB1716
    5951U,	// AUTIBSP
    6003U,	// AUTIBZ
    6341476U,	// AUTIZA
    6342402U,	// AUTIZB
    66415U,	// B
    68203857U,	// BCAX
    369151650U,	// BFMWri
    369151650U,	// BFMXri
    0U,	// BICSWrr
    100717084U,	// BICSWrs
    0U,	// BICSXrr
    100717084U,	// BICSXrs
    302002716U,	// BICS_PPzPP
    0U,	// BICWrr
    100714267U,	// BICWrs
    0U,	// BICXrr
    100714267U,	// BICXrs
    301999899U,	// BIC_PPzPP
    301999899U,	// BIC_ZPmZ_B
    302008091U,	// BIC_ZPmZ_D
    2186307355U,	// BIC_ZPmZ_H
    302024475U,	// BIC_ZPmZ_S
    201344795U,	// BIC_ZZZ
    68200219U,	// BICv16i8
    404285211U,	// BICv2i32
    405333787U,	// BICv4i16
    405858075U,	// BICv4i32
    406382363U,	// BICv8i16
    2218829595U,	// BICv8i8
    68200698U,	// BIFv16i8
    2218830074U,	// BIFv8i8
    135328513U,	// BITv16i8
    2285957889U,	// BITv8i8
    68906U,	// BL
    6344980U,	// BLR
    2248196710U,	// BLRAA
    6346175U,	// BLRAAZ
    2248197127U,	// BLRAB
    6346190U,	// BLRABZ
    6344926U,	// BR
    2248196697U,	// BRAA
    6346168U,	// BRAAZ
    2248197114U,	// BRAB
    6346183U,	// BRABZ
    76951U,	// BRK
    302002647U,	// BRKAS_PPzP
    8875U,	// BRKA_PPmP
    301998763U,	// BRKA_PPzP
    302002683U,	// BRKBS_PPzP
    9367U,	// BRKB_PPmP
    301999255U,	// BRKB_PPzP
    302002803U,	// BRKNS_PPzP
    302001918U,	// BRKN_PPzP
    302002654U,	// BRKPAS_PPzPP
    301998807U,	// BRKPA_PPzPP
    302002690U,	// BRKPBS_PPzPP
    301999474U,	// BRKPB_PPzPP
    135327279U,	// BSLv16i8
    2285956655U,	// BSLv8i8
    87596U,	// Bcc
    2516673568U,	// CASAB
    2516675032U,	// CASAH
    2516673753U,	// CASALB
    2516675183U,	// CASALH
    2516675845U,	// CASALW
    2516675845U,	// CASALX
    2516673308U,	// CASAW
    2516673308U,	// CASAX
    2516674100U,	// CASB
    2516675551U,	// CASH
    2516673847U,	// CASLB
    2516675277U,	// CASLH
    2516676137U,	// CASLW
    2516676137U,	// CASLX
    101604U,	// CASPALW
    109796U,	// CASPALX
    99038U,	// CASPAW
    107230U,	// CASPAX
    101900U,	// CASPLW
    110092U,	// CASPLX
    102471U,	// CASPW
    110663U,	// CASPX
    2516677074U,	// CASW
    2516677074U,	// CASX
    436262373U,	// CBNZW
    436262373U,	// CBNZX
    436262358U,	// CBZW
    436262358U,	// CBZX
    100716292U,	// CCMNWi
    100716292U,	// CCMNWr
    100716292U,	// CCMNXi
    100716292U,	// CCMNXr
    100716546U,	// CCMPWi
    100716546U,	// CCMPWr
    100716546U,	// CCMPXi
    100716546U,	// CCMPXr
    5976U,	// CFINV
    302039858U,	// CLASTA_RPZ_B
    302039858U,	// CLASTA_RPZ_D
    302039858U,	// CLASTA_RPZ_H
    302039858U,	// CLASTA_RPZ_S
    302039858U,	// CLASTA_VPZ_B
    302039858U,	// CLASTA_VPZ_D
    302039858U,	// CLASTA_VPZ_H
    302039858U,	// CLASTA_VPZ_S
    301998898U,	// CLASTA_ZPZ_B
    302007090U,	// CLASTA_ZPZ_D
    2387632946U,	// CLASTA_ZPZ_H
    302023474U,	// CLASTA_ZPZ_S
    302040717U,	// CLASTB_RPZ_B
    302040717U,	// CLASTB_RPZ_D
    302040717U,	// CLASTB_RPZ_H
    302040717U,	// CLASTB_RPZ_S
    302040717U,	// CLASTB_VPZ_B
    302040717U,	// CLASTB_VPZ_D
    302040717U,	// CLASTB_VPZ_H
    302040717U,	// CLASTB_VPZ_S
    301999757U,	// CLASTB_ZPZ_B
    302007949U,	// CLASTB_ZPZ_D
    2387633805U,	// CLASTB_ZPZ_H
    302024333U,	// CLASTB_ZPZ_S
    6346114U,	// CLREX
    2248200772U,	// CLSWr
    2248200772U,	// CLSXr
    12868U,	// CLS_ZPmZ_B
    21060U,	// CLS_ZPmZ_D
    2181591620U,	// CLS_ZPmZ_H
    37444U,	// CLS_ZPmZ_S
    68203076U,	// CLSv16i8
    68727364U,	// CLSv2i32
    69775940U,	// CLSv4i16
    2217783876U,	// CLSv4i32
    70824516U,	// CLSv8i16
    2218832452U,	// CLSv8i8
    2248201696U,	// CLZWr
    2248201696U,	// CLZXr
    13792U,	// CLZ_ZPmZ_B
    21984U,	// CLZ_ZPmZ_D
    2181592544U,	// CLZ_ZPmZ_H
    38368U,	// CLZ_ZPmZ_S
    68204000U,	// CLZv16i8
    68728288U,	// CLZv2i32
    69776864U,	// CLZv4i16
    2217784800U,	// CLZv4i32
    70825440U,	// CLZv8i16
    2218833376U,	// CLZv8i8
    68202651U,	// CMEQv16i8
    68202651U,	// CMEQv16i8rz
    100716699U,	// CMEQv1i64
    2248200347U,	// CMEQv1i64rz
    2216210587U,	// CMEQv2i32
    68726939U,	// CMEQv2i32rz
    2216734875U,	// CMEQv2i64
    2216734875U,	// CMEQv2i64rz
    69775515U,	// CMEQv4i16
    69775515U,	// CMEQv4i16rz
    70299803U,	// CMEQv4i32
    2217783451U,	// CMEQv4i32rz
    2218307739U,	// CMEQv8i16
    70824091U,	// CMEQv8i16rz
    2218832027U,	// CMEQv8i8
    2218832027U,	// CMEQv8i8rz
    68200561U,	// CMGEv16i8
    68200561U,	// CMGEv16i8rz
    100714609U,	// CMGEv1i64
    2248198257U,	// CMGEv1i64rz
    2216208497U,	// CMGEv2i32
    68724849U,	// CMGEv2i32rz
    2216732785U,	// CMGEv2i64
    2216732785U,	// CMGEv2i64rz
    69773425U,	// CMGEv4i16
    69773425U,	// CMGEv4i16rz
    70297713U,	// CMGEv4i32
    2217781361U,	// CMGEv4i32rz
    2218305649U,	// CMGEv8i16
    70822001U,	// CMGEv8i16rz
    2218829937U,	// CMGEv8i8
    2218829937U,	// CMGEv8i8rz
    68203251U,	// CMGTv16i8
    68203251U,	// CMGTv16i8rz
    100717299U,	// CMGTv1i64
    2248200947U,	// CMGTv1i64rz
    2216211187U,	// CMGTv2i32
    68727539U,	// CMGTv2i32rz
    2216735475U,	// CMGTv2i64
    2216735475U,	// CMGTv2i64rz
    69776115U,	// CMGTv4i16
    69776115U,	// CMGTv4i16rz
    70300403U,	// CMGTv4i32
    2217784051U,	// CMGTv4i32rz
    2218308339U,	// CMGTv8i16
    70824691U,	// CMGTv8i16rz
    2218832627U,	// CMGTv8i8
    2218832627U,	// CMGTv8i8rz
    68201580U,	// CMHIv16i8
    100715628U,	// CMHIv1i64
    2216209516U,	// CMHIv2i32
    2216733804U,	// CMHIv2i64
    69774444U,	// CMHIv4i16
    70298732U,	// CMHIv4i32
    2218306668U,	// CMHIv8i16
    2218830956U,	// CMHIv8i8
    68203063U,	// CMHSv16i8
    100717111U,	// CMHSv1i64
    2216210999U,	// CMHSv2i32
    2216735287U,	// CMHSv2i64
    69775927U,	// CMHSv4i16
    70300215U,	// CMHSv4i32
    2218308151U,	// CMHSv8i16
    2218832439U,	// CMHSv8i8
    68200592U,	// CMLEv16i8rz
    2248198288U,	// CMLEv1i64rz
    68724880U,	// CMLEv2i32rz
    2216732816U,	// CMLEv2i64rz
    69773456U,	// CMLEv4i16rz
    2217781392U,	// CMLEv4i32rz
    70822032U,	// CMLEv8i16rz
    2218829968U,	// CMLEv8i8rz
    68203285U,	// CMLTv16i8rz
    2248200981U,	// CMLTv1i64rz
    68727573U,	// CMLTv2i32rz
    2216735509U,	// CMLTv2i64rz
    69776149U,	// CMLTv4i16rz
    2217784085U,	// CMLTv4i32rz
    70824725U,	// CMLTv8i16rz
    2218832661U,	// CMLTv8i8rz
    302002346U,	// CMPEQ_PPzZI_B
    302010538U,	// CMPEQ_PPzZI_D
    2622517418U,	// CMPEQ_PPzZI_H
    302026922U,	// CMPEQ_PPzZI_S
    302002346U,	// CMPEQ_PPzZZ_B
    302010538U,	// CMPEQ_PPzZZ_D
    2622517418U,	// CMPEQ_PPzZZ_H
    302026922U,	// CMPEQ_PPzZZ_S
    302002346U,	// CMPEQ_WIDE_PPzZZ_B
    2622517418U,	// CMPEQ_WIDE_PPzZZ_H
    302026922U,	// CMPEQ_WIDE_PPzZZ_S
    302000247U,	// CMPGE_PPzZI_B
    302008439U,	// CMPGE_PPzZI_D
    2622515319U,	// CMPGE_PPzZI_H
    302024823U,	// CMPGE_PPzZI_S
    302000247U,	// CMPGE_PPzZZ_B
    302008439U,	// CMPGE_PPzZZ_D
    2622515319U,	// CMPGE_PPzZZ_H
    302024823U,	// CMPGE_PPzZZ_S
    302000247U,	// CMPGE_WIDE_PPzZZ_B
    2622515319U,	// CMPGE_WIDE_PPzZZ_H
    302024823U,	// CMPGE_WIDE_PPzZZ_S
    302002937U,	// CMPGT_PPzZI_B
    302011129U,	// CMPGT_PPzZI_D
    2622518009U,	// CMPGT_PPzZI_H
    302027513U,	// CMPGT_PPzZI_S
    302002937U,	// CMPGT_PPzZZ_B
    302011129U,	// CMPGT_PPzZZ_D
    2622518009U,	// CMPGT_PPzZZ_H
    302027513U,	// CMPGT_PPzZZ_S
    302002937U,	// CMPGT_WIDE_PPzZZ_B
    2622518009U,	// CMPGT_WIDE_PPzZZ_H
    302027513U,	// CMPGT_WIDE_PPzZZ_S
    302001266U,	// CMPHI_PPzZI_B
    302009458U,	// CMPHI_PPzZI_D
    2622516338U,	// CMPHI_PPzZI_H
    302025842U,	// CMPHI_PPzZI_S
    302001266U,	// CMPHI_PPzZZ_B
    302009458U,	// CMPHI_PPzZZ_D
    2622516338U,	// CMPHI_PPzZZ_H
    302025842U,	// CMPHI_PPzZZ_S
    302001266U,	// CMPHI_WIDE_PPzZZ_B
    2622516338U,	// CMPHI_WIDE_PPzZZ_H
    302025842U,	// CMPHI_WIDE_PPzZZ_S
    302002749U,	// CMPHS_PPzZI_B
    302010941U,	// CMPHS_PPzZI_D
    2622517821U,	// CMPHS_PPzZI_H
    302027325U,	// CMPHS_PPzZI_S
    302002749U,	// CMPHS_PPzZZ_B
    302010941U,	// CMPHS_PPzZZ_D
    2622517821U,	// CMPHS_PPzZZ_H
    302027325U,	// CMPHS_PPzZZ_S
    302002749U,	// CMPHS_WIDE_PPzZZ_B
    2622517821U,	// CMPHS_WIDE_PPzZZ_H
    302027325U,	// CMPHS_WIDE_PPzZZ_S
    302000278U,	// CMPLE_PPzZI_B
    302008470U,	// CMPLE_PPzZI_D
    2622515350U,	// CMPLE_PPzZI_H
    302024854U,	// CMPLE_PPzZI_S
    302000278U,	// CMPLE_WIDE_PPzZZ_B
    2622515350U,	// CMPLE_WIDE_PPzZZ_H
    302024854U,	// CMPLE_WIDE_PPzZZ_S
    302002080U,	// CMPLO_PPzZI_B
    302010272U,	// CMPLO_PPzZI_D
    2622517152U,	// CMPLO_PPzZI_H
    302026656U,	// CMPLO_PPzZI_S
    302002080U,	// CMPLO_WIDE_PPzZZ_B
    2622517152U,	// CMPLO_WIDE_PPzZZ_H
    302026656U,	// CMPLO_WIDE_PPzZZ_S
    302002783U,	// CMPLS_PPzZI_B
    302010975U,	// CMPLS_PPzZI_D
    2622517855U,	// CMPLS_PPzZI_H
    302027359U,	// CMPLS_PPzZI_S
    302002783U,	// CMPLS_WIDE_PPzZZ_B
    2622517855U,	// CMPLS_WIDE_PPzZZ_H
    302027359U,	// CMPLS_WIDE_PPzZZ_S
    302002971U,	// CMPLT_PPzZI_B
    302011163U,	// CMPLT_PPzZI_D
    2622518043U,	// CMPLT_PPzZI_H
    302027547U,	// CMPLT_PPzZI_S
    302002971U,	// CMPLT_WIDE_PPzZZ_B
    2622518043U,	// CMPLT_WIDE_PPzZZ_H
    302027547U,	// CMPLT_WIDE_PPzZZ_S
    302000301U,	// CMPNE_PPzZI_B
    302008493U,	// CMPNE_PPzZI_D
    2622515373U,	// CMPNE_PPzZI_H
    302024877U,	// CMPNE_PPzZI_S
    302000301U,	// CMPNE_PPzZZ_B
    302008493U,	// CMPNE_PPzZZ_D
    2622515373U,	// CMPNE_PPzZZ_H
    302024877U,	// CMPNE_PPzZZ_S
    302000301U,	// CMPNE_WIDE_PPzZZ_B
    2622515373U,	// CMPNE_WIDE_PPzZZ_H
    302024877U,	// CMPNE_WIDE_PPzZZ_S
    0U,	// CMP_SWAP_128
    0U,	// CMP_SWAP_16
    0U,	// CMP_SWAP_32
    0U,	// CMP_SWAP_64
    0U,	// CMP_SWAP_8
    68203349U,	// CMTSTv16i8
    100717397U,	// CMTSTv1i64
    2216211285U,	// CMTSTv2i32
    2216735573U,	// CMTSTv2i64
    69776213U,	// CMTSTv4i16
    70300501U,	// CMTSTv4i32
    2218308437U,	// CMTSTv8i16
    2218832725U,	// CMTSTv8i8
    13113U,	// CNOT_ZPmZ_B
    21305U,	// CNOT_ZPmZ_D
    2181591865U,	// CNOT_ZPmZ_H
    37689U,	// CNOT_ZPmZ_S
    503367303U,	// CNTB_XPiI
    503367765U,	// CNTD_XPiI
    503368736U,	// CNTH_XPiI
    302043213U,	// CNTP_XPP_B
    302043213U,	// CNTP_XPP_D
    302043213U,	// CNTP_XPP_H
    302043213U,	// CNTP_XPP_S
    503371057U,	// CNTW_XPiI
    13090U,	// CNT_ZPmZ_B
    21282U,	// CNT_ZPmZ_D
    2181591842U,	// CNT_ZPmZ_H
    37666U,	// CNT_ZPmZ_S
    68203298U,	// CNTv16i8
    2218832674U,	// CNTv8i8
    302011094U,	// COMPACT_ZPZ_D
    302027478U,	// COMPACT_ZPZ_S
    13747U,	// CPY_ZPmI_B
    21939U,	// CPY_ZPmI_D
    2181592499U,	// CPY_ZPmI_H
    38323U,	// CPY_ZPmI_S
    13747U,	// CPY_ZPmR_B
    21939U,	// CPY_ZPmR_D
    34108851U,	// CPY_ZPmR_H
    38323U,	// CPY_ZPmR_S
    13747U,	// CPY_ZPmV_B
    21939U,	// CPY_ZPmV_D
    34108851U,	// CPY_ZPmV_H
    38323U,	// CPY_ZPmV_S
    302003635U,	// CPY_ZPzI_B
    302011827U,	// CPY_ZPzI_D
    2622518707U,	// CPY_ZPzI_H
    302028211U,	// CPY_ZPzI_S
    67163146U,	// CPYi16
    2214646794U,	// CPYi32
    67163146U,	// CPYi64
    2214646794U,	// CPYi8
    100713377U,	// CRC32Brr
    100713540U,	// CRC32CBrr
    100715004U,	// CRC32CHrr
    100717724U,	// CRC32CWrr
    100717938U,	// CRC32CXrr
    100714851U,	// CRC32Hrr
    100717666U,	// CRC32Wrr
    100717897U,	// CRC32Xrr
    100715905U,	// CSELWr
    100715905U,	// CSELXr
    100714287U,	// CSINCWr
    100714287U,	// CSINCXr
    100717570U,	// CSINVWr
    100717570U,	// CSINVXr
    100714784U,	// CSNEGWr
    100714784U,	// CSNEGXr
    2248200353U,	// CTERMEQ_WW
    2248200353U,	// CTERMEQ_XX
    2248198308U,	// CTERMNE_WW
    2248198308U,	// CTERMNE_XX
    0U,	// CompilerBarrier
    73783U,	// DCPS1
    74194U,	// DCPS2
    74260U,	// DCPS3
    536921167U,	// DECB_XPiI
    536922047U,	// DECD_XPiI
    536889279U,	// DECD_ZPiI
    536922631U,	// DECH_XPiI
    6842887U,	// DECH_ZPiI
    2315308983U,	// DECP_XP_B
    2348863415U,	// DECP_XP_D
    2717962167U,	// DECP_XP_H
    2415972279U,	// DECP_XP_S
    2147504055U,	// DECP_ZP_D
    604532663U,	// DECP_ZP_H
    2147520439U,	// DECP_ZP_S
    536925351U,	// DECW_XPiI
    536908967U,	// DECW_ZPiI
    116059U,	// DMB
    5966U,	// DRPS
    116282U,	// DSB
    637554371U,	// DUPM_ZI
    671101025U,	// DUP_ZI_B
    704663649U,	// DUP_ZI_D
    7368801U,	// DUP_ZI_H
    738234465U,	// DUP_ZI_S
    2248159329U,	// DUP_ZR_B
    2248167521U,	// DUP_ZR_D
    611872865U,	// DUP_ZR_H
    2248183905U,	// DUP_ZR_S
    167784545U,	// DUP_ZZI_B
    201347169U,	// DUP_ZZI_D
    776499297U,	// DUP_ZZI_H
    127073U,	// DUP_ZZI_Q
    268472417U,	// DUP_ZZI_S
    2249240673U,	// DUPv16i8gpr
    2215686241U,	// DUPv16i8lane
    2249764961U,	// DUPv2i32gpr
    2216210529U,	// DUPv2i32lane
    2250289249U,	// DUPv2i64gpr
    69251169U,	// DUPv2i64lane
    2250813537U,	// DUPv4i16gpr
    69775457U,	// DUPv4i16lane
    2251337825U,	// DUPv4i32gpr
    2217783393U,	// DUPv4i32lane
    2251862113U,	// DUPv8i16gpr
    70824033U,	// DUPv8i16lane
    2252386401U,	// DUPv8i8gpr
    2218831969U,	// DUPv8i8lane
    0U,	// EONWrr
    100716298U,	// EONWrs
    0U,	// EONXrr
    100716298U,	// EONXrs
    68198926U,	// EOR3
    302002853U,	// EORS_PPzPP
    302044187U,	// EORV_VPZ_B
    302044187U,	// EORV_VPZ_D
    302044187U,	// EORV_VPZ_H
    302044187U,	// EORV_VPZ_S
    100716853U,	// EORWri
    0U,	// EORWrr
    100716853U,	// EORWrs
    100716853U,	// EORXri
    0U,	// EORXrr
    100716853U,	// EORXrs
    302002485U,	// EOR_PPzPP
    201347381U,	// EOR_ZI
    302002485U,	// EOR_ZPmZ_B
    302010677U,	// EOR_ZPmZ_D
    2186309941U,	// EOR_ZPmZ_H
    302027061U,	// EOR_ZPmZ_S
    201347381U,	// EOR_ZZZ
    68202805U,	// EORv16i8
    2218832181U,	// EORv8i8
    5971U,	// ERET
    5891U,	// ERETAA
    5898U,	// ERETAB
    100716930U,	// EXTRWrri
    100716930U,	// EXTRXrri
    167785316U,	// EXT_ZZI
    68203364U,	// EXTv16i8
    2218832740U,	// EXTv8i8
    0U,	// F128CSEL
    100714404U,	// FABD16
    100714404U,	// FABD32
    100714404U,	// FABD64
    302008228U,	// FABD_ZPmZ_D
    2186307492U,	// FABD_ZPmZ_H
    302024612U,	// FABD_ZPmZ_S
    2216208292U,	// FABDv2f32
    2216732580U,	// FABDv2f64
    69773220U,	// FABDv4f16
    70297508U,	// FABDv4f32
    2218305444U,	// FABDv8f16
    2248200686U,	// FABSDr
    2248200686U,	// FABSHr
    2248200686U,	// FABSSr
    20974U,	// FABS_ZPmZ_D
    2181591534U,	// FABS_ZPmZ_H
    37358U,	// FABS_ZPmZ_S
    68727278U,	// FABSv2f32
    2216735214U,	// FABSv2f64
    69775854U,	// FABSv4f16
    2217783790U,	// FABSv4f32
    70824430U,	// FABSv8f16
    100714601U,	// FACGE16
    100714601U,	// FACGE32
    100714601U,	// FACGE64
    302008425U,	// FACGE_PPzZZ_D
    2622515305U,	// FACGE_PPzZZ_H
    302024809U,	// FACGE_PPzZZ_S
    2216208489U,	// FACGEv2f32
    2216732777U,	// FACGEv2f64
    69773417U,	// FACGEv4f16
    70297705U,	// FACGEv4f32
    2218305641U,	// FACGEv8f16
    100717291U,	// FACGT16
    100717291U,	// FACGT32
    100717291U,	// FACGT64
    302011115U,	// FACGT_PPzZZ_D
    2622517995U,	// FACGT_PPzZZ_H
    302027499U,	// FACGT_PPzZZ_S
    2216211179U,	// FACGTv2f32
    2216735467U,	// FACGTv2f64
    69776107U,	// FACGTv4f16
    70300395U,	// FACGTv4f32
    2218308331U,	// FACGTv8f16
    302039688U,	// FADDA_VPZ_D
    302039688U,	// FADDA_VPZ_H
    302039688U,	// FADDA_VPZ_S
    100714475U,	// FADDDrr
    100714475U,	// FADDHrr
    2216210389U,	// FADDPv2f32
    2216734677U,	// FADDPv2f64
    2214645717U,	// FADDPv2i16p
    67162069U,	// FADDPv2i32p
    2214645717U,	// FADDPv2i64p
    69775317U,	// FADDPv4f16
    70299605U,	// FADDPv4f32
    2218307541U,	// FADDPv8f16
    100714475U,	// FADDSrr
    302044057U,	// FADDV_VPZ_D
    302044057U,	// FADDV_VPZ_H
    302044057U,	// FADDV_VPZ_S
    302008299U,	// FADD_ZPmI_D
    2186307563U,	// FADD_ZPmI_H
    302024683U,	// FADD_ZPmI_S
    302008299U,	// FADD_ZPmZ_D
    2186307563U,	// FADD_ZPmZ_H
    302024683U,	// FADD_ZPmZ_S
    201345003U,	// FADD_ZZZ_D
    2387109867U,	// FADD_ZZZ_H
    268470251U,	// FADD_ZZZ_S
    2216208363U,	// FADDv2f32
    2216732651U,	// FADDv2f64
    69773291U,	// FADDv4f16
    70297579U,	// FADDv4f32
    2218305515U,	// FADDv8f16
    302008285U,	// FCADD_ZPmZ_D
    2186307549U,	// FCADD_ZPmZ_H
    302024669U,	// FCADD_ZPmZ_S
    2216208349U,	// FCADDv2f32
    2216732637U,	// FCADDv2f64
    69773277U,	// FCADDv4f16
    70297565U,	// FCADDv4f32
    2218305501U,	// FCADDv8f16
    100716545U,	// FCCMPDrr
    100714692U,	// FCCMPEDrr
    100714692U,	// FCCMPEHrr
    100714692U,	// FCCMPESrr
    100716545U,	// FCCMPHrr
    100716545U,	// FCCMPSrr
    100716698U,	// FCMEQ16
    100716698U,	// FCMEQ32
    100716698U,	// FCMEQ64
    302010522U,	// FCMEQ_PPzZ0_D
    2622517402U,	// FCMEQ_PPzZ0_H
    302026906U,	// FCMEQ_PPzZ0_S
    302010522U,	// FCMEQ_PPzZZ_D
    2622517402U,	// FCMEQ_PPzZZ_H
    302026906U,	// FCMEQ_PPzZZ_S
    100716698U,	// FCMEQv1i16rz
    100716698U,	// FCMEQv1i32rz
    100716698U,	// FCMEQv1i64rz
    2216210586U,	// FCMEQv2f32
    2216734874U,	// FCMEQv2f64
    2216210586U,	// FCMEQv2i32rz
    69251226U,	// FCMEQv2i64rz
    69775514U,	// FCMEQv4f16
    70299802U,	// FCMEQv4f32
    2217259162U,	// FCMEQv4i16rz
    70299802U,	// FCMEQv4i32rz
    2218307738U,	// FCMEQv8f16
    2218307738U,	// FCMEQv8i16rz
    100714608U,	// FCMGE16
    100714608U,	// FCMGE32
    100714608U,	// FCMGE64
    302008432U,	// FCMGE_PPzZ0_D
    2622515312U,	// FCMGE_PPzZ0_H
    302024816U,	// FCMGE_PPzZ0_S
    302008432U,	// FCMGE_PPzZZ_D
    2622515312U,	// FCMGE_PPzZZ_H
    302024816U,	// FCMGE_PPzZZ_S
    100714608U,	// FCMGEv1i16rz
    100714608U,	// FCMGEv1i32rz
    100714608U,	// FCMGEv1i64rz
    2216208496U,	// FCMGEv2f32
    2216732784U,	// FCMGEv2f64
    2216208496U,	// FCMGEv2i32rz
    69249136U,	// FCMGEv2i64rz
    69773424U,	// FCMGEv4f16
    70297712U,	// FCMGEv4f32
    2217257072U,	// FCMGEv4i16rz
    70297712U,	// FCMGEv4i32rz
    2218305648U,	// FCMGEv8f16
    2218305648U,	// FCMGEv8i16rz
    100717298U,	// FCMGT16
    100717298U,	// FCMGT32
    100717298U,	// FCMGT64
    302011122U,	// FCMGT_PPzZ0_D
    2622518002U,	// FCMGT_PPzZ0_H
    302027506U,	// FCMGT_PPzZ0_S
    302011122U,	// FCMGT_PPzZZ_D
    2622518002U,	// FCMGT_PPzZZ_H
    302027506U,	// FCMGT_PPzZZ_S
    100717298U,	// FCMGTv1i16rz
    100717298U,	// FCMGTv1i32rz
    100717298U,	// FCMGTv1i64rz
    2216211186U,	// FCMGTv2f32
    2216735474U,	// FCMGTv2f64
    2216211186U,	// FCMGTv2i32rz
    69251826U,	// FCMGTv2i64rz
    69776114U,	// FCMGTv4f16
    70300402U,	// FCMGTv4f32
    2217259762U,	// FCMGTv4i16rz
    70300402U,	// FCMGTv4i32rz
    2218308338U,	// FCMGTv8f16
    2218308338U,	// FCMGTv8i16rz
    302006961U,	// FCMLA_ZPmZZ_D
    2186306225U,	// FCMLA_ZPmZZ_H
    302023345U,	// FCMLA_ZPmZZ_S
    243294897U,	// FCMLA_ZZZI_H
    2952823473U,	// FCMLA_ZZZI_S
    2283332273U,	// FCMLAv2f32
    2283856561U,	// FCMLAv2f64
    136897201U,	// FCMLAv4f16
    136897201U,	// FCMLAv4f16_indexed
    137421489U,	// FCMLAv4f32
    137421489U,	// FCMLAv4f32_indexed
    2285429425U,	// FCMLAv8f16
    2285429425U,	// FCMLAv8f16_indexed
    302008463U,	// FCMLE_PPzZ0_D
    2622515343U,	// FCMLE_PPzZ0_H
    302024847U,	// FCMLE_PPzZ0_S
    100714639U,	// FCMLEv1i16rz
    100714639U,	// FCMLEv1i32rz
    100714639U,	// FCMLEv1i64rz
    2216208527U,	// FCMLEv2i32rz
    69249167U,	// FCMLEv2i64rz
    2217257103U,	// FCMLEv4i16rz
    70297743U,	// FCMLEv4i32rz
    2218305679U,	// FCMLEv8i16rz
    302011156U,	// FCMLT_PPzZ0_D
    2622518036U,	// FCMLT_PPzZ0_H
    302027540U,	// FCMLT_PPzZ0_S
    100717332U,	// FCMLTv1i16rz
    100717332U,	// FCMLTv1i32rz
    100717332U,	// FCMLTv1i64rz
    2216211220U,	// FCMLTv2i32rz
    69251860U,	// FCMLTv2i64rz
    2217259796U,	// FCMLTv4i16rz
    70300436U,	// FCMLTv4i32rz
    2218308372U,	// FCMLTv8i16rz
    302008477U,	// FCMNE_PPzZ0_D
    2622515357U,	// FCMNE_PPzZ0_H
    302024861U,	// FCMNE_PPzZ0_S
    302008477U,	// FCMNE_PPzZZ_D
    2622515357U,	// FCMNE_PPzZZ_H
    302024861U,	// FCMNE_PPzZZ_S
    8966152U,	// FCMPDri
    2248200200U,	// FCMPDrr
    8964300U,	// FCMPEDri
    2248198348U,	// FCMPEDrr
    8964300U,	// FCMPEHri
    2248198348U,	// FCMPEHrr
    8964300U,	// FCMPESri
    2248198348U,	// FCMPESrr
    8966152U,	// FCMPHri
    2248200200U,	// FCMPHrr
    8966152U,	// FCMPSri
    2248200200U,	// FCMPSrr
    302010279U,	// FCMUO_PPzZZ_D
    2622517159U,	// FCMUO_PPzZZ_H
    302026663U,	// FCMUO_PPzZZ_S
    21938U,	// FCPY_ZPmI_D
    34108850U,	// FCPY_ZPmI_H
    38322U,	// FCPY_ZPmI_S
    100715904U,	// FCSELDrrr
    100715904U,	// FCSELHrrr
    100715904U,	// FCSELSrrr
    2248200678U,	// FCVTASUWDr
    2248200678U,	// FCVTASUWHr
    2248200678U,	// FCVTASUWSr
    2248200678U,	// FCVTASUXDr
    2248200678U,	// FCVTASUXHr
    2248200678U,	// FCVTASUXSr
    2248200678U,	// FCVTASv1f16
    2248200678U,	// FCVTASv1i32
    2248200678U,	// FCVTASv1i64
    68727270U,	// FCVTASv2f32
    2216735206U,	// FCVTASv2f64
    69775846U,	// FCVTASv4f16
    2217783782U,	// FCVTASv4f32
    70824422U,	// FCVTASv8f16
    2248201065U,	// FCVTAUUWDr
    2248201065U,	// FCVTAUUWHr
    2248201065U,	// FCVTAUUWSr
    2248201065U,	// FCVTAUUXDr
    2248201065U,	// FCVTAUUXHr
    2248201065U,	// FCVTAUUXSr
    2248201065U,	// FCVTAUv1f16
    2248201065U,	// FCVTAUv1i32
    2248201065U,	// FCVTAUv1i64
    68727657U,	// FCVTAUv2f32
    2216735593U,	// FCVTAUv2f64
    69776233U,	// FCVTAUv4f16
    2217784169U,	// FCVTAUv4f32
    70824809U,	// FCVTAUv8f16
    2248201052U,	// FCVTDHr
    2248201052U,	// FCVTDSr
    2248201052U,	// FCVTHDr
    2248201052U,	// FCVTHSr
    69250649U,	// FCVTLv2i32
    70299225U,	// FCVTLv4i16
    2216730945U,	// FCVTLv4i32
    70295873U,	// FCVTLv8i16
    2248200806U,	// FCVTMSUWDr
    2248200806U,	// FCVTMSUWHr
    2248200806U,	// FCVTMSUWSr
    2248200806U,	// FCVTMSUXDr
    2248200806U,	// FCVTMSUXHr
    2248200806U,	// FCVTMSUXSr
    2248200806U,	// FCVTMSv1f16
    2248200806U,	// FCVTMSv1i32
    2248200806U,	// FCVTMSv1i64
    68727398U,	// FCVTMSv2f32
    2216735334U,	// FCVTMSv2f64
    69775974U,	// FCVTMSv4f16
    2217783910U,	// FCVTMSv4f32
    70824550U,	// FCVTMSv8f16
    2248201081U,	// FCVTMUUWDr
    2248201081U,	// FCVTMUUWHr
    2248201081U,	// FCVTMUUWSr
    2248201081U,	// FCVTMUUXDr
    2248201081U,	// FCVTMUUXHr
    2248201081U,	// FCVTMUUXSr
    2248201081U,	// FCVTMUv1f16
    2248201081U,	// FCVTMUv1i32
    2248201081U,	// FCVTMUv1i64
    68727673U,	// FCVTMUv2f32
    2216735609U,	// FCVTMUv2f64
    69776249U,	// FCVTMUv4f16
    2217784185U,	// FCVTMUv4f32
    70824825U,	// FCVTMUv8f16
    2248200832U,	// FCVTNSUWDr
    2248200832U,	// FCVTNSUWHr
    2248200832U,	// FCVTNSUWSr
    2248200832U,	// FCVTNSUXDr
    2248200832U,	// FCVTNSUXHr
    2248200832U,	// FCVTNSUXSr
    2248200832U,	// FCVTNSv1f16
    2248200832U,	// FCVTNSv1i32
    2248200832U,	// FCVTNSv1i64
    68727424U,	// FCVTNSv2f32
    2216735360U,	// FCVTNSv2f64
    69776000U,	// FCVTNSv4f16
    2217783936U,	// FCVTNSv4f32
    70824576U,	// FCVTNSv8f16
    2248201089U,	// FCVTNUUWDr
    2248201089U,	// FCVTNUUWHr
    2248201089U,	// FCVTNUUWSr
    2248201089U,	// FCVTNUUXDr
    2248201089U,	// FCVTNUUXHr
    2248201089U,	// FCVTNUUXSr
    2248201089U,	// FCVTNUv1f16
    2248201089U,	// FCVTNUv1i32
    2248201089U,	// FCVTNUv1i64
    68727681U,	// FCVTNUv2f32
    2216735617U,	// FCVTNUv2f64
    69776257U,	// FCVTNUv4f16
    2217784193U,	// FCVTNUv4f32
    70824833U,	// FCVTNUv8f16
    2216210238U,	// FCVTNv2i32
    2217258814U,	// FCVTNv4i16
    2284904839U,	// FCVTNv4i32
    2285429127U,	// FCVTNv8i16
    2248200848U,	// FCVTPSUWDr
    2248200848U,	// FCVTPSUWHr
    2248200848U,	// FCVTPSUWSr
    2248200848U,	// FCVTPSUXDr
    2248200848U,	// FCVTPSUXHr
    2248200848U,	// FCVTPSUXSr
    2248200848U,	// FCVTPSv1f16
    2248200848U,	// FCVTPSv1i32
    2248200848U,	// FCVTPSv1i64
    68727440U,	// FCVTPSv2f32
    2216735376U,	// FCVTPSv2f64
    69776016U,	// FCVTPSv4f16
    2217783952U,	// FCVTPSv4f32
    70824592U,	// FCVTPSv8f16
    2248201097U,	// FCVTPUUWDr
    2248201097U,	// FCVTPUUWHr
    2248201097U,	// FCVTPUUWSr
    2248201097U,	// FCVTPUUXDr
    2248201097U,	// FCVTPUUXHr
    2248201097U,	// FCVTPUUXSr
    2248201097U,	// FCVTPUv1f16
    2248201097U,	// FCVTPUv1i32
    2248201097U,	// FCVTPUv1i64
    68727689U,	// FCVTPUv2f32
    2216735625U,	// FCVTPUv2f64
    69776265U,	// FCVTPUv4f16
    2217784201U,	// FCVTPUv4f32
    70824841U,	// FCVTPUv8f16
    2248201052U,	// FCVTSDr
    2248201052U,	// FCVTSHr
    2248200052U,	// FCVTXNv1i64
    2216210292U,	// FCVTXNv2f32
    2284904893U,	// FCVTXNv4f32
    100717253U,	// FCVTZSSWDri
    100717253U,	// FCVTZSSWHri
    100717253U,	// FCVTZSSWSri
    100717253U,	// FCVTZSSXDri
    100717253U,	// FCVTZSSXHri
    100717253U,	// FCVTZSSXSri
    2248200901U,	// FCVTZSUWDr
    2248200901U,	// FCVTZSUWHr
    2248200901U,	// FCVTZSUWSr
    2248200901U,	// FCVTZSUXDr
    2248200901U,	// FCVTZSUXHr
    2248200901U,	// FCVTZSUXSr
    21189U,	// FCVTZS_ZPmZ_DtoD
    37573U,	// FCVTZS_ZPmZ_DtoS
    21189U,	// FCVTZS_ZPmZ_HtoD
    2181591749U,	// FCVTZS_ZPmZ_HtoH
    37573U,	// FCVTZS_ZPmZ_HtoS
    21189U,	// FCVTZS_ZPmZ_StoD
    37573U,	// FCVTZS_ZPmZ_StoS
    100717253U,	// FCVTZSd
    100717253U,	// FCVTZSh
    100717253U,	// FCVTZSs
    2248200901U,	// FCVTZSv1f16
    2248200901U,	// FCVTZSv1i32
    2248200901U,	// FCVTZSv1i64
    68727493U,	// FCVTZSv2f32
    2216735429U,	// FCVTZSv2f64
    2216211141U,	// FCVTZSv2i32_shift
    2216735429U,	// FCVTZSv2i64_shift
    69776069U,	// FCVTZSv4f16
    2217784005U,	// FCVTZSv4f32
    69776069U,	// FCVTZSv4i16_shift
    70300357U,	// FCVTZSv4i32_shift
    70824645U,	// FCVTZSv8f16
    2218308293U,	// FCVTZSv8i16_shift
    100717457U,	// FCVTZUSWDri
    100717457U,	// FCVTZUSWHri
    100717457U,	// FCVTZUSWSri
    100717457U,	// FCVTZUSXDri
    100717457U,	// FCVTZUSXHri
    100717457U,	// FCVTZUSXSri
    2248201105U,	// FCVTZUUWDr
    2248201105U,	// FCVTZUUWHr
    2248201105U,	// FCVTZUUWSr
    2248201105U,	// FCVTZUUXDr
    2248201105U,	// FCVTZUUXHr
    2248201105U,	// FCVTZUUXSr
    21393U,	// FCVTZU_ZPmZ_DtoD
    37777U,	// FCVTZU_ZPmZ_DtoS
    21393U,	// FCVTZU_ZPmZ_HtoD
    2181591953U,	// FCVTZU_ZPmZ_HtoH
    37777U,	// FCVTZU_ZPmZ_HtoS
    21393U,	// FCVTZU_ZPmZ_StoD
    37777U,	// FCVTZU_ZPmZ_StoS
    100717457U,	// FCVTZUd
    100717457U,	// FCVTZUh
    100717457U,	// FCVTZUs
    2248201105U,	// FCVTZUv1f16
    2248201105U,	// FCVTZUv1i32
    2248201105U,	// FCVTZUv1i64
    68727697U,	// FCVTZUv2f32
    2216735633U,	// FCVTZUv2f64
    2216211345U,	// FCVTZUv2i32_shift
    2216735633U,	// FCVTZUv2i64_shift
    69776273U,	// FCVTZUv4f16
    2217784209U,	// FCVTZUv4f32
    69776273U,	// FCVTZUv4i16_shift
    70300561U,	// FCVTZUv4i32_shift
    70824849U,	// FCVTZUv8f16
    2218308497U,	// FCVTZUv8i16_shift
    2181591900U,	// FCVT_ZPmZ_DtoH
    37724U,	// FCVT_ZPmZ_DtoS
    21340U,	// FCVT_ZPmZ_HtoD
    37724U,	// FCVT_ZPmZ_HtoS
    21340U,	// FCVT_ZPmZ_StoD
    2181591900U,	// FCVT_ZPmZ_StoH
    100717497U,	// FDIVDrr
    100717497U,	// FDIVHrr
    302010787U,	// FDIVR_ZPmZ_D
    2186310051U,	// FDIVR_ZPmZ_H
    302027171U,	// FDIVR_ZPmZ_S
    100717497U,	// FDIVSrr
    302011321U,	// FDIV_ZPmZ_D
    2186310585U,	// FDIV_ZPmZ_H
    302027705U,	// FDIV_ZPmZ_S
    2216211385U,	// FDIVv2f32
    2216735673U,	// FDIVv2f64
    69776313U,	// FDIVv4f16
    70300601U,	// FDIVv4f32
    2218308537U,	// FDIVv8f16
    838881376U,	// FDUP_ZI_D
    9465952U,	// FDUP_ZI_H
    838897760U,	// FDUP_ZI_S
    2348827371U,	// FEXPA_ZZ_D
    608723691U,	// FEXPA_ZZ_H
    2415952619U,	// FEXPA_ZZ_S
    2248200909U,	// FJCVTZS
    100714511U,	// FMADDDrrr
    100714511U,	// FMADDHrrr
    100714511U,	// FMADDSrrr
    302008208U,	// FMAD_ZPmZZ_D
    2186307472U,	// FMAD_ZPmZZ_H
    302024592U,	// FMAD_ZPmZZ_S
    100717911U,	// FMAXDrr
    100717911U,	// FMAXHrr
    100716219U,	// FMAXNMDrr
    100716219U,	// FMAXNMHrr
    2216210455U,	// FMAXNMPv2f32
    2216734743U,	// FMAXNMPv2f64
    2214645783U,	// FMAXNMPv2i16p
    67162135U,	// FMAXNMPv2i32p
    2214645783U,	// FMAXNMPv2i64p
    69775383U,	// FMAXNMPv4f16
    70299671U,	// FMAXNMPv4f32
    2218307607U,	// FMAXNMPv8f16
    100716219U,	// FMAXNMSrr
    302044132U,	// FMAXNMV_VPZ_D
    302044132U,	// FMAXNMV_VPZ_H
    302044132U,	// FMAXNMV_VPZ_S
    67163108U,	// FMAXNMVv4i16v
    2214646756U,	// FMAXNMVv4i32v
    67163108U,	// FMAXNMVv8i16v
    302010043U,	// FMAXNM_ZPmI_D
    2186309307U,	// FMAXNM_ZPmI_H
    302026427U,	// FMAXNM_ZPmI_S
    302010043U,	// FMAXNM_ZPmZ_D
    2186309307U,	// FMAXNM_ZPmZ_H
    302026427U,	// FMAXNM_ZPmZ_S
    2216210107U,	// FMAXNMv2f32
    2216734395U,	// FMAXNMv2f64
    69775035U,	// FMAXNMv4f16
    70299323U,	// FMAXNMv4f32
    2218307259U,	// FMAXNMv8f16
    2216210546U,	// FMAXPv2f32
    2216734834U,	// FMAXPv2f64
    2214645874U,	// FMAXPv2i16p
    67162226U,	// FMAXPv2i32p
    2214645874U,	// FMAXPv2i64p
    69775474U,	// FMAXPv4f16
    70299762U,	// FMAXPv4f32
    2218307698U,	// FMAXPv8f16
    100717911U,	// FMAXSrr
    302044193U,	// FMAXV_VPZ_D
    302044193U,	// FMAXV_VPZ_H
    302044193U,	// FMAXV_VPZ_S
    67163169U,	// FMAXVv4i16v
    2214646817U,	// FMAXVv4i32v
    67163169U,	// FMAXVv8i16v
    302011735U,	// FMAX_ZPmI_D
    2186310999U,	// FMAX_ZPmI_H
    302028119U,	// FMAX_ZPmI_S
    302011735U,	// FMAX_ZPmZ_D
    2186310999U,	// FMAX_ZPmZ_H
    302028119U,	// FMAX_ZPmZ_S
    2216211799U,	// FMAXv2f32
    2216736087U,	// FMAXv2f64
    69776727U,	// FMAXv4f16
    70301015U,	// FMAXv4f32
    2218308951U,	// FMAXv8f16
    100716264U,	// FMINDrr
    100716264U,	// FMINHrr
    100716211U,	// FMINNMDrr
    100716211U,	// FMINNMHrr
    2216210446U,	// FMINNMPv2f32
    2216734734U,	// FMINNMPv2f64
    2214645774U,	// FMINNMPv2i16p
    67162126U,	// FMINNMPv2i32p
    2214645774U,	// FMINNMPv2i64p
    69775374U,	// FMINNMPv4f16
    70299662U,	// FMINNMPv4f32
    2218307598U,	// FMINNMPv8f16
    100716211U,	// FMINNMSrr
    302044123U,	// FMINNMV_VPZ_D
    302044123U,	// FMINNMV_VPZ_H
    302044123U,	// FMINNMV_VPZ_S
    67163099U,	// FMINNMVv4i16v
    2214646747U,	// FMINNMVv4i32v
    67163099U,	// FMINNMVv8i16v
    302010035U,	// FMINNM_ZPmI_D
    2186309299U,	// FMINNM_ZPmI_H
    302026419U,	// FMINNM_ZPmI_S
    302010035U,	// FMINNM_ZPmZ_D
    2186309299U,	// FMINNM_ZPmZ_H
    302026419U,	// FMINNM_ZPmZ_S
    2216210099U,	// FMINNMv2f32
    2216734387U,	// FMINNMv2f64
    69775027U,	// FMINNMv4f16
    70299315U,	// FMINNMv4f32
    2218307251U,	// FMINNMv8f16
    2216210470U,	// FMINPv2f32
    2216734758U,	// FMINPv2f64
    2214645798U,	// FMINPv2i16p
    67162150U,	// FMINPv2i32p
    2214645798U,	// FMINPv2i64p
    69775398U,	// FMINPv4f16
    70299686U,	// FMINPv4f32
    2218307622U,	// FMINPv8f16
    100716264U,	// FMINSrr
    302044141U,	// FMINV_VPZ_D
    302044141U,	// FMINV_VPZ_H
    302044141U,	// FMINV_VPZ_S
    67163117U,	// FMINVv4i16v
    2214646765U,	// FMINVv4i32v
    67163117U,	// FMINVv8i16v
    302010088U,	// FMIN_ZPmI_D
    2186309352U,	// FMIN_ZPmI_H
    302026472U,	// FMIN_ZPmI_S
    302010088U,	// FMIN_ZPmZ_D
    2186309352U,	// FMIN_ZPmZ_H
    302026472U,	// FMIN_ZPmZ_S
    2216210152U,	// FMINv2f32
    2216734440U,	// FMINv2f64
    69775080U,	// FMINv4f16
    70299368U,	// FMINv4f32
    2218307304U,	// FMINv8f16
    302006968U,	// FMLA_ZPmZZ_D
    2186306232U,	// FMLA_ZPmZZ_H
    302023352U,	// FMLA_ZPmZZ_S
    3019915960U,	// FMLA_ZZZI_D
    612393656U,	// FMLA_ZZZI_H
    2952823480U,	// FMLA_ZZZI_S
    369189560U,	// FMLAv1i16_indexed
    369189560U,	// FMLAv1i32_indexed
    369189560U,	// FMLAv1i64_indexed
    2283332280U,	// FMLAv2f32
    2283856568U,	// FMLAv2f64
    2283332280U,	// FMLAv2i32_indexed
    2283856568U,	// FMLAv2i64_indexed
    136897208U,	// FMLAv4f16
    137421496U,	// FMLAv4f32
    136897208U,	// FMLAv4i16_indexed
    137421496U,	// FMLAv4i32_indexed
    2285429432U,	// FMLAv8f16
    2285429432U,	// FMLAv8i16_indexed
    302010962U,	// FMLS_ZPmZZ_D
    2186310226U,	// FMLS_ZPmZZ_H
    302027346U,	// FMLS_ZPmZZ_S
    3019919954U,	// FMLS_ZZZI_D
    612397650U,	// FMLS_ZZZI_H
    2952827474U,	// FMLS_ZZZI_S
    369193554U,	// FMLSv1i16_indexed
    369193554U,	// FMLSv1i32_indexed
    369193554U,	// FMLSv1i64_indexed
    2283336274U,	// FMLSv2f32
    2283860562U,	// FMLSv2f64
    2283336274U,	// FMLSv2i32_indexed
    2283860562U,	// FMLSv2i64_indexed
    136901202U,	// FMLSv4f16
    137425490U,	// FMLSv4f32
    136901202U,	// FMLSv4i16_indexed
    137425490U,	// FMLSv4i32_indexed
    2285433426U,	// FMLSv8f16
    2285433426U,	// FMLSv8i16_indexed
    0U,	// FMOVD0
    67163145U,	// FMOVDXHighr
    2248201225U,	// FMOVDXr
    838915081U,	// FMOVDi
    2248201225U,	// FMOVDr
    0U,	// FMOVH0
    2248201225U,	// FMOVHWr
    2248201225U,	// FMOVHXr
    838915081U,	// FMOVHi
    2248201225U,	// FMOVHr
    0U,	// FMOVS0
    2248201225U,	// FMOVSWr
    838915081U,	// FMOVSi
    2248201225U,	// FMOVSr
    2248201225U,	// FMOVWHr
    2248201225U,	// FMOVWSr
    2258154505U,	// FMOVXDHighr
    2248201225U,	// FMOVXDr
    2248201225U,	// FMOVXHr
    840479753U,	// FMOVv2f32_ns
    841004041U,	// FMOVv2f64_ns
    841528329U,	// FMOVv4f16_ns
    842052617U,	// FMOVv4f32_ns
    842576905U,	// FMOVv8f16_ns
    302007876U,	// FMSB_ZPmZZ_D
    2186307140U,	// FMSB_ZPmZZ_H
    302024260U,	// FMSB_ZPmZZ_S
    100714165U,	// FMSUBDrrr
    100714165U,	// FMSUBHrrr
    100714165U,	// FMSUBSrrr
    100716128U,	// FMULDrr
    100716128U,	// FMULHrr
    100716128U,	// FMULSrr
    100717970U,	// FMULX16
    100717970U,	// FMULX32
    100717970U,	// FMULX64
    302011794U,	// FMULX_ZPmZ_D
    2186311058U,	// FMULX_ZPmZ_H
    302028178U,	// FMULX_ZPmZ_S
    100717970U,	// FMULXv1i16_indexed
    100717970U,	// FMULXv1i32_indexed
    100717970U,	// FMULXv1i64_indexed
    2216211858U,	// FMULXv2f32
    2216736146U,	// FMULXv2f64
    2216211858U,	// FMULXv2i32_indexed
    2216736146U,	// FMULXv2i64_indexed
    69776786U,	// FMULXv4f16
    70301074U,	// FMULXv4f32
    69776786U,	// FMULXv4i16_indexed
    70301074U,	// FMULXv4i32_indexed
    2218309010U,	// FMULXv8f16
    2218309010U,	// FMULXv8i16_indexed
    302009952U,	// FMUL_ZPmI_D
    2186309216U,	// FMUL_ZPmI_H
    302026336U,	// FMUL_ZPmI_S
    302009952U,	// FMUL_ZPmZ_D
    2186309216U,	// FMUL_ZPmZ_H
    302026336U,	// FMUL_ZPmZ_S
    201346656U,	// FMUL_ZZZI_D
    2387111520U,	// FMUL_ZZZI_H
    268471904U,	// FMUL_ZZZI_S
    201346656U,	// FMUL_ZZZ_D
    2387111520U,	// FMUL_ZZZ_H
    268471904U,	// FMUL_ZZZ_S
    100716128U,	// FMULv1i16_indexed
    100716128U,	// FMULv1i32_indexed
    100716128U,	// FMULv1i64_indexed
    2216210016U,	// FMULv2f32
    2216734304U,	// FMULv2f64
    2216210016U,	// FMULv2i32_indexed
    2216734304U,	// FMULv2i64_indexed
    69774944U,	// FMULv4f16
    70299232U,	// FMULv4f32
    69774944U,	// FMULv4i16_indexed
    70299232U,	// FMULv4i32_indexed
    2218307168U,	// FMULv8f16
    2218307168U,	// FMULv8i16_indexed
    2248198419U,	// FNEGDr
    2248198419U,	// FNEGHr
    2248198419U,	// FNEGSr
    18707U,	// FNEG_ZPmZ_D
    2181589267U,	// FNEG_ZPmZ_H
    35091U,	// FNEG_ZPmZ_S
    68725011U,	// FNEGv2f32
    2216732947U,	// FNEGv2f64
    69773587U,	// FNEGv4f16
    2217781523U,	// FNEGv4f32
    70822163U,	// FNEGv8f16
    100714518U,	// FNMADDDrrr
    100714518U,	// FNMADDHrrr
    100714518U,	// FNMADDSrrr
    302008214U,	// FNMAD_ZPmZZ_D
    2186307478U,	// FNMAD_ZPmZZ_H
    302024598U,	// FNMAD_ZPmZZ_S
    302006974U,	// FNMLA_ZPmZZ_D
    2186306238U,	// FNMLA_ZPmZZ_H
    302023358U,	// FNMLA_ZPmZZ_S
    302010968U,	// FNMLS_ZPmZZ_D
    2186310232U,	// FNMLS_ZPmZZ_H
    302027352U,	// FNMLS_ZPmZZ_S
    302007882U,	// FNMSB_ZPmZZ_D
    2186307146U,	// FNMSB_ZPmZZ_H
    302024266U,	// FNMSB_ZPmZZ_S
    100714172U,	// FNMSUBDrrr
    100714172U,	// FNMSUBHrrr
    100714172U,	// FNMSUBSrrr
    100716134U,	// FNMULDrr
    100716134U,	// FNMULHrr
    100716134U,	// FNMULSrr
    2348828852U,	// FRECPE_ZZ_D
    608725172U,	// FRECPE_ZZ_H
    2415954100U,	// FRECPE_ZZ_S
    2248198324U,	// FRECPEv1f16
    2248198324U,	// FRECPEv1i32
    2248198324U,	// FRECPEv1i64
    68724916U,	// FRECPEv2f32
    2216732852U,	// FRECPEv2f64
    69773492U,	// FRECPEv4f16
    2217781428U,	// FRECPEv4f32
    70822068U,	// FRECPEv8f16
    100717192U,	// FRECPS16
    100717192U,	// FRECPS32
    100717192U,	// FRECPS64
    201347720U,	// FRECPS_ZZZ_D
    2387112584U,	// FRECPS_ZZZ_H
    268472968U,	// FRECPS_ZZZ_S
    2216211080U,	// FRECPSv2f32
    2216735368U,	// FRECPSv2f64
    69776008U,	// FRECPSv4f16
    70300296U,	// FRECPSv4f32
    2218308232U,	// FRECPSv8f16
    21913U,	// FRECPX_ZPmZ_D
    2181592473U,	// FRECPX_ZPmZ_H
    38297U,	// FRECPX_ZPmZ_S
    2248201625U,	// FRECPXv1f16
    2248201625U,	// FRECPXv1i32
    2248201625U,	// FRECPXv1i64
    2248196906U,	// FRINTADr
    2248196906U,	// FRINTAHr
    2248196906U,	// FRINTASr
    17194U,	// FRINTA_ZPmZ_D
    2181587754U,	// FRINTA_ZPmZ_H
    33578U,	// FRINTA_ZPmZ_S
    68723498U,	// FRINTAv2f32
    2216731434U,	// FRINTAv2f64
    69772074U,	// FRINTAv4f16
    2217780010U,	// FRINTAv4f32
    70820650U,	// FRINTAv8f16
    2248199305U,	// FRINTIDr
    2248199305U,	// FRINTIHr
    2248199305U,	// FRINTISr
    19593U,	// FRINTI_ZPmZ_D
    2181590153U,	// FRINTI_ZPmZ_H
    35977U,	// FRINTI_ZPmZ_S
    68725897U,	// FRINTIv2f32
    2216733833U,	// FRINTIv2f64
    69774473U,	// FRINTIv4f16
    2217782409U,	// FRINTIv4f32
    70823049U,	// FRINTIv8f16
    2248199881U,	// FRINTMDr
    2248199881U,	// FRINTMHr
    2248199881U,	// FRINTMSr
    20169U,	// FRINTM_ZPmZ_D
    2181590729U,	// FRINTM_ZPmZ_H
    36553U,	// FRINTM_ZPmZ_S
    68726473U,	// FRINTMv2f32
    2216734409U,	// FRINTMv2f64
    69775049U,	// FRINTMv4f16
    2217782985U,	// FRINTMv4f32
    70823625U,	// FRINTMv8f16
    2248199990U,	// FRINTNDr
    2248199990U,	// FRINTNHr
    2248199990U,	// FRINTNSr
    20278U,	// FRINTN_ZPmZ_D
    2181590838U,	// FRINTN_ZPmZ_H
    36662U,	// FRINTN_ZPmZ_S
    68726582U,	// FRINTNv2f32
    2216734518U,	// FRINTNv2f64
    69775158U,	// FRINTNv4f16
    2217783094U,	// FRINTNv4f32
    70823734U,	// FRINTNv8f16
    2248200275U,	// FRINTPDr
    2248200275U,	// FRINTPHr
    2248200275U,	// FRINTPSr
    20563U,	// FRINTP_ZPmZ_D
    2181591123U,	// FRINTP_ZPmZ_H
    36947U,	// FRINTP_ZPmZ_S
    68726867U,	// FRINTPv2f32
    2216734803U,	// FRINTPv2f64
    69775443U,	// FRINTPv4f16
    2217783379U,	// FRINTPv4f32
    70824019U,	// FRINTPv8f16
    2248201633U,	// FRINTXDr
    2248201633U,	// FRINTXHr
    2248201633U,	// FRINTXSr
    21921U,	// FRINTX_ZPmZ_D
    2181592481U,	// FRINTX_ZPmZ_H
    38305U,	// FRINTX_ZPmZ_S
    68728225U,	// FRINTXv2f32
    2216736161U,	// FRINTXv2f64
    69776801U,	// FRINTXv4f16
    2217784737U,	// FRINTXv4f32
    70825377U,	// FRINTXv8f16
    2248201713U,	// FRINTZDr
    2248201713U,	// FRINTZHr
    2248201713U,	// FRINTZSr
    22001U,	// FRINTZ_ZPmZ_D
    2181592561U,	// FRINTZ_ZPmZ_H
    38385U,	// FRINTZ_ZPmZ_S
    68728305U,	// FRINTZv2f32
    2216736241U,	// FRINTZv2f64
    69776881U,	// FRINTZv4f16
    2217784817U,	// FRINTZv4f32
    70825457U,	// FRINTZv8f16
    2348828897U,	// FRSQRTE_ZZ_D
    608725217U,	// FRSQRTE_ZZ_H
    2415954145U,	// FRSQRTE_ZZ_S
    2248198369U,	// FRSQRTEv1f16
    2248198369U,	// FRSQRTEv1i32
    2248198369U,	// FRSQRTEv1i64
    68724961U,	// FRSQRTEv2f32
    2216732897U,	// FRSQRTEv2f64
    69773537U,	// FRSQRTEv4f16
    2217781473U,	// FRSQRTEv4f32
    70822113U,	// FRSQRTEv8f16
    100717239U,	// FRSQRTS16
    100717239U,	// FRSQRTS32
    100717239U,	// FRSQRTS64
    201347767U,	// FRSQRTS_ZZZ_D
    2387112631U,	// FRSQRTS_ZZZ_H
    268473015U,	// FRSQRTS_ZZZ_S
    2216211127U,	// FRSQRTSv2f32
    2216735415U,	// FRSQRTSv2f64
    69776055U,	// FRSQRTSv4f16
    70300343U,	// FRSQRTSv4f32
    2218308279U,	// FRSQRTSv8f16
    302008446U,	// FSCALE_ZPmZ_D
    2186307710U,	// FSCALE_ZPmZ_H
    302024830U,	// FSCALE_ZPmZ_S
    2248201023U,	// FSQRTDr
    2248201023U,	// FSQRTHr
    2248201023U,	// FSQRTSr
    21311U,	// FSQRT_ZPmZ_D
    2181591871U,	// FSQRT_ZPmZ_H
    37695U,	// FSQRT_ZPmZ_S
    68727615U,	// FSQRTv2f32
    2216735551U,	// FSQRTv2f64
    69776191U,	// FSQRTv4f16
    2217784127U,	// FSQRTv4f32
    70824767U,	// FSQRTv8f16
    100714145U,	// FSUBDrr
    100714145U,	// FSUBHrr
    302010587U,	// FSUBR_ZPmI_D
    2186309851U,	// FSUBR_ZPmI_H
    302026971U,	// FSUBR_ZPmI_S
    302010587U,	// FSUBR_ZPmZ_D
    2186309851U,	// FSUBR_ZPmZ_H
    302026971U,	// FSUBR_ZPmZ_S
    100714145U,	// FSUBSrr
    302007969U,	// FSUB_ZPmI_D
    2186307233U,	// FSUB_ZPmI_H
    302024353U,	// FSUB_ZPmI_S
    302007969U,	// FSUB_ZPmZ_D
    2186307233U,	// FSUB_ZPmZ_H
    302024353U,	// FSUB_ZPmZ_S
    201344673U,	// FSUB_ZZZ_D
    2387109537U,	// FSUB_ZZZ_H
    268469921U,	// FSUB_ZZZ_S
    2216208033U,	// FSUBv2f32
    2216732321U,	// FSUBv2f64
    69772961U,	// FSUBv4f16
    70297249U,	// FSUBv4f32
    2218305185U,	// FSUBv8f16
    201344925U,	// FTMAD_ZZI_D
    2387109789U,	// FTMAD_ZZI_H
    268470173U,	// FTMAD_ZZI_S
    201346675U,	// FTSMUL_ZZZ_D
    2387111539U,	// FTSMUL_ZZZ_H
    268471923U,	// FTSMUL_ZZZ_S
    201346439U,	// FTSSEL_ZZZ_D
    2387111303U,	// FTSSEL_ZZZ_H
    268471687U,	// FTSSEL_ZZZ_S
    883032940U,	// GLD1B_D_IMM_REAL
    379716460U,	// GLD1B_D_REAL
    379716460U,	// GLD1B_D_SXTW_REAL
    379716460U,	// GLD1B_D_UXTW_REAL
    815932268U,	// GLD1B_S_IMM_REAL
    379724652U,	// GLD1B_S_SXTW_REAL
    379724652U,	// GLD1B_S_UXTW_REAL
    883033920U,	// GLD1D_IMM_REAL
    379717440U,	// GLD1D_REAL
    379717440U,	// GLD1D_SCALED_REAL
    379717440U,	// GLD1D_SXTW_REAL
    379717440U,	// GLD1D_SXTW_SCALED_REAL
    379717440U,	// GLD1D_UXTW_REAL
    379717440U,	// GLD1D_UXTW_SCALED_REAL
    3030518062U,	// GLD1H_D_IMM_REAL
    379717934U,	// GLD1H_D_REAL
    379717934U,	// GLD1H_D_SCALED_REAL
    379717934U,	// GLD1H_D_SXTW_REAL
    379717934U,	// GLD1H_D_SXTW_SCALED_REAL
    379717934U,	// GLD1H_D_UXTW_REAL
    379717934U,	// GLD1H_D_UXTW_SCALED_REAL
    2963417390U,	// GLD1H_S_IMM_REAL
    379726126U,	// GLD1H_S_SXTW_REAL
    379726126U,	// GLD1H_S_SXTW_SCALED_REAL
    379726126U,	// GLD1H_S_UXTW_REAL
    379726126U,	// GLD1H_S_UXTW_SCALED_REAL
    883033627U,	// GLD1SB_D_IMM_REAL
    379717147U,	// GLD1SB_D_REAL
    379717147U,	// GLD1SB_D_SXTW_REAL
    379717147U,	// GLD1SB_D_UXTW_REAL
    815932955U,	// GLD1SB_S_IMM_REAL
    379725339U,	// GLD1SB_S_SXTW_REAL
    379725339U,	// GLD1SB_S_UXTW_REAL
    3030518726U,	// GLD1SH_D_IMM_REAL
    379718598U,	// GLD1SH_D_REAL
    379718598U,	// GLD1SH_D_SCALED_REAL
    379718598U,	// GLD1SH_D_SXTW_REAL
    379718598U,	// GLD1SH_D_SXTW_SCALED_REAL
    379718598U,	// GLD1SH_D_UXTW_REAL
    379718598U,	// GLD1SH_D_UXTW_SCALED_REAL
    2963418054U,	// GLD1SH_S_IMM_REAL
    379726790U,	// GLD1SH_S_SXTW_REAL
    379726790U,	// GLD1SH_S_SXTW_SCALED_REAL
    379726790U,	// GLD1SH_S_UXTW_REAL
    379726790U,	// GLD1SH_S_UXTW_SCALED_REAL
    883037416U,	// GLD1SW_D_IMM_REAL
    379720936U,	// GLD1SW_D_REAL
    379720936U,	// GLD1SW_D_SCALED_REAL
    379720936U,	// GLD1SW_D_SXTW_REAL
    379720936U,	// GLD1SW_D_SXTW_SCALED_REAL
    379720936U,	// GLD1SW_D_UXTW_REAL
    379720936U,	// GLD1SW_D_UXTW_SCALED_REAL
    883037238U,	// GLD1W_D_IMM_REAL
    379720758U,	// GLD1W_D_REAL
    379720758U,	// GLD1W_D_SCALED_REAL
    379720758U,	// GLD1W_D_SXTW_REAL
    379720758U,	// GLD1W_D_SXTW_SCALED_REAL
    379720758U,	// GLD1W_D_UXTW_REAL
    379720758U,	// GLD1W_D_UXTW_SCALED_REAL
    815936566U,	// GLD1W_IMM_REAL
    379728950U,	// GLD1W_SXTW_REAL
    379728950U,	// GLD1W_SXTW_SCALED_REAL
    379728950U,	// GLD1W_UXTW_REAL
    379728950U,	// GLD1W_UXTW_SCALED_REAL
    883032946U,	// GLDFF1B_D_IMM_REAL
    379716466U,	// GLDFF1B_D_REAL
    379716466U,	// GLDFF1B_D_SXTW_REAL
    379716466U,	// GLDFF1B_D_UXTW_REAL
    815932274U,	// GLDFF1B_S_IMM_REAL
    379724658U,	// GLDFF1B_S_SXTW_REAL
    379724658U,	// GLDFF1B_S_UXTW_REAL
    883033926U,	// GLDFF1D_IMM_REAL
    379717446U,	// GLDFF1D_REAL
    379717446U,	// GLDFF1D_SCALED_REAL
    379717446U,	// GLDFF1D_SXTW_REAL
    379717446U,	// GLDFF1D_SXTW_SCALED_REAL
    379717446U,	// GLDFF1D_UXTW_REAL
    379717446U,	// GLDFF1D_UXTW_SCALED_REAL
    3030518068U,	// GLDFF1H_D_IMM_REAL
    379717940U,	// GLDFF1H_D_REAL
    379717940U,	// GLDFF1H_D_SCALED_REAL
    379717940U,	// GLDFF1H_D_SXTW_REAL
    379717940U,	// GLDFF1H_D_SXTW_SCALED_REAL
    379717940U,	// GLDFF1H_D_UXTW_REAL
    379717940U,	// GLDFF1H_D_UXTW_SCALED_REAL
    2963417396U,	// GLDFF1H_S_IMM_REAL
    379726132U,	// GLDFF1H_S_SXTW_REAL
    379726132U,	// GLDFF1H_S_SXTW_SCALED_REAL
    379726132U,	// GLDFF1H_S_UXTW_REAL
    379726132U,	// GLDFF1H_S_UXTW_SCALED_REAL
    883033634U,	// GLDFF1SB_D_IMM_REAL
    379717154U,	// GLDFF1SB_D_REAL
    379717154U,	// GLDFF1SB_D_SXTW_REAL
    379717154U,	// GLDFF1SB_D_UXTW_REAL
    815932962U,	// GLDFF1SB_S_IMM_REAL
    379725346U,	// GLDFF1SB_S_SXTW_REAL
    379725346U,	// GLDFF1SB_S_UXTW_REAL
    3030518733U,	// GLDFF1SH_D_IMM_REAL
    379718605U,	// GLDFF1SH_D_REAL
    379718605U,	// GLDFF1SH_D_SCALED_REAL
    379718605U,	// GLDFF1SH_D_SXTW_REAL
    379718605U,	// GLDFF1SH_D_SXTW_SCALED_REAL
    379718605U,	// GLDFF1SH_D_UXTW_REAL
    379718605U,	// GLDFF1SH_D_UXTW_SCALED_REAL
    2963418061U,	// GLDFF1SH_S_IMM_REAL
    379726797U,	// GLDFF1SH_S_SXTW_REAL
    379726797U,	// GLDFF1SH_S_SXTW_SCALED_REAL
    379726797U,	// GLDFF1SH_S_UXTW_REAL
    379726797U,	// GLDFF1SH_S_UXTW_SCALED_REAL
    883037423U,	// GLDFF1SW_D_IMM_REAL
    379720943U,	// GLDFF1SW_D_REAL
    379720943U,	// GLDFF1SW_D_SCALED_REAL
    379720943U,	// GLDFF1SW_D_SXTW_REAL
    379720943U,	// GLDFF1SW_D_SXTW_SCALED_REAL
    379720943U,	// GLDFF1SW_D_UXTW_REAL
    379720943U,	// GLDFF1SW_D_UXTW_SCALED_REAL
    883037244U,	// GLDFF1W_D_IMM_REAL
    379720764U,	// GLDFF1W_D_REAL
    379720764U,	// GLDFF1W_D_SCALED_REAL
    379720764U,	// GLDFF1W_D_SXTW_REAL
    379720764U,	// GLDFF1W_D_SXTW_SCALED_REAL
    379720764U,	// GLDFF1W_D_UXTW_REAL
    379720764U,	// GLDFF1W_D_UXTW_SCALED_REAL
    815936572U,	// GLDFF1W_IMM_REAL
    379728956U,	// GLDFF1W_SXTW_REAL
    379728956U,	// GLDFF1W_SXTW_SCALED_REAL
    379728956U,	// GLDFF1W_UXTW_REAL
    379728956U,	// GLDFF1W_UXTW_SCALED_REAL
    152359U,	// HINT
    78607U,	// HLT
    75574U,	// HVC
    536921183U,	// INCB_XPiI
    536922063U,	// INCD_XPiI
    536889295U,	// INCD_ZPiI
    536922647U,	// INCH_XPiI
    6842903U,	// INCH_ZPiI
    2315308999U,	// INCP_XP_B
    2348863431U,	// INCP_XP_D
    2717962183U,	// INCP_XP_H
    2415972295U,	// INCP_XP_S
    2147504071U,	// INCP_ZP_D
    604532679U,	// INCP_ZP_H
    2147520455U,	// INCP_ZP_S
    536925367U,	// INCW_XPiI
    536908983U,	// INCW_ZPiI
    100676987U,	// INDEX_II_B
    100685179U,	// INDEX_II_D
    242775419U,	// INDEX_II_H
    100701563U,	// INDEX_II_S
    100676987U,	// INDEX_IR_B
    100685179U,	// INDEX_IR_D
    242775419U,	// INDEX_IR_H
    100701563U,	// INDEX_IR_S
    100676987U,	// INDEX_RI_B
    100685179U,	// INDEX_RI_D
    242775419U,	// INDEX_RI_H
    100701563U,	// INDEX_RI_S
    100676987U,	// INDEX_RR_B
    100685179U,	// INDEX_RR_D
    242775419U,	// INDEX_RR_H
    100701563U,	// INDEX_RR_S
    2516595051U,	// INSR_ZR_B
    2516603243U,	// INSR_ZR_D
    615018859U,	// INSR_ZR_H
    2516619627U,	// INSR_ZR_S
    2516595051U,	// INSR_ZV_B
    2516603243U,	// INSR_ZV_D
    615018859U,	// INSR_ZV_H
    2516619627U,	// INSR_ZV_S
    3065049710U,	// INSvi16gpr
    951120494U,	// INSvi16lane
    3065573998U,	// INSvi32gpr
    3099128430U,	// INSvi32lane
    3063476846U,	// INSvi64gpr
    949547630U,	// INSvi64lane
    3066098286U,	// INSvi8gpr
    3099652718U,	// INSvi8lane
    116287U,	// ISB
    302039859U,	// LASTA_RPZ_B
    302039859U,	// LASTA_RPZ_D
    302039859U,	// LASTA_RPZ_H
    302039859U,	// LASTA_RPZ_S
    302039859U,	// LASTA_VPZ_B
    302039859U,	// LASTA_VPZ_D
    302039859U,	// LASTA_VPZ_H
    302039859U,	// LASTA_VPZ_S
    302040718U,	// LASTB_RPZ_B
    302040718U,	// LASTB_RPZ_D
    302040718U,	// LASTB_RPZ_H
    302040718U,	// LASTB_RPZ_S
    302040718U,	// LASTB_VPZ_B
    302040718U,	// LASTB_VPZ_D
    302040718U,	// LASTB_VPZ_H
    302040718U,	// LASTB_VPZ_S
    379741036U,	// LD1B
    379716460U,	// LD1B_D
    379716460U,	// LD1B_D_IMM_REAL
    379749228U,	// LD1B_H
    379749228U,	// LD1B_H_IMM_REAL
    379741036U,	// LD1B_IMM_REAL
    379724652U,	// LD1B_S
    379724652U,	// LD1B_S_IMM_REAL
    379717440U,	// LD1D
    379717440U,	// LD1D_IMM_REAL
    172064U,	// LD1Fourv16b
    13287456U,	// LD1Fourv16b_POST
    188448U,	// LD1Fourv1d
    13828128U,	// LD1Fourv1d_POST
    204832U,	// LD1Fourv2d
    13320224U,	// LD1Fourv2d_POST
    221216U,	// LD1Fourv2s
    13860896U,	// LD1Fourv2s_POST
    237600U,	// LD1Fourv4h
    13877280U,	// LD1Fourv4h_POST
    253984U,	// LD1Fourv4s
    13369376U,	// LD1Fourv4s_POST
    270368U,	// LD1Fourv8b
    13910048U,	// LD1Fourv8b_POST
    286752U,	// LD1Fourv8h
    13402144U,	// LD1Fourv8h_POST
    379750702U,	// LD1H
    379717934U,	// LD1H_D
    379717934U,	// LD1H_D_IMM_REAL
    379750702U,	// LD1H_IMM_REAL
    379726126U,	// LD1H_S
    379726126U,	// LD1H_S_IMM_REAL
    172064U,	// LD1Onev16b
    14336032U,	// LD1Onev16b_POST
    188448U,	// LD1Onev1d
    14876704U,	// LD1Onev1d_POST
    204832U,	// LD1Onev2d
    14368800U,	// LD1Onev2d_POST
    221216U,	// LD1Onev2s
    14909472U,	// LD1Onev2s_POST
    237600U,	// LD1Onev4h
    14925856U,	// LD1Onev4h_POST
    253984U,	// LD1Onev4s
    14417952U,	// LD1Onev4s_POST
    270368U,	// LD1Onev8b
    14958624U,	// LD1Onev8b_POST
    286752U,	// LD1Onev8h
    14450720U,	// LD1Onev8h_POST
    379716999U,	// LD1RB_D_IMM
    379749767U,	// LD1RB_H_IMM
    379741575U,	// LD1RB_IMM
    379725191U,	// LD1RB_S_IMM
    379717698U,	// LD1RD_IMM
    379718450U,	// LD1RH_D_IMM
    379751218U,	// LD1RH_IMM
    379726642U,	// LD1RH_S_IMM
    379741567U,	// LD1RQ_B
    379741567U,	// LD1RQ_B_IMM
    379717690U,	// LD1RQ_D
    379717690U,	// LD1RQ_D_IMM
    379751210U,	// LD1RQ_H
    379751210U,	// LD1RQ_H_IMM
    379729113U,	// LD1RQ_W
    379729113U,	// LD1RQ_W_IMM
    379717201U,	// LD1RSB_D_IMM
    379749969U,	// LD1RSB_H_IMM
    379725393U,	// LD1RSB_S_IMM
    379718639U,	// LD1RSH_D_IMM
    379726831U,	// LD1RSH_S_IMM
    379720968U,	// LD1RSW_IMM
    379720929U,	// LD1RW_D_IMM
    379729121U,	// LD1RW_IMM
    176305U,	// LD1Rv16b
    15388849U,	// LD1Rv16b_POST
    192689U,	// LD1Rv1d
    14880945U,	// LD1Rv1d_POST
    209073U,	// LD1Rv2d
    14897329U,	// LD1Rv2d_POST
    225457U,	// LD1Rv2s
    15962289U,	// LD1Rv2s_POST
    241841U,	// LD1Rv4h
    16502961U,	// LD1Rv4h_POST
    258225U,	// LD1Rv4s
    15995057U,	// LD1Rv4s_POST
    274609U,	// LD1Rv8b
    15487153U,	// LD1Rv8b_POST
    290993U,	// LD1Rv8h
    16552113U,	// LD1Rv8h_POST
    379717147U,	// LD1SB_D
    379717147U,	// LD1SB_D_IMM_REAL
    379749915U,	// LD1SB_H
    379749915U,	// LD1SB_H_IMM_REAL
    379725339U,	// LD1SB_S
    379725339U,	// LD1SB_S_IMM_REAL
    379718598U,	// LD1SH_D
    379718598U,	// LD1SH_D_IMM_REAL
    379726790U,	// LD1SH_S
    379726790U,	// LD1SH_S_IMM_REAL
    379720936U,	// LD1SW_D
    379720936U,	// LD1SW_D_IMM_REAL
    172064U,	// LD1Threev16b
    16957472U,	// LD1Threev16b_POST
    188448U,	// LD1Threev1d
    17498144U,	// LD1Threev1d_POST
    204832U,	// LD1Threev2d
    16990240U,	// LD1Threev2d_POST
    221216U,	// LD1Threev2s
    17530912U,	// LD1Threev2s_POST
    237600U,	// LD1Threev4h
    17547296U,	// LD1Threev4h_POST
    253984U,	// LD1Threev4s
    17039392U,	// LD1Threev4s_POST
    270368U,	// LD1Threev8b
    17580064U,	// LD1Threev8b_POST
    286752U,	// LD1Threev8h
    17072160U,	// LD1Threev8h_POST
    172064U,	// LD1Twov16b
    13811744U,	// LD1Twov16b_POST
    188448U,	// LD1Twov1d
    14352416U,	// LD1Twov1d_POST
    204832U,	// LD1Twov2d
    13844512U,	// LD1Twov2d_POST
    221216U,	// LD1Twov2s
    14385184U,	// LD1Twov2s_POST
    237600U,	// LD1Twov4h
    14401568U,	// LD1Twov4h_POST
    253984U,	// LD1Twov4s
    13893664U,	// LD1Twov4s_POST
    270368U,	// LD1Twov8b
    14434336U,	// LD1Twov8b_POST
    286752U,	// LD1Twov8h
    13926432U,	// LD1Twov8h_POST
    379728950U,	// LD1W
    379720758U,	// LD1W_D
    379720758U,	// LD1W_D_IMM_REAL
    379728950U,	// LD1W_IMM_REAL
    18128928U,	// LD1i16
    18661408U,	// LD1i16_POST
    18145312U,	// LD1i32
    19202080U,	// LD1i32_POST
    18161696U,	// LD1i64
    19742752U,	// LD1i64_POST
    18178080U,	// LD1i8
    20283424U,	// LD1i8_POST
    379741097U,	// LD2B
    379741097U,	// LD2B_IMM
    379717484U,	// LD2D
    379717484U,	// LD2D_IMM
    379750763U,	// LD2H
    379750763U,	// LD2H_IMM
    176311U,	// LD2Rv16b
    16437431U,	// LD2Rv16b_POST
    192695U,	// LD2Rv1d
    14356663U,	// LD2Rv1d_POST
    209079U,	// LD2Rv2d
    14373047U,	// LD2Rv2d_POST
    225463U,	// LD2Rv2s
    14913719U,	// LD2Rv2s_POST
    241847U,	// LD2Rv4h
    15978679U,	// LD2Rv4h_POST
    258231U,	// LD2Rv4s
    14946487U,	// LD2Rv4s_POST
    274615U,	// LD2Rv8b
    16535735U,	// LD2Rv8b_POST
    290999U,	// LD2Rv8h
    16027831U,	// LD2Rv8h_POST
    172162U,	// LD2Twov16b
    13811842U,	// LD2Twov16b_POST
    204930U,	// LD2Twov2d
    13844610U,	// LD2Twov2d_POST
    221314U,	// LD2Twov2s
    14385282U,	// LD2Twov2s_POST
    237698U,	// LD2Twov4h
    14401666U,	// LD2Twov4h_POST
    254082U,	// LD2Twov4s
    13893762U,	// LD2Twov4s_POST
    270466U,	// LD2Twov8b
    14434434U,	// LD2Twov8b_POST
    286850U,	// LD2Twov8h
    13926530U,	// LD2Twov8h_POST
    379729002U,	// LD2W
    379729002U,	// LD2W_IMM
    18129026U,	// LD2i16
    19185794U,	// LD2i16_POST
    18145410U,	// LD2i32
    19726466U,	// LD2i32_POST
    18161794U,	// LD2i64
    20791426U,	// LD2i64_POST
    18178178U,	// LD2i8
    18710658U,	// LD2i8_POST
    379741118U,	// LD3B
    379741118U,	// LD3B_IMM
    379717496U,	// LD3D
    379717496U,	// LD3D_IMM
    379750775U,	// LD3H
    379750775U,	// LD3H_IMM
    176317U,	// LD3Rv16b
    21156029U,	// LD3Rv16b_POST
    192701U,	// LD3Rv1d
    17502397U,	// LD3Rv1d_POST
    209085U,	// LD3Rv2d
    17518781U,	// LD3Rv2d_POST
    225469U,	// LD3Rv2s
    21729469U,	// LD3Rv2s_POST
    241853U,	// LD3Rv4h
    22270141U,	// LD3Rv4h_POST
    258237U,	// LD3Rv4s
    21762237U,	// LD3Rv4s_POST
    274621U,	// LD3Rv8b
    21254333U,	// LD3Rv8b_POST
    291005U,	// LD3Rv8h
    22319293U,	// LD3Rv8h_POST
    172553U,	// LD3Threev16b
    16957961U,	// LD3Threev16b_POST
    205321U,	// LD3Threev2d
    16990729U,	// LD3Threev2d_POST
    221705U,	// LD3Threev2s
    17531401U,	// LD3Threev2s_POST
    238089U,	// LD3Threev4h
    17547785U,	// LD3Threev4h_POST
    254473U,	// LD3Threev4s
    17039881U,	// LD3Threev4s_POST
    270857U,	// LD3Threev8b
    17580553U,	// LD3Threev8b_POST
    287241U,	// LD3Threev8h
    17072649U,	// LD3Threev8h_POST
    379729014U,	// LD3W
    379729014U,	// LD3W_IMM
    18129417U,	// LD3i16
    22856201U,	// LD3i16_POST
    18145801U,	// LD3i32
    23396873U,	// LD3i32_POST
    18162185U,	// LD3i64
    23937545U,	// LD3i64_POST
    18178569U,	// LD3i8
    24478217U,	// LD3i8_POST
    379741130U,	// LD4B
    379741130U,	// LD4B_IMM
    379717508U,	// LD4D
    379717508U,	// LD4D_IMM
    172583U,	// LD4Fourv16b
    13287975U,	// LD4Fourv16b_POST
    205351U,	// LD4Fourv2d
    13320743U,	// LD4Fourv2d_POST
    221735U,	// LD4Fourv2s
    13861415U,	// LD4Fourv2s_POST
    238119U,	// LD4Fourv4h
    13877799U,	// LD4Fourv4h_POST
    254503U,	// LD4Fourv4s
    13369895U,	// LD4Fourv4s_POST
    270887U,	// LD4Fourv8b
    13910567U,	// LD4Fourv8b_POST
    287271U,	// LD4Fourv8h
    13402663U,	// LD4Fourv8h_POST
    379750787U,	// LD4H
    379750787U,	// LD4H_IMM
    176323U,	// LD4Rv16b
    15913155U,	// LD4Rv16b_POST
    192707U,	// LD4Rv1d
    13832387U,	// LD4Rv1d_POST
    209091U,	// LD4Rv2d
    13848771U,	// LD4Rv2d_POST
    225475U,	// LD4Rv2s
    14389443U,	// LD4Rv2s_POST
    241859U,	// LD4Rv4h
    14930115U,	// LD4Rv4h_POST
    258243U,	// LD4Rv4s
    14422211U,	// LD4Rv4s_POST
    274627U,	// LD4Rv8b
    16011459U,	// LD4Rv8b_POST
    291011U,	// LD4Rv8h
    14979267U,	// LD4Rv8h_POST
    379729026U,	// LD4W
    379729026U,	// LD4W_IMM
    18129447U,	// LD4i16
    19710503U,	// LD4i16_POST
    18145831U,	// LD4i32
    20775463U,	// LD4i32_POST
    18162215U,	// LD4i64
    24986151U,	// LD4i64_POST
    18178599U,	// LD4i8
    19235367U,	// LD4i8_POST
    973169622U,	// LDADDAB
    973171096U,	// LDADDAH
    973169821U,	// LDADDALB
    973171251U,	// LDADDALH
    973171888U,	// LDADDALW
    973171888U,	// LDADDALX
    973169280U,	// LDADDAW
    973169280U,	// LDADDAX
    973169780U,	// LDADDB
    973171237U,	// LDADDH
    973169921U,	// LDADDLB
    973171351U,	// LDADDLH
    973172058U,	// LDADDLW
    973172058U,	// LDADDLX
    973170660U,	// LDADDW
    973170660U,	// LDADDX
    2253964738U,	// LDAPRB
    2253966189U,	// LDAPRH
    2253967684U,	// LDAPRW
    2253967684U,	// LDAPRX
    106481133U,	// LDAPURBi
    106482584U,	// LDAPURHi
    106481264U,	// LDAPURSBWi
    106481264U,	// LDAPURSBXi
    106482702U,	// LDAPURSHWi
    106482702U,	// LDAPURSHXi
    106485031U,	// LDAPURSWi
    106484117U,	// LDAPURXi
    106484117U,	// LDAPURi
    2253964686U,	// LDARB
    2253966137U,	// LDARH
    2253967561U,	// LDARW
    2253967561U,	// LDARX
    2248200299U,	// LDAXPW
    2248200299U,	// LDAXPX
    2253964797U,	// LDAXRB
    2253966248U,	// LDAXRH
    2253967800U,	// LDAXRW
    2253967800U,	// LDAXRX
    973169678U,	// LDCLRAB
    973171142U,	// LDCLRAH
    973169861U,	// LDCLRALB
    973171291U,	// LDCLRALH
    973171955U,	// LDCLRALW
    973171955U,	// LDCLRALX
    973169394U,	// LDCLRAW
    973169394U,	// LDCLRAX
    973170083U,	// LDCLRB
    973171534U,	// LDCLRH
    973169957U,	// LDCLRLB
    973171387U,	// LDCLRLH
    973172249U,	// LDCLRLW
    973172249U,	// LDCLRLX
    973173017U,	// LDCLRW
    973173017U,	// LDCLRX
    973169687U,	// LDEORAB
    973171151U,	// LDEORAH
    973169871U,	// LDEORALB
    973171301U,	// LDEORALH
    973171964U,	// LDEORALW
    973171964U,	// LDEORALX
    973169402U,	// LDEORAW
    973169402U,	// LDEORAX
    973170106U,	// LDEORB
    973171557U,	// LDEORH
    973169966U,	// LDEORLB
    973171396U,	// LDEORLH
    973172257U,	// LDEORLW
    973172257U,	// LDEORLX
    973173043U,	// LDEORW
    973173043U,	// LDEORX
    379716466U,	// LDFF1B_D_REAL
    379749234U,	// LDFF1B_H_REAL
    379741042U,	// LDFF1B_REAL
    379724658U,	// LDFF1B_S_REAL
    379717446U,	// LDFF1D_REAL
    379717940U,	// LDFF1H_D_REAL
    379750708U,	// LDFF1H_REAL
    379726132U,	// LDFF1H_S_REAL
    379717154U,	// LDFF1SB_D_REAL
    379749922U,	// LDFF1SB_H_REAL
    379725346U,	// LDFF1SB_S_REAL
    379718605U,	// LDFF1SH_D_REAL
    379726797U,	// LDFF1SH_S_REAL
    379720943U,	// LDFF1SW_D_REAL
    379720764U,	// LDFF1W_D_REAL
    379728956U,	// LDFF1W_REAL
    2253964693U,	// LDLARB
    2253966144U,	// LDLARH
    2253967567U,	// LDLARW
    2253967567U,	// LDLARX
    379716474U,	// LDNF1B_D_IMM_REAL
    379749242U,	// LDNF1B_H_IMM_REAL
    379741050U,	// LDNF1B_IMM_REAL
    379724666U,	// LDNF1B_S_IMM_REAL
    379717454U,	// LDNF1D_IMM_REAL
    379717948U,	// LDNF1H_D_IMM_REAL
    379750716U,	// LDNF1H_IMM_REAL
    379726140U,	// LDNF1H_S_IMM_REAL
    379717163U,	// LDNF1SB_D_IMM_REAL
    379749931U,	// LDNF1SB_H_IMM_REAL
    379725355U,	// LDNF1SB_S_IMM_REAL
    379718614U,	// LDNF1SH_D_IMM_REAL
    379726806U,	// LDNF1SH_S_IMM_REAL
    379720952U,	// LDNF1SW_D_IMM_REAL
    379720772U,	// LDNF1W_D_IMM_REAL
    379728964U,	// LDNF1W_IMM_REAL
    2248200224U,	// LDNPDi
    2248200224U,	// LDNPQi
    2248200224U,	// LDNPSi
    2248200224U,	// LDNPWi
    2248200224U,	// LDNPXi
    379741058U,	// LDNT1B_ZRI
    379741058U,	// LDNT1B_ZRR
    379717462U,	// LDNT1D_ZRI
    379717462U,	// LDNT1D_ZRR
    379750724U,	// LDNT1H_ZRI
    379750724U,	// LDNT1H_ZRR
    379728972U,	// LDNT1W_ZRI
    379728972U,	// LDNT1W_ZRR
    2248200156U,	// LDPDi
    2516676572U,	// LDPDpost
    2516676572U,	// LDPDpre
    2248200156U,	// LDPQi
    2516676572U,	// LDPQpost
    2516676572U,	// LDPQpre
    2248201473U,	// LDPSWi
    2516677889U,	// LDPSWpost
    2516677889U,	// LDPSWpre
    2248200156U,	// LDPSi
    2516676572U,	// LDPSpost
    2516676572U,	// LDPSpre
    2248200156U,	// LDPWi
    2516676572U,	// LDPWpost
    2516676572U,	// LDPWpre
    2248200156U,	// LDPXi
    2516676572U,	// LDPXpost
    2516676572U,	// LDPXpre
    106480223U,	// LDRAAindexed
    374956639U,	// LDRAAwriteback
    106480640U,	// LDRABindexed
    374957056U,	// LDRABwriteback
    374957469U,	// LDRBBpost
    374957469U,	// LDRBBpre
    106481053U,	// LDRBBroW
    106481053U,	// LDRBBroX
    106481053U,	// LDRBBui
    374960359U,	// LDRBpost
    374960359U,	// LDRBpre
    106483943U,	// LDRBroW
    106483943U,	// LDRBroX
    106483943U,	// LDRBui
    436261095U,	// LDRDl
    374960359U,	// LDRDpost
    374960359U,	// LDRDpre
    106483943U,	// LDRDroW
    106483943U,	// LDRDroX
    106483943U,	// LDRDui
    374958920U,	// LDRHHpost
    374958920U,	// LDRHHpre
    106482504U,	// LDRHHroW
    106482504U,	// LDRHHroX
    106482504U,	// LDRHHui
    374960359U,	// LDRHpost
    374960359U,	// LDRHpre
    106483943U,	// LDRHroW
    106483943U,	// LDRHroX
    106483943U,	// LDRHui
    436261095U,	// LDRQl
    374960359U,	// LDRQpost
    374960359U,	// LDRQpre
    106483943U,	// LDRQroW
    106483943U,	// LDRQroX
    106483943U,	// LDRQui
    374957657U,	// LDRSBWpost
    374957657U,	// LDRSBWpre
    106481241U,	// LDRSBWroW
    106481241U,	// LDRSBWroX
    106481241U,	// LDRSBWui
    374957657U,	// LDRSBXpost
    374957657U,	// LDRSBXpre
    106481241U,	// LDRSBXroW
    106481241U,	// LDRSBXroX
    106481241U,	// LDRSBXui
    374959095U,	// LDRSHWpost
    374959095U,	// LDRSHWpre
    106482679U,	// LDRSHWroW
    106482679U,	// LDRSHWroX
    106482679U,	// LDRSHWui
    374959095U,	// LDRSHXpost
    374959095U,	// LDRSHXpre
    106482679U,	// LDRSHXroW
    106482679U,	// LDRSHXroX
    106482679U,	// LDRSHXui
    436262160U,	// LDRSWl
    374961424U,	// LDRSWpost
    374961424U,	// LDRSWpre
    106485008U,	// LDRSWroW
    106485008U,	// LDRSWroX
    106485008U,	// LDRSWui
    436261095U,	// LDRSl
    374960359U,	// LDRSpost
    374960359U,	// LDRSpre
    106483943U,	// LDRSroW
    106483943U,	// LDRSroX
    106483943U,	// LDRSui
    436261095U,	// LDRWl
    374960359U,	// LDRWpost
    374960359U,	// LDRWpre
    106483943U,	// LDRWroW
    106483943U,	// LDRWroX
    106483943U,	// LDRWui
    436261095U,	// LDRXl
    374960359U,	// LDRXpost
    374960359U,	// LDRXpre
    106483943U,	// LDRXroW
    106483943U,	// LDRXroX
    106483943U,	// LDRXui
    106803431U,	// LDR_PXI
    106803431U,	// LDR_ZXI
    973169703U,	// LDSETAB
    973171167U,	// LDSETAH
    973169889U,	// LDSETALB
    973171319U,	// LDSETALH
    973171980U,	// LDSETALW
    973171980U,	// LDSETALX
    973169442U,	// LDSETAW
    973169442U,	// LDSETAX
    973170303U,	// LDSETB
    973171736U,	// LDSETH
    973169982U,	// LDSETLB
    973171412U,	// LDSETLH
    973172305U,	// LDSETLW
    973172305U,	// LDSETLX
    973173476U,	// LDSETW
    973173476U,	// LDSETX
    973169712U,	// LDSMAXAB
    973171176U,	// LDSMAXAH
    973169899U,	// LDSMAXALB
    973171329U,	// LDSMAXALH
    973171989U,	// LDSMAXALW
    973171989U,	// LDSMAXALX
    973169466U,	// LDSMAXAW
    973169466U,	// LDSMAXAX
    973170392U,	// LDSMAXB
    973171768U,	// LDSMAXH
    973169991U,	// LDSMAXLB
    973171454U,	// LDSMAXLH
    973172360U,	// LDSMAXLW
    973172360U,	// LDSMAXLX
    973174109U,	// LDSMAXW
    973174109U,	// LDSMAXX
    973169631U,	// LDSMINAB
    973171115U,	// LDSMINAH
    973169831U,	// LDSMINALB
    973171261U,	// LDSMINALH
    973171920U,	// LDSMINALW
    973171920U,	// LDSMINALX
    973169349U,	// LDSMINAW
    973169349U,	// LDSMINAX
    973170016U,	// LDSMINB
    973171474U,	// LDSMINH
    973169930U,	// LDSMINLB
    973171360U,	// LDSMINLH
    973172211U,	// LDSMINLW
    973172211U,	// LDSMINLX
    973172462U,	// LDSMINW
    973172462U,	// LDSMINX
    106481098U,	// LDTRBi
    106482549U,	// LDTRHi
    106481248U,	// LDTRSBWi
    106481248U,	// LDTRSBXi
    106482686U,	// LDTRSHWi
    106482686U,	// LDTRSHXi
    106485015U,	// LDTRSWi
    106484081U,	// LDTRWi
    106484081U,	// LDTRXi
    973169722U,	// LDUMAXAB
    973171186U,	// LDUMAXAH
    973169910U,	// LDUMAXALB
    973171340U,	// LDUMAXALH
    973171999U,	// LDUMAXALW
    973171999U,	// LDUMAXALX
    973169475U,	// LDUMAXAW
    973169475U,	// LDUMAXAX
    973170401U,	// LDUMAXB
    973171777U,	// LDUMAXH
    973170001U,	// LDUMAXLB
    973171464U,	// LDUMAXLH
    973172369U,	// LDUMAXLW
    973172369U,	// LDUMAXLX
    973174117U,	// LDUMAXW
    973174117U,	// LDUMAXX
    973169641U,	// LDUMINAB
    973171125U,	// LDUMINAH
    973169842U,	// LDUMINALB
    973171272U,	// LDUMINALH
    973171930U,	// LDUMINALW
    973171930U,	// LDUMINALX
    973169358U,	// LDUMINAW
    973169358U,	// LDUMINAX
    973170025U,	// LDUMINB
    973171483U,	// LDUMINH
    973169940U,	// LDUMINLB
    973171370U,	// LDUMINLH
    973172220U,	// LDUMINLW
    973172220U,	// LDUMINLX
    973172470U,	// LDUMINW
    973172470U,	// LDUMINX
    106481118U,	// LDURBBi
    106484104U,	// LDURBi
    106484104U,	// LDURDi
    106482569U,	// LDURHHi
    106484104U,	// LDURHi
    106484104U,	// LDURQi
    106481256U,	// LDURSBWi
    106481256U,	// LDURSBXi
    106482694U,	// LDURSHWi
    106482694U,	// LDURSHXi
    106485023U,	// LDURSWi
    106484104U,	// LDURSi
    106484104U,	// LDURWi
    106484104U,	// LDURXi
    2248200327U,	// LDXPW
    2248200327U,	// LDXPX
    2253964805U,	// LDXRB
    2253966256U,	// LDXRH
    2253967807U,	// LDXRW
    2253967807U,	// LDXRX
    0U,	// LOADgot
    302002471U,	// LSLR_ZPmZ_B
    302010663U,	// LSLR_ZPmZ_D
    2186309927U,	// LSLR_ZPmZ_H
    302027047U,	// LSLR_ZPmZ_S
    100716088U,	// LSLVWr
    100716088U,	// LSLVXr
    302001720U,	// LSL_WIDE_ZPmZ_B
    2186309176U,	// LSL_WIDE_ZPmZ_H
    302026296U,	// LSL_WIDE_ZPmZ_S
    167783992U,	// LSL_WIDE_ZZZ_B
    2387111480U,	// LSL_WIDE_ZZZ_H
    268471864U,	// LSL_WIDE_ZZZ_S
    302001720U,	// LSL_ZPmI_B
    302009912U,	// LSL_ZPmI_D
    2186309176U,	// LSL_ZPmI_H
    302026296U,	// LSL_ZPmI_S
    302001720U,	// LSL_ZPmZ_B
    302009912U,	// LSL_ZPmZ_D
    2186309176U,	// LSL_ZPmZ_H
    302026296U,	// LSL_ZPmZ_S
    167783992U,	// LSL_ZZI_B
    201346616U,	// LSL_ZZI_D
    239627832U,	// LSL_ZZI_H
    268471864U,	// LSL_ZZI_S
    302002518U,	// LSRR_ZPmZ_B
    302010710U,	// LSRR_ZPmZ_D
    2186309974U,	// LSRR_ZPmZ_H
    302027094U,	// LSRR_ZPmZ_S
    100716897U,	// LSRVWr
    100716897U,	// LSRVXr
    302002529U,	// LSR_WIDE_ZPmZ_B
    2186309985U,	// LSR_WIDE_ZPmZ_H
    302027105U,	// LSR_WIDE_ZPmZ_S
    167784801U,	// LSR_WIDE_ZZZ_B
    2387112289U,	// LSR_WIDE_ZZZ_H
    268472673U,	// LSR_WIDE_ZZZ_S
    302002529U,	// LSR_ZPmI_B
    302010721U,	// LSR_ZPmI_D
    2186309985U,	// LSR_ZPmI_H
    302027105U,	// LSR_ZPmI_S
    302002529U,	// LSR_ZPmZ_B
    302010721U,	// LSR_ZPmZ_D
    2186309985U,	// LSR_ZPmZ_H
    302027105U,	// LSR_ZPmZ_S
    167784801U,	// LSR_ZZI_B
    201347425U,	// LSR_ZZI_D
    239628641U,	// LSR_ZZI_H
    268472673U,	// LSR_ZZI_S
    100714512U,	// MADDWrrr
    100714512U,	// MADDXrrr
    302000017U,	// MAD_ZPmZZ_B
    302008209U,	// MAD_ZPmZZ_D
    2186307473U,	// MAD_ZPmZZ_H
    302024593U,	// MAD_ZPmZZ_S
    301998771U,	// MLA_ZPmZZ_B
    302006963U,	// MLA_ZPmZZ_D
    2186306227U,	// MLA_ZPmZZ_H
    302023347U,	// MLA_ZPmZZ_S
    135324339U,	// MLAv16i8
    2283332275U,	// MLAv2i32
    2283332275U,	// MLAv2i32_indexed
    136897203U,	// MLAv4i16
    136897203U,	// MLAv4i16_indexed
    137421491U,	// MLAv4i32
    137421491U,	// MLAv4i32_indexed
    2285429427U,	// MLAv8i16
    2285429427U,	// MLAv8i16_indexed
    2285953715U,	// MLAv8i8
    302002771U,	// MLS_ZPmZZ_B
    302010963U,	// MLS_ZPmZZ_D
    2186310227U,	// MLS_ZPmZZ_H
    302027347U,	// MLS_ZPmZZ_S
    135328339U,	// MLSv16i8
    2283336275U,	// MLSv2i32
    2283336275U,	// MLSv2i32_indexed
    136901203U,	// MLSv4i16
    136901203U,	// MLSv4i16_indexed
    137425491U,	// MLSv4i32
    137425491U,	// MLSv4i32_indexed
    2285433427U,	// MLSv8i16
    2285433427U,	// MLSv8i16_indexed
    2285957715U,	// MLSv8i8
    1006685329U,	// MOVID
    3188763793U,	// MOVIv16b_ns
    1008774289U,	// MOVIv2d_ns
    3189288081U,	// MOVIv2i32
    3189288081U,	// MOVIv2s_msl
    3190336657U,	// MOVIv4i16
    3190860945U,	// MOVIv4i32
    3190860945U,	// MOVIv4s_msl
    3191909521U,	// MOVIv8b_ns
    3191385233U,	// MOVIv8i16
    402705564U,	// MOVKWi
    402705564U,	// MOVKXi
    3187724142U,	// MOVNWi
    3187724142U,	// MOVNXi
    13705U,	// MOVPRFX_ZPmZ_B
    21897U,	// MOVPRFX_ZPmZ_D
    2181592457U,	// MOVPRFX_ZPmZ_H
    38281U,	// MOVPRFX_ZPmZ_S
    302003593U,	// MOVPRFX_ZPzZ_B
    302011785U,	// MOVPRFX_ZPzZ_D
    2622518665U,	// MOVPRFX_ZPzZ_H
    302028169U,	// MOVPRFX_ZPzZ_S
    2449847689U,	// MOVPRFX_ZZ
    3187725817U,	// MOVZWi
    3187725817U,	// MOVZXi
    0U,	// MOVaddr
    0U,	// MOVaddrBA
    0U,	// MOVaddrCP
    0U,	// MOVaddrEXT
    0U,	// MOVaddrJT
    0U,	// MOVaddrTLS
    0U,	// MOVbaseTLS
    0U,	// MOVi32imm
    0U,	// MOVi64imm
    1073795744U,	// MRS
    301999685U,	// MSB_ZPmZZ_B
    302007877U,	// MSB_ZPmZZ_D
    2186307141U,	// MSB_ZPmZZ_H
    302024261U,	// MSB_ZPmZZ_S
    381286U,	// MSR
    389478U,	// MSRpstateImm1
    389478U,	// MSRpstateImm4
    100714166U,	// MSUBWrrr
    100714166U,	// MSUBXrrr
    167784033U,	// MUL_ZI_B
    201346657U,	// MUL_ZI_D
    239627873U,	// MUL_ZI_H
    268471905U,	// MUL_ZI_S
    302001761U,	// MUL_ZPmZ_B
    302009953U,	// MUL_ZPmZ_D
    2186309217U,	// MUL_ZPmZ_H
    302026337U,	// MUL_ZPmZ_S
    68202081U,	// MULv16i8
    2216210017U,	// MULv2i32
    2216210017U,	// MULv2i32_indexed
    69774945U,	// MULv4i16
    69774945U,	// MULv4i16_indexed
    70299233U,	// MULv4i32
    70299233U,	// MULv4i32_indexed
    2218307169U,	// MULv8i16
    2218307169U,	// MULv8i16_indexed
    2218831457U,	// MULv8i8
    3189288062U,	// MVNIv2i32
    3189288062U,	// MVNIv2s_msl
    3190336638U,	// MVNIv4i16
    3190860926U,	// MVNIv4i32
    3190860926U,	// MVNIv4s_msl
    3191385214U,	// MVNIv8i16
    302002728U,	// NANDS_PPzPP
    302000180U,	// NAND_PPzPP
    10516U,	// NEG_ZPmZ_B
    18708U,	// NEG_ZPmZ_D
    2181589268U,	// NEG_ZPmZ_H
    35092U,	// NEG_ZPmZ_S
    68200724U,	// NEGv16i8
    2248198420U,	// NEGv1i64
    68725012U,	// NEGv2i32
    2216732948U,	// NEGv2i64
    69773588U,	// NEGv4i16
    2217781524U,	// NEGv4i32
    70822164U,	// NEGv8i16
    2218830100U,	// NEGv8i8
    302002859U,	// NORS_PPzPP
    302002490U,	// NOR_PPzPP
    13114U,	// NOT_ZPmZ_B
    21306U,	// NOT_ZPmZ_D
    2181591866U,	// NOT_ZPmZ_H
    37690U,	// NOT_ZPmZ_S
    68203322U,	// NOTv16i8
    2218832698U,	// NOTv8i8
    302002810U,	// ORNS_PPzPP
    0U,	// ORNWrr
    100716337U,	// ORNWrs
    0U,	// ORNXrr
    100716337U,	// ORNXrs
    302001969U,	// ORN_PPzPP
    68202289U,	// ORNv16i8
    2218831665U,	// ORNv8i8
    302002865U,	// ORRS_PPzPP
    100716875U,	// ORRWri
    0U,	// ORRWrr
    100716875U,	// ORRWrs
    100716875U,	// ORRXri
    0U,	// ORRXrr
    100716875U,	// ORRXrs
    302002507U,	// ORR_PPzPP
    201347403U,	// ORR_ZI
    302002507U,	// ORR_ZPmZ_B
    302010699U,	// ORR_ZPmZ_D
    2186309963U,	// ORR_ZPmZ_H
    302027083U,	// ORR_ZPmZ_S
    201347403U,	// ORR_ZZZ
    68202827U,	// ORRv16i8
    404287819U,	// ORRv2i32
    405336395U,	// ORRv4i16
    405860683U,	// ORRv4i32
    406384971U,	// ORRv8i16
    2218832203U,	// ORRv8i8
    302044188U,	// ORV_VPZ_B
    302044188U,	// ORV_VPZ_D
    302044188U,	// ORV_VPZ_H
    302044188U,	// ORV_VPZ_S
    2248196729U,	// PACDA
    2248197229U,	// PACDB
    6341452U,	// PACDZA
    6342378U,	// PACDZB
    100713110U,	// PACGA
    2248196765U,	// PACIA
    5796U,	// PACIA1716
    5927U,	// PACIASP
    5982U,	// PACIAZ
    2248197257U,	// PACIB
    5816U,	// PACIB1716
    5943U,	// PACIBSP
    5996U,	// PACIBZ
    6341468U,	// PACIZA
    6342394U,	// PACIZB
    6301913U,	// PFALSE
    70820111U,	// PMULLv16i8
    1132506590U,	// PMULLv1i64
    1166057743U,	// PMULLv2i64
    2218307038U,	// PMULLv8i8
    68202093U,	// PMULv16i8
    2218831469U,	// PMULv8i8
    302003042U,	// PNEXT_B
    302011234U,	// PNEXT_D
    2387637090U,	// PNEXT_H
    302027618U,	// PNEXT_S
    3079537795U,	// PRFB_D_PZI
    246285443U,	// PRFB_D_SCALED
    2393769091U,	// PRFB_D_SXTW_SCALED
    246285443U,	// PRFB_D_UXTW_SCALED
    246285443U,	// PRFB_PRI
    2393769091U,	// PRFB_PRR
    3080062083U,	// PRFB_S_PZI
    246285443U,	// PRFB_S_SXTW_SCALED
    2393769091U,	// PRFB_S_UXTW_SCALED
    1200490542U,	// PRFD_D_PZI
    246286382U,	// PRFD_D_SCALED
    2393770030U,	// PRFD_D_SXTW_SCALED
    246286382U,	// PRFD_D_UXTW_SCALED
    246286382U,	// PRFD_PRI
    2393770030U,	// PRFD_PRR
    1201014830U,	// PRFD_S_PZI
    246286382U,	// PRFD_S_SXTW_SCALED
    2393770030U,	// PRFD_S_UXTW_SCALED
    1234045485U,	// PRFH_D_PZI
    246286893U,	// PRFH_D_SCALED
    2393770541U,	// PRFH_D_SXTW_SCALED
    246286893U,	// PRFH_D_UXTW_SCALED
    246286893U,	// PRFH_PRI
    2393770541U,	// PRFH_PRR
    1234569773U,	// PRFH_S_PZI
    246286893U,	// PRFH_S_SXTW_SCALED
    2393770541U,	// PRFH_S_UXTW_SCALED
    436612781U,	// PRFMl
    106835629U,	// PRFMroW
    106835629U,	// PRFMroX
    106835629U,	// PRFMui
    246289619U,	// PRFS_PRR
    106835665U,	// PRFUMi
    1267602643U,	// PRFW_D_PZI
    2393773267U,	// PRFW_D_SCALED
    246289619U,	// PRFW_D_SXTW_SCALED
    2393773267U,	// PRFW_D_UXTW_SCALED
    246289619U,	// PRFW_PRI
    1268126931U,	// PRFW_S_PZI
    246289619U,	// PRFW_S_SXTW_SCALED
    2393773267U,	// PRFW_S_UXTW_SCALED
    2315629382U,	// PTEST_PP
    2650812975U,	// PTRUES_B
    2650821167U,	// PTRUES_D
    26767919U,	// PTRUES_H
    2650837551U,	// PTRUES_S
    2650810611U,	// PTRUE_B
    2650818803U,	// PTRUE_D
    26765555U,	// PTRUE_H
    2650835187U,	// PTRUE_S
    27290705U,	// PUNPKHI_PP
    27291525U,	// PUNPKLO_PP
    2216210144U,	// RADDHNv2i64_v2i32
    2284904786U,	// RADDHNv2i64_v4i32
    69775072U,	// RADDHNv4i32_v4i16
    137945426U,	// RADDHNv4i32_v8i16
    2282807634U,	// RADDHNv8i16_v16i8
    2218831584U,	// RADDHNv8i16_v8i8
    2216730741U,	// RAX1
    2248200960U,	// RBITWr
    2248200960U,	// RBITXr
    13056U,	// RBIT_ZPmZ_B
    21248U,	// RBIT_ZPmZ_D
    2181591808U,	// RBIT_ZPmZ_H
    37632U,	// RBIT_ZPmZ_S
    68203264U,	// RBITv16i8
    2218832640U,	// RBITv8i8
    302002840U,	// RDFFRS_PPz
    6303980U,	// RDFFR_P
    302002412U,	// RDFFR_PPz
    2248199810U,	// RDVLI_XI
    6345439U,	// RET
    5892U,	// RETAA
    5899U,	// RETAB
    0U,	// RET_ReallyLR
    2248196665U,	// REV16Wr
    2248196665U,	// REV16Xr
    68198969U,	// REV16v16i8
    2218828345U,	// REV16v8i8
    2248196219U,	// REV32Xr
    68198523U,	// REV32v16i8
    69771387U,	// REV32v4i16
    70819963U,	// REV32v8i16
    2218827899U,	// REV32v8i8
    68198944U,	// REV64v16i8
    68723232U,	// REV64v2i32
    69771808U,	// REV64v4i16
    2217779744U,	// REV64v4i32
    70820384U,	// REV64v8i16
    2218828320U,	// REV64v8i8
    18130U,	// REVB_ZPmZ_D
    2181588690U,	// REVB_ZPmZ_H
    34514U,	// REVB_ZPmZ_S
    19506U,	// REVH_ZPmZ_D
    35890U,	// REVH_ZPmZ_S
    21827U,	// REVW_ZPmZ_D
    2248201140U,	// REVWr
    2248201140U,	// REVXr
    2315269044U,	// REV_PP_B
    2348831668U,	// REV_PP_D
    608727988U,	// REV_PP_H
    2415956916U,	// REV_PP_S
    2315269044U,	// REV_ZZ_B
    2348831668U,	// REV_ZZ_D
    608727988U,	// REV_ZZ_H
    2415956916U,	// REV_ZZ_S
    100714751U,	// RMIF
    100716863U,	// RORVWr
    100716863U,	// RORVXr
    2282807663U,	// RSHRNv16i8_shift
    2216210209U,	// RSHRNv2i32_shift
    69775137U,	// RSHRNv4i16_shift
    2284904815U,	// RSHRNv4i32_shift
    137945455U,	// RSHRNv8i16_shift
    2218831649U,	// RSHRNv8i8_shift
    2216210136U,	// RSUBHNv2i64_v2i32
    2284904777U,	// RSUBHNv2i64_v4i32
    69775064U,	// RSUBHNv4i32_v4i16
    137945417U,	// RSUBHNv4i32_v8i16
    2282807625U,	// RSUBHNv8i16_v16i8
    2218831576U,	// RSUBHNv8i16_v8i8
    137945243U,	// SABALv16i8_v8i16
    2283859106U,	// SABALv2i32_v2i64
    137424034U,	// SABALv4i16_v4i32
    136372379U,	// SABALv4i32_v2i64
    2284904603U,	// SABALv8i16_v4i32
    2285431970U,	// SABALv8i8_v8i16
    135324269U,	// SABAv16i8
    2283332205U,	// SABAv2i32
    136897133U,	// SABAv4i16
    137421421U,	// SABAv4i32
    2285429357U,	// SABAv8i16
    2285953645U,	// SABAv8i8
    70820053U,	// SABDLv16i8_v8i16
    2216734028U,	// SABDLv2i32_v2i64
    70298956U,	// SABDLv4i16_v4i32
    69247189U,	// SABDLv4i32_v2i64
    2217779413U,	// SABDLv8i16_v4i32
    2218306892U,	// SABDLv8i8_v8i16
    302000042U,	// SABD_ZPmZ_B
    302008234U,	// SABD_ZPmZ_D
    2186307498U,	// SABD_ZPmZ_H
    302024618U,	// SABD_ZPmZ_S
    68200362U,	// SABDv16i8
    2216208298U,	// SABDv2i32
    69773226U,	// SABDv4i16
    70297514U,	// SABDv4i32
    2218305450U,	// SABDv8i16
    2218829738U,	// SABDv8i8
    137949153U,	// SADALPv16i8_v8i16
    162066401U,	// SADALPv2i32_v1i64
    135852001U,	// SADALPv4i16_v2i32
    2283859937U,	// SADALPv4i32_v2i64
    137424865U,	// SADALPv8i16_v4i32
    2284384225U,	// SADALPv8i8_v4i16
    70823921U,	// SADDLPv16i8_v8i16
    94941169U,	// SADDLPv2i32_v1i64
    68726769U,	// SADDLPv4i16_v2i32
    2216734705U,	// SADDLPv4i32_v2i64
    70299633U,	// SADDLPv8i16_v4i32
    2217258993U,	// SADDLPv8i8_v4i16
    67163083U,	// SADDLVv16i8v
    67163083U,	// SADDLVv4i16v
    2214646731U,	// SADDLVv4i32v
    67163083U,	// SADDLVv8i16v
    2214646731U,	// SADDLVv8i8v
    70820069U,	// SADDLv16i8_v8i16
    2216734066U,	// SADDLv2i32_v2i64
    70298994U,	// SADDLv4i16_v4i32
    69247205U,	// SADDLv4i32_v2i64
    2217779429U,	// SADDLv8i16_v4i32
    2218306930U,	// SADDLv8i8_v8i16
    302044064U,	// SADDV_VPZ_B
    302044064U,	// SADDV_VPZ_H
    302044064U,	// SADDV_VPZ_S
    2218303982U,	// SADDWv16i8_v8i16
    2216735941U,	// SADDWv2i32_v2i64
    70300869U,	// SADDWv4i16_v4i32
    2216731118U,	// SADDWv4i32_v2i64
    70296046U,	// SADDWv8i16_v4i32
    2218308805U,	// SADDWv8i8_v8i16
    100717072U,	// SBCSWr
    100717072U,	// SBCSXr
    100714257U,	// SBCWr
    100714257U,	// SBCXr
    100716193U,	// SBFMWri
    100716193U,	// SBFMXri
    100714757U,	// SCVTFSWDri
    100714757U,	// SCVTFSWHri
    100714757U,	// SCVTFSWSri
    100714757U,	// SCVTFSXDri
    100714757U,	// SCVTFSXHri
    100714757U,	// SCVTFSXSri
    2248198405U,	// SCVTFUWDri
    2248198405U,	// SCVTFUWHri
    2248198405U,	// SCVTFUWSri
    2248198405U,	// SCVTFUXDri
    2248198405U,	// SCVTFUXHri
    2248198405U,	// SCVTFUXSri
    18693U,	// SCVTF_ZPmZ_DtoD
    2181589253U,	// SCVTF_ZPmZ_DtoH
    35077U,	// SCVTF_ZPmZ_DtoS
    2181589253U,	// SCVTF_ZPmZ_HtoH
    18693U,	// SCVTF_ZPmZ_StoD
    2181589253U,	// SCVTF_ZPmZ_StoH
    35077U,	// SCVTF_ZPmZ_StoS
    100714757U,	// SCVTFd
    100714757U,	// SCVTFh
    100714757U,	// SCVTFs
    2248198405U,	// SCVTFv1i16
    2248198405U,	// SCVTFv1i32
    2248198405U,	// SCVTFv1i64
    68724997U,	// SCVTFv2f32
    2216732933U,	// SCVTFv2f64
    2216208645U,	// SCVTFv2i32_shift
    2216732933U,	// SCVTFv2i64_shift
    69773573U,	// SCVTFv4f16
    2217781509U,	// SCVTFv4f32
    69773573U,	// SCVTFv4i16_shift
    70297861U,	// SCVTFv4i32_shift
    70822149U,	// SCVTFv8f16
    2218305797U,	// SCVTFv8i16_shift
    302010794U,	// SDIVR_ZPmZ_D
    302027178U,	// SDIVR_ZPmZ_S
    100717503U,	// SDIVWr
    100717503U,	// SDIVXr
    302011327U,	// SDIV_ZPmZ_D
    302027711U,	// SDIV_ZPmZ_S
    3422573357U,	// SDOT_ZZZI_D
    3456144173U,	// SDOT_ZZZI_S
    3422573357U,	// SDOT_ZZZ_D
    3456144173U,	// SDOT_ZZZ_S
    137425709U,	// SDOTlanev16i8
    2283336493U,	// SDOTlanev8i8
    137425709U,	// SDOTv16i8
    2283336493U,	// SDOTv8i8
    302001538U,	// SEL_PPPP
    302001538U,	// SEL_ZPZZ_B
    302009730U,	// SEL_ZPZZ_D
    2387635586U,	// SEL_ZPZZ_H
    302026114U,	// SEL_ZPZZ_S
    6341169U,	// SETF16
    6341184U,	// SETF8
    5959U,	// SETFFR
    369190666U,	// SHA1Crrr
    2248198439U,	// SHA1Hrr
    369192602U,	// SHA1Mrrr
    369192878U,	// SHA1Prrr
    137420801U,	// SHA1SU0rrr
    2284904523U,	// SHA1SU1rr
    369189009U,	// SHA256H2rrr
    369191311U,	// SHA256Hrrr
    2284904469U,	// SHA256SU0rr
    137420895U,	// SHA256SU1rrr
    369191258U,	// SHA512H
    369188999U,	// SHA512H2
    2216730634U,	// SHA512SU0
    2283855956U,	// SHA512SU1
    68200449U,	// SHADDv16i8
    2216208385U,	// SHADDv2i32
    69773313U,	// SHADDv4i16
    70297601U,	// SHADDv4i32
    2218305537U,	// SHADDv8i16
    2218829825U,	// SHADDv8i8
    70820086U,	// SHLLv16i8
    2216734152U,	// SHLLv2i32
    70299080U,	// SHLLv4i16
    2216730870U,	// SHLLv4i32
    70295798U,	// SHLLv8i16
    2218307016U,	// SHLLv8i8
    100715921U,	// SHLd
    68201873U,	// SHLv16i8_shift
    2216209809U,	// SHLv2i32_shift
    2216734097U,	// SHLv2i64_shift
    69774737U,	// SHLv4i16_shift
    70299025U,	// SHLv4i32_shift
    2218306961U,	// SHLv8i16_shift
    2218831249U,	// SHLv8i8_shift
    2282807645U,	// SHRNv16i8_shift
    2216210193U,	// SHRNv2i32_shift
    69775121U,	// SHRNv4i16_shift
    2284904797U,	// SHRNv4i32_shift
    137945437U,	// SHRNv8i16_shift
    2218831633U,	// SHRNv8i8_shift
    68200103U,	// SHSUBv16i8
    2216208039U,	// SHSUBv2i32
    69772967U,	// SHSUBv4i16
    70297255U,	// SHSUBv4i32
    2218305191U,	// SHSUBv8i16
    2218829479U,	// SHSUBv8i8
    369192057U,	// SLId
    135326841U,	// SLIv16i8_shift
    2283334777U,	// SLIv2i32_shift
    2283859065U,	// SLIv2i64_shift
    136899705U,	// SLIv4i16_shift
    137423993U,	// SLIv4i32_shift
    2285431929U,	// SLIv8i16_shift
    2285956217U,	// SLIv8i8_shift
    137420906U,	// SM3PARTW1
    137421310U,	// SM3PARTW2
    70295614U,	// SM3SS1
    137421383U,	// SM3TT1A
    137421720U,	// SM3TT1B
    137421392U,	// SM3TT2A
    137421749U,	// SM3TT2B
    2217781339U,	// SM4E
    70301097U,	// SM4ENCKEY
    100715874U,	// SMADDLrrr
    68202617U,	// SMAXPv16i8
    2216210553U,	// SMAXPv2i32
    69775481U,	// SMAXPv4i16
    70299769U,	// SMAXPv4i32
    2218307705U,	// SMAXPv8i16
    2218831993U,	// SMAXPv8i8
    302044200U,	// SMAXV_VPZ_B
    302044200U,	// SMAXV_VPZ_D
    302044200U,	// SMAXV_VPZ_H
    302044200U,	// SMAXV_VPZ_S
    67163176U,	// SMAXVv16i8v
    67163176U,	// SMAXVv4i16v
    2214646824U,	// SMAXVv4i32v
    67163176U,	// SMAXVv8i16v
    2214646824U,	// SMAXVv8i8v
    167785823U,	// SMAX_ZI_B
    201348447U,	// SMAX_ZI_D
    239629663U,	// SMAX_ZI_H
    268473695U,	// SMAX_ZI_S
    302003551U,	// SMAX_ZPmZ_B
    302011743U,	// SMAX_ZPmZ_D
    2186311007U,	// SMAX_ZPmZ_H
    302028127U,	// SMAX_ZPmZ_S
    68203871U,	// SMAXv16i8
    2216211807U,	// SMAXv2i32
    69776735U,	// SMAXv4i16
    70301023U,	// SMAXv4i32
    2218308959U,	// SMAXv8i16
    2218833247U,	// SMAXv8i8
    75562U,	// SMC
    68202541U,	// SMINPv16i8
    2216210477U,	// SMINPv2i32
    69775405U,	// SMINPv4i16
    70299693U,	// SMINPv4i32
    2218307629U,	// SMINPv8i16
    2218831917U,	// SMINPv8i8
    302044148U,	// SMINV_VPZ_B
    302044148U,	// SMINV_VPZ_D
    302044148U,	// SMINV_VPZ_H
    302044148U,	// SMINV_VPZ_S
    67163124U,	// SMINVv16i8v
    67163124U,	// SMINVv4i16v
    2214646772U,	// SMINVv4i32v
    67163124U,	// SMINVv8i16v
    2214646772U,	// SMINVv8i8v
    167784176U,	// SMIN_ZI_B
    201346800U,	// SMIN_ZI_D
    239628016U,	// SMIN_ZI_H
    268472048U,	// SMIN_ZI_S
    302001904U,	// SMIN_ZPmZ_B
    302010096U,	// SMIN_ZPmZ_D
    2186309360U,	// SMIN_ZPmZ_H
    302026480U,	// SMIN_ZPmZ_S
    68202224U,	// SMINv16i8
    2216210160U,	// SMINv2i32
    69775088U,	// SMINv4i16
    70299376U,	// SMINv4i32
    2218307312U,	// SMINv8i16
    2218831600U,	// SMINv8i8
    137945269U,	// SMLALv16i8_v8i16
    2283859138U,	// SMLALv2i32_indexed
    2283859138U,	// SMLALv2i32_v2i64
    137424066U,	// SMLALv4i16_indexed
    137424066U,	// SMLALv4i16_v4i32
    136372405U,	// SMLALv4i32_indexed
    136372405U,	// SMLALv4i32_v2i64
    2284904629U,	// SMLALv8i16_indexed
    2284904629U,	// SMLALv8i16_v4i32
    2285432002U,	// SMLALv8i8_v8i16
    137945393U,	// SMLSLv16i8_v8i16
    2283859517U,	// SMLSLv2i32_indexed
    2283859517U,	// SMLSLv2i32_v2i64
    137424445U,	// SMLSLv4i16_indexed
    137424445U,	// SMLSLv4i16_v4i32
    136372529U,	// SMLSLv4i32_indexed
    136372529U,	// SMLSLv4i32_v2i64
    2284904753U,	// SMLSLv8i16_indexed
    2284904753U,	// SMLSLv8i16_v4i32
    2285432381U,	// SMLSLv8i8_v8i16
    67163151U,	// SMOVvi16to32
    67163151U,	// SMOVvi16to64
    2214646799U,	// SMOVvi32to64
    2214646799U,	// SMOVvi8to32
    2214646799U,	// SMOVvi8to64
    100715822U,	// SMSUBLrrr
    302000880U,	// SMULH_ZPmZ_B
    302009072U,	// SMULH_ZPmZ_D
    2186308336U,	// SMULH_ZPmZ_H
    302025456U,	// SMULH_ZPmZ_S
    100715248U,	// SMULHrr
    70820119U,	// SMULLv16i8_v8i16
    2216734181U,	// SMULLv2i32_indexed
    2216734181U,	// SMULLv2i32_v2i64
    70299109U,	// SMULLv4i16_indexed
    70299109U,	// SMULLv4i16_v4i32
    69247255U,	// SMULLv4i32_indexed
    69247255U,	// SMULLv4i32_v2i64
    2217779479U,	// SMULLv8i16_indexed
    2217779479U,	// SMULLv8i16_v4i32
    2218307045U,	// SMULLv8i8_v8i16
    302000225U,	// SPLICE_ZPZ_B
    302008417U,	// SPLICE_ZPZ_D
    2387634273U,	// SPLICE_ZPZ_H
    302024801U,	// SPLICE_ZPZ_S
    68202996U,	// SQABSv16i8
    2248200692U,	// SQABSv1i16
    2248200692U,	// SQABSv1i32
    2248200692U,	// SQABSv1i64
    2248200692U,	// SQABSv1i8
    68727284U,	// SQABSv2i32
    2216735220U,	// SQABSv2i64
    69775860U,	// SQABSv4i16
    2217783796U,	// SQABSv4i32
    70824436U,	// SQABSv8i16
    2218832372U,	// SQABSv8i8
    167782431U,	// SQADD_ZI_B
    201345055U,	// SQADD_ZI_D
    239626271U,	// SQADD_ZI_H
    268470303U,	// SQADD_ZI_S
    167782431U,	// SQADD_ZZZ_B
    201345055U,	// SQADD_ZZZ_D
    2387109919U,	// SQADD_ZZZ_H
    268470303U,	// SQADD_ZZZ_S
    68200479U,	// SQADDv16i8
    100714527U,	// SQADDv1i16
    100714527U,	// SQADDv1i32
    100714527U,	// SQADDv1i64
    100714527U,	// SQADDv1i8
    2216208415U,	// SQADDv2i32
    2216732703U,	// SQADDv2i64
    69773343U,	// SQADDv4i16
    70297631U,	// SQADDv4i32
    2218305567U,	// SQADDv8i16
    2218829855U,	// SQADDv8i8
    536921165U,	// SQDECB_XPiI
    1342227533U,	// SQDECB_XPiWdI
    536922045U,	// SQDECD_XPiI
    1342228413U,	// SQDECD_XPiWdI
    536889277U,	// SQDECD_ZPiI
    536922629U,	// SQDECH_XPiI
    1342228997U,	// SQDECH_XPiWdI
    6842885U,	// SQDECH_ZPiI
    167825333U,	// SQDECP_XPWd_B
    201379765U,	// SQDECP_XPWd_D
    570478517U,	// SQDECP_XPWd_H
    268488629U,	// SQDECP_XPWd_S
    2315308981U,	// SQDECP_XP_B
    2348863413U,	// SQDECP_XP_D
    2717962165U,	// SQDECP_XP_H
    2415972277U,	// SQDECP_XP_S
    2147504053U,	// SQDECP_ZP_D
    604532661U,	// SQDECP_ZP_H
    2147520437U,	// SQDECP_ZP_S
    536925349U,	// SQDECW_XPiI
    1342231717U,	// SQDECW_XPiWdI
    536908965U,	// SQDECW_ZPiI
    369192121U,	// SQDMLALi16
    369192121U,	// SQDMLALi32
    369192121U,	// SQDMLALv1i32_indexed
    369192121U,	// SQDMLALv1i64_indexed
    2283859129U,	// SQDMLALv2i32_indexed
    2283859129U,	// SQDMLALv2i32_v2i64
    137424057U,	// SQDMLALv4i16_indexed
    137424057U,	// SQDMLALv4i16_v4i32
    136372395U,	// SQDMLALv4i32_indexed
    136372395U,	// SQDMLALv4i32_v2i64
    2284904619U,	// SQDMLALv8i16_indexed
    2284904619U,	// SQDMLALv8i16_v4i32
    369192500U,	// SQDMLSLi16
    369192500U,	// SQDMLSLi32
    369192500U,	// SQDMLSLv1i32_indexed
    369192500U,	// SQDMLSLv1i64_indexed
    2283859508U,	// SQDMLSLv2i32_indexed
    2283859508U,	// SQDMLSLv2i32_v2i64
    137424436U,	// SQDMLSLv4i16_indexed
    137424436U,	// SQDMLSLv4i16_v4i32
    136372519U,	// SQDMLSLv4i32_indexed
    136372519U,	// SQDMLSLv4i32_v2i64
    2284904743U,	// SQDMLSLv8i16_indexed
    2284904743U,	// SQDMLSLv8i16_v4i32
    100715229U,	// SQDMULHv1i16
    100715229U,	// SQDMULHv1i16_indexed
    100715229U,	// SQDMULHv1i32
    100715229U,	// SQDMULHv1i32_indexed
    2216209117U,	// SQDMULHv2i32
    2216209117U,	// SQDMULHv2i32_indexed
    69774045U,	// SQDMULHv4i16
    69774045U,	// SQDMULHv4i16_indexed
    70298333U,	// SQDMULHv4i32
    70298333U,	// SQDMULHv4i32_indexed
    2218306269U,	// SQDMULHv8i16
    2218306269U,	// SQDMULHv8i16_indexed
    100715989U,	// SQDMULLi16
    100715989U,	// SQDMULLi32
    100715989U,	// SQDMULLv1i32_indexed
    100715989U,	// SQDMULLv1i64_indexed
    2216734165U,	// SQDMULLv2i32_indexed
    2216734165U,	// SQDMULLv2i32_v2i64
    70299093U,	// SQDMULLv4i16_indexed
    70299093U,	// SQDMULLv4i16_v4i32
    69247237U,	// SQDMULLv4i32_indexed
    69247237U,	// SQDMULLv4i32_v2i64
    2217779461U,	// SQDMULLv8i16_indexed
    2217779461U,	// SQDMULLv8i16_v4i32
    536921181U,	// SQINCB_XPiI
    1342227549U,	// SQINCB_XPiWdI
    536922061U,	// SQINCD_XPiI
    1342228429U,	// SQINCD_XPiWdI
    536889293U,	// SQINCD_ZPiI
    536922645U,	// SQINCH_XPiI
    1342229013U,	// SQINCH_XPiWdI
    6842901U,	// SQINCH_ZPiI
    167825349U,	// SQINCP_XPWd_B
    201379781U,	// SQINCP_XPWd_D
    570478533U,	// SQINCP_XPWd_H
    268488645U,	// SQINCP_XPWd_S
    2315308997U,	// SQINCP_XP_B
    2348863429U,	// SQINCP_XP_D
    2717962181U,	// SQINCP_XP_H
    2415972293U,	// SQINCP_XP_S
    2147504069U,	// SQINCP_ZP_D
    604532677U,	// SQINCP_ZP_H
    2147520453U,	// SQINCP_ZP_S
    536925365U,	// SQINCW_XPiI
    1342231733U,	// SQINCW_XPiWdI
    536908981U,	// SQINCW_ZPiI
    68200729U,	// SQNEGv16i8
    2248198425U,	// SQNEGv1i16
    2248198425U,	// SQNEGv1i32
    2248198425U,	// SQNEGv1i64
    2248198425U,	// SQNEGv1i8
    68725017U,	// SQNEGv2i32
    2216732953U,	// SQNEGv2i64
    69773593U,	// SQNEGv4i16
    2217781529U,	// SQNEGv4i32
    70822169U,	// SQNEGv8i16
    2218830105U,	// SQNEGv8i8
    369191329U,	// SQRDMLAHi16_indexed
    369191329U,	// SQRDMLAHi32_indexed
    369191329U,	// SQRDMLAHv1i16
    369191329U,	// SQRDMLAHv1i32
    2283334049U,	// SQRDMLAHv2i32
    2283334049U,	// SQRDMLAHv2i32_indexed
    136898977U,	// SQRDMLAHv4i16
    136898977U,	// SQRDMLAHv4i16_indexed
    137423265U,	// SQRDMLAHv4i32
    137423265U,	// SQRDMLAHv4i32_indexed
    2285431201U,	// SQRDMLAHv8i16
    2285431201U,	// SQRDMLAHv8i16_indexed
    369191909U,	// SQRDMLSHi16_indexed
    369191909U,	// SQRDMLSHi32_indexed
    369191909U,	// SQRDMLSHv1i16
    369191909U,	// SQRDMLSHv1i32
    2283334629U,	// SQRDMLSHv2i32
    2283334629U,	// SQRDMLSHv2i32_indexed
    136899557U,	// SQRDMLSHv4i16
    136899557U,	// SQRDMLSHv4i16_indexed
    137423845U,	// SQRDMLSHv4i32
    137423845U,	// SQRDMLSHv4i32_indexed
    2285431781U,	// SQRDMLSHv8i16
    2285431781U,	// SQRDMLSHv8i16_indexed
    100715238U,	// SQRDMULHv1i16
    100715238U,	// SQRDMULHv1i16_indexed
    100715238U,	// SQRDMULHv1i32
    100715238U,	// SQRDMULHv1i32_indexed
    2216209126U,	// SQRDMULHv2i32
    2216209126U,	// SQRDMULHv2i32_indexed
    69774054U,	// SQRDMULHv4i16
    69774054U,	// SQRDMULHv4i16_indexed
    70298342U,	// SQRDMULHv4i32
    70298342U,	// SQRDMULHv4i32_indexed
    2218306278U,	// SQRDMULHv8i16
    2218306278U,	// SQRDMULHv8i16_indexed
    68201885U,	// SQRSHLv16i8
    100715933U,	// SQRSHLv1i16
    100715933U,	// SQRSHLv1i32
    100715933U,	// SQRSHLv1i64
    100715933U,	// SQRSHLv1i8
    2216209821U,	// SQRSHLv2i32
    2216734109U,	// SQRSHLv2i64
    69774749U,	// SQRSHLv4i16
    70299037U,	// SQRSHLv4i32
    2218306973U,	// SQRSHLv8i16
    2218831261U,	// SQRSHLv8i8
    100716319U,	// SQRSHRNb
    100716319U,	// SQRSHRNh
    100716319U,	// SQRSHRNs
    2282807661U,	// SQRSHRNv16i8_shift
    2216210207U,	// SQRSHRNv2i32_shift
    69775135U,	// SQRSHRNv4i16_shift
    2284904813U,	// SQRSHRNv4i32_shift
    137945453U,	// SQRSHRNv8i16_shift
    2218831647U,	// SQRSHRNv8i8_shift
    100716380U,	// SQRSHRUNb
    100716380U,	// SQRSHRUNh
    100716380U,	// SQRSHRUNs
    2282807721U,	// SQRSHRUNv16i8_shift
    2216210268U,	// SQRSHRUNv2i32_shift
    69775196U,	// SQRSHRUNv4i16_shift
    2284904873U,	// SQRSHRUNv4i32_shift
    137945513U,	// SQRSHRUNv8i16_shift
    2218831708U,	// SQRSHRUNv8i8_shift
    100717425U,	// SQSHLUb
    100717425U,	// SQSHLUd
    100717425U,	// SQSHLUh
    100717425U,	// SQSHLUs
    68203377U,	// SQSHLUv16i8_shift
    2216211313U,	// SQSHLUv2i32_shift
    2216735601U,	// SQSHLUv2i64_shift
    69776241U,	// SQSHLUv4i16_shift
    70300529U,	// SQSHLUv4i32_shift
    2218308465U,	// SQSHLUv8i16_shift
    2218832753U,	// SQSHLUv8i8_shift
    100715919U,	// SQSHLb
    100715919U,	// SQSHLd
    100715919U,	// SQSHLh
    100715919U,	// SQSHLs
    68201871U,	// SQSHLv16i8
    68201871U,	// SQSHLv16i8_shift
    100715919U,	// SQSHLv1i16
    100715919U,	// SQSHLv1i32
    100715919U,	// SQSHLv1i64
    100715919U,	// SQSHLv1i8
    2216209807U,	// SQSHLv2i32
    2216209807U,	// SQSHLv2i32_shift
    2216734095U,	// SQSHLv2i64
    2216734095U,	// SQSHLv2i64_shift
    69774735U,	// SQSHLv4i16
    69774735U,	// SQSHLv4i16_shift
    70299023U,	// SQSHLv4i32
    70299023U,	// SQSHLv4i32_shift
    2218306959U,	// SQSHLv8i16
    2218306959U,	// SQSHLv8i16_shift
    2218831247U,	// SQSHLv8i8
    2218831247U,	// SQSHLv8i8_shift
    100716303U,	// SQSHRNb
    100716303U,	// SQSHRNh
    100716303U,	// SQSHRNs
    2282807643U,	// SQSHRNv16i8_shift
    2216210191U,	// SQSHRNv2i32_shift
    69775119U,	// SQSHRNv4i16_shift
    2284904795U,	// SQSHRNv4i32_shift
    137945435U,	// SQSHRNv8i16_shift
    2218831631U,	// SQSHRNv8i8_shift
    100716371U,	// SQSHRUNb
    100716371U,	// SQSHRUNh
    100716371U,	// SQSHRUNs
    2282807711U,	// SQSHRUNv16i8_shift
    2216210259U,	// SQSHRUNv2i32_shift
    69775187U,	// SQSHRUNv4i16_shift
    2284904863U,	// SQSHRUNv4i32_shift
    137945503U,	// SQSHRUNv8i16_shift
    2218831699U,	// SQSHRUNv8i8_shift
    167782084U,	// SQSUB_ZI_B
    201344708U,	// SQSUB_ZI_D
    239625924U,	// SQSUB_ZI_H
    268469956U,	// SQSUB_ZI_S
    167782084U,	// SQSUB_ZZZ_B
    201344708U,	// SQSUB_ZZZ_D
    2387109572U,	// SQSUB_ZZZ_H
    268469956U,	// SQSUB_ZZZ_S
    68200132U,	// SQSUBv16i8
    100714180U,	// SQSUBv1i16
    100714180U,	// SQSUBv1i32
    100714180U,	// SQSUBv1i64
    100714180U,	// SQSUBv1i8
    2216208068U,	// SQSUBv2i32
    2216732356U,	// SQSUBv2i64
    69772996U,	// SQSUBv4i16
    70297284U,	// SQSUBv4i32
    2218305220U,	// SQSUBv8i16
    2218829508U,	// SQSUBv8i8
    135324047U,	// SQXTNv16i8
    2248200005U,	// SQXTNv1i16
    2248200005U,	// SQXTNv1i32
    2248200005U,	// SQXTNv1i8
    2216210245U,	// SQXTNv2i32
    2217258821U,	// SQXTNv4i16
    2284904847U,	// SQXTNv4i32
    2285429135U,	// SQXTNv8i16
    71348037U,	// SQXTNv8i8
    135324084U,	// SQXTUNv16i8
    2248200038U,	// SQXTUNv1i16
    2248200038U,	// SQXTUNv1i32
    2248200038U,	// SQXTUNv1i8
    2216210278U,	// SQXTUNv2i32
    2217258854U,	// SQXTUNv4i16
    2284904884U,	// SQXTUNv4i32
    2285429172U,	// SQXTUNv8i16
    71348070U,	// SQXTUNv8i8
    68200433U,	// SRHADDv16i8
    2216208369U,	// SRHADDv2i32
    69773297U,	// SRHADDv4i16
    70297585U,	// SRHADDv4i32
    2218305521U,	// SRHADDv8i16
    2218829809U,	// SRHADDv8i8
    369192068U,	// SRId
    135326852U,	// SRIv16i8_shift
    2283334788U,	// SRIv2i32_shift
    2283859076U,	// SRIv2i64_shift
    136899716U,	// SRIv4i16_shift
    137424004U,	// SRIv4i32_shift
    2285431940U,	// SRIv8i16_shift
    2285956228U,	// SRIv8i8_shift
    68201901U,	// SRSHLv16i8
    100715949U,	// SRSHLv1i64
    2216209837U,	// SRSHLv2i32
    2216734125U,	// SRSHLv2i64
    69774765U,	// SRSHLv4i16
    70299053U,	// SRSHLv4i32
    2218306989U,	// SRSHLv8i16
    2218831277U,	// SRSHLv8i8
    100716794U,	// SRSHRd
    68202746U,	// SRSHRv16i8_shift
    2216210682U,	// SRSHRv2i32_shift
    2216734970U,	// SRSHRv2i64_shift
    69775610U,	// SRSHRv4i16_shift
    70299898U,	// SRSHRv4i32_shift
    2218307834U,	// SRSHRv8i16_shift
    2218832122U,	// SRSHRv8i8_shift
    369189634U,	// SRSRAd
    135324418U,	// SRSRAv16i8_shift
    2283332354U,	// SRSRAv2i32_shift
    2283856642U,	// SRSRAv2i64_shift
    136897282U,	// SRSRAv4i16_shift
    137421570U,	// SRSRAv4i32_shift
    2285429506U,	// SRSRAv8i16_shift
    2285953794U,	// SRSRAv8i8_shift
    70820085U,	// SSHLLv16i8_shift
    2216734151U,	// SSHLLv2i32_shift
    70299079U,	// SSHLLv4i16_shift
    69247221U,	// SSHLLv4i32_shift
    2217779445U,	// SSHLLv8i16_shift
    2218307015U,	// SSHLLv8i8_shift
    68201915U,	// SSHLv16i8
    100715963U,	// SSHLv1i64
    2216209851U,	// SSHLv2i32
    2216734139U,	// SSHLv2i64
    69774779U,	// SSHLv4i16
    70299067U,	// SSHLv4i32
    2218307003U,	// SSHLv8i16
    2218831291U,	// SSHLv8i8
    100716808U,	// SSHRd
    68202760U,	// SSHRv16i8_shift
    2216210696U,	// SSHRv2i32_shift
    2216734984U,	// SSHRv2i64_shift
    69775624U,	// SSHRv4i16_shift
    70299912U,	// SSHRv4i32_shift
    2218307848U,	// SSHRv8i16_shift
    2218832136U,	// SSHRv8i8_shift
    369189648U,	// SSRAd
    135324432U,	// SSRAv16i8_shift
    2283332368U,	// SSRAv2i32_shift
    2283856656U,	// SSRAv2i64_shift
    136897296U,	// SSRAv4i16_shift
    137421584U,	// SSRAv4i32_shift
    2285429520U,	// SSRAv8i16_shift
    2285953808U,	// SSRAv8i8_shift
    374997906U,	// SST1B_D
    878314386U,	// SST1B_D_IMM
    374997906U,	// SST1B_D_SXTW
    374997906U,	// SST1B_D_UXTW
    811213714U,	// SST1B_S_IMM
    375006098U,	// SST1B_S_SXTW
    375006098U,	// SST1B_S_UXTW
    374998886U,	// SST1D
    878315366U,	// SST1D_IMM
    374998886U,	// SST1D_SCALED
    374998886U,	// SST1D_SXTW
    374998886U,	// SST1D_SXTW_SCALED
    374998886U,	// SST1D_UXTW
    374998886U,	// SST1D_UXTW_SCALED
    374999380U,	// SST1H_D
    3025799508U,	// SST1H_D_IMM
    374999380U,	// SST1H_D_SCALED
    374999380U,	// SST1H_D_SXTW
    374999380U,	// SST1H_D_SXTW_SCALED
    374999380U,	// SST1H_D_UXTW
    374999380U,	// SST1H_D_UXTW_SCALED
    2958698836U,	// SST1H_S_IMM
    375007572U,	// SST1H_S_SXTW
    375007572U,	// SST1H_S_SXTW_SCALED
    375007572U,	// SST1H_S_UXTW
    375007572U,	// SST1H_S_UXTW_SCALED
    375002204U,	// SST1W_D
    878318684U,	// SST1W_D_IMM
    375002204U,	// SST1W_D_SCALED
    375002204U,	// SST1W_D_SXTW
    375002204U,	// SST1W_D_SXTW_SCALED
    375002204U,	// SST1W_D_UXTW
    375002204U,	// SST1W_D_UXTW_SCALED
    811218012U,	// SST1W_IMM
    375010396U,	// SST1W_SXTW
    375010396U,	// SST1W_SXTW_SCALED
    375010396U,	// SST1W_UXTW
    375010396U,	// SST1W_UXTW_SCALED
    70820037U,	// SSUBLv16i8_v8i16
    2216734014U,	// SSUBLv2i32_v2i64
    70298942U,	// SSUBLv4i16_v4i32
    69247173U,	// SSUBLv4i32_v2i64
    2217779397U,	// SSUBLv8i16_v4i32
    2218306878U,	// SSUBLv8i8_v8i16
    2218303966U,	// SSUBWv16i8_v8i16
    2216735886U,	// SSUBWv2i32_v2i64
    70300814U,	// SSUBWv4i16_v4i32
    2216731102U,	// SSUBWv4i32_v2i64
    70296030U,	// SSUBWv8i16_v4i32
    2218308750U,	// SSUBWv8i8_v8i16
    375022482U,	// ST1B
    374997906U,	// ST1B_D
    374997906U,	// ST1B_D_IMM
    375030674U,	// ST1B_H
    375030674U,	// ST1B_H_IMM
    375022482U,	// ST1B_IMM
    375006098U,	// ST1B_S
    375006098U,	// ST1B_S_IMM
    374998886U,	// ST1D
    374998886U,	// ST1D_IMM
    172102U,	// ST1Fourv16b
    13287494U,	// ST1Fourv16b_POST
    188486U,	// ST1Fourv1d
    13828166U,	// ST1Fourv1d_POST
    204870U,	// ST1Fourv2d
    13320262U,	// ST1Fourv2d_POST
    221254U,	// ST1Fourv2s
    13860934U,	// ST1Fourv2s_POST
    237638U,	// ST1Fourv4h
    13877318U,	// ST1Fourv4h_POST
    254022U,	// ST1Fourv4s
    13369414U,	// ST1Fourv4s_POST
    270406U,	// ST1Fourv8b
    13910086U,	// ST1Fourv8b_POST
    286790U,	// ST1Fourv8h
    13402182U,	// ST1Fourv8h_POST
    375032148U,	// ST1H
    374999380U,	// ST1H_D
    374999380U,	// ST1H_D_IMM
    375032148U,	// ST1H_IMM
    375007572U,	// ST1H_S
    375007572U,	// ST1H_S_IMM
    172102U,	// ST1Onev16b
    14336070U,	// ST1Onev16b_POST
    188486U,	// ST1Onev1d
    14876742U,	// ST1Onev1d_POST
    204870U,	// ST1Onev2d
    14368838U,	// ST1Onev2d_POST
    221254U,	// ST1Onev2s
    14909510U,	// ST1Onev2s_POST
    237638U,	// ST1Onev4h
    14925894U,	// ST1Onev4h_POST
    254022U,	// ST1Onev4s
    14417990U,	// ST1Onev4s_POST
    270406U,	// ST1Onev8b
    14958662U,	// ST1Onev8b_POST
    286790U,	// ST1Onev8h
    14450758U,	// ST1Onev8h_POST
    172102U,	// ST1Threev16b
    16957510U,	// ST1Threev16b_POST
    188486U,	// ST1Threev1d
    17498182U,	// ST1Threev1d_POST
    204870U,	// ST1Threev2d
    16990278U,	// ST1Threev2d_POST
    221254U,	// ST1Threev2s
    17530950U,	// ST1Threev2s_POST
    237638U,	// ST1Threev4h
    17547334U,	// ST1Threev4h_POST
    254022U,	// ST1Threev4s
    17039430U,	// ST1Threev4s_POST
    270406U,	// ST1Threev8b
    17580102U,	// ST1Threev8b_POST
    286790U,	// ST1Threev8h
    17072198U,	// ST1Threev8h_POST
    172102U,	// ST1Twov16b
    13811782U,	// ST1Twov16b_POST
    188486U,	// ST1Twov1d
    14352454U,	// ST1Twov1d_POST
    204870U,	// ST1Twov2d
    13844550U,	// ST1Twov2d_POST
    221254U,	// ST1Twov2s
    14385222U,	// ST1Twov2s_POST
    237638U,	// ST1Twov4h
    14401606U,	// ST1Twov4h_POST
    254022U,	// ST1Twov4s
    13893702U,	// ST1Twov4s_POST
    270406U,	// ST1Twov8b
    14434374U,	// ST1Twov8b_POST
    286790U,	// ST1Twov8h
    13926470U,	// ST1Twov8h_POST
    375010396U,	// ST1W
    375002204U,	// ST1W_D
    375002204U,	// ST1W_D_IMM
    375010396U,	// ST1W_IMM
    409670U,	// ST1i16
    1404346438U,	// ST1i16_POST
    417862U,	// ST1i32
    1437917254U,	// ST1i32_POST
    426054U,	// ST1i64
    1471488070U,	// ST1i64_POST
    434246U,	// ST1i8
    1505058886U,	// ST1i8_POST
    375022511U,	// ST2B
    375022511U,	// ST2B_IMM
    374998898U,	// ST2D
    374998898U,	// ST2D_IMM
    375032177U,	// ST2H
    375032177U,	// ST2H_IMM
    172505U,	// ST2Twov16b
    13812185U,	// ST2Twov16b_POST
    205273U,	// ST2Twov2d
    13844953U,	// ST2Twov2d_POST
    221657U,	// ST2Twov2s
    14385625U,	// ST2Twov2s_POST
    238041U,	// ST2Twov4h
    14402009U,	// ST2Twov4h_POST
    254425U,	// ST2Twov4s
    13894105U,	// ST2Twov4s_POST
    270809U,	// ST2Twov8b
    14434777U,	// ST2Twov8b_POST
    287193U,	// ST2Twov8h
    13926873U,	// ST2Twov8h_POST
    375010416U,	// ST2W
    375010416U,	// ST2W_IMM
    410073U,	// ST2i16
    1437901273U,	// ST2i16_POST
    418265U,	// ST2i32
    1471472089U,	// ST2i32_POST
    426457U,	// ST2i64
    1538597337U,	// ST2i64_POST
    434649U,	// ST2i8
    1404395993U,	// ST2i8_POST
    375022532U,	// ST3B
    375022532U,	// ST3B_IMM
    374998910U,	// ST3D
    374998910U,	// ST3D_IMM
    375032189U,	// ST3H
    375032189U,	// ST3H_IMM
    172571U,	// ST3Threev16b
    16957979U,	// ST3Threev16b_POST
    205339U,	// ST3Threev2d
    16990747U,	// ST3Threev2d_POST
    221723U,	// ST3Threev2s
    17531419U,	// ST3Threev2s_POST
    238107U,	// ST3Threev4h
    17547803U,	// ST3Threev4h_POST
    254491U,	// ST3Threev4s
    17039899U,	// ST3Threev4s_POST
    270875U,	// ST3Threev8b
    17580571U,	// ST3Threev8b_POST
    287259U,	// ST3Threev8h
    17072667U,	// ST3Threev8h_POST
    375010428U,	// ST3W
    375010428U,	// ST3W_IMM
    410139U,	// ST3i16
    1572119067U,	// ST3i16_POST
    418331U,	// ST3i32
    1605689883U,	// ST3i32_POST
    426523U,	// ST3i64
    1639260699U,	// ST3i64_POST
    434715U,	// ST3i8
    1672831515U,	// ST3i8_POST
    375022544U,	// ST4B
    375022544U,	// ST4B_IMM
    374998922U,	// ST4D
    374998922U,	// ST4D_IMM
    172588U,	// ST4Fourv16b
    13287980U,	// ST4Fourv16b_POST
    205356U,	// ST4Fourv2d
    13320748U,	// ST4Fourv2d_POST
    221740U,	// ST4Fourv2s
    13861420U,	// ST4Fourv2s_POST
    238124U,	// ST4Fourv4h
    13877804U,	// ST4Fourv4h_POST
    254508U,	// ST4Fourv4s
    13369900U,	// ST4Fourv4s_POST
    270892U,	// ST4Fourv8b
    13910572U,	// ST4Fourv8b_POST
    287276U,	// ST4Fourv8h
    13402668U,	// ST4Fourv8h_POST
    375032201U,	// ST4H
    375032201U,	// ST4H_IMM
    375010440U,	// ST4W
    375010440U,	// ST4W_IMM
    410156U,	// ST4i16
    1471455788U,	// ST4i16_POST
    418348U,	// ST4i32
    1538581036U,	// ST4i32_POST
    426540U,	// ST4i64
    1706369580U,	// ST4i64_POST
    434732U,	// ST4i8
    1437950508U,	// ST4i8_POST
    2253964715U,	// STLLRB
    2253966166U,	// STLLRH
    2253967648U,	// STLLRW
    2253967648U,	// STLLRX
    2253964723U,	// STLRB
    2253966174U,	// STLRH
    2253967661U,	// STLRW
    2253967661U,	// STLRX
    106481125U,	// STLURBi
    106482576U,	// STLURHi
    106484110U,	// STLURWi
    106484110U,	// STLURXi
    100716685U,	// STLXPW
    100716685U,	// STLXPX
    2248197644U,	// STLXRB
    2248199095U,	// STLXRH
    2248200645U,	// STLXRW
    2248200645U,	// STLXRX
    2248200251U,	// STNPDi
    2248200251U,	// STNPQi
    2248200251U,	// STNPSi
    2248200251U,	// STNPWi
    2248200251U,	// STNPXi
    375022474U,	// STNT1B_ZRI
    375022474U,	// STNT1B_ZRR
    374998878U,	// STNT1D_ZRI
    374998878U,	// STNT1D_ZRR
    375032140U,	// STNT1H_ZRI
    375032140U,	// STNT1H_ZRR
    375010388U,	// STNT1W_ZRI
    375010388U,	// STNT1W_ZRR
    2248200283U,	// STPDi
    2516676699U,	// STPDpost
    2516676699U,	// STPDpre
    2248200283U,	// STPQi
    2516676699U,	// STPQpost
    2516676699U,	// STPQpre
    2248200283U,	// STPSi
    2516676699U,	// STPSpost
    2516676699U,	// STPSpre
    2248200283U,	// STPWi
    2516676699U,	// STPWpost
    2516676699U,	// STPWpre
    2248200283U,	// STPXi
    2516676699U,	// STPXpost
    2516676699U,	// STPXpre
    374957521U,	// STRBBpost
    374957521U,	// STRBBpre
    106481105U,	// STRBBroW
    106481105U,	// STRBBroX
    106481105U,	// STRBBui
    374960503U,	// STRBpost
    374960503U,	// STRBpre
    106484087U,	// STRBroW
    106484087U,	// STRBroX
    106484087U,	// STRBui
    374960503U,	// STRDpost
    374960503U,	// STRDpre
    106484087U,	// STRDroW
    106484087U,	// STRDroX
    106484087U,	// STRDui
    374958972U,	// STRHHpost
    374958972U,	// STRHHpre
    106482556U,	// STRHHroW
    106482556U,	// STRHHroX
    106482556U,	// STRHHui
    374960503U,	// STRHpost
    374960503U,	// STRHpre
    106484087U,	// STRHroW
    106484087U,	// STRHroX
    106484087U,	// STRHui
    374960503U,	// STRQpost
    374960503U,	// STRQpre
    106484087U,	// STRQroW
    106484087U,	// STRQroX
    106484087U,	// STRQui
    374960503U,	// STRSpost
    374960503U,	// STRSpre
    106484087U,	// STRSroW
    106484087U,	// STRSroX
    106484087U,	// STRSui
    374960503U,	// STRWpost
    374960503U,	// STRWpre
    106484087U,	// STRWroW
    106484087U,	// STRWroX
    106484087U,	// STRWui
    374960503U,	// STRXpost
    374960503U,	// STRXpre
    106484087U,	// STRXroW
    106484087U,	// STRXroX
    106484087U,	// STRXui
    106803575U,	// STR_PXI
    106803575U,	// STR_ZXI
    106481111U,	// STTRBi
    106482562U,	// STTRHi
    106484092U,	// STTRWi
    106484092U,	// STTRXi
    106481142U,	// STURBBi
    106484125U,	// STURBi
    106484125U,	// STURDi
    106482593U,	// STURHHi
    106484125U,	// STURHi
    106484125U,	// STURQi
    106484125U,	// STURSi
    106484125U,	// STURWi
    106484125U,	// STURXi
    100716692U,	// STXPW
    100716692U,	// STXPX
    2248197652U,	// STXRB
    2248199103U,	// STXRH
    2248200652U,	// STXRW
    2248200652U,	// STXRX
    2216210137U,	// SUBHNv2i64_v2i32
    2284904778U,	// SUBHNv2i64_v4i32
    69775065U,	// SUBHNv4i32_v4i16
    137945418U,	// SUBHNv4i32_v8i16
    2282807626U,	// SUBHNv8i16_v16i8
    2218831577U,	// SUBHNv8i16_v8i8
    167784668U,	// SUBR_ZI_B
    201347292U,	// SUBR_ZI_D
    239628508U,	// SUBR_ZI_H
    268472540U,	// SUBR_ZI_S
    302002396U,	// SUBR_ZPmZ_B
    302010588U,	// SUBR_ZPmZ_D
    2186309852U,	// SUBR_ZPmZ_H
    302026972U,	// SUBR_ZPmZ_S
    100717066U,	// SUBSWri
    0U,	// SUBSWrr
    100717066U,	// SUBSWrs
    100717066U,	// SUBSWrx
    100717066U,	// SUBSXri
    0U,	// SUBSXrr
    100717066U,	// SUBSXrs
    100717066U,	// SUBSXrx
    100717066U,	// SUBSXrx64
    100714146U,	// SUBWri
    0U,	// SUBWrr
    100714146U,	// SUBWrs
    100714146U,	// SUBWrx
    100714146U,	// SUBXri
    0U,	// SUBXrr
    100714146U,	// SUBXrs
    100714146U,	// SUBXrx
    100714146U,	// SUBXrx64
    167782050U,	// SUB_ZI_B
    201344674U,	// SUB_ZI_D
    239625890U,	// SUB_ZI_H
    268469922U,	// SUB_ZI_S
    301999778U,	// SUB_ZPmZ_B
    302007970U,	// SUB_ZPmZ_D
    2186307234U,	// SUB_ZPmZ_H
    302024354U,	// SUB_ZPmZ_S
    167782050U,	// SUB_ZZZ_B
    201344674U,	// SUB_ZZZ_D
    2387109538U,	// SUB_ZZZ_H
    268469922U,	// SUB_ZZZ_S
    68200098U,	// SUBv16i8
    100714146U,	// SUBv1i64
    2216208034U,	// SUBv2i32
    2216732322U,	// SUBv2i64
    69772962U,	// SUBv4i16
    70297250U,	// SUBv4i32
    2218305186U,	// SUBv8i16
    2218829474U,	// SUBv8i8
    2415938650U,	// SUNPKHI_ZZ_D
    27290714U,	// SUNPKHI_ZZ_H
    2717944922U,	// SUNPKHI_ZZ_S
    2415939470U,	// SUNPKLO_ZZ_D
    27291534U,	// SUNPKLO_ZZ_H
    2717945742U,	// SUNPKLO_ZZ_S
    135325734U,	// SUQADDv16i8
    2516674598U,	// SUQADDv1i16
    2516674598U,	// SUQADDv1i32
    2516674598U,	// SUQADDv1i64
    2516674598U,	// SUQADDv1i8
    135850022U,	// SUQADDv2i32
    2283857958U,	// SUQADDv2i64
    136898598U,	// SUQADDv4i16
    2284906534U,	// SUQADDv4i32
    137947174U,	// SUQADDv8i16
    2285955110U,	// SUQADDv8i8
    75579U,	// SVC
    973169651U,	// SWPAB
    973171135U,	// SWPAH
    973169853U,	// SWPALB
    973171283U,	// SWPALH
    973171948U,	// SWPALW
    973171948U,	// SWPALX
    973169381U,	// SWPAW
    973169381U,	// SWPAX
    973170041U,	// SWPB
    973171492U,	// SWPH
    973169950U,	// SWPLB
    973171380U,	// SWPLH
    973172243U,	// SWPLW
    973172243U,	// SWPLX
    973172838U,	// SWPW
    973172838U,	// SWPX
    18069U,	// SXTB_ZPmZ_D
    2181588629U,	// SXTB_ZPmZ_H
    34453U,	// SXTB_ZPmZ_S
    19494U,	// SXTH_ZPmZ_D
    35878U,	// SXTH_ZPmZ_S
    21815U,	// SXTW_ZPmZ_D
    100716107U,	// SYSLxt
    1711329984U,	// SYSxt
    1744842025U,	// TBL_ZZZ_B
    1778404649U,	// TBL_ZZZ_D
    28863785U,	// TBL_ZZZ_H
    1811975465U,	// TBL_ZZZ_S
    1846586665U,	// TBLv16i8Four
    1846586665U,	// TBLv16i8One
    1846586665U,	// TBLv16i8Three
    1846586665U,	// TBLv16i8Two
    3997216041U,	// TBLv8i8Four
    3997216041U,	// TBLv8i8One
    3997216041U,	// TBLv8i8Three
    3997216041U,	// TBLv8i8Two
    100718059U,	// TBNZW
    100718059U,	// TBNZX
    1880159597U,	// TBXv16i8Four
    1880159597U,	// TBXv16i8One
    1880159597U,	// TBXv16i8Three
    1880159597U,	// TBXv16i8Two
    4030788973U,	// TBXv8i8Four
    4030788973U,	// TBXv8i8One
    4030788973U,	// TBXv8i8Three
    4030788973U,	// TBXv8i8Two
    100718043U,	// TBZW
    100718043U,	// TBZX
    0U,	// TCRETURNdi
    0U,	// TCRETURNri
    6346239U,	// TLSDESCCALL
    0U,	// TLSDESC_CALLSEQ
    167780389U,	// TRN1_PPP_B
    201343013U,	// TRN1_PPP_D
    2387107877U,	// TRN1_PPP_H
    268468261U,	// TRN1_PPP_S
    167780389U,	// TRN1_ZZZ_B
    201343013U,	// TRN1_ZZZ_D
    2387107877U,	// TRN1_ZZZ_H
    268468261U,	// TRN1_ZZZ_S
    68198437U,	// TRN1v16i8
    2216206373U,	// TRN1v2i32
    2216730661U,	// TRN1v2i64
    69771301U,	// TRN1v4i16
    70295589U,	// TRN1v4i32
    2218303525U,	// TRN1v8i16
    2218827813U,	// TRN1v8i8
    167780737U,	// TRN2_PPP_B
    201343361U,	// TRN2_PPP_D
    2387108225U,	// TRN2_PPP_H
    268468609U,	// TRN2_PPP_S
    167780737U,	// TRN2_ZZZ_B
    201343361U,	// TRN2_ZZZ_D
    2387108225U,	// TRN2_ZZZ_H
    268468609U,	// TRN2_ZZZ_S
    68198785U,	// TRN2v16i8
    2216206721U,	// TRN2v2i32
    2216731009U,	// TRN2v2i64
    69771649U,	// TRN2v4i16
    70295937U,	// TRN2v4i32
    2218303873U,	// TRN2v8i16
    2218828161U,	// TRN2v8i8
    116346U,	// TSB
    137945251U,	// UABALv16i8_v8i16
    2283859113U,	// UABALv2i32_v2i64
    137424041U,	// UABALv4i16_v4i32
    136372387U,	// UABALv4i32_v2i64
    2284904611U,	// UABALv8i16_v4i32
    2285431977U,	// UABALv8i8_v8i16
    135324275U,	// UABAv16i8
    2283332211U,	// UABAv2i32
    136897139U,	// UABAv4i16
    137421427U,	// UABAv4i32
    2285429363U,	// UABAv8i16
    2285953651U,	// UABAv8i8
    70820061U,	// UABDLv16i8_v8i16
    2216734035U,	// UABDLv2i32_v2i64
    70298963U,	// UABDLv4i16_v4i32
    69247197U,	// UABDLv4i32_v2i64
    2217779421U,	// UABDLv8i16_v4i32
    2218306899U,	// UABDLv8i8_v8i16
    302000048U,	// UABD_ZPmZ_B
    302008240U,	// UABD_ZPmZ_D
    2186307504U,	// UABD_ZPmZ_H
    302024624U,	// UABD_ZPmZ_S
    68200368U,	// UABDv16i8
    2216208304U,	// UABDv2i32
    69773232U,	// UABDv4i16
    70297520U,	// UABDv4i32
    2218305456U,	// UABDv8i16
    2218829744U,	// UABDv8i8
    137949161U,	// UADALPv16i8_v8i16
    162066409U,	// UADALPv2i32_v1i64
    135852009U,	// UADALPv4i16_v2i32
    2283859945U,	// UADALPv4i32_v2i64
    137424873U,	// UADALPv8i16_v4i32
    2284384233U,	// UADALPv8i8_v4i16
    70823929U,	// UADDLPv16i8_v8i16
    94941177U,	// UADDLPv2i32_v1i64
    68726777U,	// UADDLPv4i16_v2i32
    2216734713U,	// UADDLPv4i32_v2i64
    70299641U,	// UADDLPv8i16_v4i32
    2217259001U,	// UADDLPv8i8_v4i16
    67163091U,	// UADDLVv16i8v
    67163091U,	// UADDLVv4i16v
    2214646739U,	// UADDLVv4i32v
    67163091U,	// UADDLVv8i16v
    2214646739U,	// UADDLVv8i8v
    70820077U,	// UADDLv16i8_v8i16
    2216734073U,	// UADDLv2i32_v2i64
    70299001U,	// UADDLv4i16_v4i32
    69247213U,	// UADDLv4i32_v2i64
    2217779437U,	// UADDLv8i16_v4i32
    2218306937U,	// UADDLv8i8_v8i16
    302044071U,	// UADDV_VPZ_B
    302044071U,	// UADDV_VPZ_D
    302044071U,	// UADDV_VPZ_H
    302044071U,	// UADDV_VPZ_S
    2218303990U,	// UADDWv16i8_v8i16
    2216735948U,	// UADDWv2i32_v2i64
    70300876U,	// UADDWv4i16_v4i32
    2216731126U,	// UADDWv4i32_v2i64
    70296054U,	// UADDWv8i16_v4i32
    2218308812U,	// UADDWv8i8_v8i16
    100716199U,	// UBFMWri
    100716199U,	// UBFMXri
    100714764U,	// UCVTFSWDri
    100714764U,	// UCVTFSWHri
    100714764U,	// UCVTFSWSri
    100714764U,	// UCVTFSXDri
    100714764U,	// UCVTFSXHri
    100714764U,	// UCVTFSXSri
    2248198412U,	// UCVTFUWDri
    2248198412U,	// UCVTFUWHri
    2248198412U,	// UCVTFUWSri
    2248198412U,	// UCVTFUXDri
    2248198412U,	// UCVTFUXHri
    2248198412U,	// UCVTFUXSri
    18700U,	// UCVTF_ZPmZ_DtoD
    2181589260U,	// UCVTF_ZPmZ_DtoH
    35084U,	// UCVTF_ZPmZ_DtoS
    2181589260U,	// UCVTF_ZPmZ_HtoH
    18700U,	// UCVTF_ZPmZ_StoD
    2181589260U,	// UCVTF_ZPmZ_StoH
    35084U,	// UCVTF_ZPmZ_StoS
    100714764U,	// UCVTFd
    100714764U,	// UCVTFh
    100714764U,	// UCVTFs
    2248198412U,	// UCVTFv1i16
    2248198412U,	// UCVTFv1i32
    2248198412U,	// UCVTFv1i64
    68725004U,	// UCVTFv2f32
    2216732940U,	// UCVTFv2f64
    2216208652U,	// UCVTFv2i32_shift
    2216732940U,	// UCVTFv2i64_shift
    69773580U,	// UCVTFv4f16
    2217781516U,	// UCVTFv4f32
    69773580U,	// UCVTFv4i16_shift
    70297868U,	// UCVTFv4i32_shift
    70822156U,	// UCVTFv8f16
    2218305804U,	// UCVTFv8i16_shift
    302010801U,	// UDIVR_ZPmZ_D
    302027185U,	// UDIVR_ZPmZ_S
    100717509U,	// UDIVWr
    100717509U,	// UDIVXr
    302011333U,	// UDIV_ZPmZ_D
    302027717U,	// UDIV_ZPmZ_S
    3422573363U,	// UDOT_ZZZI_D
    3456144179U,	// UDOT_ZZZI_S
    3422573363U,	// UDOT_ZZZ_D
    3456144179U,	// UDOT_ZZZ_S
    137425715U,	// UDOTlanev16i8
    2283336499U,	// UDOTlanev8i8
    137425715U,	// UDOTv16i8
    2283336499U,	// UDOTv8i8
    68200456U,	// UHADDv16i8
    2216208392U,	// UHADDv2i32
    69773320U,	// UHADDv4i16
    70297608U,	// UHADDv4i32
    2218305544U,	// UHADDv8i16
    2218829832U,	// UHADDv8i8
    68200110U,	// UHSUBv16i8
    2216208046U,	// UHSUBv2i32
    69772974U,	// UHSUBv4i16
    70297262U,	// UHSUBv4i32
    2218305198U,	// UHSUBv8i16
    2218829486U,	// UHSUBv8i8
    100715882U,	// UMADDLrrr
    68202624U,	// UMAXPv16i8
    2216210560U,	// UMAXPv2i32
    69775488U,	// UMAXPv4i16
    70299776U,	// UMAXPv4i32
    2218307712U,	// UMAXPv8i16
    2218832000U,	// UMAXPv8i8
    302044207U,	// UMAXV_VPZ_B
    302044207U,	// UMAXV_VPZ_D
    302044207U,	// UMAXV_VPZ_H
    302044207U,	// UMAXV_VPZ_S
    67163183U,	// UMAXVv16i8v
    67163183U,	// UMAXVv4i16v
    2214646831U,	// UMAXVv4i32v
    67163183U,	// UMAXVv8i16v
    2214646831U,	// UMAXVv8i8v
    167785831U,	// UMAX_ZI_B
    201348455U,	// UMAX_ZI_D
    239629671U,	// UMAX_ZI_H
    268473703U,	// UMAX_ZI_S
    302003559U,	// UMAX_ZPmZ_B
    302011751U,	// UMAX_ZPmZ_D
    2186311015U,	// UMAX_ZPmZ_H
    302028135U,	// UMAX_ZPmZ_S
    68203879U,	// UMAXv16i8
    2216211815U,	// UMAXv2i32
    69776743U,	// UMAXv4i16
    70301031U,	// UMAXv4i32
    2218308967U,	// UMAXv8i16
    2218833255U,	// UMAXv8i8
    68202548U,	// UMINPv16i8
    2216210484U,	// UMINPv2i32
    69775412U,	// UMINPv4i16
    70299700U,	// UMINPv4i32
    2218307636U,	// UMINPv8i16
    2218831924U,	// UMINPv8i8
    302044155U,	// UMINV_VPZ_B
    302044155U,	// UMINV_VPZ_D
    302044155U,	// UMINV_VPZ_H
    302044155U,	// UMINV_VPZ_S
    67163131U,	// UMINVv16i8v
    67163131U,	// UMINVv4i16v
    2214646779U,	// UMINVv4i32v
    67163131U,	// UMINVv8i16v
    2214646779U,	// UMINVv8i8v
    167784184U,	// UMIN_ZI_B
    201346808U,	// UMIN_ZI_D
    239628024U,	// UMIN_ZI_H
    268472056U,	// UMIN_ZI_S
    302001912U,	// UMIN_ZPmZ_B
    302010104U,	// UMIN_ZPmZ_D
    2186309368U,	// UMIN_ZPmZ_H
    302026488U,	// UMIN_ZPmZ_S
    68202232U,	// UMINv16i8
    2216210168U,	// UMINv2i32
    69775096U,	// UMINv4i16
    70299384U,	// UMINv4i32
    2218307320U,	// UMINv8i16
    2218831608U,	// UMINv8i8
    137945277U,	// UMLALv16i8_v8i16
    2283859145U,	// UMLALv2i32_indexed
    2283859145U,	// UMLALv2i32_v2i64
    137424073U,	// UMLALv4i16_indexed
    137424073U,	// UMLALv4i16_v4i32
    136372413U,	// UMLALv4i32_indexed
    136372413U,	// UMLALv4i32_v2i64
    2284904637U,	// UMLALv8i16_indexed
    2284904637U,	// UMLALv8i16_v4i32
    2285432009U,	// UMLALv8i8_v8i16
    137945401U,	// UMLSLv16i8_v8i16
    2283859524U,	// UMLSLv2i32_indexed
    2283859524U,	// UMLSLv2i32_v2i64
    137424452U,	// UMLSLv4i16_indexed
    137424452U,	// UMLSLv4i16_v4i32
    136372537U,	// UMLSLv4i32_indexed
    136372537U,	// UMLSLv4i32_v2i64
    2284904761U,	// UMLSLv8i16_indexed
    2284904761U,	// UMLSLv8i16_v4i32
    2285432388U,	// UMLSLv8i8_v8i16
    67163157U,	// UMOVvi16
    2214646805U,	// UMOVvi32
    67163157U,	// UMOVvi64
    2214646805U,	// UMOVvi8
    100715830U,	// UMSUBLrrr
    302000887U,	// UMULH_ZPmZ_B
    302009079U,	// UMULH_ZPmZ_D
    2186308343U,	// UMULH_ZPmZ_H
    302025463U,	// UMULH_ZPmZ_S
    100715255U,	// UMULHrr
    70820127U,	// UMULLv16i8_v8i16
    2216734188U,	// UMULLv2i32_indexed
    2216734188U,	// UMULLv2i32_v2i64
    70299116U,	// UMULLv4i16_indexed
    70299116U,	// UMULLv4i16_v4i32
    69247263U,	// UMULLv4i32_indexed
    69247263U,	// UMULLv4i32_v2i64
    2217779487U,	// UMULLv8i16_indexed
    2217779487U,	// UMULLv8i16_v4i32
    2218307052U,	// UMULLv8i8_v8i16
    167782439U,	// UQADD_ZI_B
    201345063U,	// UQADD_ZI_D
    239626279U,	// UQADD_ZI_H
    268470311U,	// UQADD_ZI_S
    167782439U,	// UQADD_ZZZ_B
    201345063U,	// UQADD_ZZZ_D
    2387109927U,	// UQADD_ZZZ_H
    268470311U,	// UQADD_ZZZ_S
    68200487U,	// UQADDv16i8
    100714535U,	// UQADDv1i16
    100714535U,	// UQADDv1i32
    100714535U,	// UQADDv1i64
    100714535U,	// UQADDv1i8
    2216208423U,	// UQADDv2i32
    2216732711U,	// UQADDv2i64
    69773351U,	// UQADDv4i16
    70297639U,	// UQADDv4i32
    2218305575U,	// UQADDv8i16
    2218829863U,	// UQADDv8i8
    536921173U,	// UQDECB_WPiI
    536921173U,	// UQDECB_XPiI
    536922053U,	// UQDECD_WPiI
    536922053U,	// UQDECD_XPiI
    536889285U,	// UQDECD_ZPiI
    536922637U,	// UQDECH_WPiI
    536922637U,	// UQDECH_XPiI
    6842893U,	// UQDECH_ZPiI
    2315308989U,	// UQDECP_WP_B
    2348863421U,	// UQDECP_WP_D
    2717962173U,	// UQDECP_WP_H
    2415972285U,	// UQDECP_WP_S
    2315308989U,	// UQDECP_XP_B
    2348863421U,	// UQDECP_XP_D
    2717962173U,	// UQDECP_XP_H
    2415972285U,	// UQDECP_XP_S
    2147504061U,	// UQDECP_ZP_D
    604532669U,	// UQDECP_ZP_H
    2147520445U,	// UQDECP_ZP_S
    536925357U,	// UQDECW_WPiI
    536925357U,	// UQDECW_XPiI
    536908973U,	// UQDECW_ZPiI
    536921189U,	// UQINCB_WPiI
    536921189U,	// UQINCB_XPiI
    536922069U,	// UQINCD_WPiI
    536922069U,	// UQINCD_XPiI
    536889301U,	// UQINCD_ZPiI
    536922653U,	// UQINCH_WPiI
    536922653U,	// UQINCH_XPiI
    6842909U,	// UQINCH_ZPiI
    2315309005U,	// UQINCP_WP_B
    2348863437U,	// UQINCP_WP_D
    2717962189U,	// UQINCP_WP_H
    2415972301U,	// UQINCP_WP_S
    2315309005U,	// UQINCP_XP_B
    2348863437U,	// UQINCP_XP_D
    2717962189U,	// UQINCP_XP_H
    2415972301U,	// UQINCP_XP_S
    2147504077U,	// UQINCP_ZP_D
    604532685U,	// UQINCP_ZP_H
    2147520461U,	// UQINCP_ZP_S
    536925373U,	// UQINCW_WPiI
    536925373U,	// UQINCW_XPiI
    536908989U,	// UQINCW_ZPiI
    68201893U,	// UQRSHLv16i8
    100715941U,	// UQRSHLv1i16
    100715941U,	// UQRSHLv1i32
    100715941U,	// UQRSHLv1i64
    100715941U,	// UQRSHLv1i8
    2216209829U,	// UQRSHLv2i32
    2216734117U,	// UQRSHLv2i64
    69774757U,	// UQRSHLv4i16
    70299045U,	// UQRSHLv4i32
    2218306981U,	// UQRSHLv8i16
    2218831269U,	// UQRSHLv8i8
    100716328U,	// UQRSHRNb
    100716328U,	// UQRSHRNh
    100716328U,	// UQRSHRNs
    2282807671U,	// UQRSHRNv16i8_shift
    2216210216U,	// UQRSHRNv2i32_shift
    69775144U,	// UQRSHRNv4i16_shift
    2284904823U,	// UQRSHRNv4i32_shift
    137945463U,	// UQRSHRNv8i16_shift
    2218831656U,	// UQRSHRNv8i8_shift
    100715926U,	// UQSHLb
    100715926U,	// UQSHLd
    100715926U,	// UQSHLh
    100715926U,	// UQSHLs
    68201878U,	// UQSHLv16i8
    68201878U,	// UQSHLv16i8_shift
    100715926U,	// UQSHLv1i16
    100715926U,	// UQSHLv1i32
    100715926U,	// UQSHLv1i64
    100715926U,	// UQSHLv1i8
    2216209814U,	// UQSHLv2i32
    2216209814U,	// UQSHLv2i32_shift
    2216734102U,	// UQSHLv2i64
    2216734102U,	// UQSHLv2i64_shift
    69774742U,	// UQSHLv4i16
    69774742U,	// UQSHLv4i16_shift
    70299030U,	// UQSHLv4i32
    70299030U,	// UQSHLv4i32_shift
    2218306966U,	// UQSHLv8i16
    2218306966U,	// UQSHLv8i16_shift
    2218831254U,	// UQSHLv8i8
    2218831254U,	// UQSHLv8i8_shift
    100716311U,	// UQSHRNb
    100716311U,	// UQSHRNh
    100716311U,	// UQSHRNs
    2282807652U,	// UQSHRNv16i8_shift
    2216210199U,	// UQSHRNv2i32_shift
    69775127U,	// UQSHRNv4i16_shift
    2284904804U,	// UQSHRNv4i32_shift
    137945444U,	// UQSHRNv8i16_shift
    2218831639U,	// UQSHRNv8i8_shift
    167782091U,	// UQSUB_ZI_B
    201344715U,	// UQSUB_ZI_D
    239625931U,	// UQSUB_ZI_H
    268469963U,	// UQSUB_ZI_S
    167782091U,	// UQSUB_ZZZ_B
    201344715U,	// UQSUB_ZZZ_D
    2387109579U,	// UQSUB_ZZZ_H
    268469963U,	// UQSUB_ZZZ_S
    68200139U,	// UQSUBv16i8
    100714187U,	// UQSUBv1i16
    100714187U,	// UQSUBv1i32
    100714187U,	// UQSUBv1i64
    100714187U,	// UQSUBv1i8
    2216208075U,	// UQSUBv2i32
    2216732363U,	// UQSUBv2i64
    69773003U,	// UQSUBv4i16
    70297291U,	// UQSUBv4i32
    2218305227U,	// UQSUBv8i16
    2218829515U,	// UQSUBv8i8
    135324055U,	// UQXTNv16i8
    2248200012U,	// UQXTNv1i16
    2248200012U,	// UQXTNv1i32
    2248200012U,	// UQXTNv1i8
    2216210252U,	// UQXTNv2i32
    2217258828U,	// UQXTNv4i16
    2284904855U,	// UQXTNv4i32
    2285429143U,	// UQXTNv8i16
    71348044U,	// UQXTNv8i8
    68724924U,	// URECPEv2i32
    2217781436U,	// URECPEv4i32
    68200441U,	// URHADDv16i8
    2216208377U,	// URHADDv2i32
    69773305U,	// URHADDv4i16
    70297593U,	// URHADDv4i32
    2218305529U,	// URHADDv8i16
    2218829817U,	// URHADDv8i8
    68201908U,	// URSHLv16i8
    100715956U,	// URSHLv1i64
    2216209844U,	// URSHLv2i32
    2216734132U,	// URSHLv2i64
    69774772U,	// URSHLv4i16
    70299060U,	// URSHLv4i32
    2218306996U,	// URSHLv8i16
    2218831284U,	// URSHLv8i8
    100716801U,	// URSHRd
    68202753U,	// URSHRv16i8_shift
    2216210689U,	// URSHRv2i32_shift
    2216734977U,	// URSHRv2i64_shift
    69775617U,	// URSHRv4i16_shift
    70299905U,	// URSHRv4i32_shift
    2218307841U,	// URSHRv8i16_shift
    2218832129U,	// URSHRv8i8_shift
    68724970U,	// URSQRTEv2i32
    2217781482U,	// URSQRTEv4i32
    369189641U,	// URSRAd
    135324425U,	// URSRAv16i8_shift
    2283332361U,	// URSRAv2i32_shift
    2283856649U,	// URSRAv2i64_shift
    136897289U,	// URSRAv4i16_shift
    137421577U,	// URSRAv4i32_shift
    2285429513U,	// URSRAv8i16_shift
    2285953801U,	// URSRAv8i8_shift
    70820093U,	// USHLLv16i8_shift
    2216734158U,	// USHLLv2i32_shift
    70299086U,	// USHLLv4i16_shift
    69247229U,	// USHLLv4i32_shift
    2217779453U,	// USHLLv8i16_shift
    2218307022U,	// USHLLv8i8_shift
    68201921U,	// USHLv16i8
    100715969U,	// USHLv1i64
    2216209857U,	// USHLv2i32
    2216734145U,	// USHLv2i64
    69774785U,	// USHLv4i16
    70299073U,	// USHLv4i32
    2218307009U,	// USHLv8i16
    2218831297U,	// USHLv8i8
    100716814U,	// USHRd
    68202766U,	// USHRv16i8_shift
    2216210702U,	// USHRv2i32_shift
    2216734990U,	// USHRv2i64_shift
    69775630U,	// USHRv4i16_shift
    70299918U,	// USHRv4i32_shift
    2218307854U,	// USHRv8i16_shift
    2218832142U,	// USHRv8i8_shift
    135325726U,	// USQADDv16i8
    2516674590U,	// USQADDv1i16
    2516674590U,	// USQADDv1i32
    2516674590U,	// USQADDv1i64
    2516674590U,	// USQADDv1i8
    135850014U,	// USQADDv2i32
    2283857950U,	// USQADDv2i64
    136898590U,	// USQADDv4i16
    2284906526U,	// USQADDv4i32
    137947166U,	// USQADDv8i16
    2285955102U,	// USQADDv8i8
    369189654U,	// USRAd
    135324438U,	// USRAv16i8_shift
    2283332374U,	// USRAv2i32_shift
    2283856662U,	// USRAv2i64_shift
    136897302U,	// USRAv4i16_shift
    137421590U,	// USRAv4i32_shift
    2285429526U,	// USRAv8i16_shift
    2285953814U,	// USRAv8i8_shift
    70820045U,	// USUBLv16i8_v8i16
    2216734021U,	// USUBLv2i32_v2i64
    70298949U,	// USUBLv4i16_v4i32
    69247181U,	// USUBLv4i32_v2i64
    2217779405U,	// USUBLv8i16_v4i32
    2218306885U,	// USUBLv8i8_v8i16
    2218303974U,	// USUBWv16i8_v8i16
    2216735893U,	// USUBWv2i32_v2i64
    70300821U,	// USUBWv4i16_v4i32
    2216731110U,	// USUBWv4i32_v2i64
    70296038U,	// USUBWv8i16_v4i32
    2218308757U,	// USUBWv8i8_v8i16
    2415938659U,	// UUNPKHI_ZZ_D
    27290723U,	// UUNPKHI_ZZ_H
    2717944931U,	// UUNPKHI_ZZ_S
    2415939479U,	// UUNPKLO_ZZ_D
    27291543U,	// UUNPKLO_ZZ_H
    2717945751U,	// UUNPKLO_ZZ_S
    18075U,	// UXTB_ZPmZ_D
    2181588635U,	// UXTB_ZPmZ_H
    34459U,	// UXTB_ZPmZ_S
    19500U,	// UXTH_ZPmZ_D
    35884U,	// UXTH_ZPmZ_S
    21821U,	// UXTW_ZPmZ_D
    167780401U,	// UZP1_PPP_B
    201343025U,	// UZP1_PPP_D
    2387107889U,	// UZP1_PPP_H
    268468273U,	// UZP1_PPP_S
    167780401U,	// UZP1_ZZZ_B
    201343025U,	// UZP1_ZZZ_D
    2387107889U,	// UZP1_ZZZ_H
    268468273U,	// UZP1_ZZZ_S
    68198449U,	// UZP1v16i8
    2216206385U,	// UZP1v2i32
    2216730673U,	// UZP1v2i64
    69771313U,	// UZP1v4i16
    70295601U,	// UZP1v4i32
    2218303537U,	// UZP1v8i16
    2218827825U,	// UZP1v8i8
    167780812U,	// UZP2_PPP_B
    201343436U,	// UZP2_PPP_D
    2387108300U,	// UZP2_PPP_H
    268468684U,	// UZP2_PPP_S
    167780812U,	// UZP2_ZZZ_B
    201343436U,	// UZP2_ZZZ_D
    2387108300U,	// UZP2_ZZZ_H
    268468684U,	// UZP2_ZZZ_S
    68198860U,	// UZP2v16i8
    2216206796U,	// UZP2v2i32
    2216731084U,	// UZP2v2i64
    69771724U,	// UZP2v4i16
    70296012U,	// UZP2v4i32
    2218303948U,	// UZP2v8i16
    2218828236U,	// UZP2v8i8
    100673670U,	// WHILELE_PWW_B
    100681862U,	// WHILELE_PWW_D
    242772102U,	// WHILELE_PWW_H
    100698246U,	// WHILELE_PWW_S
    100673670U,	// WHILELE_PXX_B
    100681862U,	// WHILELE_PXX_D
    242772102U,	// WHILELE_PXX_H
    100698246U,	// WHILELE_PXX_S
    100675452U,	// WHILELO_PWW_B
    100683644U,	// WHILELO_PWW_D
    242773884U,	// WHILELO_PWW_H
    100700028U,	// WHILELO_PWW_S
    100675452U,	// WHILELO_PXX_B
    100683644U,	// WHILELO_PXX_D
    242773884U,	// WHILELO_PXX_H
    100700028U,	// WHILELO_PXX_S
    100676169U,	// WHILELS_PWW_B
    100684361U,	// WHILELS_PWW_D
    242774601U,	// WHILELS_PWW_H
    100700745U,	// WHILELS_PWW_S
    100676169U,	// WHILELS_PXX_B
    100684361U,	// WHILELS_PXX_D
    242774601U,	// WHILELS_PXX_H
    100700745U,	// WHILELS_PXX_S
    100676358U,	// WHILELT_PWW_B
    100684550U,	// WHILELT_PWW_D
    242774790U,	// WHILELT_PWW_H
    100700934U,	// WHILELT_PWW_S
    100676358U,	// WHILELT_PXX_B
    100684550U,	// WHILELT_PXX_D
    242774790U,	// WHILELT_PXX_H
    100700934U,	// WHILELT_PXX_S
    6303987U,	// WRFFR
    2216734934U,	// XAR
    6342582U,	// XPACD
    6343754U,	// XPACI
    5905U,	// XPACLRI
    135324049U,	// XTNv16i8
    2216210247U,	// XTNv2i32
    2217258823U,	// XTNv4i16
    2284904849U,	// XTNv4i32
    2285429137U,	// XTNv8i16
    71348039U,	// XTNv8i8
    167780395U,	// ZIP1_PPP_B
    201343019U,	// ZIP1_PPP_D
    2387107883U,	// ZIP1_PPP_H
    268468267U,	// ZIP1_PPP_S
    167780395U,	// ZIP1_ZZZ_B
    201343019U,	// ZIP1_ZZZ_D
    2387107883U,	// ZIP1_ZZZ_H
    268468267U,	// ZIP1_ZZZ_S
    68198443U,	// ZIP1v16i8
    2216206379U,	// ZIP1v2i32
    2216730667U,	// ZIP1v2i64
    69771307U,	// ZIP1v4i16
    70295595U,	// ZIP1v4i32
    2218303531U,	// ZIP1v8i16
    2218827819U,	// ZIP1v8i8
    167780806U,	// ZIP2_PPP_B
    201343430U,	// ZIP2_PPP_D
    2387108294U,	// ZIP2_PPP_H
    268468678U,	// ZIP2_PPP_S
    167780806U,	// ZIP2_ZZZ_B
    201343430U,	// ZIP2_ZZZ_D
    2387108294U,	// ZIP2_ZZZ_H
    268468678U,	// ZIP2_ZZZ_S
    68198854U,	// ZIP2v16i8
    2216206790U,	// ZIP2v2i32
    2216731078U,	// ZIP2v2i64
    69771718U,	// ZIP2v4i16
    70296006U,	// ZIP2v4i32
    2218303942U,	// ZIP2v8i16
    2218828230U,	// ZIP2v8i8
    302003021U,	// anonymous_1349
  };

  static const uint32_t OpInfo1[] = {
    0U,	// PHI
    0U,	// INLINEASM
    0U,	// CFI_INSTRUCTION
    0U,	// EH_LABEL
    0U,	// GC_LABEL
    0U,	// ANNOTATION_LABEL
    0U,	// KILL
    0U,	// EXTRACT_SUBREG
    0U,	// INSERT_SUBREG
    0U,	// IMPLICIT_DEF
    0U,	// SUBREG_TO_REG
    0U,	// COPY_TO_REGCLASS
    0U,	// DBG_VALUE
    0U,	// DBG_LABEL
    0U,	// REG_SEQUENCE
    0U,	// COPY
    0U,	// BUNDLE
    0U,	// LIFETIME_START
    0U,	// LIFETIME_END
    0U,	// STACKMAP
    0U,	// FENTRY_CALL
    0U,	// PATCHPOINT
    0U,	// LOAD_STACK_GUARD
    0U,	// STATEPOINT
    0U,	// LOCAL_ESCAPE
    0U,	// FAULTING_OP
    0U,	// PATCHABLE_OP
    0U,	// PATCHABLE_FUNCTION_ENTER
    0U,	// PATCHABLE_RET
    0U,	// PATCHABLE_FUNCTION_EXIT
    0U,	// PATCHABLE_TAIL_CALL
    0U,	// PATCHABLE_EVENT_CALL
    0U,	// PATCHABLE_TYPED_EVENT_CALL
    0U,	// ICALL_BRANCH_FUNNEL
    0U,	// G_ADD
    0U,	// G_SUB
    0U,	// G_MUL
    0U,	// G_SDIV
    0U,	// G_UDIV
    0U,	// G_SREM
    0U,	// G_UREM
    0U,	// G_AND
    0U,	// G_OR
    0U,	// G_XOR
    0U,	// G_IMPLICIT_DEF
    0U,	// G_PHI
    0U,	// G_FRAME_INDEX
    0U,	// G_GLOBAL_VALUE
    0U,	// G_EXTRACT
    0U,	// G_UNMERGE_VALUES
    0U,	// G_INSERT
    0U,	// G_MERGE_VALUES
    0U,	// G_PTRTOINT
    0U,	// G_INTTOPTR
    0U,	// G_BITCAST
    0U,	// G_LOAD
    0U,	// G_SEXTLOAD
    0U,	// G_ZEXTLOAD
    0U,	// G_STORE
    0U,	// G_ATOMIC_CMPXCHG_WITH_SUCCESS
    0U,	// G_ATOMIC_CMPXCHG
    0U,	// G_ATOMICRMW_XCHG
    0U,	// G_ATOMICRMW_ADD
    0U,	// G_ATOMICRMW_SUB
    0U,	// G_ATOMICRMW_AND
    0U,	// G_ATOMICRMW_NAND
    0U,	// G_ATOMICRMW_OR
    0U,	// G_ATOMICRMW_XOR
    0U,	// G_ATOMICRMW_MAX
    0U,	// G_ATOMICRMW_MIN
    0U,	// G_ATOMICRMW_UMAX
    0U,	// G_ATOMICRMW_UMIN
    0U,	// G_BRCOND
    0U,	// G_BRINDIRECT
    0U,	// G_INTRINSIC
    0U,	// G_INTRINSIC_W_SIDE_EFFECTS
    0U,	// G_ANYEXT
    0U,	// G_TRUNC
    0U,	// G_CONSTANT
    0U,	// G_FCONSTANT
    0U,	// G_VASTART
    0U,	// G_VAARG
    0U,	// G_SEXT
    0U,	// G_ZEXT
    0U,	// G_SHL
    0U,	// G_LSHR
    0U,	// G_ASHR
    0U,	// G_ICMP
    0U,	// G_FCMP
    0U,	// G_SELECT
    0U,	// G_UADDE
    0U,	// G_USUBE
    0U,	// G_SADDO
    0U,	// G_SSUBO
    0U,	// G_UMULO
    0U,	// G_SMULO
    0U,	// G_UMULH
    0U,	// G_SMULH
    0U,	// G_FADD
    0U,	// G_FSUB
    0U,	// G_FMUL
    0U,	// G_FMA
    0U,	// G_FDIV
    0U,	// G_FREM
    0U,	// G_FPOW
    0U,	// G_FEXP
    0U,	// G_FEXP2
    0U,	// G_FLOG
    0U,	// G_FLOG2
    0U,	// G_FNEG
    0U,	// G_FPEXT
    0U,	// G_FPTRUNC
    0U,	// G_FPTOSI
    0U,	// G_FPTOUI
    0U,	// G_SITOFP
    0U,	// G_UITOFP
    0U,	// G_FABS
    0U,	// G_GEP
    0U,	// G_PTR_MASK
    0U,	// G_BR
    0U,	// G_INSERT_VECTOR_ELT
    0U,	// G_EXTRACT_VECTOR_ELT
    0U,	// G_SHUFFLE_VECTOR
    0U,	// G_BSWAP
    0U,	// G_ADDRSPACE_CAST
    0U,	// G_BLOCK_ADDR
    0U,	// ABS_ZPmZ_B
    64U,	// ABS_ZPmZ_D
    128U,	// ABS_ZPmZ_H
    192U,	// ABS_ZPmZ_S
    1U,	// ABSv16i8
    1U,	// ABSv1i64
    2U,	// ABSv2i32
    2U,	// ABSv2i64
    3U,	// ABSv4i16
    3U,	// ABSv4i32
    4U,	// ABSv8i16
    4U,	// ABSv8i8
    261U,	// ADCSWr
    261U,	// ADCSXr
    261U,	// ADCWr
    261U,	// ADCXr
    8517U,	// ADDHNv2i64_v2i32
    8581U,	// ADDHNv2i64_v4i32
    16710U,	// ADDHNv4i32_v4i16
    16774U,	// ADDHNv4i32_v8i16
    24966U,	// ADDHNv8i16_v16i8
    24902U,	// ADDHNv8i16_v8i8
    261U,	// ADDPL_XXI
    33095U,	// ADDPv16i8
    41287U,	// ADDPv2i32
    8517U,	// ADDPv2i64
    2U,	// ADDPv2i64p
    49480U,	// ADDPv4i16
    16710U,	// ADDPv4i32
    24902U,	// ADDPv8i16
    57672U,	// ADDPv8i8
    453U,	// ADDSWri
    0U,	// ADDSWrr
    517U,	// ADDSWrs
    581U,	// ADDSWrx
    453U,	// ADDSXri
    0U,	// ADDSXrr
    517U,	// ADDSXrs
    581U,	// ADDSXrx
    65797U,	// ADDSXrx64
    261U,	// ADDVL_XXI
    1U,	// ADDVv16i8v
    3U,	// ADDVv4i16v
    3U,	// ADDVv4i32v
    4U,	// ADDVv8i16v
    4U,	// ADDVv8i8v
    453U,	// ADDWri
    0U,	// ADDWrr
    517U,	// ADDWrs
    581U,	// ADDWrx
    453U,	// ADDXri
    0U,	// ADDXrr
    517U,	// ADDXrs
    581U,	// ADDXrx
    65797U,	// ADDXrx64
    645U,	// ADD_ZI_B
    709U,	// ADD_ZI_D
    9U,	// ADD_ZI_H
    773U,	// ADD_ZI_S
    74560U,	// ADD_ZPmZ_B
    598912U,	// ADD_ZPmZ_D
    1131465U,	// ADD_ZPmZ_H
    1647616U,	// ADD_ZPmZ_S
    837U,	// ADD_ZZZ_B
    901U,	// ADD_ZZZ_D
    137U,	// ADD_ZZZ_H
    1029U,	// ADD_ZZZ_S
    0U,	// ADDlowTLS
    33095U,	// ADDv16i8
    261U,	// ADDv1i64
    41287U,	// ADDv2i32
    8517U,	// ADDv2i64
    49480U,	// ADDv4i16
    16710U,	// ADDv4i32
    24902U,	// ADDv8i16
    57672U,	// ADDv8i8
    0U,	// ADJCALLSTACKDOWN
    0U,	// ADJCALLSTACKUP
    1U,	// ADR
    0U,	// ADRP
    1093U,	// ADR_LSL_ZZZ_D_0
    1157U,	// ADR_LSL_ZZZ_D_1
    1221U,	// ADR_LSL_ZZZ_D_2
    1285U,	// ADR_LSL_ZZZ_D_3
    1349U,	// ADR_LSL_ZZZ_S_0
    1413U,	// ADR_LSL_ZZZ_S_1
    1477U,	// ADR_LSL_ZZZ_S_2
    1541U,	// ADR_LSL_ZZZ_S_3
    1605U,	// ADR_SXTW_ZZZ_D_0
    1669U,	// ADR_SXTW_ZZZ_D_1
    1733U,	// ADR_SXTW_ZZZ_D_2
    1797U,	// ADR_SXTW_ZZZ_D_3
    1861U,	// ADR_UXTW_ZZZ_D_0
    1925U,	// ADR_UXTW_ZZZ_D_1
    1989U,	// ADR_UXTW_ZZZ_D_2
    2053U,	// ADR_UXTW_ZZZ_D_3
    1U,	// AESDrr
    1U,	// AESErr
    1U,	// AESIMCrr
    0U,	// AESIMCrrTied
    1U,	// AESMCrr
    0U,	// AESMCrrTied
    2117U,	// ANDSWri
    0U,	// ANDSWrr
    517U,	// ANDSWrs
    2181U,	// ANDSXri
    0U,	// ANDSXrr
    517U,	// ANDSXrs
    74570U,	// ANDS_PPzPP
    837U,	// ANDV_VPZ_B
    901U,	// ANDV_VPZ_D
    2245U,	// ANDV_VPZ_H
    1029U,	// ANDV_VPZ_S
    2117U,	// ANDWri
    0U,	// ANDWrr
    517U,	// ANDWrs
    2181U,	// ANDXri
    0U,	// ANDXrr
    517U,	// ANDXrs
    74570U,	// AND_PPzPP
    2181U,	// AND_ZI
    74560U,	// AND_ZPmZ_B
    598912U,	// AND_ZPmZ_D
    1131465U,	// AND_ZPmZ_H
    1647616U,	// AND_ZPmZ_S
    901U,	// AND_ZZZ
    33095U,	// ANDv16i8
    57672U,	// ANDv8i8
    2171712U,	// ASRD_ZPmI_B
    2171776U,	// ASRD_ZPmI_D
    91081U,	// ASRD_ZPmI_H
    2171904U,	// ASRD_ZPmI_S
    74560U,	// ASRR_ZPmZ_B
    598912U,	// ASRR_ZPmZ_D
    1131465U,	// ASRR_ZPmZ_H
    1647616U,	// ASRR_ZPmZ_S
    261U,	// ASRVWr
    261U,	// ASRVXr
    598848U,	// ASR_WIDE_ZPmZ_B
    99273U,	// ASR_WIDE_ZPmZ_H
    599040U,	// ASR_WIDE_ZPmZ_S
    901U,	// ASR_WIDE_ZZZ_B
    10U,	// ASR_WIDE_ZZZ_H
    901U,	// ASR_WIDE_ZZZ_S
    2171712U,	// ASR_ZPmI_B
    2171776U,	// ASR_ZPmI_D
    91081U,	// ASR_ZPmI_H
    2171904U,	// ASR_ZPmI_S
    74560U,	// ASR_ZPmZ_B
    598912U,	// ASR_ZPmZ_D
    1131465U,	// ASR_ZPmZ_H
    1647616U,	// ASR_ZPmZ_S
    261U,	// ASR_ZZI_B
    261U,	// ASR_ZZI_D
    11U,	// ASR_ZZI_H
    261U,	// ASR_ZZI_S
    1U,	// AUTDA
    1U,	// AUTDB
    0U,	// AUTDZA
    0U,	// AUTDZB
    1U,	// AUTIA
    0U,	// AUTIA1716
    0U,	// AUTIASP
    0U,	// AUTIAZ
    1U,	// AUTIB
    0U,	// AUTIB1716
    0U,	// AUTIBSP
    0U,	// AUTIBZ
    0U,	// AUTIZA
    0U,	// AUTIZB
    0U,	// B
    36282695U,	// BCAX
    3221765U,	// BFMWri
    3221765U,	// BFMXri
    0U,	// BICSWrr
    517U,	// BICSWrs
    0U,	// BICSXrr
    517U,	// BICSXrs
    74570U,	// BICS_PPzPP
    0U,	// BICWrr
    517U,	// BICWrs
    0U,	// BICXrr
    517U,	// BICXrs
    74570U,	// BIC_PPzPP
    74560U,	// BIC_ZPmZ_B
    598912U,	// BIC_ZPmZ_D
    1131465U,	// BIC_ZPmZ_H
    1647616U,	// BIC_ZPmZ_S
    901U,	// BIC_ZZZ
    33095U,	// BICv16i8
    0U,	// BICv2i32
    0U,	// BICv4i16
    0U,	// BICv4i32
    0U,	// BICv8i16
    57672U,	// BICv8i8
    33095U,	// BIFv16i8
    57672U,	// BIFv8i8
    33159U,	// BITv16i8
    57736U,	// BITv8i8
    0U,	// BL
    0U,	// BLR
    1U,	// BLRAA
    0U,	// BLRAAZ
    1U,	// BLRAB
    0U,	// BLRABZ
    0U,	// BR
    1U,	// BRAA
    0U,	// BRAAZ
    1U,	// BRAB
    0U,	// BRABZ
    0U,	// BRK
    842U,	// BRKAS_PPzP
    0U,	// BRKA_PPmP
    842U,	// BRKA_PPzP
    842U,	// BRKBS_PPzP
    0U,	// BRKB_PPmP
    842U,	// BRKB_PPzP
    74570U,	// BRKNS_PPzP
    74570U,	// BRKN_PPzP
    74570U,	// BRKPAS_PPzPP
    74570U,	// BRKPA_PPzPP
    74570U,	// BRKPBS_PPzPP
    74570U,	// BRKPB_PPzPP
    33159U,	// BSLv16i8
    57736U,	// BSLv8i8
    0U,	// Bcc
    117003U,	// CASAB
    117003U,	// CASAH
    117003U,	// CASALB
    117003U,	// CASALH
    117003U,	// CASALW
    117003U,	// CASALX
    117003U,	// CASAW
    117003U,	// CASAX
    117003U,	// CASB
    117003U,	// CASH
    117003U,	// CASLB
    117003U,	// CASLH
    117003U,	// CASLW
    117003U,	// CASLX
    0U,	// CASPALW
    0U,	// CASPALX
    0U,	// CASPAW
    0U,	// CASPAX
    0U,	// CASPLW
    0U,	// CASPLX
    0U,	// CASPW
    0U,	// CASPX
    117003U,	// CASW
    117003U,	// CASX
    0U,	// CBNZW
    0U,	// CBNZX
    0U,	// CBZW
    0U,	// CBZX
    3744005U,	// CCMNWi
    3744005U,	// CCMNWr
    3744005U,	// CCMNXi
    3744005U,	// CCMNXr
    3744005U,	// CCMPWi
    3744005U,	// CCMPWr
    3744005U,	// CCMPXi
    3744005U,	// CCMPXr
    0U,	// CFINV
    73989U,	// CLASTA_RPZ_B
    598277U,	// CLASTA_RPZ_D
    4268293U,	// CLASTA_RPZ_H
    1646853U,	// CLASTA_RPZ_S
    73989U,	// CLASTA_VPZ_B
    598277U,	// CLASTA_VPZ_D
    4268293U,	// CLASTA_VPZ_H
    1646853U,	// CLASTA_VPZ_S
    74565U,	// CLASTA_ZPZ_B
    598917U,	// CLASTA_ZPZ_D
    1131465U,	// CLASTA_ZPZ_H
    1647621U,	// CLASTA_ZPZ_S
    73989U,	// CLASTB_RPZ_B
    598277U,	// CLASTB_RPZ_D
    4268293U,	// CLASTB_RPZ_H
    1646853U,	// CLASTB_RPZ_S
    73989U,	// CLASTB_VPZ_B
    598277U,	// CLASTB_VPZ_D
    4268293U,	// CLASTB_VPZ_H
    1646853U,	// CLASTB_VPZ_S
    74565U,	// CLASTB_ZPZ_B
    598917U,	// CLASTB_ZPZ_D
    1131465U,	// CLASTB_ZPZ_H
    1647621U,	// CLASTB_ZPZ_S
    0U,	// CLREX
    1U,	// CLSWr
    1U,	// CLSXr
    0U,	// CLS_ZPmZ_B
    64U,	// CLS_ZPmZ_D
    128U,	// CLS_ZPmZ_H
    192U,	// CLS_ZPmZ_S
    1U,	// CLSv16i8
    2U,	// CLSv2i32
    3U,	// CLSv4i16
    3U,	// CLSv4i32
    4U,	// CLSv8i16
    4U,	// CLSv8i8
    1U,	// CLZWr
    1U,	// CLZXr
    0U,	// CLZ_ZPmZ_B
    64U,	// CLZ_ZPmZ_D
    128U,	// CLZ_ZPmZ_H
    192U,	// CLZ_ZPmZ_S
    1U,	// CLZv16i8
    2U,	// CLZv2i32
    3U,	// CLZv4i16
    3U,	// CLZv4i32
    4U,	// CLZv8i16
    4U,	// CLZv8i8
    33095U,	// CMEQv16i8
    12U,	// CMEQv16i8rz
    261U,	// CMEQv1i64
    12U,	// CMEQv1i64rz
    41287U,	// CMEQv2i32
    13U,	// CMEQv2i32rz
    8517U,	// CMEQv2i64
    13U,	// CMEQv2i64rz
    49480U,	// CMEQv4i16
    14U,	// CMEQv4i16rz
    16710U,	// CMEQv4i32
    14U,	// CMEQv4i32rz
    24902U,	// CMEQv8i16
    15U,	// CMEQv8i16rz
    57672U,	// CMEQv8i8
    15U,	// CMEQv8i8rz
    33095U,	// CMGEv16i8
    12U,	// CMGEv16i8rz
    261U,	// CMGEv1i64
    12U,	// CMGEv1i64rz
    41287U,	// CMGEv2i32
    13U,	// CMGEv2i32rz
    8517U,	// CMGEv2i64
    13U,	// CMGEv2i64rz
    49480U,	// CMGEv4i16
    14U,	// CMGEv4i16rz
    16710U,	// CMGEv4i32
    14U,	// CMGEv4i32rz
    24902U,	// CMGEv8i16
    15U,	// CMGEv8i16rz
    57672U,	// CMGEv8i8
    15U,	// CMGEv8i8rz
    33095U,	// CMGTv16i8
    12U,	// CMGTv16i8rz
    261U,	// CMGTv1i64
    12U,	// CMGTv1i64rz
    41287U,	// CMGTv2i32
    13U,	// CMGTv2i32rz
    8517U,	// CMGTv2i64
    13U,	// CMGTv2i64rz
    49480U,	// CMGTv4i16
    14U,	// CMGTv4i16rz
    16710U,	// CMGTv4i32
    14U,	// CMGTv4i32rz
    24902U,	// CMGTv8i16
    15U,	// CMGTv8i16rz
    57672U,	// CMGTv8i8
    15U,	// CMGTv8i8rz
    33095U,	// CMHIv16i8
    261U,	// CMHIv1i64
    41287U,	// CMHIv2i32
    8517U,	// CMHIv2i64
    49480U,	// CMHIv4i16
    16710U,	// CMHIv4i32
    24902U,	// CMHIv8i16
    57672U,	// CMHIv8i8
    33095U,	// CMHSv16i8
    261U,	// CMHSv1i64
    41287U,	// CMHSv2i32
    8517U,	// CMHSv2i64
    49480U,	// CMHSv4i16
    16710U,	// CMHSv4i32
    24902U,	// CMHSv8i16
    57672U,	// CMHSv8i8
    12U,	// CMLEv16i8rz
    12U,	// CMLEv1i64rz
    13U,	// CMLEv2i32rz
    13U,	// CMLEv2i64rz
    14U,	// CMLEv4i16rz
    14U,	// CMLEv4i32rz
    15U,	// CMLEv8i16rz
    15U,	// CMLEv8i8rz
    12U,	// CMLTv16i8rz
    12U,	// CMLTv1i64rz
    13U,	// CMLTv2i32rz
    13U,	// CMLTv2i64rz
    14U,	// CMLTv4i16rz
    14U,	// CMLTv4i32rz
    15U,	// CMLTv8i16rz
    15U,	// CMLTv8i8rz
    2171722U,	// CMPEQ_PPzZI_B
    2171786U,	// CMPEQ_PPzZI_D
    91081U,	// CMPEQ_PPzZI_H
    2171914U,	// CMPEQ_PPzZI_S
    74570U,	// CMPEQ_PPzZZ_B
    598922U,	// CMPEQ_PPzZZ_D
    1131465U,	// CMPEQ_PPzZZ_H
    1647626U,	// CMPEQ_PPzZZ_S
    598858U,	// CMPEQ_WIDE_PPzZZ_B
    99273U,	// CMPEQ_WIDE_PPzZZ_H
    599050U,	// CMPEQ_WIDE_PPzZZ_S
    2171722U,	// CMPGE_PPzZI_B
    2171786U,	// CMPGE_PPzZI_D
    91081U,	// CMPGE_PPzZI_H
    2171914U,	// CMPGE_PPzZI_S
    74570U,	// CMPGE_PPzZZ_B
    598922U,	// CMPGE_PPzZZ_D
    1131465U,	// CMPGE_PPzZZ_H
    1647626U,	// CMPGE_PPzZZ_S
    598858U,	// CMPGE_WIDE_PPzZZ_B
    99273U,	// CMPGE_WIDE_PPzZZ_H
    599050U,	// CMPGE_WIDE_PPzZZ_S
    2171722U,	// CMPGT_PPzZI_B
    2171786U,	// CMPGT_PPzZI_D
    91081U,	// CMPGT_PPzZI_H
    2171914U,	// CMPGT_PPzZI_S
    74570U,	// CMPGT_PPzZZ_B
    598922U,	// CMPGT_PPzZZ_D
    1131465U,	// CMPGT_PPzZZ_H
    1647626U,	// CMPGT_PPzZZ_S
    598858U,	// CMPGT_WIDE_PPzZZ_B
    99273U,	// CMPGT_WIDE_PPzZZ_H
    599050U,	// CMPGT_WIDE_PPzZZ_S
    4793162U,	// CMPHI_PPzZI_B
    4793226U,	// CMPHI_PPzZI_D
    123849U,	// CMPHI_PPzZI_H
    4793354U,	// CMPHI_PPzZI_S
    74570U,	// CMPHI_PPzZZ_B
    598922U,	// CMPHI_PPzZZ_D
    1131465U,	// CMPHI_PPzZZ_H
    1647626U,	// CMPHI_PPzZZ_S
    598858U,	// CMPHI_WIDE_PPzZZ_B
    99273U,	// CMPHI_WIDE_PPzZZ_H
    599050U,	// CMPHI_WIDE_PPzZZ_S
    4793162U,	// CMPHS_PPzZI_B
    4793226U,	// CMPHS_PPzZI_D
    123849U,	// CMPHS_PPzZI_H
    4793354U,	// CMPHS_PPzZI_S
    74570U,	// CMPHS_PPzZZ_B
    598922U,	// CMPHS_PPzZZ_D
    1131465U,	// CMPHS_PPzZZ_H
    1647626U,	// CMPHS_PPzZZ_S
    598858U,	// CMPHS_WIDE_PPzZZ_B
    99273U,	// CMPHS_WIDE_PPzZZ_H
    599050U,	// CMPHS_WIDE_PPzZZ_S
    2171722U,	// CMPLE_PPzZI_B
    2171786U,	// CMPLE_PPzZI_D
    91081U,	// CMPLE_PPzZI_H
    2171914U,	// CMPLE_PPzZI_S
    598858U,	// CMPLE_WIDE_PPzZZ_B
    99273U,	// CMPLE_WIDE_PPzZZ_H
    599050U,	// CMPLE_WIDE_PPzZZ_S
    4793162U,	// CMPLO_PPzZI_B
    4793226U,	// CMPLO_PPzZI_D
    123849U,	// CMPLO_PPzZI_H
    4793354U,	// CMPLO_PPzZI_S
    598858U,	// CMPLO_WIDE_PPzZZ_B
    99273U,	// CMPLO_WIDE_PPzZZ_H
    599050U,	// CMPLO_WIDE_PPzZZ_S
    4793162U,	// CMPLS_PPzZI_B
    4793226U,	// CMPLS_PPzZI_D
    123849U,	// CMPLS_PPzZI_H
    4793354U,	// CMPLS_PPzZI_S
    598858U,	// CMPLS_WIDE_PPzZZ_B
    99273U,	// CMPLS_WIDE_PPzZZ_H
    599050U,	// CMPLS_WIDE_PPzZZ_S
    2171722U,	// CMPLT_PPzZI_B
    2171786U,	// CMPLT_PPzZI_D
    91081U,	// CMPLT_PPzZI_H
    2171914U,	// CMPLT_PPzZI_S
    598858U,	// CMPLT_WIDE_PPzZZ_B
    99273U,	// CMPLT_WIDE_PPzZZ_H
    599050U,	// CMPLT_WIDE_PPzZZ_S
    2171722U,	// CMPNE_PPzZI_B
    2171786U,	// CMPNE_PPzZI_D
    91081U,	// CMPNE_PPzZI_H
    2171914U,	// CMPNE_PPzZI_S
    74570U,	// CMPNE_PPzZZ_B
    598922U,	// CMPNE_PPzZZ_D
    1131465U,	// CMPNE_PPzZZ_H
    1647626U,	// CMPNE_PPzZZ_S
    598858U,	// CMPNE_WIDE_PPzZZ_B
    99273U,	// CMPNE_WIDE_PPzZZ_H
    599050U,	// CMPNE_WIDE_PPzZZ_S
    0U,	// CMP_SWAP_128
    0U,	// CMP_SWAP_16
    0U,	// CMP_SWAP_32
    0U,	// CMP_SWAP_64
    0U,	// CMP_SWAP_8
    33095U,	// CMTSTv16i8
    261U,	// CMTSTv1i64
    41287U,	// CMTSTv2i32
    8517U,	// CMTSTv2i64
    49480U,	// CMTSTv4i16
    16710U,	// CMTSTv4i32
    24902U,	// CMTSTv8i16
    57672U,	// CMTSTv8i8
    0U,	// CNOT_ZPmZ_B
    64U,	// CNOT_ZPmZ_D
    128U,	// CNOT_ZPmZ_H
    192U,	// CNOT_ZPmZ_S
    16U,	// CNTB_XPiI
    16U,	// CNTD_XPiI
    16U,	// CNTH_XPiI
    837U,	// CNTP_XPP_B
    901U,	// CNTP_XPP_D
    2245U,	// CNTP_XPP_H
    1029U,	// CNTP_XPP_S
    16U,	// CNTW_XPiI
    0U,	// CNT_ZPmZ_B
    64U,	// CNT_ZPmZ_D
    128U,	// CNT_ZPmZ_H
    192U,	// CNT_ZPmZ_S
    1U,	// CNTv16i8
    4U,	// CNTv8i8
    901U,	// COMPACT_ZPZ_D
    1029U,	// COMPACT_ZPZ_S
    2368U,	// CPY_ZPmI_B
    2432U,	// CPY_ZPmI_D
    16U,	// CPY_ZPmI_H
    2496U,	// CPY_ZPmI_S
    2304U,	// CPY_ZPmR_B
    2304U,	// CPY_ZPmR_D
    145U,	// CPY_ZPmR_H
    2304U,	// CPY_ZPmR_S
    2304U,	// CPY_ZPmV_B
    2304U,	// CPY_ZPmV_D
    145U,	// CPY_ZPmV_H
    2304U,	// CPY_ZPmV_S
    2570U,	// CPY_ZPzI_B
    2634U,	// CPY_ZPzI_D
    17U,	// CPY_ZPzI_H
    2698U,	// CPY_ZPzI_S
    2770U,	// CPYi16
    2770U,	// CPYi32
    2771U,	// CPYi64
    2771U,	// CPYi8
    261U,	// CRC32Brr
    261U,	// CRC32CBrr
    261U,	// CRC32CHrr
    261U,	// CRC32CWrr
    261U,	// CRC32CXrr
    261U,	// CRC32Hrr
    261U,	// CRC32Wrr
    261U,	// CRC32Xrr
    3744005U,	// CSELWr
    3744005U,	// CSELXr
    3744005U,	// CSINCWr
    3744005U,	// CSINCXr
    3744005U,	// CSINVWr
    3744005U,	// CSINVXr
    3744005U,	// CSNEGWr
    3744005U,	// CSNEGXr
    1U,	// CTERMEQ_WW
    1U,	// CTERMEQ_XX
    1U,	// CTERMNE_WW
    1U,	// CTERMNE_XX
    0U,	// CompilerBarrier
    0U,	// DCPS1
    0U,	// DCPS2
    0U,	// DCPS3
    0U,	// DECB_XPiI
    0U,	// DECD_XPiI
    0U,	// DECD_ZPiI
    0U,	// DECH_XPiI
    0U,	// DECH_ZPiI
    1U,	// DECP_XP_B
    1U,	// DECP_XP_D
    1U,	// DECP_XP_H
    1U,	// DECP_XP_S
    1U,	// DECP_ZP_D
    0U,	// DECP_ZP_H
    1U,	// DECP_ZP_S
    0U,	// DECW_XPiI
    0U,	// DECW_ZPiI
    0U,	// DMB
    0U,	// DRPS
    0U,	// DSB
    0U,	// DUPM_ZI
    0U,	// DUP_ZI_B
    0U,	// DUP_ZI_D
    0U,	// DUP_ZI_H
    0U,	// DUP_ZI_S
    1U,	// DUP_ZR_B
    1U,	// DUP_ZR_D
    0U,	// DUP_ZR_H
    1U,	// DUP_ZR_S
    20U,	// DUP_ZZI_B
    20U,	// DUP_ZZI_D
    0U,	// DUP_ZZI_H
    0U,	// DUP_ZZI_Q
    20U,	// DUP_ZZI_S
    1U,	// DUPv16i8gpr
    2771U,	// DUPv16i8lane
    1U,	// DUPv2i32gpr
    2770U,	// DUPv2i32lane
    1U,	// DUPv2i64gpr
    2771U,	// DUPv2i64lane
    1U,	// DUPv4i16gpr
    2770U,	// DUPv4i16lane
    1U,	// DUPv4i32gpr
    2770U,	// DUPv4i32lane
    1U,	// DUPv8i16gpr
    2770U,	// DUPv8i16lane
    1U,	// DUPv8i8gpr
    2771U,	// DUPv8i8lane
    0U,	// EONWrr
    517U,	// EONWrs
    0U,	// EONXrr
    517U,	// EONXrs
    36282695U,	// EOR3
    74570U,	// EORS_PPzPP
    837U,	// EORV_VPZ_B
    901U,	// EORV_VPZ_D
    2245U,	// EORV_VPZ_H
    1029U,	// EORV_VPZ_S
    2117U,	// EORWri
    0U,	// EORWrr
    517U,	// EORWrs
    2181U,	// EORXri
    0U,	// EORXrr
    517U,	// EORXrs
    74570U,	// EOR_PPzPP
    2181U,	// EOR_ZI
    74560U,	// EOR_ZPmZ_B
    598912U,	// EOR_ZPmZ_D
    1131465U,	// EOR_ZPmZ_H
    1647616U,	// EOR_ZPmZ_S
    901U,	// EOR_ZZZ
    33095U,	// EORv16i8
    57672U,	// EORv8i8
    0U,	// ERET
    0U,	// ERETAA
    0U,	// ERETAB
    2171141U,	// EXTRWrri
    2171141U,	// EXTRXrri
    4793157U,	// EXT_ZZI
    2203975U,	// EXTv16i8
    131400U,	// EXTv8i8
    0U,	// F128CSEL
    261U,	// FABD16
    261U,	// FABD32
    261U,	// FABD64
    598912U,	// FABD_ZPmZ_D
    1131465U,	// FABD_ZPmZ_H
    1647616U,	// FABD_ZPmZ_S
    41287U,	// FABDv2f32
    8517U,	// FABDv2f64
    49480U,	// FABDv4f16
    16710U,	// FABDv4f32
    24902U,	// FABDv8f16
    1U,	// FABSDr
    1U,	// FABSHr
    1U,	// FABSSr
    64U,	// FABS_ZPmZ_D
    128U,	// FABS_ZPmZ_H
    192U,	// FABS_ZPmZ_S
    2U,	// FABSv2f32
    2U,	// FABSv2f64
    3U,	// FABSv4f16
    3U,	// FABSv4f32
    4U,	// FABSv8f16
    261U,	// FACGE16
    261U,	// FACGE32
    261U,	// FACGE64
    598922U,	// FACGE_PPzZZ_D
    1131465U,	// FACGE_PPzZZ_H
    1647626U,	// FACGE_PPzZZ_S
    41287U,	// FACGEv2f32
    8517U,	// FACGEv2f64
    49480U,	// FACGEv4f16
    16710U,	// FACGEv4f32
    24902U,	// FACGEv8f16
    261U,	// FACGT16
    261U,	// FACGT32
    261U,	// FACGT64
    598922U,	// FACGT_PPzZZ_D
    1131465U,	// FACGT_PPzZZ_H
    1647626U,	// FACGT_PPzZZ_S
    41287U,	// FACGTv2f32
    8517U,	// FACGTv2f64
    49480U,	// FACGTv4f16
    16710U,	// FACGTv4f32
    24902U,	// FACGTv8f16
    598277U,	// FADDA_VPZ_D
    4268293U,	// FADDA_VPZ_H
    1646853U,	// FADDA_VPZ_S
    261U,	// FADDDrr
    261U,	// FADDHrr
    41287U,	// FADDPv2f32
    8517U,	// FADDPv2f64
    20U,	// FADDPv2i16p
    2U,	// FADDPv2i32p
    2U,	// FADDPv2i64p
    49480U,	// FADDPv4f16
    16710U,	// FADDPv4f32
    24902U,	// FADDPv8f16
    261U,	// FADDSrr
    901U,	// FADDV_VPZ_D
    2245U,	// FADDV_VPZ_H
    1029U,	// FADDV_VPZ_S
    5317504U,	// FADD_ZPmI_D
    140233U,	// FADD_ZPmI_H
    5317632U,	// FADD_ZPmI_S
    598912U,	// FADD_ZPmZ_D
    1131465U,	// FADD_ZPmZ_H
    1647616U,	// FADD_ZPmZ_S
    901U,	// FADD_ZZZ_D
    137U,	// FADD_ZZZ_H
    1029U,	// FADD_ZZZ_S
    41287U,	// FADDv2f32
    8517U,	// FADDv2f64
    49480U,	// FADDv4f16
    16710U,	// FADDv4f32
    24902U,	// FADDv8f16
    67707776U,	// FCADD_ZPmZ_D
    106513353U,	// FCADD_ZPmZ_H
    68756480U,	// FCADD_ZPmZ_S
    6439239U,	// FCADDv2f32
    6447429U,	// FCADDv2f64
    6455624U,	// FCADDv4f16
    6463814U,	// FCADDv4f32
    6472006U,	// FCADDv8f16
    3744005U,	// FCCMPDrr
    3744005U,	// FCCMPEDrr
    3744005U,	// FCCMPEHrr
    3744005U,	// FCCMPESrr
    3744005U,	// FCCMPHrr
    3744005U,	// FCCMPSrr
    261U,	// FCMEQ16
    261U,	// FCMEQ32
    261U,	// FCMEQ64
    189322U,	// FCMEQ_PPzZ0_D
    2825U,	// FCMEQ_PPzZ0_H
    189450U,	// FCMEQ_PPzZ0_S
    598922U,	// FCMEQ_PPzZZ_D
    1131465U,	// FCMEQ_PPzZZ_H
    1647626U,	// FCMEQ_PPzZZ_S
    21U,	// FCMEQv1i16rz
    21U,	// FCMEQv1i32rz
    21U,	// FCMEQv1i64rz
    41287U,	// FCMEQv2f32
    8517U,	// FCMEQv2f64
    21U,	// FCMEQv2i32rz
    22U,	// FCMEQv2i64rz
    49480U,	// FCMEQv4f16
    16710U,	// FCMEQv4f32
    22U,	// FCMEQv4i16rz
    23U,	// FCMEQv4i32rz
    24902U,	// FCMEQv8f16
    23U,	// FCMEQv8i16rz
    261U,	// FCMGE16
    261U,	// FCMGE32
    261U,	// FCMGE64
    189322U,	// FCMGE_PPzZ0_D
    2825U,	// FCMGE_PPzZ0_H
    189450U,	// FCMGE_PPzZ0_S
    598922U,	// FCMGE_PPzZZ_D
    1131465U,	// FCMGE_PPzZZ_H
    1647626U,	// FCMGE_PPzZZ_S
    21U,	// FCMGEv1i16rz
    21U,	// FCMGEv1i32rz
    21U,	// FCMGEv1i64rz
    41287U,	// FCMGEv2f32
    8517U,	// FCMGEv2f64
    21U,	// FCMGEv2i32rz
    22U,	// FCMGEv2i64rz
    49480U,	// FCMGEv4f16
    16710U,	// FCMGEv4f32
    22U,	// FCMGEv4i16rz
    23U,	// FCMGEv4i32rz
    24902U,	// FCMGEv8f16
    23U,	// FCMGEv8i16rz
    261U,	// FCMGT16
    261U,	// FCMGT32
    261U,	// FCMGT64
    189322U,	// FCMGT_PPzZ0_D
    2825U,	// FCMGT_PPzZ0_H
    189450U,	// FCMGT_PPzZ0_S
    598922U,	// FCMGT_PPzZZ_D
    1131465U,	// FCMGT_PPzZZ_H
    1647626U,	// FCMGT_PPzZZ_S
    21U,	// FCMGTv1i16rz
    21U,	// FCMGTv1i32rz
    21U,	// FCMGTv1i64rz
    41287U,	// FCMGTv2f32
    8517U,	// FCMGTv2f64
    21U,	// FCMGTv2i32rz
    22U,	// FCMGTv2i64rz
    49480U,	// FCMGTv4f16
    16710U,	// FCMGTv4f32
    22U,	// FCMGTv4i16rz
    23U,	// FCMGTv4i32rz
    24902U,	// FCMGTv8f16
    23U,	// FCMGTv8i16rz
    342433856U,	// FCMLA_ZPmZZ_D
    140182464U,	// FCMLA_ZPmZZ_H
    342958272U,	// FCMLA_ZPmZZ_S
    24U,	// FCMLA_ZZZI_H
    7940952U,	// FCMLA_ZZZI_S
    8536455U,	// FCMLAv2f32
    8544645U,	// FCMLAv2f64
    8552840U,	// FCMLAv4f16
    344662408U,	// FCMLAv4f16_indexed
    8561030U,	// FCMLAv4f32
    344670598U,	// FCMLAv4f32_indexed
    8569222U,	// FCMLAv8f16
    344662406U,	// FCMLAv8f16_indexed
    189322U,	// FCMLE_PPzZ0_D
    2825U,	// FCMLE_PPzZ0_H
    189450U,	// FCMLE_PPzZ0_S
    21U,	// FCMLEv1i16rz
    21U,	// FCMLEv1i32rz
    21U,	// FCMLEv1i64rz
    21U,	// FCMLEv2i32rz
    22U,	// FCMLEv2i64rz
    22U,	// FCMLEv4i16rz
    23U,	// FCMLEv4i32rz
    23U,	// FCMLEv8i16rz
    189322U,	// FCMLT_PPzZ0_D
    2825U,	// FCMLT_PPzZ0_H
    189450U,	// FCMLT_PPzZ0_S
    21U,	// FCMLTv1i16rz
    21U,	// FCMLTv1i32rz
    21U,	// FCMLTv1i64rz
    21U,	// FCMLTv2i32rz
    22U,	// FCMLTv2i64rz
    22U,	// FCMLTv4i16rz
    23U,	// FCMLTv4i32rz
    23U,	// FCMLTv8i16rz
    189322U,	// FCMNE_PPzZ0_D
    2825U,	// FCMNE_PPzZ0_H
    189450U,	// FCMNE_PPzZ0_S
    598922U,	// FCMNE_PPzZZ_D
    1131465U,	// FCMNE_PPzZZ_H
    1647626U,	// FCMNE_PPzZZ_S
    0U,	// FCMPDri
    1U,	// FCMPDrr
    0U,	// FCMPEDri
    1U,	// FCMPEDrr
    0U,	// FCMPEHri
    1U,	// FCMPEHrr
    0U,	// FCMPESri
    1U,	// FCMPESrr
    0U,	// FCMPHri
    1U,	// FCMPHrr
    0U,	// FCMPSri
    1U,	// FCMPSrr
    598922U,	// FCMUO_PPzZZ_D
    1131465U,	// FCMUO_PPzZZ_H
    1647626U,	// FCMUO_PPzZZ_S
    2944U,	// FCPY_ZPmI_D
    25U,	// FCPY_ZPmI_H
    2944U,	// FCPY_ZPmI_S
    3744005U,	// FCSELDrrr
    3744005U,	// FCSELHrrr
    3744005U,	// FCSELSrrr
    1U,	// FCVTASUWDr
    1U,	// FCVTASUWHr
    1U,	// FCVTASUWSr
    1U,	// FCVTASUXDr
    1U,	// FCVTASUXHr
    1U,	// FCVTASUXSr
    1U,	// FCVTASv1f16
    1U,	// FCVTASv1i32
    1U,	// FCVTASv1i64
    2U,	// FCVTASv2f32
    2U,	// FCVTASv2f64
    3U,	// FCVTASv4f16
    3U,	// FCVTASv4f32
    4U,	// FCVTASv8f16
    1U,	// FCVTAUUWDr
    1U,	// FCVTAUUWHr
    1U,	// FCVTAUUWSr
    1U,	// FCVTAUUXDr
    1U,	// FCVTAUUXHr
    1U,	// FCVTAUUXSr
    1U,	// FCVTAUv1f16
    1U,	// FCVTAUv1i32
    1U,	// FCVTAUv1i64
    2U,	// FCVTAUv2f32
    2U,	// FCVTAUv2f64
    3U,	// FCVTAUv4f16
    3U,	// FCVTAUv4f32
    4U,	// FCVTAUv8f16
    1U,	// FCVTDHr
    1U,	// FCVTDSr
    1U,	// FCVTHDr
    1U,	// FCVTHSr
    2U,	// FCVTLv2i32
    3U,	// FCVTLv4i16
    3U,	// FCVTLv4i32
    4U,	// FCVTLv8i16
    1U,	// FCVTMSUWDr
    1U,	// FCVTMSUWHr
    1U,	// FCVTMSUWSr
    1U,	// FCVTMSUXDr
    1U,	// FCVTMSUXHr
    1U,	// FCVTMSUXSr
    1U,	// FCVTMSv1f16
    1U,	// FCVTMSv1i32
    1U,	// FCVTMSv1i64
    2U,	// FCVTMSv2f32
    2U,	// FCVTMSv2f64
    3U,	// FCVTMSv4f16
    3U,	// FCVTMSv4f32
    4U,	// FCVTMSv8f16
    1U,	// FCVTMUUWDr
    1U,	// FCVTMUUWHr
    1U,	// FCVTMUUWSr
    1U,	// FCVTMUUXDr
    1U,	// FCVTMUUXHr
    1U,	// FCVTMUUXSr
    1U,	// FCVTMUv1f16
    1U,	// FCVTMUv1i32
    1U,	// FCVTMUv1i64
    2U,	// FCVTMUv2f32
    2U,	// FCVTMUv2f64
    3U,	// FCVTMUv4f16
    3U,	// FCVTMUv4f32
    4U,	// FCVTMUv8f16
    1U,	// FCVTNSUWDr
    1U,	// FCVTNSUWHr
    1U,	// FCVTNSUWSr
    1U,	// FCVTNSUXDr
    1U,	// FCVTNSUXHr
    1U,	// FCVTNSUXSr
    1U,	// FCVTNSv1f16
    1U,	// FCVTNSv1i32
    1U,	// FCVTNSv1i64
    2U,	// FCVTNSv2f32
    2U,	// FCVTNSv2f64
    3U,	// FCVTNSv4f16
    3U,	// FCVTNSv4f32
    4U,	// FCVTNSv8f16
    1U,	// FCVTNUUWDr
    1U,	// FCVTNUUWHr
    1U,	// FCVTNUUWSr
    1U,	// FCVTNUUXDr
    1U,	// FCVTNUUXHr
    1U,	// FCVTNUUXSr
    1U,	// FCVTNUv1f16
    1U,	// FCVTNUv1i32
    1U,	// FCVTNUv1i64
    2U,	// FCVTNUv2f32
    2U,	// FCVTNUv2f64
    3U,	// FCVTNUv4f16
    3U,	// FCVTNUv4f32
    4U,	// FCVTNUv8f16
    2U,	// FCVTNv2i32
    3U,	// FCVTNv4i16
    2U,	// FCVTNv4i32
    3U,	// FCVTNv8i16
    1U,	// FCVTPSUWDr
    1U,	// FCVTPSUWHr
    1U,	// FCVTPSUWSr
    1U,	// FCVTPSUXDr
    1U,	// FCVTPSUXHr
    1U,	// FCVTPSUXSr
    1U,	// FCVTPSv1f16
    1U,	// FCVTPSv1i32
    1U,	// FCVTPSv1i64
    2U,	// FCVTPSv2f32
    2U,	// FCVTPSv2f64
    3U,	// FCVTPSv4f16
    3U,	// FCVTPSv4f32
    4U,	// FCVTPSv8f16
    1U,	// FCVTPUUWDr
    1U,	// FCVTPUUWHr
    1U,	// FCVTPUUWSr
    1U,	// FCVTPUUXDr
    1U,	// FCVTPUUXHr
    1U,	// FCVTPUUXSr
    1U,	// FCVTPUv1f16
    1U,	// FCVTPUv1i32
    1U,	// FCVTPUv1i64
    2U,	// FCVTPUv2f32
    2U,	// FCVTPUv2f64
    3U,	// FCVTPUv4f16
    3U,	// FCVTPUv4f32
    4U,	// FCVTPUv8f16
    1U,	// FCVTSDr
    1U,	// FCVTSHr
    1U,	// FCVTXNv1i64
    2U,	// FCVTXNv2f32
    2U,	// FCVTXNv4f32
    261U,	// FCVTZSSWDri
    261U,	// FCVTZSSWHri
    261U,	// FCVTZSSWSri
    261U,	// FCVTZSSXDri
    261U,	// FCVTZSSXHri
    261U,	// FCVTZSSXSri
    1U,	// FCVTZSUWDr
    1U,	// FCVTZSUWHr
    1U,	// FCVTZSUWSr
    1U,	// FCVTZSUXDr
    1U,	// FCVTZSUXHr
    1U,	// FCVTZSUXSr
    64U,	// FCVTZS_ZPmZ_DtoD
    64U,	// FCVTZS_ZPmZ_DtoS
    3008U,	// FCVTZS_ZPmZ_HtoD
    128U,	// FCVTZS_ZPmZ_HtoH
    3008U,	// FCVTZS_ZPmZ_HtoS
    192U,	// FCVTZS_ZPmZ_StoD
    192U,	// FCVTZS_ZPmZ_StoS
    261U,	// FCVTZSd
    261U,	// FCVTZSh
    261U,	// FCVTZSs
    1U,	// FCVTZSv1f16
    1U,	// FCVTZSv1i32
    1U,	// FCVTZSv1i64
    2U,	// FCVTZSv2f32
    2U,	// FCVTZSv2f64
    263U,	// FCVTZSv2i32_shift
    261U,	// FCVTZSv2i64_shift
    3U,	// FCVTZSv4f16
    3U,	// FCVTZSv4f32
    264U,	// FCVTZSv4i16_shift
    262U,	// FCVTZSv4i32_shift
    4U,	// FCVTZSv8f16
    262U,	// FCVTZSv8i16_shift
    261U,	// FCVTZUSWDri
    261U,	// FCVTZUSWHri
    261U,	// FCVTZUSWSri
    261U,	// FCVTZUSXDri
    261U,	// FCVTZUSXHri
    261U,	// FCVTZUSXSri
    1U,	// FCVTZUUWDr
    1U,	// FCVTZUUWHr
    1U,	// FCVTZUUWSr
    1U,	// FCVTZUUXDr
    1U,	// FCVTZUUXHr
    1U,	// FCVTZUUXSr
    64U,	// FCVTZU_ZPmZ_DtoD
    64U,	// FCVTZU_ZPmZ_DtoS
    3008U,	// FCVTZU_ZPmZ_HtoD
    128U,	// FCVTZU_ZPmZ_HtoH
    3008U,	// FCVTZU_ZPmZ_HtoS
    192U,	// FCVTZU_ZPmZ_StoD
    192U,	// FCVTZU_ZPmZ_StoS
    261U,	// FCVTZUd
    261U,	// FCVTZUh
    261U,	// FCVTZUs
    1U,	// FCVTZUv1f16
    1U,	// FCVTZUv1i32
    1U,	// FCVTZUv1i64
    2U,	// FCVTZUv2f32
    2U,	// FCVTZUv2f64
    263U,	// FCVTZUv2i32_shift
    261U,	// FCVTZUv2i64_shift
    3U,	// FCVTZUv4f16
    3U,	// FCVTZUv4f32
    264U,	// FCVTZUv4i16_shift
    262U,	// FCVTZUv4i32_shift
    4U,	// FCVTZUv8f16
    262U,	// FCVTZUv8i16_shift
    153U,	// FCVT_ZPmZ_DtoH
    64U,	// FCVT_ZPmZ_DtoS
    3008U,	// FCVT_ZPmZ_HtoD
    3008U,	// FCVT_ZPmZ_HtoS
    192U,	// FCVT_ZPmZ_StoD
    152U,	// FCVT_ZPmZ_StoH
    261U,	// FDIVDrr
    261U,	// FDIVHrr
    598912U,	// FDIVR_ZPmZ_D
    1131465U,	// FDIVR_ZPmZ_H
    1647616U,	// FDIVR_ZPmZ_S
    261U,	// FDIVSrr
    598912U,	// FDIV_ZPmZ_D
    1131465U,	// FDIV_ZPmZ_H
    1647616U,	// FDIV_ZPmZ_S
    41287U,	// FDIVv2f32
    8517U,	// FDIVv2f64
    49480U,	// FDIVv4f16
    16710U,	// FDIVv4f32
    24902U,	// FDIVv8f16
    0U,	// FDUP_ZI_D
    0U,	// FDUP_ZI_H
    0U,	// FDUP_ZI_S
    1U,	// FEXPA_ZZ_D
    0U,	// FEXPA_ZZ_H
    1U,	// FEXPA_ZZ_S
    1U,	// FJCVTZS
    2171141U,	// FMADDDrrr
    2171141U,	// FMADDHrrr
    2171141U,	// FMADDSrrr
    6889536U,	// FMAD_ZPmZZ_D
    1246144U,	// FMAD_ZPmZZ_H
    7413952U,	// FMAD_ZPmZZ_S
    261U,	// FMAXDrr
    261U,	// FMAXHrr
    261U,	// FMAXNMDrr
    261U,	// FMAXNMHrr
    41287U,	// FMAXNMPv2f32
    8517U,	// FMAXNMPv2f64
    20U,	// FMAXNMPv2i16p
    2U,	// FMAXNMPv2i32p
    2U,	// FMAXNMPv2i64p
    49480U,	// FMAXNMPv4f16
    16710U,	// FMAXNMPv4f32
    24902U,	// FMAXNMPv8f16
    261U,	// FMAXNMSrr
    901U,	// FMAXNMV_VPZ_D
    2245U,	// FMAXNMV_VPZ_H
    1029U,	// FMAXNMV_VPZ_S
    3U,	// FMAXNMVv4i16v
    3U,	// FMAXNMVv4i32v
    4U,	// FMAXNMVv8i16v
    9511808U,	// FMAXNM_ZPmI_D
    222153U,	// FMAXNM_ZPmI_H
    9511936U,	// FMAXNM_ZPmI_S
    598912U,	// FMAXNM_ZPmZ_D
    1131465U,	// FMAXNM_ZPmZ_H
    1647616U,	// FMAXNM_ZPmZ_S
    41287U,	// FMAXNMv2f32
    8517U,	// FMAXNMv2f64
    49480U,	// FMAXNMv4f16
    16710U,	// FMAXNMv4f32
    24902U,	// FMAXNMv8f16
    41287U,	// FMAXPv2f32
    8517U,	// FMAXPv2f64
    20U,	// FMAXPv2i16p
    2U,	// FMAXPv2i32p
    2U,	// FMAXPv2i64p
    49480U,	// FMAXPv4f16
    16710U,	// FMAXPv4f32
    24902U,	// FMAXPv8f16
    261U,	// FMAXSrr
    901U,	// FMAXV_VPZ_D
    2245U,	// FMAXV_VPZ_H
    1029U,	// FMAXV_VPZ_S
    3U,	// FMAXVv4i16v
    3U,	// FMAXVv4i32v
    4U,	// FMAXVv8i16v
    9511808U,	// FMAX_ZPmI_D
    222153U,	// FMAX_ZPmI_H
    9511936U,	// FMAX_ZPmI_S
    598912U,	// FMAX_ZPmZ_D
    1131465U,	// FMAX_ZPmZ_H
    1647616U,	// FMAX_ZPmZ_S
    41287U,	// FMAXv2f32
    8517U,	// FMAXv2f64
    49480U,	// FMAXv4f16
    16710U,	// FMAXv4f32
    24902U,	// FMAXv8f16
    261U,	// FMINDrr
    261U,	// FMINHrr
    261U,	// FMINNMDrr
    261U,	// FMINNMHrr
    41287U,	// FMINNMPv2f32
    8517U,	// FMINNMPv2f64
    20U,	// FMINNMPv2i16p
    2U,	// FMINNMPv2i32p
    2U,	// FMINNMPv2i64p
    49480U,	// FMINNMPv4f16
    16710U,	// FMINNMPv4f32
    24902U,	// FMINNMPv8f16
    261U,	// FMINNMSrr
    901U,	// FMINNMV_VPZ_D
    2245U,	// FMINNMV_VPZ_H
    1029U,	// FMINNMV_VPZ_S
    3U,	// FMINNMVv4i16v
    3U,	// FMINNMVv4i32v
    4U,	// FMINNMVv8i16v
    9511808U,	// FMINNM_ZPmI_D
    222153U,	// FMINNM_ZPmI_H
    9511936U,	// FMINNM_ZPmI_S
    598912U,	// FMINNM_ZPmZ_D
    1131465U,	// FMINNM_ZPmZ_H
    1647616U,	// FMINNM_ZPmZ_S
    41287U,	// FMINNMv2f32
    8517U,	// FMINNMv2f64
    49480U,	// FMINNMv4f16
    16710U,	// FMINNMv4f32
    24902U,	// FMINNMv8f16
    41287U,	// FMINPv2f32
    8517U,	// FMINPv2f64
    20U,	// FMINPv2i16p
    2U,	// FMINPv2i32p
    2U,	// FMINPv2i64p
    49480U,	// FMINPv4f16
    16710U,	// FMINPv4f32
    24902U,	// FMINPv8f16
    261U,	// FMINSrr
    901U,	// FMINV_VPZ_D
    2245U,	// FMINV_VPZ_H
    1029U,	// FMINV_VPZ_S
    3U,	// FMINVv4i16v
    3U,	// FMINVv4i32v
    4U,	// FMINVv8i16v
    9511808U,	// FMIN_ZPmI_D
    222153U,	// FMIN_ZPmI_H
    9511936U,	// FMIN_ZPmI_S
    598912U,	// FMIN_ZPmZ_D
    1131465U,	// FMIN_ZPmZ_H
    1647616U,	// FMIN_ZPmZ_S
    41287U,	// FMINv2f32
    8517U,	// FMINv2f64
    49480U,	// FMINv4f16
    16710U,	// FMINv4f32
    24902U,	// FMINv8f16
    6889536U,	// FMLA_ZPmZZ_D
    1246144U,	// FMLA_ZPmZZ_H
    7413952U,	// FMLA_ZPmZZ_S
    2905U,	// FMLA_ZZZI_D
    0U,	// FMLA_ZZZI_H
    2904U,	// FMLA_ZZZI_S
    9118085U,	// FMLAv1i16_indexed
    9126277U,	// FMLAv1i32_indexed
    9142661U,	// FMLAv1i64_indexed
    41351U,	// FMLAv2f32
    8581U,	// FMLAv2f64
    9126279U,	// FMLAv2i32_indexed
    9142661U,	// FMLAv2i64_indexed
    49544U,	// FMLAv4f16
    16774U,	// FMLAv4f32
    9118088U,	// FMLAv4i16_indexed
    9126278U,	// FMLAv4i32_indexed
    24966U,	// FMLAv8f16
    9118086U,	// FMLAv8i16_indexed
    6889536U,	// FMLS_ZPmZZ_D
    1246144U,	// FMLS_ZPmZZ_H
    7413952U,	// FMLS_ZPmZZ_S
    2905U,	// FMLS_ZZZI_D
    0U,	// FMLS_ZZZI_H
    2904U,	// FMLS_ZZZI_S
    9118085U,	// FMLSv1i16_indexed
    9126277U,	// FMLSv1i32_indexed
    9142661U,	// FMLSv1i64_indexed
    41351U,	// FMLSv2f32
    8581U,	// FMLSv2f64
    9126279U,	// FMLSv2i32_indexed
    9142661U,	// FMLSv2i64_indexed
    49544U,	// FMLSv4f16
    16774U,	// FMLSv4f32
    9118088U,	// FMLSv4i16_indexed
    9126278U,	// FMLSv4i32_indexed
    24966U,	// FMLSv8f16
    9118086U,	// FMLSv8i16_indexed
    0U,	// FMOVD0
    2771U,	// FMOVDXHighr
    1U,	// FMOVDXr
    0U,	// FMOVDi
    1U,	// FMOVDr
    0U,	// FMOVH0
    1U,	// FMOVHWr
    1U,	// FMOVHXr
    0U,	// FMOVHi
    1U,	// FMOVHr
    0U,	// FMOVS0
    1U,	// FMOVSWr
    0U,	// FMOVSi
    1U,	// FMOVSr
    1U,	// FMOVWHr
    1U,	// FMOVWSr
    1U,	// FMOVXDHighr
    1U,	// FMOVXDr
    1U,	// FMOVXHr
    0U,	// FMOVv2f32_ns
    0U,	// FMOVv2f64_ns
    0U,	// FMOVv4f16_ns
    0U,	// FMOVv4f32_ns
    0U,	// FMOVv8f16_ns
    6889536U,	// FMSB_ZPmZZ_D
    1246144U,	// FMSB_ZPmZZ_H
    7413952U,	// FMSB_ZPmZZ_S
    2171141U,	// FMSUBDrrr
    2171141U,	// FMSUBHrrr
    2171141U,	// FMSUBSrrr
    261U,	// FMULDrr
    261U,	// FMULHrr
    261U,	// FMULSrr
    261U,	// FMULX16
    261U,	// FMULX32
    261U,	// FMULX64
    598912U,	// FMULX_ZPmZ_D
    1131465U,	// FMULX_ZPmZ_H
    1647616U,	// FMULX_ZPmZ_S
    10166597U,	// FMULXv1i16_indexed
    10174789U,	// FMULXv1i32_indexed
    10191173U,	// FMULXv1i64_indexed
    41287U,	// FMULXv2f32
    8517U,	// FMULXv2f64
    10174791U,	// FMULXv2i32_indexed
    10191173U,	// FMULXv2i64_indexed
    49480U,	// FMULXv4f16
    16710U,	// FMULXv4f32
    10166600U,	// FMULXv4i16_indexed
    10174790U,	// FMULXv4i32_indexed
    24902U,	// FMULXv8f16
    10166598U,	// FMULXv8i16_indexed
    10560384U,	// FMUL_ZPmI_D
    238537U,	// FMUL_ZPmI_H
    10560512U,	// FMUL_ZPmI_S
    598912U,	// FMUL_ZPmZ_D
    1131465U,	// FMUL_ZPmZ_H
    1647616U,	// FMUL_ZPmZ_S
    246661U,	// FMUL_ZZZI_D
    3081U,	// FMUL_ZZZI_H
    246789U,	// FMUL_ZZZI_S
    901U,	// FMUL_ZZZ_D
    137U,	// FMUL_ZZZ_H
    1029U,	// FMUL_ZZZ_S
    10166597U,	// FMULv1i16_indexed
    10174789U,	// FMULv1i32_indexed
    10191173U,	// FMULv1i64_indexed
    41287U,	// FMULv2f32
    8517U,	// FMULv2f64
    10174791U,	// FMULv2i32_indexed
    10191173U,	// FMULv2i64_indexed
    49480U,	// FMULv4f16
    16710U,	// FMULv4f32
    10166600U,	// FMULv4i16_indexed
    10174790U,	// FMULv4i32_indexed
    24902U,	// FMULv8f16
    10166598U,	// FMULv8i16_indexed
    1U,	// FNEGDr
    1U,	// FNEGHr
    1U,	// FNEGSr
    64U,	// FNEG_ZPmZ_D
    128U,	// FNEG_ZPmZ_H
    192U,	// FNEG_ZPmZ_S
    2U,	// FNEGv2f32
    2U,	// FNEGv2f64
    3U,	// FNEGv4f16
    3U,	// FNEGv4f32
    4U,	// FNEGv8f16
    2171141U,	// FNMADDDrrr
    2171141U,	// FNMADDHrrr
    2171141U,	// FNMADDSrrr
    6889536U,	// FNMAD_ZPmZZ_D
    1246144U,	// FNMAD_ZPmZZ_H
    7413952U,	// FNMAD_ZPmZZ_S
    6889536U,	// FNMLA_ZPmZZ_D
    1246144U,	// FNMLA_ZPmZZ_H
    7413952U,	// FNMLA_ZPmZZ_S
    6889536U,	// FNMLS_ZPmZZ_D
    1246144U,	// FNMLS_ZPmZZ_H
    7413952U,	// FNMLS_ZPmZZ_S
    6889536U,	// FNMSB_ZPmZZ_D
    1246144U,	// FNMSB_ZPmZZ_H
    7413952U,	// FNMSB_ZPmZZ_S
    2171141U,	// FNMSUBDrrr
    2171141U,	// FNMSUBHrrr
    2171141U,	// FNMSUBSrrr
    261U,	// FNMULDrr
    261U,	// FNMULHrr
    261U,	// FNMULSrr
    1U,	// FRECPE_ZZ_D
    0U,	// FRECPE_ZZ_H
    1U,	// FRECPE_ZZ_S
    1U,	// FRECPEv1f16
    1U,	// FRECPEv1i32
    1U,	// FRECPEv1i64
    2U,	// FRECPEv2f32
    2U,	// FRECPEv2f64
    3U,	// FRECPEv4f16
    3U,	// FRECPEv4f32
    4U,	// FRECPEv8f16
    261U,	// FRECPS16
    261U,	// FRECPS32
    261U,	// FRECPS64
    901U,	// FRECPS_ZZZ_D
    137U,	// FRECPS_ZZZ_H
    1029U,	// FRECPS_ZZZ_S
    41287U,	// FRECPSv2f32
    8517U,	// FRECPSv2f64
    49480U,	// FRECPSv4f16
    16710U,	// FRECPSv4f32
    24902U,	// FRECPSv8f16
    64U,	// FRECPX_ZPmZ_D
    128U,	// FRECPX_ZPmZ_H
    192U,	// FRECPX_ZPmZ_S
    1U,	// FRECPXv1f16
    1U,	// FRECPXv1i32
    1U,	// FRECPXv1i64
    1U,	// FRINTADr
    1U,	// FRINTAHr
    1U,	// FRINTASr
    64U,	// FRINTA_ZPmZ_D
    128U,	// FRINTA_ZPmZ_H
    192U,	// FRINTA_ZPmZ_S
    2U,	// FRINTAv2f32
    2U,	// FRINTAv2f64
    3U,	// FRINTAv4f16
    3U,	// FRINTAv4f32
    4U,	// FRINTAv8f16
    1U,	// FRINTIDr
    1U,	// FRINTIHr
    1U,	// FRINTISr
    64U,	// FRINTI_ZPmZ_D
    128U,	// FRINTI_ZPmZ_H
    192U,	// FRINTI_ZPmZ_S
    2U,	// FRINTIv2f32
    2U,	// FRINTIv2f64
    3U,	// FRINTIv4f16
    3U,	// FRINTIv4f32
    4U,	// FRINTIv8f16
    1U,	// FRINTMDr
    1U,	// FRINTMHr
    1U,	// FRINTMSr
    64U,	// FRINTM_ZPmZ_D
    128U,	// FRINTM_ZPmZ_H
    192U,	// FRINTM_ZPmZ_S
    2U,	// FRINTMv2f32
    2U,	// FRINTMv2f64
    3U,	// FRINTMv4f16
    3U,	// FRINTMv4f32
    4U,	// FRINTMv8f16
    1U,	// FRINTNDr
    1U,	// FRINTNHr
    1U,	// FRINTNSr
    64U,	// FRINTN_ZPmZ_D
    128U,	// FRINTN_ZPmZ_H
    192U,	// FRINTN_ZPmZ_S
    2U,	// FRINTNv2f32
    2U,	// FRINTNv2f64
    3U,	// FRINTNv4f16
    3U,	// FRINTNv4f32
    4U,	// FRINTNv8f16
    1U,	// FRINTPDr
    1U,	// FRINTPHr
    1U,	// FRINTPSr
    64U,	// FRINTP_ZPmZ_D
    128U,	// FRINTP_ZPmZ_H
    192U,	// FRINTP_ZPmZ_S
    2U,	// FRINTPv2f32
    2U,	// FRINTPv2f64
    3U,	// FRINTPv4f16
    3U,	// FRINTPv4f32
    4U,	// FRINTPv8f16
    1U,	// FRINTXDr
    1U,	// FRINTXHr
    1U,	// FRINTXSr
    64U,	// FRINTX_ZPmZ_D
    128U,	// FRINTX_ZPmZ_H
    192U,	// FRINTX_ZPmZ_S
    2U,	// FRINTXv2f32
    2U,	// FRINTXv2f64
    3U,	// FRINTXv4f16
    3U,	// FRINTXv4f32
    4U,	// FRINTXv8f16
    1U,	// FRINTZDr
    1U,	// FRINTZHr
    1U,	// FRINTZSr
    64U,	// FRINTZ_ZPmZ_D
    128U,	// FRINTZ_ZPmZ_H
    192U,	// FRINTZ_ZPmZ_S
    2U,	// FRINTZv2f32
    2U,	// FRINTZv2f64
    3U,	// FRINTZv4f16
    3U,	// FRINTZv4f32
    4U,	// FRINTZv8f16
    1U,	// FRSQRTE_ZZ_D
    0U,	// FRSQRTE_ZZ_H
    1U,	// FRSQRTE_ZZ_S
    1U,	// FRSQRTEv1f16
    1U,	// FRSQRTEv1i32
    1U,	// FRSQRTEv1i64
    2U,	// FRSQRTEv2f32
    2U,	// FRSQRTEv2f64
    3U,	// FRSQRTEv4f16
    3U,	// FRSQRTEv4f32
    4U,	// FRSQRTEv8f16
    261U,	// FRSQRTS16
    261U,	// FRSQRTS32
    261U,	// FRSQRTS64
    901U,	// FRSQRTS_ZZZ_D
    137U,	// FRSQRTS_ZZZ_H
    1029U,	// FRSQRTS_ZZZ_S
    41287U,	// FRSQRTSv2f32
    8517U,	// FRSQRTSv2f64
    49480U,	// FRSQRTSv4f16
    16710U,	// FRSQRTSv4f32
    24902U,	// FRSQRTSv8f16
    598912U,	// FSCALE_ZPmZ_D
    1131465U,	// FSCALE_ZPmZ_H
    1647616U,	// FSCALE_ZPmZ_S
    1U,	// FSQRTDr
    1U,	// FSQRTHr
    1U,	// FSQRTSr
    64U,	// FSQRT_ZPmZ_D
    128U,	// FSQRT_ZPmZ_H
    192U,	// FSQRT_ZPmZ_S
    2U,	// FSQRTv2f32
    2U,	// FSQRTv2f64
    3U,	// FSQRTv4f16
    3U,	// FSQRTv4f32
    4U,	// FSQRTv8f16
    261U,	// FSUBDrr
    261U,	// FSUBHrr
    5317504U,	// FSUBR_ZPmI_D
    140233U,	// FSUBR_ZPmI_H
    5317632U,	// FSUBR_ZPmI_S
    598912U,	// FSUBR_ZPmZ_D
    1131465U,	// FSUBR_ZPmZ_H
    1647616U,	// FSUBR_ZPmZ_S
    261U,	// FSUBSrr
    5317504U,	// FSUB_ZPmI_D
    140233U,	// FSUB_ZPmI_H
    5317632U,	// FSUB_ZPmI_S
    598912U,	// FSUB_ZPmZ_D
    1131465U,	// FSUB_ZPmZ_H
    1647616U,	// FSUB_ZPmZ_S
    901U,	// FSUB_ZZZ_D
    137U,	// FSUB_ZZZ_H
    1029U,	// FSUB_ZZZ_S
    41287U,	// FSUBv2f32
    8517U,	// FSUBv2f64
    49480U,	// FSUBv4f16
    16710U,	// FSUBv4f32
    24902U,	// FSUBv8f16
    2171781U,	// FTMAD_ZZI_D
    91081U,	// FTMAD_ZZI_H
    2171909U,	// FTMAD_ZZI_S
    901U,	// FTSMUL_ZZZ_D
    137U,	// FTSMUL_ZZZ_H
    1029U,	// FTSMUL_ZZZ_S
    901U,	// FTSSEL_ZZZ_D
    137U,	// FTSSEL_ZZZ_H
    1029U,	// FTSSEL_ZZZ_S
    3153U,	// GLD1B_D_IMM_REAL
    3205U,	// GLD1B_D_REAL
    3269U,	// GLD1B_D_SXTW_REAL
    3333U,	// GLD1B_D_UXTW_REAL
    3153U,	// GLD1B_S_IMM_REAL
    3397U,	// GLD1B_S_SXTW_REAL
    3461U,	// GLD1B_S_UXTW_REAL
    26U,	// GLD1D_IMM_REAL
    3205U,	// GLD1D_REAL
    3525U,	// GLD1D_SCALED_REAL
    3269U,	// GLD1D_SXTW_REAL
    3589U,	// GLD1D_SXTW_SCALED_REAL
    3333U,	// GLD1D_UXTW_REAL
    3653U,	// GLD1D_UXTW_SCALED_REAL
    26U,	// GLD1H_D_IMM_REAL
    3205U,	// GLD1H_D_REAL
    3717U,	// GLD1H_D_SCALED_REAL
    3269U,	// GLD1H_D_SXTW_REAL
    3781U,	// GLD1H_D_SXTW_SCALED_REAL
    3333U,	// GLD1H_D_UXTW_REAL
    3845U,	// GLD1H_D_UXTW_SCALED_REAL
    26U,	// GLD1H_S_IMM_REAL
    3397U,	// GLD1H_S_SXTW_REAL
    3909U,	// GLD1H_S_SXTW_SCALED_REAL
    3461U,	// GLD1H_S_UXTW_REAL
    3973U,	// GLD1H_S_UXTW_SCALED_REAL
    3153U,	// GLD1SB_D_IMM_REAL
    3205U,	// GLD1SB_D_REAL
    3269U,	// GLD1SB_D_SXTW_REAL
    3333U,	// GLD1SB_D_UXTW_REAL
    3153U,	// GLD1SB_S_IMM_REAL
    3397U,	// GLD1SB_S_SXTW_REAL
    3461U,	// GLD1SB_S_UXTW_REAL
    26U,	// GLD1SH_D_IMM_REAL
    3205U,	// GLD1SH_D_REAL
    3717U,	// GLD1SH_D_SCALED_REAL
    3269U,	// GLD1SH_D_SXTW_REAL
    3781U,	// GLD1SH_D_SXTW_SCALED_REAL
    3333U,	// GLD1SH_D_UXTW_REAL
    3845U,	// GLD1SH_D_UXTW_SCALED_REAL
    26U,	// GLD1SH_S_IMM_REAL
    3397U,	// GLD1SH_S_SXTW_REAL
    3909U,	// GLD1SH_S_SXTW_SCALED_REAL
    3461U,	// GLD1SH_S_UXTW_REAL
    3973U,	// GLD1SH_S_UXTW_SCALED_REAL
    27U,	// GLD1SW_D_IMM_REAL
    3205U,	// GLD1SW_D_REAL
    4037U,	// GLD1SW_D_SCALED_REAL
    3269U,	// GLD1SW_D_SXTW_REAL
    4101U,	// GLD1SW_D_SXTW_SCALED_REAL
    3333U,	// GLD1SW_D_UXTW_REAL
    4165U,	// GLD1SW_D_UXTW_SCALED_REAL
    27U,	// GLD1W_D_IMM_REAL
    3205U,	// GLD1W_D_REAL
    4037U,	// GLD1W_D_SCALED_REAL
    3269U,	// GLD1W_D_SXTW_REAL
    4101U,	// GLD1W_D_SXTW_SCALED_REAL
    3333U,	// GLD1W_D_UXTW_REAL
    4165U,	// GLD1W_D_UXTW_SCALED_REAL
    27U,	// GLD1W_IMM_REAL
    3397U,	// GLD1W_SXTW_REAL
    4229U,	// GLD1W_SXTW_SCALED_REAL
    3461U,	// GLD1W_UXTW_REAL
    4293U,	// GLD1W_UXTW_SCALED_REAL
    3153U,	// GLDFF1B_D_IMM_REAL
    3205U,	// GLDFF1B_D_REAL
    3269U,	// GLDFF1B_D_SXTW_REAL
    3333U,	// GLDFF1B_D_UXTW_REAL
    3153U,	// GLDFF1B_S_IMM_REAL
    3397U,	// GLDFF1B_S_SXTW_REAL
    3461U,	// GLDFF1B_S_UXTW_REAL
    26U,	// GLDFF1D_IMM_REAL
    3205U,	// GLDFF1D_REAL
    3525U,	// GLDFF1D_SCALED_REAL
    3269U,	// GLDFF1D_SXTW_REAL
    3589U,	// GLDFF1D_SXTW_SCALED_REAL
    3333U,	// GLDFF1D_UXTW_REAL
    3653U,	// GLDFF1D_UXTW_SCALED_REAL
    26U,	// GLDFF1H_D_IMM_REAL
    3205U,	// GLDFF1H_D_REAL
    3717U,	// GLDFF1H_D_SCALED_REAL
    3269U,	// GLDFF1H_D_SXTW_REAL
    3781U,	// GLDFF1H_D_SXTW_SCALED_REAL
    3333U,	// GLDFF1H_D_UXTW_REAL
    3845U,	// GLDFF1H_D_UXTW_SCALED_REAL
    26U,	// GLDFF1H_S_IMM_REAL
    3397U,	// GLDFF1H_S_SXTW_REAL
    3909U,	// GLDFF1H_S_SXTW_SCALED_REAL
    3461U,	// GLDFF1H_S_UXTW_REAL
    3973U,	// GLDFF1H_S_UXTW_SCALED_REAL
    3153U,	// GLDFF1SB_D_IMM_REAL
    3205U,	// GLDFF1SB_D_REAL
    3269U,	// GLDFF1SB_D_SXTW_REAL
    3333U,	// GLDFF1SB_D_UXTW_REAL
    3153U,	// GLDFF1SB_S_IMM_REAL
    3397U,	// GLDFF1SB_S_SXTW_REAL
    3461U,	// GLDFF1SB_S_UXTW_REAL
    26U,	// GLDFF1SH_D_IMM_REAL
    3205U,	// GLDFF1SH_D_REAL
    3717U,	// GLDFF1SH_D_SCALED_REAL
    3269U,	// GLDFF1SH_D_SXTW_REAL
    3781U,	// GLDFF1SH_D_SXTW_SCALED_REAL
    3333U,	// GLDFF1SH_D_UXTW_REAL
    3845U,	// GLDFF1SH_D_UXTW_SCALED_REAL
    26U,	// GLDFF1SH_S_IMM_REAL
    3397U,	// GLDFF1SH_S_SXTW_REAL
    3909U,	// GLDFF1SH_S_SXTW_SCALED_REAL
    3461U,	// GLDFF1SH_S_UXTW_REAL
    3973U,	// GLDFF1SH_S_UXTW_SCALED_REAL
    27U,	// GLDFF1SW_D_IMM_REAL
    3205U,	// GLDFF1SW_D_REAL
    4037U,	// GLDFF1SW_D_SCALED_REAL
    3269U,	// GLDFF1SW_D_SXTW_REAL
    4101U,	// GLDFF1SW_D_SXTW_SCALED_REAL
    3333U,	// GLDFF1SW_D_UXTW_REAL
    4165U,	// GLDFF1SW_D_UXTW_SCALED_REAL
    27U,	// GLDFF1W_D_IMM_REAL
    3205U,	// GLDFF1W_D_REAL
    4037U,	// GLDFF1W_D_SCALED_REAL
    3269U,	// GLDFF1W_D_SXTW_REAL
    4101U,	// GLDFF1W_D_SXTW_SCALED_REAL
    3333U,	// GLDFF1W_D_UXTW_REAL
    4165U,	// GLDFF1W_D_UXTW_SCALED_REAL
    27U,	// GLDFF1W_IMM_REAL
    3397U,	// GLDFF1W_SXTW_REAL
    4229U,	// GLDFF1W_SXTW_SCALED_REAL
    3461U,	// GLDFF1W_UXTW_REAL
    4293U,	// GLDFF1W_UXTW_SCALED_REAL
    0U,	// HINT
    0U,	// HLT
    0U,	// HVC
    0U,	// INCB_XPiI
    0U,	// INCD_XPiI
    0U,	// INCD_ZPiI
    0U,	// INCH_XPiI
    0U,	// INCH_ZPiI
    1U,	// INCP_XP_B
    1U,	// INCP_XP_D
    1U,	// INCP_XP_H
    1U,	// INCP_XP_S
    1U,	// INCP_ZP_D
    0U,	// INCP_ZP_H
    1U,	// INCP_ZP_S
    0U,	// INCW_XPiI
    0U,	// INCW_ZPiI
    261U,	// INDEX_II_B
    261U,	// INDEX_II_D
    11U,	// INDEX_II_H
    261U,	// INDEX_II_S
    261U,	// INDEX_IR_B
    261U,	// INDEX_IR_D
    11U,	// INDEX_IR_H
    261U,	// INDEX_IR_S
    261U,	// INDEX_RI_B
    261U,	// INDEX_RI_D
    11U,	// INDEX_RI_H
    261U,	// INDEX_RI_S
    261U,	// INDEX_RR_B
    261U,	// INDEX_RR_D
    11U,	// INDEX_RR_H
    261U,	// INDEX_RR_S
    1U,	// INSR_ZR_B
    1U,	// INSR_ZR_D
    0U,	// INSR_ZR_H
    1U,	// INSR_ZR_S
    1U,	// INSR_ZV_B
    1U,	// INSR_ZV_D
    0U,	// INSR_ZV_H
    1U,	// INSR_ZV_S
    1U,	// INSvi16gpr
    2898U,	// INSvi16lane
    1U,	// INSvi32gpr
    2898U,	// INSvi32lane
    1U,	// INSvi64gpr
    2899U,	// INSvi64lane
    1U,	// INSvi8gpr
    2899U,	// INSvi8lane
    0U,	// ISB
    837U,	// LASTA_RPZ_B
    901U,	// LASTA_RPZ_D
    2245U,	// LASTA_RPZ_H
    1029U,	// LASTA_RPZ_S
    837U,	// LASTA_VPZ_B
    901U,	// LASTA_VPZ_D
    2245U,	// LASTA_VPZ_H
    1029U,	// LASTA_VPZ_S
    837U,	// LASTB_RPZ_B
    901U,	// LASTB_RPZ_D
    2245U,	// LASTB_RPZ_H
    1029U,	// LASTB_RPZ_S
    837U,	// LASTB_VPZ_B
    901U,	// LASTB_VPZ_D
    2245U,	// LASTB_VPZ_H
    1029U,	// LASTB_VPZ_S
    4357U,	// LD1B
    4357U,	// LD1B_D
    256261U,	// LD1B_D_IMM_REAL
    4357U,	// LD1B_H
    256261U,	// LD1B_H_IMM_REAL
    256261U,	// LD1B_IMM_REAL
    4357U,	// LD1B_S
    256261U,	// LD1B_S_IMM_REAL
    4421U,	// LD1D
    256261U,	// LD1D_IMM_REAL
    0U,	// LD1Fourv16b
    0U,	// LD1Fourv16b_POST
    0U,	// LD1Fourv1d
    0U,	// LD1Fourv1d_POST
    0U,	// LD1Fourv2d
    0U,	// LD1Fourv2d_POST
    0U,	// LD1Fourv2s
    0U,	// LD1Fourv2s_POST
    0U,	// LD1Fourv4h
    0U,	// LD1Fourv4h_POST
    0U,	// LD1Fourv4s
    0U,	// LD1Fourv4s_POST
    0U,	// LD1Fourv8b
    0U,	// LD1Fourv8b_POST
    0U,	// LD1Fourv8h
    0U,	// LD1Fourv8h_POST
    4485U,	// LD1H
    4485U,	// LD1H_D
    256261U,	// LD1H_D_IMM_REAL
    256261U,	// LD1H_IMM_REAL
    4485U,	// LD1H_S
    256261U,	// LD1H_S_IMM_REAL
    0U,	// LD1Onev16b
    0U,	// LD1Onev16b_POST
    0U,	// LD1Onev1d
    0U,	// LD1Onev1d_POST
    0U,	// LD1Onev2d
    0U,	// LD1Onev2d_POST
    0U,	// LD1Onev2s
    0U,	// LD1Onev2s_POST
    0U,	// LD1Onev4h
    0U,	// LD1Onev4h_POST
    0U,	// LD1Onev4s
    0U,	// LD1Onev4s_POST
    0U,	// LD1Onev8b
    0U,	// LD1Onev8b_POST
    0U,	// LD1Onev8h
    0U,	// LD1Onev8h_POST
    116997U,	// LD1RB_D_IMM
    116997U,	// LD1RB_H_IMM
    116997U,	// LD1RB_IMM
    116997U,	// LD1RB_S_IMM
    119237U,	// LD1RD_IMM
    119301U,	// LD1RH_D_IMM
    119301U,	// LD1RH_IMM
    119301U,	// LD1RH_S_IMM
    4357U,	// LD1RQ_B
    4677U,	// LD1RQ_B_IMM
    4421U,	// LD1RQ_D
    4677U,	// LD1RQ_D_IMM
    4485U,	// LD1RQ_H
    4677U,	// LD1RQ_H_IMM
    4741U,	// LD1RQ_W
    4677U,	// LD1RQ_W_IMM
    116997U,	// LD1RSB_D_IMM
    116997U,	// LD1RSB_H_IMM
    116997U,	// LD1RSB_S_IMM
    119301U,	// LD1RSH_D_IMM
    119301U,	// LD1RSH_S_IMM
    119493U,	// LD1RSW_IMM
    119493U,	// LD1RW_D_IMM
    119493U,	// LD1RW_IMM
    0U,	// LD1Rv16b
    0U,	// LD1Rv16b_POST
    0U,	// LD1Rv1d
    0U,	// LD1Rv1d_POST
    0U,	// LD1Rv2d
    0U,	// LD1Rv2d_POST
    0U,	// LD1Rv2s
    0U,	// LD1Rv2s_POST
    0U,	// LD1Rv4h
    0U,	// LD1Rv4h_POST
    0U,	// LD1Rv4s
    0U,	// LD1Rv4s_POST
    0U,	// LD1Rv8b
    0U,	// LD1Rv8b_POST
    0U,	// LD1Rv8h
    0U,	// LD1Rv8h_POST
    4357U,	// LD1SB_D
    256261U,	// LD1SB_D_IMM_REAL
    4357U,	// LD1SB_H
    256261U,	// LD1SB_H_IMM_REAL
    4357U,	// LD1SB_S
    256261U,	// LD1SB_S_IMM_REAL
    4485U,	// LD1SH_D
    256261U,	// LD1SH_D_IMM_REAL
    4485U,	// LD1SH_S
    256261U,	// LD1SH_S_IMM_REAL
    4741U,	// LD1SW_D
    256261U,	// LD1SW_D_IMM_REAL
    0U,	// LD1Threev16b
    0U,	// LD1Threev16b_POST
    0U,	// LD1Threev1d
    0U,	// LD1Threev1d_POST
    0U,	// LD1Threev2d
    0U,	// LD1Threev2d_POST
    0U,	// LD1Threev2s
    0U,	// LD1Threev2s_POST
    0U,	// LD1Threev4h
    0U,	// LD1Threev4h_POST
    0U,	// LD1Threev4s
    0U,	// LD1Threev4s_POST
    0U,	// LD1Threev8b
    0U,	// LD1Threev8b_POST
    0U,	// LD1Threev8h
    0U,	// LD1Threev8h_POST
    0U,	// LD1Twov16b
    0U,	// LD1Twov16b_POST
    0U,	// LD1Twov1d
    0U,	// LD1Twov1d_POST
    0U,	// LD1Twov2d
    0U,	// LD1Twov2d_POST
    0U,	// LD1Twov2s
    0U,	// LD1Twov2s_POST
    0U,	// LD1Twov4h
    0U,	// LD1Twov4h_POST
    0U,	// LD1Twov4s
    0U,	// LD1Twov4s_POST
    0U,	// LD1Twov8b
    0U,	// LD1Twov8b_POST
    0U,	// LD1Twov8h
    0U,	// LD1Twov8h_POST
    4741U,	// LD1W
    4741U,	// LD1W_D
    256261U,	// LD1W_D_IMM_REAL
    256261U,	// LD1W_IMM_REAL
    0U,	// LD1i16
    0U,	// LD1i16_POST
    0U,	// LD1i32
    0U,	// LD1i32_POST
    0U,	// LD1i64
    0U,	// LD1i64_POST
    0U,	// LD1i8
    0U,	// LD1i8_POST
    4357U,	// LD2B
    258565U,	// LD2B_IMM
    4421U,	// LD2D
    258565U,	// LD2D_IMM
    4485U,	// LD2H
    258565U,	// LD2H_IMM
    0U,	// LD2Rv16b
    0U,	// LD2Rv16b_POST
    0U,	// LD2Rv1d
    0U,	// LD2Rv1d_POST
    0U,	// LD2Rv2d
    0U,	// LD2Rv2d_POST
    0U,	// LD2Rv2s
    0U,	// LD2Rv2s_POST
    0U,	// LD2Rv4h
    0U,	// LD2Rv4h_POST
    0U,	// LD2Rv4s
    0U,	// LD2Rv4s_POST
    0U,	// LD2Rv8b
    0U,	// LD2Rv8b_POST
    0U,	// LD2Rv8h
    0U,	// LD2Rv8h_POST
    0U,	// LD2Twov16b
    0U,	// LD2Twov16b_POST
    0U,	// LD2Twov2d
    0U,	// LD2Twov2d_POST
    0U,	// LD2Twov2s
    0U,	// LD2Twov2s_POST
    0U,	// LD2Twov4h
    0U,	// LD2Twov4h_POST
    0U,	// LD2Twov4s
    0U,	// LD2Twov4s_POST
    0U,	// LD2Twov8b
    0U,	// LD2Twov8b_POST
    0U,	// LD2Twov8h
    0U,	// LD2Twov8h_POST
    4741U,	// LD2W
    258565U,	// LD2W_IMM
    0U,	// LD2i16
    0U,	// LD2i16_POST
    0U,	// LD2i32
    0U,	// LD2i32_POST
    0U,	// LD2i64
    0U,	// LD2i64_POST
    0U,	// LD2i8
    0U,	// LD2i8_POST
    4357U,	// LD3B
    4869U,	// LD3B_IMM
    4421U,	// LD3D
    4869U,	// LD3D_IMM
    4485U,	// LD3H
    4869U,	// LD3H_IMM
    0U,	// LD3Rv16b
    0U,	// LD3Rv16b_POST
    0U,	// LD3Rv1d
    0U,	// LD3Rv1d_POST
    0U,	// LD3Rv2d
    0U,	// LD3Rv2d_POST
    0U,	// LD3Rv2s
    0U,	// LD3Rv2s_POST
    0U,	// LD3Rv4h
    0U,	// LD3Rv4h_POST
    0U,	// LD3Rv4s
    0U,	// LD3Rv4s_POST
    0U,	// LD3Rv8b
    0U,	// LD3Rv8b_POST
    0U,	// LD3Rv8h
    0U,	// LD3Rv8h_POST
    0U,	// LD3Threev16b
    0U,	// LD3Threev16b_POST
    0U,	// LD3Threev2d
    0U,	// LD3Threev2d_POST
    0U,	// LD3Threev2s
    0U,	// LD3Threev2s_POST
    0U,	// LD3Threev4h
    0U,	// LD3Threev4h_POST
    0U,	// LD3Threev4s
    0U,	// LD3Threev4s_POST
    0U,	// LD3Threev8b
    0U,	// LD3Threev8b_POST
    0U,	// LD3Threev8h
    0U,	// LD3Threev8h_POST
    4741U,	// LD3W
    4869U,	// LD3W_IMM
    0U,	// LD3i16
    0U,	// LD3i16_POST
    0U,	// LD3i32
    0U,	// LD3i32_POST
    0U,	// LD3i64
    0U,	// LD3i64_POST
    0U,	// LD3i8
    0U,	// LD3i8_POST
    4357U,	// LD4B
    258757U,	// LD4B_IMM
    4421U,	// LD4D
    258757U,	// LD4D_IMM
    0U,	// LD4Fourv16b
    0U,	// LD4Fourv16b_POST
    0U,	// LD4Fourv2d
    0U,	// LD4Fourv2d_POST
    0U,	// LD4Fourv2s
    0U,	// LD4Fourv2s_POST
    0U,	// LD4Fourv4h
    0U,	// LD4Fourv4h_POST
    0U,	// LD4Fourv4s
    0U,	// LD4Fourv4s_POST
    0U,	// LD4Fourv8b
    0U,	// LD4Fourv8b_POST
    0U,	// LD4Fourv8h
    0U,	// LD4Fourv8h_POST
    4485U,	// LD4H
    258757U,	// LD4H_IMM
    0U,	// LD4Rv16b
    0U,	// LD4Rv16b_POST
    0U,	// LD4Rv1d
    0U,	// LD4Rv1d_POST
    0U,	// LD4Rv2d
    0U,	// LD4Rv2d_POST
    0U,	// LD4Rv2s
    0U,	// LD4Rv2s_POST
    0U,	// LD4Rv4h
    0U,	// LD4Rv4h_POST
    0U,	// LD4Rv4s
    0U,	// LD4Rv4s_POST
    0U,	// LD4Rv8b
    0U,	// LD4Rv8b_POST
    0U,	// LD4Rv8h
    0U,	// LD4Rv8h_POST
    4741U,	// LD4W
    258757U,	// LD4W_IMM
    0U,	// LD4i16
    0U,	// LD4i16_POST
    0U,	// LD4i32
    0U,	// LD4i32_POST
    0U,	// LD4i64
    0U,	// LD4i64_POST
    0U,	// LD4i8
    0U,	// LD4i8_POST
    0U,	// LDADDAB
    0U,	// LDADDAH
    0U,	// LDADDALB
    0U,	// LDADDALH
    0U,	// LDADDALW
    0U,	// LDADDALX
    0U,	// LDADDAW
    0U,	// LDADDAX
    0U,	// LDADDB
    0U,	// LDADDH
    0U,	// LDADDLB
    0U,	// LDADDLH
    0U,	// LDADDLW
    0U,	// LDADDLX
    0U,	// LDADDW
    0U,	// LDADDX
    27U,	// LDAPRB
    27U,	// LDAPRH
    27U,	// LDAPRW
    27U,	// LDAPRX
    114949U,	// LDAPURBi
    114949U,	// LDAPURHi
    114949U,	// LDAPURSBWi
    114949U,	// LDAPURSBXi
    114949U,	// LDAPURSHWi
    114949U,	// LDAPURSHXi
    114949U,	// LDAPURSWi
    114949U,	// LDAPURXi
    114949U,	// LDAPURi
    27U,	// LDARB
    27U,	// LDARH
    27U,	// LDARW
    27U,	// LDARX
    114955U,	// LDAXPW
    114955U,	// LDAXPX
    27U,	// LDAXRB
    27U,	// LDAXRH
    27U,	// LDAXRW
    27U,	// LDAXRX
    0U,	// LDCLRAB
    0U,	// LDCLRAH
    0U,	// LDCLRALB
    0U,	// LDCLRALH
    0U,	// LDCLRALW
    0U,	// LDCLRALX
    0U,	// LDCLRAW
    0U,	// LDCLRAX
    0U,	// LDCLRB
    0U,	// LDCLRH
    0U,	// LDCLRLB
    0U,	// LDCLRLH
    0U,	// LDCLRLW
    0U,	// LDCLRLX
    0U,	// LDCLRW
    0U,	// LDCLRX
    0U,	// LDEORAB
    0U,	// LDEORAH
    0U,	// LDEORALB
    0U,	// LDEORALH
    0U,	// LDEORALW
    0U,	// LDEORALX
    0U,	// LDEORAW
    0U,	// LDEORAX
    0U,	// LDEORB
    0U,	// LDEORH
    0U,	// LDEORLB
    0U,	// LDEORLH
    0U,	// LDEORLW
    0U,	// LDEORLX
    0U,	// LDEORW
    0U,	// LDEORX
    4357U,	// LDFF1B_D_REAL
    4357U,	// LDFF1B_H_REAL
    4357U,	// LDFF1B_REAL
    4357U,	// LDFF1B_S_REAL
    4421U,	// LDFF1D_REAL
    4485U,	// LDFF1H_D_REAL
    4485U,	// LDFF1H_REAL
    4485U,	// LDFF1H_S_REAL
    4357U,	// LDFF1SB_D_REAL
    4357U,	// LDFF1SB_H_REAL
    4357U,	// LDFF1SB_S_REAL
    4485U,	// LDFF1SH_D_REAL
    4485U,	// LDFF1SH_S_REAL
    4741U,	// LDFF1SW_D_REAL
    4741U,	// LDFF1W_D_REAL
    4741U,	// LDFF1W_REAL
    27U,	// LDLARB
    27U,	// LDLARH
    27U,	// LDLARW
    27U,	// LDLARX
    256261U,	// LDNF1B_D_IMM_REAL
    256261U,	// LDNF1B_H_IMM_REAL
    256261U,	// LDNF1B_IMM_REAL
    256261U,	// LDNF1B_S_IMM_REAL
    256261U,	// LDNF1D_IMM_REAL
    256261U,	// LDNF1H_D_IMM_REAL
    256261U,	// LDNF1H_IMM_REAL
    256261U,	// LDNF1H_S_IMM_REAL
    256261U,	// LDNF1SB_D_IMM_REAL
    256261U,	// LDNF1SB_H_IMM_REAL
    256261U,	// LDNF1SB_S_IMM_REAL
    256261U,	// LDNF1SH_D_IMM_REAL
    256261U,	// LDNF1SH_S_IMM_REAL
    256261U,	// LDNF1SW_D_IMM_REAL
    256261U,	// LDNF1W_D_IMM_REAL
    256261U,	// LDNF1W_IMM_REAL
    11084043U,	// LDNPDi
    11608331U,	// LDNPQi
    12132619U,	// LDNPSi
    12132619U,	// LDNPWi
    11084043U,	// LDNPXi
    256261U,	// LDNT1B_ZRI
    4357U,	// LDNT1B_ZRR
    256261U,	// LDNT1D_ZRI
    4421U,	// LDNT1D_ZRR
    256261U,	// LDNT1H_ZRI
    4485U,	// LDNT1H_ZRR
    256261U,	// LDNT1W_ZRI
    4741U,	// LDNT1W_ZRR
    11084043U,	// LDPDi
    12847371U,	// LDPDpost
    180431115U,	// LDPDpre
    11608331U,	// LDPQi
    13371659U,	// LDPQpost
    180955403U,	// LDPQpre
    12132619U,	// LDPSWi
    13895947U,	// LDPSWpost
    181479691U,	// LDPSWpre
    12132619U,	// LDPSi
    13895947U,	// LDPSpost
    181479691U,	// LDPSpre
    12132619U,	// LDPWi
    13895947U,	// LDPWpost
    181479691U,	// LDPWpre
    11084043U,	// LDPXi
    12847371U,	// LDPXpost
    180431115U,	// LDPXpre
    4933U,	// LDRAAindexed
    274885U,	// LDRAAwriteback
    4933U,	// LDRABindexed
    274885U,	// LDRABwriteback
    28U,	// LDRBBpost
    272645U,	// LDRBBpre
    14229765U,	// LDRBBroW
    14754053U,	// LDRBBroX
    4997U,	// LDRBBui
    28U,	// LDRBpost
    272645U,	// LDRBpre
    14229765U,	// LDRBroW
    14754053U,	// LDRBroX
    4997U,	// LDRBui
    0U,	// LDRDl
    28U,	// LDRDpost
    272645U,	// LDRDpre
    15278341U,	// LDRDroW
    15802629U,	// LDRDroX
    5061U,	// LDRDui
    28U,	// LDRHHpost
    272645U,	// LDRHHpre
    16326917U,	// LDRHHroW
    16851205U,	// LDRHHroX
    5125U,	// LDRHHui
    28U,	// LDRHpost
    272645U,	// LDRHpre
    16326917U,	// LDRHroW
    16851205U,	// LDRHroX
    5125U,	// LDRHui
    0U,	// LDRQl
    28U,	// LDRQpost
    272645U,	// LDRQpre
    17375493U,	// LDRQroW
    17899781U,	// LDRQroX
    5189U,	// LDRQui
    28U,	// LDRSBWpost
    272645U,	// LDRSBWpre
    14229765U,	// LDRSBWroW
    14754053U,	// LDRSBWroX
    4997U,	// LDRSBWui
    28U,	// LDRSBXpost
    272645U,	// LDRSBXpre
    14229765U,	// LDRSBXroW
    14754053U,	// LDRSBXroX
    4997U,	// LDRSBXui
    28U,	// LDRSHWpost
    272645U,	// LDRSHWpre
    16326917U,	// LDRSHWroW
    16851205U,	// LDRSHWroX
    5125U,	// LDRSHWui
    28U,	// LDRSHXpost
    272645U,	// LDRSHXpre
    16326917U,	// LDRSHXroW
    16851205U,	// LDRSHXroX
    5125U,	// LDRSHXui
    0U,	// LDRSWl
    28U,	// LDRSWpost
    272645U,	// LDRSWpre
    18424069U,	// LDRSWroW
    18948357U,	// LDRSWroX
    5253U,	// LDRSWui
    0U,	// LDRSl
    28U,	// LDRSpost
    272645U,	// LDRSpre
    18424069U,	// LDRSroW
    18948357U,	// LDRSroX
    5253U,	// LDRSui
    0U,	// LDRWl
    28U,	// LDRWpost
    272645U,	// LDRWpre
    18424069U,	// LDRWroW
    18948357U,	// LDRWroX
    5253U,	// LDRWui
    0U,	// LDRXl
    28U,	// LDRXpost
    272645U,	// LDRXpre
    15278341U,	// LDRXroW
    15802629U,	// LDRXroX
    5061U,	// LDRXui
    254213U,	// LDR_PXI
    254213U,	// LDR_ZXI
    0U,	// LDSETAB
    0U,	// LDSETAH
    0U,	// LDSETALB
    0U,	// LDSETALH
    0U,	// LDSETALW
    0U,	// LDSETALX
    0U,	// LDSETAW
    0U,	// LDSETAX
    0U,	// LDSETB
    0U,	// LDSETH
    0U,	// LDSETLB
    0U,	// LDSETLH
    0U,	// LDSETLW
    0U,	// LDSETLX
    0U,	// LDSETW
    0U,	// LDSETX
    0U,	// LDSMAXAB
    0U,	// LDSMAXAH
    0U,	// LDSMAXALB
    0U,	// LDSMAXALH
    0U,	// LDSMAXALW
    0U,	// LDSMAXALX
    0U,	// LDSMAXAW
    0U,	// LDSMAXAX
    0U,	// LDSMAXB
    0U,	// LDSMAXH
    0U,	// LDSMAXLB
    0U,	// LDSMAXLH
    0U,	// LDSMAXLW
    0U,	// LDSMAXLX
    0U,	// LDSMAXW
    0U,	// LDSMAXX
    0U,	// LDSMINAB
    0U,	// LDSMINAH
    0U,	// LDSMINALB
    0U,	// LDSMINALH
    0U,	// LDSMINALW
    0U,	// LDSMINALX
    0U,	// LDSMINAW
    0U,	// LDSMINAX
    0U,	// LDSMINB
    0U,	// LDSMINH
    0U,	// LDSMINLB
    0U,	// LDSMINLH
    0U,	// LDSMINLW
    0U,	// LDSMINLX
    0U,	// LDSMINW
    0U,	// LDSMINX
    114949U,	// LDTRBi
    114949U,	// LDTRHi
    114949U,	// LDTRSBWi
    114949U,	// LDTRSBXi
    114949U,	// LDTRSHWi
    114949U,	// LDTRSHXi
    114949U,	// LDTRSWi
    114949U,	// LDTRWi
    114949U,	// LDTRXi
    0U,	// LDUMAXAB
    0U,	// LDUMAXAH
    0U,	// LDUMAXALB
    0U,	// LDUMAXALH
    0U,	// LDUMAXALW
    0U,	// LDUMAXALX
    0U,	// LDUMAXAW
    0U,	// LDUMAXAX
    0U,	// LDUMAXB
    0U,	// LDUMAXH
    0U,	// LDUMAXLB
    0U,	// LDUMAXLH
    0U,	// LDUMAXLW
    0U,	// LDUMAXLX
    0U,	// LDUMAXW
    0U,	// LDUMAXX
    0U,	// LDUMINAB
    0U,	// LDUMINAH
    0U,	// LDUMINALB
    0U,	// LDUMINALH
    0U,	// LDUMINALW
    0U,	// LDUMINALX
    0U,	// LDUMINAW
    0U,	// LDUMINAX
    0U,	// LDUMINB
    0U,	// LDUMINH
    0U,	// LDUMINLB
    0U,	// LDUMINLH
    0U,	// LDUMINLW
    0U,	// LDUMINLX
    0U,	// LDUMINW
    0U,	// LDUMINX
    114949U,	// LDURBBi
    114949U,	// LDURBi
    114949U,	// LDURDi
    114949U,	// LDURHHi
    114949U,	// LDURHi
    114949U,	// LDURQi
    114949U,	// LDURSBWi
    114949U,	// LDURSBXi
    114949U,	// LDURSHWi
    114949U,	// LDURSHXi
    114949U,	// LDURSWi
    114949U,	// LDURSi
    114949U,	// LDURWi
    114949U,	// LDURXi
    114955U,	// LDXPW
    114955U,	// LDXPX
    27U,	// LDXRB
    27U,	// LDXRH
    27U,	// LDXRW
    27U,	// LDXRX
    0U,	// LOADgot
    74560U,	// LSLR_ZPmZ_B
    598912U,	// LSLR_ZPmZ_D
    1131465U,	// LSLR_ZPmZ_H
    1647616U,	// LSLR_ZPmZ_S
    261U,	// LSLVWr
    261U,	// LSLVXr
    598848U,	// LSL_WIDE_ZPmZ_B
    99273U,	// LSL_WIDE_ZPmZ_H
    599040U,	// LSL_WIDE_ZPmZ_S
    901U,	// LSL_WIDE_ZZZ_B
    10U,	// LSL_WIDE_ZZZ_H
    901U,	// LSL_WIDE_ZZZ_S
    2171712U,	// LSL_ZPmI_B
    2171776U,	// LSL_ZPmI_D
    91081U,	// LSL_ZPmI_H
    2171904U,	// LSL_ZPmI_S
    74560U,	// LSL_ZPmZ_B
    598912U,	// LSL_ZPmZ_D
    1131465U,	// LSL_ZPmZ_H
    1647616U,	// LSL_ZPmZ_S
    261U,	// LSL_ZZI_B
    261U,	// LSL_ZZI_D
    11U,	// LSL_ZZI_H
    261U,	// LSL_ZZI_S
    74560U,	// LSRR_ZPmZ_B
    598912U,	// LSRR_ZPmZ_D
    1131465U,	// LSRR_ZPmZ_H
    1647616U,	// LSRR_ZPmZ_S
    261U,	// LSRVWr
    261U,	// LSRVXr
    598848U,	// LSR_WIDE_ZPmZ_B
    99273U,	// LSR_WIDE_ZPmZ_H
    599040U,	// LSR_WIDE_ZPmZ_S
    901U,	// LSR_WIDE_ZZZ_B
    10U,	// LSR_WIDE_ZZZ_H
    901U,	// LSR_WIDE_ZZZ_S
    2171712U,	// LSR_ZPmI_B
    2171776U,	// LSR_ZPmI_D
    91081U,	// LSR_ZPmI_H
    2171904U,	// LSR_ZPmI_S
    74560U,	// LSR_ZPmZ_B
    598912U,	// LSR_ZPmZ_D
    1131465U,	// LSR_ZPmZ_H
    1647616U,	// LSR_ZPmZ_S
    261U,	// LSR_ZZI_B
    261U,	// LSR_ZZI_D
    11U,	// LSR_ZZI_H
    261U,	// LSR_ZZI_S
    2171141U,	// MADDWrrr
    2171141U,	// MADDXrrr
    19472384U,	// MAD_ZPmZZ_B
    6889536U,	// MAD_ZPmZZ_D
    1246144U,	// MAD_ZPmZZ_H
    7413952U,	// MAD_ZPmZZ_S
    19472384U,	// MLA_ZPmZZ_B
    6889536U,	// MLA_ZPmZZ_D
    1246144U,	// MLA_ZPmZZ_H
    7413952U,	// MLA_ZPmZZ_S
    33159U,	// MLAv16i8
    41351U,	// MLAv2i32
    9126279U,	// MLAv2i32_indexed
    49544U,	// MLAv4i16
    9118088U,	// MLAv4i16_indexed
    16774U,	// MLAv4i32
    9126278U,	// MLAv4i32_indexed
    24966U,	// MLAv8i16
    9118086U,	// MLAv8i16_indexed
    57736U,	// MLAv8i8
    19472384U,	// MLS_ZPmZZ_B
    6889536U,	// MLS_ZPmZZ_D
    1246144U,	// MLS_ZPmZZ_H
    7413952U,	// MLS_ZPmZZ_S
    33159U,	// MLSv16i8
    41351U,	// MLSv2i32
    9126279U,	// MLSv2i32_indexed
    49544U,	// MLSv4i16
    9118088U,	// MLSv4i16_indexed
    16774U,	// MLSv4i32
    9126278U,	// MLSv4i32_indexed
    24966U,	// MLSv8i16
    9118086U,	// MLSv8i16_indexed
    57736U,	// MLSv8i8
    0U,	// MOVID
    1U,	// MOVIv16b_ns
    0U,	// MOVIv2d_ns
    28U,	// MOVIv2i32
    28U,	// MOVIv2s_msl
    28U,	// MOVIv4i16
    28U,	// MOVIv4i32
    28U,	// MOVIv4s_msl
    1U,	// MOVIv8b_ns
    28U,	// MOVIv8i16
    0U,	// MOVKWi
    0U,	// MOVKXi
    28U,	// MOVNWi
    28U,	// MOVNXi
    0U,	// MOVPRFX_ZPmZ_B
    64U,	// MOVPRFX_ZPmZ_D
    128U,	// MOVPRFX_ZPmZ_H
    192U,	// MOVPRFX_ZPmZ_S
    842U,	// MOVPRFX_ZPzZ_B
    906U,	// MOVPRFX_ZPzZ_D
    137U,	// MOVPRFX_ZPzZ_H
    1034U,	// MOVPRFX_ZPzZ_S
    1U,	// MOVPRFX_ZZ
    28U,	// MOVZWi
    28U,	// MOVZXi
    0U,	// MOVaddr
    0U,	// MOVaddrBA
    0U,	// MOVaddrCP
    0U,	// MOVaddrEXT
    0U,	// MOVaddrJT
    0U,	// MOVaddrTLS
    0U,	// MOVbaseTLS
    0U,	// MOVi32imm
    0U,	// MOVi64imm
    0U,	// MRS
    19472384U,	// MSB_ZPmZZ_B
    6889536U,	// MSB_ZPmZZ_D
    1246144U,	// MSB_ZPmZZ_H
    7413952U,	// MSB_ZPmZZ_S
    0U,	// MSR
    0U,	// MSRpstateImm1
    0U,	// MSRpstateImm4
    2171141U,	// MSUBWrrr
    2171141U,	// MSUBXrrr
    261U,	// MUL_ZI_B
    261U,	// MUL_ZI_D
    11U,	// MUL_ZI_H
    261U,	// MUL_ZI_S
    74560U,	// MUL_ZPmZ_B
    598912U,	// MUL_ZPmZ_D
    1131465U,	// MUL_ZPmZ_H
    1647616U,	// MUL_ZPmZ_S
    33095U,	// MULv16i8
    41287U,	// MULv2i32
    10174791U,	// MULv2i32_indexed
    49480U,	// MULv4i16
    10166600U,	// MULv4i16_indexed
    16710U,	// MULv4i32
    10174790U,	// MULv4i32_indexed
    24902U,	// MULv8i16
    10166598U,	// MULv8i16_indexed
    57672U,	// MULv8i8
    28U,	// MVNIv2i32
    28U,	// MVNIv2s_msl
    28U,	// MVNIv4i16
    28U,	// MVNIv4i32
    28U,	// MVNIv4s_msl
    28U,	// MVNIv8i16
    74570U,	// NANDS_PPzPP
    74570U,	// NAND_PPzPP
    0U,	// NEG_ZPmZ_B
    64U,	// NEG_ZPmZ_D
    128U,	// NEG_ZPmZ_H
    192U,	// NEG_ZPmZ_S
    1U,	// NEGv16i8
    1U,	// NEGv1i64
    2U,	// NEGv2i32
    2U,	// NEGv2i64
    3U,	// NEGv4i16
    3U,	// NEGv4i32
    4U,	// NEGv8i16
    4U,	// NEGv8i8
    74570U,	// NORS_PPzPP
    74570U,	// NOR_PPzPP
    0U,	// NOT_ZPmZ_B
    64U,	// NOT_ZPmZ_D
    128U,	// NOT_ZPmZ_H
    192U,	// NOT_ZPmZ_S
    1U,	// NOTv16i8
    4U,	// NOTv8i8
    74570U,	// ORNS_PPzPP
    0U,	// ORNWrr
    517U,	// ORNWrs
    0U,	// ORNXrr
    517U,	// ORNXrs
    74570U,	// ORN_PPzPP
    33095U,	// ORNv16i8
    57672U,	// ORNv8i8
    74570U,	// ORRS_PPzPP
    2117U,	// ORRWri
    0U,	// ORRWrr
    517U,	// ORRWrs
    2181U,	// ORRXri
    0U,	// ORRXrr
    517U,	// ORRXrs
    74570U,	// ORR_PPzPP
    2181U,	// ORR_ZI
    74560U,	// ORR_ZPmZ_B
    598912U,	// ORR_ZPmZ_D
    1131465U,	// ORR_ZPmZ_H
    1647616U,	// ORR_ZPmZ_S
    901U,	// ORR_ZZZ
    33095U,	// ORRv16i8
    0U,	// ORRv2i32
    0U,	// ORRv4i16
    0U,	// ORRv4i32
    0U,	// ORRv8i16
    57672U,	// ORRv8i8
    837U,	// ORV_VPZ_B
    901U,	// ORV_VPZ_D
    2245U,	// ORV_VPZ_H
    1029U,	// ORV_VPZ_S
    1U,	// PACDA
    1U,	// PACDB
    0U,	// PACDZA
    0U,	// PACDZB
    261U,	// PACGA
    1U,	// PACIA
    0U,	// PACIA1716
    0U,	// PACIASP
    0U,	// PACIAZ
    1U,	// PACIB
    0U,	// PACIB1716
    0U,	// PACIBSP
    0U,	// PACIBZ
    0U,	// PACIZA
    0U,	// PACIZB
    0U,	// PFALSE
    33095U,	// PMULLv16i8
    0U,	// PMULLv1i64
    0U,	// PMULLv2i64
    57672U,	// PMULLv8i8
    33095U,	// PMULv16i8
    57672U,	// PMULv8i8
    837U,	// PNEXT_B
    901U,	// PNEXT_D
    137U,	// PNEXT_H
    1029U,	// PNEXT_S
    27U,	// PRFB_D_PZI
    29U,	// PRFB_D_SCALED
    29U,	// PRFB_D_SXTW_SCALED
    30U,	// PRFB_D_UXTW_SCALED
    5329U,	// PRFB_PRI
    30U,	// PRFB_PRR
    27U,	// PRFB_S_PZI
    31U,	// PRFB_S_SXTW_SCALED
    31U,	// PRFB_S_UXTW_SCALED
    0U,	// PRFD_D_PZI
    32U,	// PRFD_D_SCALED
    32U,	// PRFD_D_SXTW_SCALED
    33U,	// PRFD_D_UXTW_SCALED
    5329U,	// PRFD_PRI
    33U,	// PRFD_PRR
    0U,	// PRFD_S_PZI
    34U,	// PRFD_S_SXTW_SCALED
    34U,	// PRFD_S_UXTW_SCALED
    0U,	// PRFH_D_PZI
    35U,	// PRFH_D_SCALED
    35U,	// PRFH_D_SXTW_SCALED
    36U,	// PRFH_D_UXTW_SCALED
    5329U,	// PRFH_PRI
    36U,	// PRFH_PRR
    0U,	// PRFH_S_PZI
    37U,	// PRFH_S_SXTW_SCALED
    37U,	// PRFH_S_UXTW_SCALED
    0U,	// PRFMl
    15278341U,	// PRFMroW
    15802629U,	// PRFMroX
    5061U,	// PRFMui
    38U,	// PRFS_PRR
    114949U,	// PRFUMi
    0U,	// PRFW_D_PZI
    38U,	// PRFW_D_SCALED
    39U,	// PRFW_D_SXTW_SCALED
    39U,	// PRFW_D_UXTW_SCALED
    5329U,	// PRFW_PRI
    0U,	// PRFW_S_PZI
    40U,	// PRFW_S_SXTW_SCALED
    40U,	// PRFW_S_UXTW_SCALED
    1U,	// PTEST_PP
    1U,	// PTRUES_B
    1U,	// PTRUES_D
    0U,	// PTRUES_H
    1U,	// PTRUES_S
    1U,	// PTRUE_B
    1U,	// PTRUE_D
    0U,	// PTRUE_H
    1U,	// PTRUE_S
    0U,	// PUNPKHI_PP
    0U,	// PUNPKLO_PP
    8517U,	// RADDHNv2i64_v2i32
    8581U,	// RADDHNv2i64_v4i32
    16710U,	// RADDHNv4i32_v4i16
    16774U,	// RADDHNv4i32_v8i16
    24966U,	// RADDHNv8i16_v16i8
    24902U,	// RADDHNv8i16_v8i8
    8517U,	// RAX1
    1U,	// RBITWr
    1U,	// RBITXr
    0U,	// RBIT_ZPmZ_B
    64U,	// RBIT_ZPmZ_D
    128U,	// RBIT_ZPmZ_H
    192U,	// RBIT_ZPmZ_S
    1U,	// RBITv16i8
    4U,	// RBITv8i8
    41U,	// RDFFRS_PPz
    0U,	// RDFFR_P
    41U,	// RDFFR_PPz
    1U,	// RDVLI_XI
    0U,	// RET
    0U,	// RETAA
    0U,	// RETAB
    0U,	// RET_ReallyLR
    1U,	// REV16Wr
    1U,	// REV16Xr
    1U,	// REV16v16i8
    4U,	// REV16v8i8
    1U,	// REV32Xr
    1U,	// REV32v16i8
    3U,	// REV32v4i16
    4U,	// REV32v8i16
    4U,	// REV32v8i8
    1U,	// REV64v16i8
    2U,	// REV64v2i32
    3U,	// REV64v4i16
    3U,	// REV64v4i32
    4U,	// REV64v8i16
    4U,	// REV64v8i8
    64U,	// REVB_ZPmZ_D
    128U,	// REVB_ZPmZ_H
    192U,	// REVB_ZPmZ_S
    64U,	// REVH_ZPmZ_D
    192U,	// REVH_ZPmZ_S
    64U,	// REVW_ZPmZ_D
    1U,	// REVWr
    1U,	// REVXr
    1U,	// REV_PP_B
    1U,	// REV_PP_D
    0U,	// REV_PP_H
    1U,	// REV_PP_S
    1U,	// REV_ZZ_B
    1U,	// REV_ZZ_D
    0U,	// REV_ZZ_H
    1U,	// REV_ZZ_S
    261U,	// RMIF
    261U,	// RORVWr
    261U,	// RORVXr
    2310U,	// RSHRNv16i8_shift
    261U,	// RSHRNv2i32_shift
    262U,	// RSHRNv4i16_shift
    2309U,	// RSHRNv4i32_shift
    2310U,	// RSHRNv8i16_shift
    262U,	// RSHRNv8i8_shift
    8517U,	// RSUBHNv2i64_v2i32
    8581U,	// RSUBHNv2i64_v4i32
    16710U,	// RSUBHNv4i32_v4i16
    16774U,	// RSUBHNv4i32_v8i16
    24966U,	// RSUBHNv8i16_v16i8
    24902U,	// RSUBHNv8i16_v8i8
    33159U,	// SABALv16i8_v8i16
    41351U,	// SABALv2i32_v2i64
    49544U,	// SABALv4i16_v4i32
    16774U,	// SABALv4i32_v2i64
    24966U,	// SABALv8i16_v4i32
    57736U,	// SABALv8i8_v8i16
    33159U,	// SABAv16i8
    41351U,	// SABAv2i32
    49544U,	// SABAv4i16
    16774U,	// SABAv4i32
    24966U,	// SABAv8i16
    57736U,	// SABAv8i8
    33095U,	// SABDLv16i8_v8i16
    41287U,	// SABDLv2i32_v2i64
    49480U,	// SABDLv4i16_v4i32
    16710U,	// SABDLv4i32_v2i64
    24902U,	// SABDLv8i16_v4i32
    57672U,	// SABDLv8i8_v8i16
    74560U,	// SABD_ZPmZ_B
    598912U,	// SABD_ZPmZ_D
    1131465U,	// SABD_ZPmZ_H
    1647616U,	// SABD_ZPmZ_S
    33095U,	// SABDv16i8
    41287U,	// SABDv2i32
    49480U,	// SABDv4i16
    16710U,	// SABDv4i32
    24902U,	// SABDv8i16
    57672U,	// SABDv8i8
    1U,	// SADALPv16i8_v8i16
    2U,	// SADALPv2i32_v1i64
    3U,	// SADALPv4i16_v2i32
    3U,	// SADALPv4i32_v2i64
    4U,	// SADALPv8i16_v4i32
    4U,	// SADALPv8i8_v4i16
    1U,	// SADDLPv16i8_v8i16
    2U,	// SADDLPv2i32_v1i64
    3U,	// SADDLPv4i16_v2i32
    3U,	// SADDLPv4i32_v2i64
    4U,	// SADDLPv8i16_v4i32
    4U,	// SADDLPv8i8_v4i16
    1U,	// SADDLVv16i8v
    3U,	// SADDLVv4i16v
    3U,	// SADDLVv4i32v
    4U,	// SADDLVv8i16v
    4U,	// SADDLVv8i8v
    33095U,	// SADDLv16i8_v8i16
    41287U,	// SADDLv2i32_v2i64
    49480U,	// SADDLv4i16_v4i32
    16710U,	// SADDLv4i32_v2i64
    24902U,	// SADDLv8i16_v4i32
    57672U,	// SADDLv8i8_v8i16
    837U,	// SADDV_VPZ_B
    2245U,	// SADDV_VPZ_H
    1029U,	// SADDV_VPZ_S
    33094U,	// SADDWv16i8_v8i16
    41285U,	// SADDWv2i32_v2i64
    49478U,	// SADDWv4i16_v4i32
    16709U,	// SADDWv4i32_v2i64
    24902U,	// SADDWv8i16_v4i32
    57670U,	// SADDWv8i8_v8i16
    261U,	// SBCSWr
    261U,	// SBCSXr
    261U,	// SBCWr
    261U,	// SBCXr
    2171141U,	// SBFMWri
    2171141U,	// SBFMXri
    261U,	// SCVTFSWDri
    261U,	// SCVTFSWHri
    261U,	// SCVTFSWSri
    261U,	// SCVTFSXDri
    261U,	// SCVTFSXHri
    261U,	// SCVTFSXSri
    1U,	// SCVTFUWDri
    1U,	// SCVTFUWHri
    1U,	// SCVTFUWSri
    1U,	// SCVTFUXDri
    1U,	// SCVTFUXHri
    1U,	// SCVTFUXSri
    64U,	// SCVTF_ZPmZ_DtoD
    153U,	// SCVTF_ZPmZ_DtoH
    64U,	// SCVTF_ZPmZ_DtoS
    128U,	// SCVTF_ZPmZ_HtoH
    192U,	// SCVTF_ZPmZ_StoD
    152U,	// SCVTF_ZPmZ_StoH
    192U,	// SCVTF_ZPmZ_StoS
    261U,	// SCVTFd
    261U,	// SCVTFh
    261U,	// SCVTFs
    1U,	// SCVTFv1i16
    1U,	// SCVTFv1i32
    1U,	// SCVTFv1i64
    2U,	// SCVTFv2f32
    2U,	// SCVTFv2f64
    263U,	// SCVTFv2i32_shift
    261U,	// SCVTFv2i64_shift
    3U,	// SCVTFv4f16
    3U,	// SCVTFv4f32
    264U,	// SCVTFv4i16_shift
    262U,	// SCVTFv4i32_shift
    4U,	// SCVTFv8f16
    262U,	// SCVTFv8i16_shift
    598912U,	// SDIVR_ZPmZ_D
    1647616U,	// SDIVR_ZPmZ_S
    261U,	// SDIVWr
    261U,	// SDIVXr
    598912U,	// SDIV_ZPmZ_D
    1647616U,	// SDIV_ZPmZ_S
    41U,	// SDOT_ZZZI_D
    41U,	// SDOT_ZZZI_S
    1U,	// SDOT_ZZZ_D
    1U,	// SDOT_ZZZ_S
    278919U,	// SDOTlanev16i8
    278920U,	// SDOTlanev8i8
    33159U,	// SDOTv16i8
    57736U,	// SDOTv8i8
    74565U,	// SEL_PPPP
    74565U,	// SEL_ZPZZ_B
    598917U,	// SEL_ZPZZ_D
    1131465U,	// SEL_ZPZZ_H
    1647621U,	// SEL_ZPZZ_S
    0U,	// SETF16
    0U,	// SETF8
    0U,	// SETFFR
    16773U,	// SHA1Crrr
    1U,	// SHA1Hrr
    16773U,	// SHA1Mrrr
    16773U,	// SHA1Prrr
    16774U,	// SHA1SU0rrr
    3U,	// SHA1SU1rr
    16773U,	// SHA256H2rrr
    16773U,	// SHA256Hrrr
    3U,	// SHA256SU0rr
    16774U,	// SHA256SU1rrr
    8581U,	// SHA512H
    8581U,	// SHA512H2
    2U,	// SHA512SU0
    8581U,	// SHA512SU1
    33095U,	// SHADDv16i8
    41287U,	// SHADDv2i32
    49480U,	// SHADDv4i16
    16710U,	// SHADDv4i32
    24902U,	// SHADDv8i16
    57672U,	// SHADDv8i8
    42U,	// SHLLv16i8
    42U,	// SHLLv2i32
    43U,	// SHLLv4i16
    43U,	// SHLLv4i32
    44U,	// SHLLv8i16
    44U,	// SHLLv8i8
    261U,	// SHLd
    263U,	// SHLv16i8_shift
    263U,	// SHLv2i32_shift
    261U,	// SHLv2i64_shift
    264U,	// SHLv4i16_shift
    262U,	// SHLv4i32_shift
    262U,	// SHLv8i16_shift
    264U,	// SHLv8i8_shift
    2310U,	// SHRNv16i8_shift
    261U,	// SHRNv2i32_shift
    262U,	// SHRNv4i16_shift
    2309U,	// SHRNv4i32_shift
    2310U,	// SHRNv8i16_shift
    262U,	// SHRNv8i8_shift
    33095U,	// SHSUBv16i8
    41287U,	// SHSUBv2i32
    49480U,	// SHSUBv4i16
    16710U,	// SHSUBv4i32
    24902U,	// SHSUBv8i16
    57672U,	// SHSUBv8i8
    2309U,	// SLId
    2311U,	// SLIv16i8_shift
    2311U,	// SLIv2i32_shift
    2309U,	// SLIv2i64_shift
    2312U,	// SLIv4i16_shift
    2310U,	// SLIv4i32_shift
    2310U,	// SLIv8i16_shift
    2312U,	// SLIv8i8_shift
    16774U,	// SM3PARTW1
    16774U,	// SM3PARTW2
    204120390U,	// SM3SS1
    9126278U,	// SM3TT1A
    9126278U,	// SM3TT1B
    9126278U,	// SM3TT2A
    9126278U,	// SM3TT2B
    3U,	// SM4E
    16710U,	// SM4ENCKEY
    2171141U,	// SMADDLrrr
    33095U,	// SMAXPv16i8
    41287U,	// SMAXPv2i32
    49480U,	// SMAXPv4i16
    16710U,	// SMAXPv4i32
    24902U,	// SMAXPv8i16
    57672U,	// SMAXPv8i8
    837U,	// SMAXV_VPZ_B
    901U,	// SMAXV_VPZ_D
    2245U,	// SMAXV_VPZ_H
    1029U,	// SMAXV_VPZ_S
    1U,	// SMAXVv16i8v
    3U,	// SMAXVv4i16v
    3U,	// SMAXVv4i32v
    4U,	// SMAXVv8i16v
    4U,	// SMAXVv8i8v
    261U,	// SMAX_ZI_B
    261U,	// SMAX_ZI_D
    11U,	// SMAX_ZI_H
    261U,	// SMAX_ZI_S
    74560U,	// SMAX_ZPmZ_B
    598912U,	// SMAX_ZPmZ_D
    1131465U,	// SMAX_ZPmZ_H
    1647616U,	// SMAX_ZPmZ_S
    33095U,	// SMAXv16i8
    41287U,	// SMAXv2i32
    49480U,	// SMAXv4i16
    16710U,	// SMAXv4i32
    24902U,	// SMAXv8i16
    57672U,	// SMAXv8i8
    0U,	// SMC
    33095U,	// SMINPv16i8
    41287U,	// SMINPv2i32
    49480U,	// SMINPv4i16
    16710U,	// SMINPv4i32
    24902U,	// SMINPv8i16
    57672U,	// SMINPv8i8
    837U,	// SMINV_VPZ_B
    901U,	// SMINV_VPZ_D
    2245U,	// SMINV_VPZ_H
    1029U,	// SMINV_VPZ_S
    1U,	// SMINVv16i8v
    3U,	// SMINVv4i16v
    3U,	// SMINVv4i32v
    4U,	// SMINVv8i16v
    4U,	// SMINVv8i8v
    261U,	// SMIN_ZI_B
    261U,	// SMIN_ZI_D
    11U,	// SMIN_ZI_H
    261U,	// SMIN_ZI_S
    74560U,	// SMIN_ZPmZ_B
    598912U,	// SMIN_ZPmZ_D
    1131465U,	// SMIN_ZPmZ_H
    1647616U,	// SMIN_ZPmZ_S
    33095U,	// SMINv16i8
    41287U,	// SMINv2i32
    49480U,	// SMINv4i16
    16710U,	// SMINv4i32
    24902U,	// SMINv8i16
    57672U,	// SMINv8i8
    33159U,	// SMLALv16i8_v8i16
    9126279U,	// SMLALv2i32_indexed
    41351U,	// SMLALv2i32_v2i64
    9118088U,	// SMLALv4i16_indexed
    49544U,	// SMLALv4i16_v4i32
    9126278U,	// SMLALv4i32_indexed
    16774U,	// SMLALv4i32_v2i64
    9118086U,	// SMLALv8i16_indexed
    24966U,	// SMLALv8i16_v4i32
    57736U,	// SMLALv8i8_v8i16
    33159U,	// SMLSLv16i8_v8i16
    9126279U,	// SMLSLv2i32_indexed
    41351U,	// SMLSLv2i32_v2i64
    9118088U,	// SMLSLv4i16_indexed
    49544U,	// SMLSLv4i16_v4i32
    9126278U,	// SMLSLv4i32_indexed
    16774U,	// SMLSLv4i32_v2i64
    9118086U,	// SMLSLv8i16_indexed
    24966U,	// SMLSLv8i16_v4i32
    57736U,	// SMLSLv8i8_v8i16
    2770U,	// SMOVvi16to32
    2770U,	// SMOVvi16to64
    2770U,	// SMOVvi32to64
    2771U,	// SMOVvi8to32
    2771U,	// SMOVvi8to64
    2171141U,	// SMSUBLrrr
    74560U,	// SMULH_ZPmZ_B
    598912U,	// SMULH_ZPmZ_D
    1131465U,	// SMULH_ZPmZ_H
    1647616U,	// SMULH_ZPmZ_S
    261U,	// SMULHrr
    33095U,	// SMULLv16i8_v8i16
    10174791U,	// SMULLv2i32_indexed
    41287U,	// SMULLv2i32_v2i64
    10166600U,	// SMULLv4i16_indexed
    49480U,	// SMULLv4i16_v4i32
    10174790U,	// SMULLv4i32_indexed
    16710U,	// SMULLv4i32_v2i64
    10166598U,	// SMULLv8i16_indexed
    24902U,	// SMULLv8i16_v4i32
    57672U,	// SMULLv8i8_v8i16
    74565U,	// SPLICE_ZPZ_B
    598917U,	// SPLICE_ZPZ_D
    1131465U,	// SPLICE_ZPZ_H
    1647621U,	// SPLICE_ZPZ_S
    1U,	// SQABSv16i8
    1U,	// SQABSv1i16
    1U,	// SQABSv1i32
    1U,	// SQABSv1i64
    1U,	// SQABSv1i8
    2U,	// SQABSv2i32
    2U,	// SQABSv2i64
    3U,	// SQABSv4i16
    3U,	// SQABSv4i32
    4U,	// SQABSv8i16
    4U,	// SQABSv8i8
    645U,	// SQADD_ZI_B
    709U,	// SQADD_ZI_D
    9U,	// SQADD_ZI_H
    773U,	// SQADD_ZI_S
    837U,	// SQADD_ZZZ_B
    901U,	// SQADD_ZZZ_D
    137U,	// SQADD_ZZZ_H
    1029U,	// SQADD_ZZZ_S
    33095U,	// SQADDv16i8
    261U,	// SQADDv1i16
    261U,	// SQADDv1i32
    261U,	// SQADDv1i64
    261U,	// SQADDv1i8
    41287U,	// SQADDv2i32
    8517U,	// SQADDv2i64
    49480U,	// SQADDv4i16
    16710U,	// SQADDv4i32
    24902U,	// SQADDv8i16
    57672U,	// SQADDv8i8
    0U,	// SQDECB_XPiI
    0U,	// SQDECB_XPiWdI
    0U,	// SQDECD_XPiI
    0U,	// SQDECD_XPiWdI
    0U,	// SQDECD_ZPiI
    0U,	// SQDECH_XPiI
    0U,	// SQDECH_XPiWdI
    0U,	// SQDECH_ZPiI
    5381U,	// SQDECP_XPWd_B
    5381U,	// SQDECP_XPWd_D
    5381U,	// SQDECP_XPWd_H
    5381U,	// SQDECP_XPWd_S
    1U,	// SQDECP_XP_B
    1U,	// SQDECP_XP_D
    1U,	// SQDECP_XP_H
    1U,	// SQDECP_XP_S
    1U,	// SQDECP_ZP_D
    0U,	// SQDECP_ZP_H
    1U,	// SQDECP_ZP_S
    0U,	// SQDECW_XPiI
    0U,	// SQDECW_XPiWdI
    0U,	// SQDECW_ZPiI
    2309U,	// SQDMLALi16
    2309U,	// SQDMLALi32
    9118085U,	// SQDMLALv1i32_indexed
    9126277U,	// SQDMLALv1i64_indexed
    9126279U,	// SQDMLALv2i32_indexed
    41351U,	// SQDMLALv2i32_v2i64
    9118088U,	// SQDMLALv4i16_indexed
    49544U,	// SQDMLALv4i16_v4i32
    9126278U,	// SQDMLALv4i32_indexed
    16774U,	// SQDMLALv4i32_v2i64
    9118086U,	// SQDMLALv8i16_indexed
    24966U,	// SQDMLALv8i16_v4i32
    2309U,	// SQDMLSLi16
    2309U,	// SQDMLSLi32
    9118085U,	// SQDMLSLv1i32_indexed
    9126277U,	// SQDMLSLv1i64_indexed
    9126279U,	// SQDMLSLv2i32_indexed
    41351U,	// SQDMLSLv2i32_v2i64
    9118088U,	// SQDMLSLv4i16_indexed
    49544U,	// SQDMLSLv4i16_v4i32
    9126278U,	// SQDMLSLv4i32_indexed
    16774U,	// SQDMLSLv4i32_v2i64
    9118086U,	// SQDMLSLv8i16_indexed
    24966U,	// SQDMLSLv8i16_v4i32
    261U,	// SQDMULHv1i16
    10166597U,	// SQDMULHv1i16_indexed
    261U,	// SQDMULHv1i32
    10174789U,	// SQDMULHv1i32_indexed
    41287U,	// SQDMULHv2i32
    10174791U,	// SQDMULHv2i32_indexed
    49480U,	// SQDMULHv4i16
    10166600U,	// SQDMULHv4i16_indexed
    16710U,	// SQDMULHv4i32
    10174790U,	// SQDMULHv4i32_indexed
    24902U,	// SQDMULHv8i16
    10166598U,	// SQDMULHv8i16_indexed
    261U,	// SQDMULLi16
    261U,	// SQDMULLi32
    10166597U,	// SQDMULLv1i32_indexed
    10174789U,	// SQDMULLv1i64_indexed
    10174791U,	// SQDMULLv2i32_indexed
    41287U,	// SQDMULLv2i32_v2i64
    10166600U,	// SQDMULLv4i16_indexed
    49480U,	// SQDMULLv4i16_v4i32
    10174790U,	// SQDMULLv4i32_indexed
    16710U,	// SQDMULLv4i32_v2i64
    10166598U,	// SQDMULLv8i16_indexed
    24902U,	// SQDMULLv8i16_v4i32
    0U,	// SQINCB_XPiI
    0U,	// SQINCB_XPiWdI
    0U,	// SQINCD_XPiI
    0U,	// SQINCD_XPiWdI
    0U,	// SQINCD_ZPiI
    0U,	// SQINCH_XPiI
    0U,	// SQINCH_XPiWdI
    0U,	// SQINCH_ZPiI
    5381U,	// SQINCP_XPWd_B
    5381U,	// SQINCP_XPWd_D
    5381U,	// SQINCP_XPWd_H
    5381U,	// SQINCP_XPWd_S
    1U,	// SQINCP_XP_B
    1U,	// SQINCP_XP_D
    1U,	// SQINCP_XP_H
    1U,	// SQINCP_XP_S
    1U,	// SQINCP_ZP_D
    0U,	// SQINCP_ZP_H
    1U,	// SQINCP_ZP_S
    0U,	// SQINCW_XPiI
    0U,	// SQINCW_XPiWdI
    0U,	// SQINCW_ZPiI
    1U,	// SQNEGv16i8
    1U,	// SQNEGv1i16
    1U,	// SQNEGv1i32
    1U,	// SQNEGv1i64
    1U,	// SQNEGv1i8
    2U,	// SQNEGv2i32
    2U,	// SQNEGv2i64
    3U,	// SQNEGv4i16
    3U,	// SQNEGv4i32
    4U,	// SQNEGv8i16
    4U,	// SQNEGv8i8
    9118085U,	// SQRDMLAHi16_indexed
    9126277U,	// SQRDMLAHi32_indexed
    2309U,	// SQRDMLAHv1i16
    2309U,	// SQRDMLAHv1i32
    41351U,	// SQRDMLAHv2i32
    9126279U,	// SQRDMLAHv2i32_indexed
    49544U,	// SQRDMLAHv4i16
    9118088U,	// SQRDMLAHv4i16_indexed
    16774U,	// SQRDMLAHv4i32
    9126278U,	// SQRDMLAHv4i32_indexed
    24966U,	// SQRDMLAHv8i16
    9118086U,	// SQRDMLAHv8i16_indexed
    9118085U,	// SQRDMLSHi16_indexed
    9126277U,	// SQRDMLSHi32_indexed
    2309U,	// SQRDMLSHv1i16
    2309U,	// SQRDMLSHv1i32
    41351U,	// SQRDMLSHv2i32
    9126279U,	// SQRDMLSHv2i32_indexed
    49544U,	// SQRDMLSHv4i16
    9118088U,	// SQRDMLSHv4i16_indexed
    16774U,	// SQRDMLSHv4i32
    9126278U,	// SQRDMLSHv4i32_indexed
    24966U,	// SQRDMLSHv8i16
    9118086U,	// SQRDMLSHv8i16_indexed
    261U,	// SQRDMULHv1i16
    10166597U,	// SQRDMULHv1i16_indexed
    261U,	// SQRDMULHv1i32
    10174789U,	// SQRDMULHv1i32_indexed
    41287U,	// SQRDMULHv2i32
    10174791U,	// SQRDMULHv2i32_indexed
    49480U,	// SQRDMULHv4i16
    10166600U,	// SQRDMULHv4i16_indexed
    16710U,	// SQRDMULHv4i32
    10174790U,	// SQRDMULHv4i32_indexed
    24902U,	// SQRDMULHv8i16
    10166598U,	// SQRDMULHv8i16_indexed
    33095U,	// SQRSHLv16i8
    261U,	// SQRSHLv1i16
    261U,	// SQRSHLv1i32
    261U,	// SQRSHLv1i64
    261U,	// SQRSHLv1i8
    41287U,	// SQRSHLv2i32
    8517U,	// SQRSHLv2i64
    49480U,	// SQRSHLv4i16
    16710U,	// SQRSHLv4i32
    24902U,	// SQRSHLv8i16
    57672U,	// SQRSHLv8i8
    261U,	// SQRSHRNb
    261U,	// SQRSHRNh
    261U,	// SQRSHRNs
    2310U,	// SQRSHRNv16i8_shift
    261U,	// SQRSHRNv2i32_shift
    262U,	// SQRSHRNv4i16_shift
    2309U,	// SQRSHRNv4i32_shift
    2310U,	// SQRSHRNv8i16_shift
    262U,	// SQRSHRNv8i8_shift
    261U,	// SQRSHRUNb
    261U,	// SQRSHRUNh
    261U,	// SQRSHRUNs
    2310U,	// SQRSHRUNv16i8_shift
    261U,	// SQRSHRUNv2i32_shift
    262U,	// SQRSHRUNv4i16_shift
    2309U,	// SQRSHRUNv4i32_shift
    2310U,	// SQRSHRUNv8i16_shift
    262U,	// SQRSHRUNv8i8_shift
    261U,	// SQSHLUb
    261U,	// SQSHLUd
    261U,	// SQSHLUh
    261U,	// SQSHLUs
    263U,	// SQSHLUv16i8_shift
    263U,	// SQSHLUv2i32_shift
    261U,	// SQSHLUv2i64_shift
    264U,	// SQSHLUv4i16_shift
    262U,	// SQSHLUv4i32_shift
    262U,	// SQSHLUv8i16_shift
    264U,	// SQSHLUv8i8_shift
    261U,	// SQSHLb
    261U,	// SQSHLd
    261U,	// SQSHLh
    261U,	// SQSHLs
    33095U,	// SQSHLv16i8
    263U,	// SQSHLv16i8_shift
    261U,	// SQSHLv1i16
    261U,	// SQSHLv1i32
    261U,	// SQSHLv1i64
    261U,	// SQSHLv1i8
    41287U,	// SQSHLv2i32
    263U,	// SQSHLv2i32_shift
    8517U,	// SQSHLv2i64
    261U,	// SQSHLv2i64_shift
    49480U,	// SQSHLv4i16
    264U,	// SQSHLv4i16_shift
    16710U,	// SQSHLv4i32
    262U,	// SQSHLv4i32_shift
    24902U,	// SQSHLv8i16
    262U,	// SQSHLv8i16_shift
    57672U,	// SQSHLv8i8
    264U,	// SQSHLv8i8_shift
    261U,	// SQSHRNb
    261U,	// SQSHRNh
    261U,	// SQSHRNs
    2310U,	// SQSHRNv16i8_shift
    261U,	// SQSHRNv2i32_shift
    262U,	// SQSHRNv4i16_shift
    2309U,	// SQSHRNv4i32_shift
    2310U,	// SQSHRNv8i16_shift
    262U,	// SQSHRNv8i8_shift
    261U,	// SQSHRUNb
    261U,	// SQSHRUNh
    261U,	// SQSHRUNs
    2310U,	// SQSHRUNv16i8_shift
    261U,	// SQSHRUNv2i32_shift
    262U,	// SQSHRUNv4i16_shift
    2309U,	// SQSHRUNv4i32_shift
    2310U,	// SQSHRUNv8i16_shift
    262U,	// SQSHRUNv8i8_shift
    645U,	// SQSUB_ZI_B
    709U,	// SQSUB_ZI_D
    9U,	// SQSUB_ZI_H
    773U,	// SQSUB_ZI_S
    837U,	// SQSUB_ZZZ_B
    901U,	// SQSUB_ZZZ_D
    137U,	// SQSUB_ZZZ_H
    1029U,	// SQSUB_ZZZ_S
    33095U,	// SQSUBv16i8
    261U,	// SQSUBv1i16
    261U,	// SQSUBv1i32
    261U,	// SQSUBv1i64
    261U,	// SQSUBv1i8
    41287U,	// SQSUBv2i32
    8517U,	// SQSUBv2i64
    49480U,	// SQSUBv4i16
    16710U,	// SQSUBv4i32
    24902U,	// SQSUBv8i16
    57672U,	// SQSUBv8i8
    4U,	// SQXTNv16i8
    1U,	// SQXTNv1i16
    1U,	// SQXTNv1i32
    1U,	// SQXTNv1i8
    2U,	// SQXTNv2i32
    3U,	// SQXTNv4i16
    2U,	// SQXTNv4i32
    3U,	// SQXTNv8i16
    4U,	// SQXTNv8i8
    4U,	// SQXTUNv16i8
    1U,	// SQXTUNv1i16
    1U,	// SQXTUNv1i32
    1U,	// SQXTUNv1i8
    2U,	// SQXTUNv2i32
    3U,	// SQXTUNv4i16
    2U,	// SQXTUNv4i32
    3U,	// SQXTUNv8i16
    4U,	// SQXTUNv8i8
    33095U,	// SRHADDv16i8
    41287U,	// SRHADDv2i32
    49480U,	// SRHADDv4i16
    16710U,	// SRHADDv4i32
    24902U,	// SRHADDv8i16
    57672U,	// SRHADDv8i8
    2309U,	// SRId
    2311U,	// SRIv16i8_shift
    2311U,	// SRIv2i32_shift
    2309U,	// SRIv2i64_shift
    2312U,	// SRIv4i16_shift
    2310U,	// SRIv4i32_shift
    2310U,	// SRIv8i16_shift
    2312U,	// SRIv8i8_shift
    33095U,	// SRSHLv16i8
    261U,	// SRSHLv1i64
    41287U,	// SRSHLv2i32
    8517U,	// SRSHLv2i64
    49480U,	// SRSHLv4i16
    16710U,	// SRSHLv4i32
    24902U,	// SRSHLv8i16
    57672U,	// SRSHLv8i8
    261U,	// SRSHRd
    263U,	// SRSHRv16i8_shift
    263U,	// SRSHRv2i32_shift
    261U,	// SRSHRv2i64_shift
    264U,	// SRSHRv4i16_shift
    262U,	// SRSHRv4i32_shift
    262U,	// SRSHRv8i16_shift
    264U,	// SRSHRv8i8_shift
    2309U,	// SRSRAd
    2311U,	// SRSRAv16i8_shift
    2311U,	// SRSRAv2i32_shift
    2309U,	// SRSRAv2i64_shift
    2312U,	// SRSRAv4i16_shift
    2310U,	// SRSRAv4i32_shift
    2310U,	// SRSRAv8i16_shift
    2312U,	// SRSRAv8i8_shift
    263U,	// SSHLLv16i8_shift
    263U,	// SSHLLv2i32_shift
    264U,	// SSHLLv4i16_shift
    262U,	// SSHLLv4i32_shift
    262U,	// SSHLLv8i16_shift
    264U,	// SSHLLv8i8_shift
    33095U,	// SSHLv16i8
    261U,	// SSHLv1i64
    41287U,	// SSHLv2i32
    8517U,	// SSHLv2i64
    49480U,	// SSHLv4i16
    16710U,	// SSHLv4i32
    24902U,	// SSHLv8i16
    57672U,	// SSHLv8i8
    261U,	// SSHRd
    263U,	// SSHRv16i8_shift
    263U,	// SSHRv2i32_shift
    261U,	// SSHRv2i64_shift
    264U,	// SSHRv4i16_shift
    262U,	// SSHRv4i32_shift
    262U,	// SSHRv8i16_shift
    264U,	// SSHRv8i8_shift
    2309U,	// SSRAd
    2311U,	// SSRAv16i8_shift
    2311U,	// SSRAv2i32_shift
    2309U,	// SSRAv2i64_shift
    2312U,	// SSRAv4i16_shift
    2310U,	// SSRAv4i32_shift
    2310U,	// SSRAv8i16_shift
    2312U,	// SSRAv8i8_shift
    3205U,	// SST1B_D
    3153U,	// SST1B_D_IMM
    3269U,	// SST1B_D_SXTW
    3333U,	// SST1B_D_UXTW
    3153U,	// SST1B_S_IMM
    3397U,	// SST1B_S_SXTW
    3461U,	// SST1B_S_UXTW
    3205U,	// SST1D
    26U,	// SST1D_IMM
    3525U,	// SST1D_SCALED
    3269U,	// SST1D_SXTW
    3589U,	// SST1D_SXTW_SCALED
    3333U,	// SST1D_UXTW
    3653U,	// SST1D_UXTW_SCALED
    3205U,	// SST1H_D
    26U,	// SST1H_D_IMM
    3717U,	// SST1H_D_SCALED
    3269U,	// SST1H_D_SXTW
    3781U,	// SST1H_D_SXTW_SCALED
    3333U,	// SST1H_D_UXTW
    3845U,	// SST1H_D_UXTW_SCALED
    26U,	// SST1H_S_IMM
    3397U,	// SST1H_S_SXTW
    3909U,	// SST1H_S_SXTW_SCALED
    3461U,	// SST1H_S_UXTW
    3973U,	// SST1H_S_UXTW_SCALED
    3205U,	// SST1W_D
    27U,	// SST1W_D_IMM
    4037U,	// SST1W_D_SCALED
    3269U,	// SST1W_D_SXTW
    4101U,	// SST1W_D_SXTW_SCALED
    3333U,	// SST1W_D_UXTW
    4165U,	// SST1W_D_UXTW_SCALED
    27U,	// SST1W_IMM
    3397U,	// SST1W_SXTW
    4229U,	// SST1W_SXTW_SCALED
    3461U,	// SST1W_UXTW
    4293U,	// SST1W_UXTW_SCALED
    33095U,	// SSUBLv16i8_v8i16
    41287U,	// SSUBLv2i32_v2i64
    49480U,	// SSUBLv4i16_v4i32
    16710U,	// SSUBLv4i32_v2i64
    24902U,	// SSUBLv8i16_v4i32
    57672U,	// SSUBLv8i8_v8i16
    33094U,	// SSUBWv16i8_v8i16
    41285U,	// SSUBWv2i32_v2i64
    49478U,	// SSUBWv4i16_v4i32
    16709U,	// SSUBWv4i32_v2i64
    24902U,	// SSUBWv8i16_v4i32
    57670U,	// SSUBWv8i8_v8i16
    4357U,	// ST1B
    4357U,	// ST1B_D
    256261U,	// ST1B_D_IMM
    4357U,	// ST1B_H
    256261U,	// ST1B_H_IMM
    256261U,	// ST1B_IMM
    4357U,	// ST1B_S
    256261U,	// ST1B_S_IMM
    4421U,	// ST1D
    256261U,	// ST1D_IMM
    0U,	// ST1Fourv16b
    0U,	// ST1Fourv16b_POST
    0U,	// ST1Fourv1d
    0U,	// ST1Fourv1d_POST
    0U,	// ST1Fourv2d
    0U,	// ST1Fourv2d_POST
    0U,	// ST1Fourv2s
    0U,	// ST1Fourv2s_POST
    0U,	// ST1Fourv4h
    0U,	// ST1Fourv4h_POST
    0U,	// ST1Fourv4s
    0U,	// ST1Fourv4s_POST
    0U,	// ST1Fourv8b
    0U,	// ST1Fourv8b_POST
    0U,	// ST1Fourv8h
    0U,	// ST1Fourv8h_POST
    4485U,	// ST1H
    4485U,	// ST1H_D
    256261U,	// ST1H_D_IMM
    256261U,	// ST1H_IMM
    4485U,	// ST1H_S
    256261U,	// ST1H_S_IMM
    0U,	// ST1Onev16b
    0U,	// ST1Onev16b_POST
    0U,	// ST1Onev1d
    0U,	// ST1Onev1d_POST
    0U,	// ST1Onev2d
    0U,	// ST1Onev2d_POST
    0U,	// ST1Onev2s
    0U,	// ST1Onev2s_POST
    0U,	// ST1Onev4h
    0U,	// ST1Onev4h_POST
    0U,	// ST1Onev4s
    0U,	// ST1Onev4s_POST
    0U,	// ST1Onev8b
    0U,	// ST1Onev8b_POST
    0U,	// ST1Onev8h
    0U,	// ST1Onev8h_POST
    0U,	// ST1Threev16b
    0U,	// ST1Threev16b_POST
    0U,	// ST1Threev1d
    0U,	// ST1Threev1d_POST
    0U,	// ST1Threev2d
    0U,	// ST1Threev2d_POST
    0U,	// ST1Threev2s
    0U,	// ST1Threev2s_POST
    0U,	// ST1Threev4h
    0U,	// ST1Threev4h_POST
    0U,	// ST1Threev4s
    0U,	// ST1Threev4s_POST
    0U,	// ST1Threev8b
    0U,	// ST1Threev8b_POST
    0U,	// ST1Threev8h
    0U,	// ST1Threev8h_POST
    0U,	// ST1Twov16b
    0U,	// ST1Twov16b_POST
    0U,	// ST1Twov1d
    0U,	// ST1Twov1d_POST
    0U,	// ST1Twov2d
    0U,	// ST1Twov2d_POST
    0U,	// ST1Twov2s
    0U,	// ST1Twov2s_POST
    0U,	// ST1Twov4h
    0U,	// ST1Twov4h_POST
    0U,	// ST1Twov4s
    0U,	// ST1Twov4s_POST
    0U,	// ST1Twov8b
    0U,	// ST1Twov8b_POST
    0U,	// ST1Twov8h
    0U,	// ST1Twov8h_POST
    4741U,	// ST1W
    4741U,	// ST1W_D
    256261U,	// ST1W_D_IMM
    256261U,	// ST1W_IMM
    0U,	// ST1i16
    0U,	// ST1i16_POST
    0U,	// ST1i32
    0U,	// ST1i32_POST
    0U,	// ST1i64
    0U,	// ST1i64_POST
    0U,	// ST1i8
    0U,	// ST1i8_POST
    4357U,	// ST2B
    258565U,	// ST2B_IMM
    4421U,	// ST2D
    258565U,	// ST2D_IMM
    4485U,	// ST2H
    258565U,	// ST2H_IMM
    0U,	// ST2Twov16b
    0U,	// ST2Twov16b_POST
    0U,	// ST2Twov2d
    0U,	// ST2Twov2d_POST
    0U,	// ST2Twov2s
    0U,	// ST2Twov2s_POST
    0U,	// ST2Twov4h
    0U,	// ST2Twov4h_POST
    0U,	// ST2Twov4s
    0U,	// ST2Twov4s_POST
    0U,	// ST2Twov8b
    0U,	// ST2Twov8b_POST
    0U,	// ST2Twov8h
    0U,	// ST2Twov8h_POST
    4741U,	// ST2W
    258565U,	// ST2W_IMM
    0U,	// ST2i16
    0U,	// ST2i16_POST
    0U,	// ST2i32
    0U,	// ST2i32_POST
    0U,	// ST2i64
    0U,	// ST2i64_POST
    0U,	// ST2i8
    0U,	// ST2i8_POST
    4357U,	// ST3B
    4869U,	// ST3B_IMM
    4421U,	// ST3D
    4869U,	// ST3D_IMM
    4485U,	// ST3H
    4869U,	// ST3H_IMM
    0U,	// ST3Threev16b
    0U,	// ST3Threev16b_POST
    0U,	// ST3Threev2d
    0U,	// ST3Threev2d_POST
    0U,	// ST3Threev2s
    0U,	// ST3Threev2s_POST
    0U,	// ST3Threev4h
    0U,	// ST3Threev4h_POST
    0U,	// ST3Threev4s
    0U,	// ST3Threev4s_POST
    0U,	// ST3Threev8b
    0U,	// ST3Threev8b_POST
    0U,	// ST3Threev8h
    0U,	// ST3Threev8h_POST
    4741U,	// ST3W
    4869U,	// ST3W_IMM
    0U,	// ST3i16
    0U,	// ST3i16_POST
    0U,	// ST3i32
    0U,	// ST3i32_POST
    0U,	// ST3i64
    0U,	// ST3i64_POST
    0U,	// ST3i8
    0U,	// ST3i8_POST
    4357U,	// ST4B
    258757U,	// ST4B_IMM
    4421U,	// ST4D
    258757U,	// ST4D_IMM
    0U,	// ST4Fourv16b
    0U,	// ST4Fourv16b_POST
    0U,	// ST4Fourv2d
    0U,	// ST4Fourv2d_POST
    0U,	// ST4Fourv2s
    0U,	// ST4Fourv2s_POST
    0U,	// ST4Fourv4h
    0U,	// ST4Fourv4h_POST
    0U,	// ST4Fourv4s
    0U,	// ST4Fourv4s_POST
    0U,	// ST4Fourv8b
    0U,	// ST4Fourv8b_POST
    0U,	// ST4Fourv8h
    0U,	// ST4Fourv8h_POST
    4485U,	// ST4H
    258757U,	// ST4H_IMM
    4741U,	// ST4W
    258757U,	// ST4W_IMM
    0U,	// ST4i16
    0U,	// ST4i16_POST
    0U,	// ST4i32
    0U,	// ST4i32_POST
    0U,	// ST4i64
    0U,	// ST4i64_POST
    0U,	// ST4i8
    0U,	// ST4i8_POST
    27U,	// STLLRB
    27U,	// STLLRH
    27U,	// STLLRW
    27U,	// STLLRX
    27U,	// STLRB
    27U,	// STLRH
    27U,	// STLRW
    27U,	// STLRX
    114949U,	// STLURBi
    114949U,	// STLURHi
    114949U,	// STLURWi
    114949U,	// STLURXi
    286981U,	// STLXPW
    286981U,	// STLXPX
    114955U,	// STLXRB
    114955U,	// STLXRH
    114955U,	// STLXRW
    114955U,	// STLXRX
    11084043U,	// STNPDi
    11608331U,	// STNPQi
    12132619U,	// STNPSi
    12132619U,	// STNPWi
    11084043U,	// STNPXi
    256261U,	// STNT1B_ZRI
    4357U,	// STNT1B_ZRR
    256261U,	// STNT1D_ZRI
    4421U,	// STNT1D_ZRR
    256261U,	// STNT1H_ZRI
    4485U,	// STNT1H_ZRR
    256261U,	// STNT1W_ZRI
    4741U,	// STNT1W_ZRR
    11084043U,	// STPDi
    12847371U,	// STPDpost
    180431115U,	// STPDpre
    11608331U,	// STPQi
    13371659U,	// STPQpost
    180955403U,	// STPQpre
    12132619U,	// STPSi
    13895947U,	// STPSpost
    181479691U,	// STPSpre
    12132619U,	// STPWi
    13895947U,	// STPWpost
    181479691U,	// STPWpre
    11084043U,	// STPXi
    12847371U,	// STPXpost
    180431115U,	// STPXpre
    28U,	// STRBBpost
    272645U,	// STRBBpre
    14229765U,	// STRBBroW
    14754053U,	// STRBBroX
    4997U,	// STRBBui
    28U,	// STRBpost
    272645U,	// STRBpre
    14229765U,	// STRBroW
    14754053U,	// STRBroX
    4997U,	// STRBui
    28U,	// STRDpost
    272645U,	// STRDpre
    15278341U,	// STRDroW
    15802629U,	// STRDroX
    5061U,	// STRDui
    28U,	// STRHHpost
    272645U,	// STRHHpre
    16326917U,	// STRHHroW
    16851205U,	// STRHHroX
    5125U,	// STRHHui
    28U,	// STRHpost
    272645U,	// STRHpre
    16326917U,	// STRHroW
    16851205U,	// STRHroX
    5125U,	// STRHui
    28U,	// STRQpost
    272645U,	// STRQpre
    17375493U,	// STRQroW
    17899781U,	// STRQroX
    5189U,	// STRQui
    28U,	// STRSpost
    272645U,	// STRSpre
    18424069U,	// STRSroW
    18948357U,	// STRSroX
    5253U,	// STRSui
    28U,	// STRWpost
    272645U,	// STRWpre
    18424069U,	// STRWroW
    18948357U,	// STRWroX
    5253U,	// STRWui
    28U,	// STRXpost
    272645U,	// STRXpre
    15278341U,	// STRXroW
    15802629U,	// STRXroX
    5061U,	// STRXui
    254213U,	// STR_PXI
    254213U,	// STR_ZXI
    114949U,	// STTRBi
    114949U,	// STTRHi
    114949U,	// STTRWi
    114949U,	// STTRXi
    114949U,	// STURBBi
    114949U,	// STURBi
    114949U,	// STURDi
    114949U,	// STURHHi
    114949U,	// STURHi
    114949U,	// STURQi
    114949U,	// STURSi
    114949U,	// STURWi
    114949U,	// STURXi
    286981U,	// STXPW
    286981U,	// STXPX
    114955U,	// STXRB
    114955U,	// STXRH
    114955U,	// STXRW
    114955U,	// STXRX
    8517U,	// SUBHNv2i64_v2i32
    8581U,	// SUBHNv2i64_v4i32
    16710U,	// SUBHNv4i32_v4i16
    16774U,	// SUBHNv4i32_v8i16
    24966U,	// SUBHNv8i16_v16i8
    24902U,	// SUBHNv8i16_v8i8
    645U,	// SUBR_ZI_B
    709U,	// SUBR_ZI_D
    9U,	// SUBR_ZI_H
    773U,	// SUBR_ZI_S
    74560U,	// SUBR_ZPmZ_B
    598912U,	// SUBR_ZPmZ_D
    1131465U,	// SUBR_ZPmZ_H
    1647616U,	// SUBR_ZPmZ_S
    453U,	// SUBSWri
    0U,	// SUBSWrr
    517U,	// SUBSWrs
    581U,	// SUBSWrx
    453U,	// SUBSXri
    0U,	// SUBSXrr
    517U,	// SUBSXrs
    581U,	// SUBSXrx
    65797U,	// SUBSXrx64
    453U,	// SUBWri
    0U,	// SUBWrr
    517U,	// SUBWrs
    581U,	// SUBWrx
    453U,	// SUBXri
    0U,	// SUBXrr
    517U,	// SUBXrs
    581U,	// SUBXrx
    65797U,	// SUBXrx64
    645U,	// SUB_ZI_B
    709U,	// SUB_ZI_D
    9U,	// SUB_ZI_H
    773U,	// SUB_ZI_S
    74560U,	// SUB_ZPmZ_B
    598912U,	// SUB_ZPmZ_D
    1131465U,	// SUB_ZPmZ_H
    1647616U,	// SUB_ZPmZ_S
    837U,	// SUB_ZZZ_B
    901U,	// SUB_ZZZ_D
    137U,	// SUB_ZZZ_H
    1029U,	// SUB_ZZZ_S
    33095U,	// SUBv16i8
    261U,	// SUBv1i64
    41287U,	// SUBv2i32
    8517U,	// SUBv2i64
    49480U,	// SUBv4i16
    16710U,	// SUBv4i32
    24902U,	// SUBv8i16
    57672U,	// SUBv8i8
    1U,	// SUNPKHI_ZZ_D
    0U,	// SUNPKHI_ZZ_H
    1U,	// SUNPKHI_ZZ_S
    1U,	// SUNPKLO_ZZ_D
    0U,	// SUNPKLO_ZZ_H
    1U,	// SUNPKLO_ZZ_S
    1U,	// SUQADDv16i8
    1U,	// SUQADDv1i16
    1U,	// SUQADDv1i32
    1U,	// SUQADDv1i64
    1U,	// SUQADDv1i8
    2U,	// SUQADDv2i32
    2U,	// SUQADDv2i64
    3U,	// SUQADDv4i16
    3U,	// SUQADDv4i32
    4U,	// SUQADDv8i16
    4U,	// SUQADDv8i8
    0U,	// SVC
    0U,	// SWPAB
    0U,	// SWPAH
    0U,	// SWPALB
    0U,	// SWPALH
    0U,	// SWPALW
    0U,	// SWPALX
    0U,	// SWPAW
    0U,	// SWPAX
    0U,	// SWPB
    0U,	// SWPH
    0U,	// SWPLB
    0U,	// SWPLH
    0U,	// SWPLW
    0U,	// SWPLX
    0U,	// SWPW
    0U,	// SWPX
    64U,	// SXTB_ZPmZ_D
    128U,	// SXTB_ZPmZ_H
    192U,	// SXTB_ZPmZ_S
    64U,	// SXTH_ZPmZ_D
    192U,	// SXTH_ZPmZ_S
    64U,	// SXTW_ZPmZ_D
    5445U,	// SYSLxt
    0U,	// SYSxt
    0U,	// TBL_ZZZ_B
    0U,	// TBL_ZZZ_D
    0U,	// TBL_ZZZ_H
    0U,	// TBL_ZZZ_S
    1U,	// TBLv16i8Four
    1U,	// TBLv16i8One
    1U,	// TBLv16i8Three
    1U,	// TBLv16i8Two
    4U,	// TBLv8i8Four
    4U,	// TBLv8i8One
    4U,	// TBLv8i8Three
    4U,	// TBLv8i8Two
    5509U,	// TBNZW
    5509U,	// TBNZX
    1U,	// TBXv16i8Four
    1U,	// TBXv16i8One
    1U,	// TBXv16i8Three
    1U,	// TBXv16i8Two
    4U,	// TBXv8i8Four
    4U,	// TBXv8i8One
    4U,	// TBXv8i8Three
    4U,	// TBXv8i8Two
    5509U,	// TBZW
    5509U,	// TBZX
    0U,	// TCRETURNdi
    0U,	// TCRETURNri
    0U,	// TLSDESCCALL
    0U,	// TLSDESC_CALLSEQ
    837U,	// TRN1_PPP_B
    901U,	// TRN1_PPP_D
    137U,	// TRN1_PPP_H
    1029U,	// TRN1_PPP_S
    837U,	// TRN1_ZZZ_B
    901U,	// TRN1_ZZZ_D
    137U,	// TRN1_ZZZ_H
    1029U,	// TRN1_ZZZ_S
    33095U,	// TRN1v16i8
    41287U,	// TRN1v2i32
    8517U,	// TRN1v2i64
    49480U,	// TRN1v4i16
    16710U,	// TRN1v4i32
    24902U,	// TRN1v8i16
    57672U,	// TRN1v8i8
    837U,	// TRN2_PPP_B
    901U,	// TRN2_PPP_D
    137U,	// TRN2_PPP_H
    1029U,	// TRN2_PPP_S
    837U,	// TRN2_ZZZ_B
    901U,	// TRN2_ZZZ_D
    137U,	// TRN2_ZZZ_H
    1029U,	// TRN2_ZZZ_S
    33095U,	// TRN2v16i8
    41287U,	// TRN2v2i32
    8517U,	// TRN2v2i64
    49480U,	// TRN2v4i16
    16710U,	// TRN2v4i32
    24902U,	// TRN2v8i16
    57672U,	// TRN2v8i8
    0U,	// TSB
    33159U,	// UABALv16i8_v8i16
    41351U,	// UABALv2i32_v2i64
    49544U,	// UABALv4i16_v4i32
    16774U,	// UABALv4i32_v2i64
    24966U,	// UABALv8i16_v4i32
    57736U,	// UABALv8i8_v8i16
    33159U,	// UABAv16i8
    41351U,	// UABAv2i32
    49544U,	// UABAv4i16
    16774U,	// UABAv4i32
    24966U,	// UABAv8i16
    57736U,	// UABAv8i8
    33095U,	// UABDLv16i8_v8i16
    41287U,	// UABDLv2i32_v2i64
    49480U,	// UABDLv4i16_v4i32
    16710U,	// UABDLv4i32_v2i64
    24902U,	// UABDLv8i16_v4i32
    57672U,	// UABDLv8i8_v8i16
    74560U,	// UABD_ZPmZ_B
    598912U,	// UABD_ZPmZ_D
    1131465U,	// UABD_ZPmZ_H
    1647616U,	// UABD_ZPmZ_S
    33095U,	// UABDv16i8
    41287U,	// UABDv2i32
    49480U,	// UABDv4i16
    16710U,	// UABDv4i32
    24902U,	// UABDv8i16
    57672U,	// UABDv8i8
    1U,	// UADALPv16i8_v8i16
    2U,	// UADALPv2i32_v1i64
    3U,	// UADALPv4i16_v2i32
    3U,	// UADALPv4i32_v2i64
    4U,	// UADALPv8i16_v4i32
    4U,	// UADALPv8i8_v4i16
    1U,	// UADDLPv16i8_v8i16
    2U,	// UADDLPv2i32_v1i64
    3U,	// UADDLPv4i16_v2i32
    3U,	// UADDLPv4i32_v2i64
    4U,	// UADDLPv8i16_v4i32
    4U,	// UADDLPv8i8_v4i16
    1U,	// UADDLVv16i8v
    3U,	// UADDLVv4i16v
    3U,	// UADDLVv4i32v
    4U,	// UADDLVv8i16v
    4U,	// UADDLVv8i8v
    33095U,	// UADDLv16i8_v8i16
    41287U,	// UADDLv2i32_v2i64
    49480U,	// UADDLv4i16_v4i32
    16710U,	// UADDLv4i32_v2i64
    24902U,	// UADDLv8i16_v4i32
    57672U,	// UADDLv8i8_v8i16
    837U,	// UADDV_VPZ_B
    901U,	// UADDV_VPZ_D
    2245U,	// UADDV_VPZ_H
    1029U,	// UADDV_VPZ_S
    33094U,	// UADDWv16i8_v8i16
    41285U,	// UADDWv2i32_v2i64
    49478U,	// UADDWv4i16_v4i32
    16709U,	// UADDWv4i32_v2i64
    24902U,	// UADDWv8i16_v4i32
    57670U,	// UADDWv8i8_v8i16
    2171141U,	// UBFMWri
    2171141U,	// UBFMXri
    261U,	// UCVTFSWDri
    261U,	// UCVTFSWHri
    261U,	// UCVTFSWSri
    261U,	// UCVTFSXDri
    261U,	// UCVTFSXHri
    261U,	// UCVTFSXSri
    1U,	// UCVTFUWDri
    1U,	// UCVTFUWHri
    1U,	// UCVTFUWSri
    1U,	// UCVTFUXDri
    1U,	// UCVTFUXHri
    1U,	// UCVTFUXSri
    64U,	// UCVTF_ZPmZ_DtoD
    153U,	// UCVTF_ZPmZ_DtoH
    64U,	// UCVTF_ZPmZ_DtoS
    128U,	// UCVTF_ZPmZ_HtoH
    192U,	// UCVTF_ZPmZ_StoD
    152U,	// UCVTF_ZPmZ_StoH
    192U,	// UCVTF_ZPmZ_StoS
    261U,	// UCVTFd
    261U,	// UCVTFh
    261U,	// UCVTFs
    1U,	// UCVTFv1i16
    1U,	// UCVTFv1i32
    1U,	// UCVTFv1i64
    2U,	// UCVTFv2f32
    2U,	// UCVTFv2f64
    263U,	// UCVTFv2i32_shift
    261U,	// UCVTFv2i64_shift
    3U,	// UCVTFv4f16
    3U,	// UCVTFv4f32
    264U,	// UCVTFv4i16_shift
    262U,	// UCVTFv4i32_shift
    4U,	// UCVTFv8f16
    262U,	// UCVTFv8i16_shift
    598912U,	// UDIVR_ZPmZ_D
    1647616U,	// UDIVR_ZPmZ_S
    261U,	// UDIVWr
    261U,	// UDIVXr
    598912U,	// UDIV_ZPmZ_D
    1647616U,	// UDIV_ZPmZ_S
    41U,	// UDOT_ZZZI_D
    41U,	// UDOT_ZZZI_S
    1U,	// UDOT_ZZZ_D
    1U,	// UDOT_ZZZ_S
    278919U,	// UDOTlanev16i8
    278920U,	// UDOTlanev8i8
    33159U,	// UDOTv16i8
    57736U,	// UDOTv8i8
    33095U,	// UHADDv16i8
    41287U,	// UHADDv2i32
    49480U,	// UHADDv4i16
    16710U,	// UHADDv4i32
    24902U,	// UHADDv8i16
    57672U,	// UHADDv8i8
    33095U,	// UHSUBv16i8
    41287U,	// UHSUBv2i32
    49480U,	// UHSUBv4i16
    16710U,	// UHSUBv4i32
    24902U,	// UHSUBv8i16
    57672U,	// UHSUBv8i8
    2171141U,	// UMADDLrrr
    33095U,	// UMAXPv16i8
    41287U,	// UMAXPv2i32
    49480U,	// UMAXPv4i16
    16710U,	// UMAXPv4i32
    24902U,	// UMAXPv8i16
    57672U,	// UMAXPv8i8
    837U,	// UMAXV_VPZ_B
    901U,	// UMAXV_VPZ_D
    2245U,	// UMAXV_VPZ_H
    1029U,	// UMAXV_VPZ_S
    1U,	// UMAXVv16i8v
    3U,	// UMAXVv4i16v
    3U,	// UMAXVv4i32v
    4U,	// UMAXVv8i16v
    4U,	// UMAXVv8i8v
    5573U,	// UMAX_ZI_B
    5573U,	// UMAX_ZI_D
    45U,	// UMAX_ZI_H
    5573U,	// UMAX_ZI_S
    74560U,	// UMAX_ZPmZ_B
    598912U,	// UMAX_ZPmZ_D
    1131465U,	// UMAX_ZPmZ_H
    1647616U,	// UMAX_ZPmZ_S
    33095U,	// UMAXv16i8
    41287U,	// UMAXv2i32
    49480U,	// UMAXv4i16
    16710U,	// UMAXv4i32
    24902U,	// UMAXv8i16
    57672U,	// UMAXv8i8
    33095U,	// UMINPv16i8
    41287U,	// UMINPv2i32
    49480U,	// UMINPv4i16
    16710U,	// UMINPv4i32
    24902U,	// UMINPv8i16
    57672U,	// UMINPv8i8
    837U,	// UMINV_VPZ_B
    901U,	// UMINV_VPZ_D
    2245U,	// UMINV_VPZ_H
    1029U,	// UMINV_VPZ_S
    1U,	// UMINVv16i8v
    3U,	// UMINVv4i16v
    3U,	// UMINVv4i32v
    4U,	// UMINVv8i16v
    4U,	// UMINVv8i8v
    5573U,	// UMIN_ZI_B
    5573U,	// UMIN_ZI_D
    45U,	// UMIN_ZI_H
    5573U,	// UMIN_ZI_S
    74560U,	// UMIN_ZPmZ_B
    598912U,	// UMIN_ZPmZ_D
    1131465U,	// UMIN_ZPmZ_H
    1647616U,	// UMIN_ZPmZ_S
    33095U,	// UMINv16i8
    41287U,	// UMINv2i32
    49480U,	// UMINv4i16
    16710U,	// UMINv4i32
    24902U,	// UMINv8i16
    57672U,	// UMINv8i8
    33159U,	// UMLALv16i8_v8i16
    9126279U,	// UMLALv2i32_indexed
    41351U,	// UMLALv2i32_v2i64
    9118088U,	// UMLALv4i16_indexed
    49544U,	// UMLALv4i16_v4i32
    9126278U,	// UMLALv4i32_indexed
    16774U,	// UMLALv4i32_v2i64
    9118086U,	// UMLALv8i16_indexed
    24966U,	// UMLALv8i16_v4i32
    57736U,	// UMLALv8i8_v8i16
    33159U,	// UMLSLv16i8_v8i16
    9126279U,	// UMLSLv2i32_indexed
    41351U,	// UMLSLv2i32_v2i64
    9118088U,	// UMLSLv4i16_indexed
    49544U,	// UMLSLv4i16_v4i32
    9126278U,	// UMLSLv4i32_indexed
    16774U,	// UMLSLv4i32_v2i64
    9118086U,	// UMLSLv8i16_indexed
    24966U,	// UMLSLv8i16_v4i32
    57736U,	// UMLSLv8i8_v8i16
    2770U,	// UMOVvi16
    2770U,	// UMOVvi32
    2771U,	// UMOVvi64
    2771U,	// UMOVvi8
    2171141U,	// UMSUBLrrr
    74560U,	// UMULH_ZPmZ_B
    598912U,	// UMULH_ZPmZ_D
    1131465U,	// UMULH_ZPmZ_H
    1647616U,	// UMULH_ZPmZ_S
    261U,	// UMULHrr
    33095U,	// UMULLv16i8_v8i16
    10174791U,	// UMULLv2i32_indexed
    41287U,	// UMULLv2i32_v2i64
    10166600U,	// UMULLv4i16_indexed
    49480U,	// UMULLv4i16_v4i32
    10174790U,	// UMULLv4i32_indexed
    16710U,	// UMULLv4i32_v2i64
    10166598U,	// UMULLv8i16_indexed
    24902U,	// UMULLv8i16_v4i32
    57672U,	// UMULLv8i8_v8i16
    645U,	// UQADD_ZI_B
    709U,	// UQADD_ZI_D
    9U,	// UQADD_ZI_H
    773U,	// UQADD_ZI_S
    837U,	// UQADD_ZZZ_B
    901U,	// UQADD_ZZZ_D
    137U,	// UQADD_ZZZ_H
    1029U,	// UQADD_ZZZ_S
    33095U,	// UQADDv16i8
    261U,	// UQADDv1i16
    261U,	// UQADDv1i32
    261U,	// UQADDv1i64
    261U,	// UQADDv1i8
    41287U,	// UQADDv2i32
    8517U,	// UQADDv2i64
    49480U,	// UQADDv4i16
    16710U,	// UQADDv4i32
    24902U,	// UQADDv8i16
    57672U,	// UQADDv8i8
    0U,	// UQDECB_WPiI
    0U,	// UQDECB_XPiI
    0U,	// UQDECD_WPiI
    0U,	// UQDECD_XPiI
    0U,	// UQDECD_ZPiI
    0U,	// UQDECH_WPiI
    0U,	// UQDECH_XPiI
    0U,	// UQDECH_ZPiI
    1U,	// UQDECP_WP_B
    1U,	// UQDECP_WP_D
    1U,	// UQDECP_WP_H
    1U,	// UQDECP_WP_S
    1U,	// UQDECP_XP_B
    1U,	// UQDECP_XP_D
    1U,	// UQDECP_XP_H
    1U,	// UQDECP_XP_S
    1U,	// UQDECP_ZP_D
    0U,	// UQDECP_ZP_H
    1U,	// UQDECP_ZP_S
    0U,	// UQDECW_WPiI
    0U,	// UQDECW_XPiI
    0U,	// UQDECW_ZPiI
    0U,	// UQINCB_WPiI
    0U,	// UQINCB_XPiI
    0U,	// UQINCD_WPiI
    0U,	// UQINCD_XPiI
    0U,	// UQINCD_ZPiI
    0U,	// UQINCH_WPiI
    0U,	// UQINCH_XPiI
    0U,	// UQINCH_ZPiI
    1U,	// UQINCP_WP_B
    1U,	// UQINCP_WP_D
    1U,	// UQINCP_WP_H
    1U,	// UQINCP_WP_S
    1U,	// UQINCP_XP_B
    1U,	// UQINCP_XP_D
    1U,	// UQINCP_XP_H
    1U,	// UQINCP_XP_S
    1U,	// UQINCP_ZP_D
    0U,	// UQINCP_ZP_H
    1U,	// UQINCP_ZP_S
    0U,	// UQINCW_WPiI
    0U,	// UQINCW_XPiI
    0U,	// UQINCW_ZPiI
    33095U,	// UQRSHLv16i8
    261U,	// UQRSHLv1i16
    261U,	// UQRSHLv1i32
    261U,	// UQRSHLv1i64
    261U,	// UQRSHLv1i8
    41287U,	// UQRSHLv2i32
    8517U,	// UQRSHLv2i64
    49480U,	// UQRSHLv4i16
    16710U,	// UQRSHLv4i32
    24902U,	// UQRSHLv8i16
    57672U,	// UQRSHLv8i8
    261U,	// UQRSHRNb
    261U,	// UQRSHRNh
    261U,	// UQRSHRNs
    2310U,	// UQRSHRNv16i8_shift
    261U,	// UQRSHRNv2i32_shift
    262U,	// UQRSHRNv4i16_shift
    2309U,	// UQRSHRNv4i32_shift
    2310U,	// UQRSHRNv8i16_shift
    262U,	// UQRSHRNv8i8_shift
    261U,	// UQSHLb
    261U,	// UQSHLd
    261U,	// UQSHLh
    261U,	// UQSHLs
    33095U,	// UQSHLv16i8
    263U,	// UQSHLv16i8_shift
    261U,	// UQSHLv1i16
    261U,	// UQSHLv1i32
    261U,	// UQSHLv1i64
    261U,	// UQSHLv1i8
    41287U,	// UQSHLv2i32
    263U,	// UQSHLv2i32_shift
    8517U,	// UQSHLv2i64
    261U,	// UQSHLv2i64_shift
    49480U,	// UQSHLv4i16
    264U,	// UQSHLv4i16_shift
    16710U,	// UQSHLv4i32
    262U,	// UQSHLv4i32_shift
    24902U,	// UQSHLv8i16
    262U,	// UQSHLv8i16_shift
    57672U,	// UQSHLv8i8
    264U,	// UQSHLv8i8_shift
    261U,	// UQSHRNb
    261U,	// UQSHRNh
    261U,	// UQSHRNs
    2310U,	// UQSHRNv16i8_shift
    261U,	// UQSHRNv2i32_shift
    262U,	// UQSHRNv4i16_shift
    2309U,	// UQSHRNv4i32_shift
    2310U,	// UQSHRNv8i16_shift
    262U,	// UQSHRNv8i8_shift
    645U,	// UQSUB_ZI_B
    709U,	// UQSUB_ZI_D
    9U,	// UQSUB_ZI_H
    773U,	// UQSUB_ZI_S
    837U,	// UQSUB_ZZZ_B
    901U,	// UQSUB_ZZZ_D
    137U,	// UQSUB_ZZZ_H
    1029U,	// UQSUB_ZZZ_S
    33095U,	// UQSUBv16i8
    261U,	// UQSUBv1i16
    261U,	// UQSUBv1i32
    261U,	// UQSUBv1i64
    261U,	// UQSUBv1i8
    41287U,	// UQSUBv2i32
    8517U,	// UQSUBv2i64
    49480U,	// UQSUBv4i16
    16710U,	// UQSUBv4i32
    24902U,	// UQSUBv8i16
    57672U,	// UQSUBv8i8
    4U,	// UQXTNv16i8
    1U,	// UQXTNv1i16
    1U,	// UQXTNv1i32
    1U,	// UQXTNv1i8
    2U,	// UQXTNv2i32
    3U,	// UQXTNv4i16
    2U,	// UQXTNv4i32
    3U,	// UQXTNv8i16
    4U,	// UQXTNv8i8
    2U,	// URECPEv2i32
    3U,	// URECPEv4i32
    33095U,	// URHADDv16i8
    41287U,	// URHADDv2i32
    49480U,	// URHADDv4i16
    16710U,	// URHADDv4i32
    24902U,	// URHADDv8i16
    57672U,	// URHADDv8i8
    33095U,	// URSHLv16i8
    261U,	// URSHLv1i64
    41287U,	// URSHLv2i32
    8517U,	// URSHLv2i64
    49480U,	// URSHLv4i16
    16710U,	// URSHLv4i32
    24902U,	// URSHLv8i16
    57672U,	// URSHLv8i8
    261U,	// URSHRd
    263U,	// URSHRv16i8_shift
    263U,	// URSHRv2i32_shift
    261U,	// URSHRv2i64_shift
    264U,	// URSHRv4i16_shift
    262U,	// URSHRv4i32_shift
    262U,	// URSHRv8i16_shift
    264U,	// URSHRv8i8_shift
    2U,	// URSQRTEv2i32
    3U,	// URSQRTEv4i32
    2309U,	// URSRAd
    2311U,	// URSRAv16i8_shift
    2311U,	// URSRAv2i32_shift
    2309U,	// URSRAv2i64_shift
    2312U,	// URSRAv4i16_shift
    2310U,	// URSRAv4i32_shift
    2310U,	// URSRAv8i16_shift
    2312U,	// URSRAv8i8_shift
    263U,	// USHLLv16i8_shift
    263U,	// USHLLv2i32_shift
    264U,	// USHLLv4i16_shift
    262U,	// USHLLv4i32_shift
    262U,	// USHLLv8i16_shift
    264U,	// USHLLv8i8_shift
    33095U,	// USHLv16i8
    261U,	// USHLv1i64
    41287U,	// USHLv2i32
    8517U,	// USHLv2i64
    49480U,	// USHLv4i16
    16710U,	// USHLv4i32
    24902U,	// USHLv8i16
    57672U,	// USHLv8i8
    261U,	// USHRd
    263U,	// USHRv16i8_shift
    263U,	// USHRv2i32_shift
    261U,	// USHRv2i64_shift
    264U,	// USHRv4i16_shift
    262U,	// USHRv4i32_shift
    262U,	// USHRv8i16_shift
    264U,	// USHRv8i8_shift
    1U,	// USQADDv16i8
    1U,	// USQADDv1i16
    1U,	// USQADDv1i32
    1U,	// USQADDv1i64
    1U,	// USQADDv1i8
    2U,	// USQADDv2i32
    2U,	// USQADDv2i64
    3U,	// USQADDv4i16
    3U,	// USQADDv4i32
    4U,	// USQADDv8i16
    4U,	// USQADDv8i8
    2309U,	// USRAd
    2311U,	// USRAv16i8_shift
    2311U,	// USRAv2i32_shift
    2309U,	// USRAv2i64_shift
    2312U,	// USRAv4i16_shift
    2310U,	// USRAv4i32_shift
    2310U,	// USRAv8i16_shift
    2312U,	// USRAv8i8_shift
    33095U,	// USUBLv16i8_v8i16
    41287U,	// USUBLv2i32_v2i64
    49480U,	// USUBLv4i16_v4i32
    16710U,	// USUBLv4i32_v2i64
    24902U,	// USUBLv8i16_v4i32
    57672U,	// USUBLv8i8_v8i16
    33094U,	// USUBWv16i8_v8i16
    41285U,	// USUBWv2i32_v2i64
    49478U,	// USUBWv4i16_v4i32
    16709U,	// USUBWv4i32_v2i64
    24902U,	// USUBWv8i16_v4i32
    57670U,	// USUBWv8i8_v8i16
    1U,	// UUNPKHI_ZZ_D
    0U,	// UUNPKHI_ZZ_H
    1U,	// UUNPKHI_ZZ_S
    1U,	// UUNPKLO_ZZ_D
    0U,	// UUNPKLO_ZZ_H
    1U,	// UUNPKLO_ZZ_S
    64U,	// UXTB_ZPmZ_D
    128U,	// UXTB_ZPmZ_H
    192U,	// UXTB_ZPmZ_S
    64U,	// UXTH_ZPmZ_D
    192U,	// UXTH_ZPmZ_S
    64U,	// UXTW_ZPmZ_D
    837U,	// UZP1_PPP_B
    901U,	// UZP1_PPP_D
    137U,	// UZP1_PPP_H
    1029U,	// UZP1_PPP_S
    837U,	// UZP1_ZZZ_B
    901U,	// UZP1_ZZZ_D
    137U,	// UZP1_ZZZ_H
    1029U,	// UZP1_ZZZ_S
    33095U,	// UZP1v16i8
    41287U,	// UZP1v2i32
    8517U,	// UZP1v2i64
    49480U,	// UZP1v4i16
    16710U,	// UZP1v4i32
    24902U,	// UZP1v8i16
    57672U,	// UZP1v8i8
    837U,	// UZP2_PPP_B
    901U,	// UZP2_PPP_D
    137U,	// UZP2_PPP_H
    1029U,	// UZP2_PPP_S
    837U,	// UZP2_ZZZ_B
    901U,	// UZP2_ZZZ_D
    137U,	// UZP2_ZZZ_H
    1029U,	// UZP2_ZZZ_S
    33095U,	// UZP2v16i8
    41287U,	// UZP2v2i32
    8517U,	// UZP2v2i64
    49480U,	// UZP2v4i16
    16710U,	// UZP2v4i32
    24902U,	// UZP2v8i16
    57672U,	// UZP2v8i8
    261U,	// WHILELE_PWW_B
    261U,	// WHILELE_PWW_D
    11U,	// WHILELE_PWW_H
    261U,	// WHILELE_PWW_S
    261U,	// WHILELE_PXX_B
    261U,	// WHILELE_PXX_D
    11U,	// WHILELE_PXX_H
    261U,	// WHILELE_PXX_S
    261U,	// WHILELO_PWW_B
    261U,	// WHILELO_PWW_D
    11U,	// WHILELO_PWW_H
    261U,	// WHILELO_PWW_S
    261U,	// WHILELO_PXX_B
    261U,	// WHILELO_PXX_D
    11U,	// WHILELO_PXX_H
    261U,	// WHILELO_PXX_S
    261U,	// WHILELS_PWW_B
    261U,	// WHILELS_PWW_D
    11U,	// WHILELS_PWW_H
    261U,	// WHILELS_PWW_S
    261U,	// WHILELS_PXX_B
    261U,	// WHILELS_PXX_D
    11U,	// WHILELS_PXX_H
    261U,	// WHILELS_PXX_S
    261U,	// WHILELT_PWW_B
    261U,	// WHILELT_PWW_D
    11U,	// WHILELT_PWW_H
    261U,	// WHILELT_PWW_S
    261U,	// WHILELT_PXX_B
    261U,	// WHILELT_PXX_D
    11U,	// WHILELT_PXX_H
    261U,	// WHILELT_PXX_S
    0U,	// WRFFR
    2253125U,	// XAR
    0U,	// XPACD
    0U,	// XPACI
    0U,	// XPACLRI
    4U,	// XTNv16i8
    2U,	// XTNv2i32
    3U,	// XTNv4i16
    2U,	// XTNv4i32
    3U,	// XTNv8i16
    4U,	// XTNv8i8
    837U,	// ZIP1_PPP_B
    901U,	// ZIP1_PPP_D
    137U,	// ZIP1_PPP_H
    1029U,	// ZIP1_PPP_S
    837U,	// ZIP1_ZZZ_B
    901U,	// ZIP1_ZZZ_D
    137U,	// ZIP1_ZZZ_H
    1029U,	// ZIP1_ZZZ_S
    33095U,	// ZIP1v16i8
    41287U,	// ZIP1v2i32
    8517U,	// ZIP1v2i64
    49480U,	// ZIP1v4i16
    16710U,	// ZIP1v4i32
    24902U,	// ZIP1v8i16
    57672U,	// ZIP1v8i8
    837U,	// ZIP2_PPP_B
    901U,	// ZIP2_PPP_D
    137U,	// ZIP2_PPP_H
    1029U,	// ZIP2_PPP_S
    837U,	// ZIP2_ZZZ_B
    901U,	// ZIP2_ZZZ_D
    137U,	// ZIP2_ZZZ_H
    1029U,	// ZIP2_ZZZ_S
    33095U,	// ZIP2v16i8
    41287U,	// ZIP2v2i32
    8517U,	// ZIP2v2i64
    49480U,	// ZIP2v4i16
    16710U,	// ZIP2v4i32
    24902U,	// ZIP2v8i16
    57672U,	// ZIP2v8i8
    837U,	// anonymous_1349
  };

  O << "\t";

  // Emit the opcode for the instruction.
  uint64_t Bits = 0;
  Bits |= (uint64_t)OpInfo0[MI->getOpcode()] << 0;
  Bits |= (uint64_t)OpInfo1[MI->getOpcode()] << 32;
  assert(Bits != 0 && "Cannot print this instruction.");
  O << AsmStrs+(Bits & 8191)-1;


  // Fragment 0 encoded into 6 bits for 54 unique commands.
  switch ((Bits >> 13) & 63) {
  default: llvm_unreachable("Invalid command number.");
  case 0:
    // DBG_VALUE, DBG_LABEL, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CAL...
    return;
    break;
  case 1:
    // ABS_ZPmZ_B, ADD_ZI_B, ADD_ZPmZ_B, ADD_ZZZ_B, ANDS_PPzPP, AND_PPzPP, AN...
    printSVERegOp<'b'>(MI, 0, STI, O);
    break;
  case 2:
    // ABS_ZPmZ_D, ADD_ZI_D, ADD_ZPmZ_D, ADD_ZZZ_D, ADR_LSL_ZZZ_D_0, ADR_LSL_...
    printSVERegOp<'d'>(MI, 0, STI, O);
    break;
  case 3:
    // ABS_ZPmZ_H, ADD_ZI_H, ADD_ZPmZ_H, ADD_ZZZ_H, AND_ZPmZ_H, ASRD_ZPmI_H, ...
    printSVERegOp<'h'>(MI, 0, STI, O);
    O << ", ";
    break;
  case 4:
    // ABS_ZPmZ_S, ADD_ZI_S, ADD_ZPmZ_S, ADD_ZZZ_S, ADR_LSL_ZZZ_S_0, ADR_LSL_...
    printSVERegOp<'s'>(MI, 0, STI, O);
    break;
  case 5:
    // ABSv16i8, ABSv2i32, ABSv2i64, ABSv4i16, ABSv4i32, ABSv8i16, ABSv8i8, A...
    printVRegOperand(MI, 0, STI, O);
    break;
  case 6:
    // ABSv1i64, ADCSWr, ADCSXr, ADCWr, ADCXr, ADDPL_XXI, ADDPv2i64p, ADDSWri...
    printOperand(MI, 0, STI, O);
    break;
  case 7:
    // ADDHNv2i64_v4i32, ADDHNv4i32_v8i16, ADDHNv8i16_v16i8, AESDrr, AESErr, ...
    printVRegOperand(MI, 1, STI, O);
    break;
  case 8:
    // B, BL
    printAlignedLabel(MI, 0, STI, O);
    return;
    break;
  case 9:
    // BRK, DCPS1, DCPS2, DCPS3, HLT, HVC, SMC, SVC
    printImmHex(MI, 0, STI, O);
    return;
    break;
  case 10:
    // Bcc
    printCondCode(MI, 0, STI, O);
    O << "\t";
    printAlignedLabel(MI, 1, STI, O);
    return;
    break;
  case 11:
    // CASAB, CASAH, CASALB, CASALH, CASALW, CASALX, CASAW, CASAX, CASB, CASH...
    printOperand(MI, 1, STI, O);
    break;
  case 12:
    // CASPALW, CASPAW, CASPLW, CASPW
    printGPRSeqPairsClassOperand<32>(MI, 1, STI, O);
    O << ", ";
    printGPRSeqPairsClassOperand<32>(MI, 2, STI, O);
    O << ", [";
    printOperand(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 13:
    // CASPALX, CASPAX, CASPLX, CASPX
    printGPRSeqPairsClassOperand<64>(MI, 1, STI, O);
    O << ", ";
    printGPRSeqPairsClassOperand<64>(MI, 2, STI, O);
    O << ", [";
    printOperand(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 14:
    // DMB, DSB, ISB, TSB
    printBarrierOption(MI, 0, STI, O);
    return;
    break;
  case 15:
    // DUP_ZZI_Q
    printSVERegOp<'q'>(MI, 0, STI, O);
    O << ", ";
    printSVERegOp<'q'>(MI, 1, STI, O);
    printVectorIndex(MI, 2, STI, O);
    return;
    break;
  case 16:
    // GLD1B_D_IMM_REAL, GLD1B_D_REAL, GLD1B_D_SXTW_REAL, GLD1B_D_UXTW_REAL, ...
    printTypedVectorList<0,'d'>(MI, 0, STI, O);
    O << ", ";
    printSVERegOp<>(MI, 1, STI, O);
    break;
  case 17:
    // GLD1B_S_IMM_REAL, GLD1B_S_SXTW_REAL, GLD1B_S_UXTW_REAL, GLD1H_S_IMM_RE...
    printTypedVectorList<0,'s'>(MI, 0, STI, O);
    O << ", ";
    printSVERegOp<>(MI, 1, STI, O);
    break;
  case 18:
    // HINT
    printImm(MI, 0, STI, O);
    return;
    break;
  case 19:
    // LD1B, LD1B_IMM_REAL, LD1RB_IMM, LD1RQ_B, LD1RQ_B_IMM, LD2B, LD2B_IMM, ...
    printTypedVectorList<0,'b'>(MI, 0, STI, O);
    O << ", ";
    printSVERegOp<>(MI, 1, STI, O);
    break;
  case 20:
    // LD1B_H, LD1B_H_IMM_REAL, LD1H, LD1H_IMM_REAL, LD1RB_H_IMM, LD1RH_IMM, ...
    printTypedVectorList<0,'h'>(MI, 0, STI, O);
    O << ", ";
    printSVERegOp<>(MI, 1, STI, O);
    break;
  case 21:
    // LD1Fourv16b, LD1Onev16b, LD1Rv16b, LD1Threev16b, LD1Twov16b, LD2Rv16b,...
    printTypedVectorList<16, 'b'>(MI, 0, STI, O);
    O << ", [";
    printOperand(MI, 1, STI, O);
    O << ']';
    return;
    break;
  case 22:
    // LD1Fourv16b_POST, LD1Onev16b_POST, LD1Rv16b_POST, LD1Threev16b_POST, L...
    printTypedVectorList<16, 'b'>(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << "], ";
    break;
  case 23:
    // LD1Fourv1d, LD1Onev1d, LD1Rv1d, LD1Threev1d, LD1Twov1d, LD2Rv1d, LD3Rv...
    printTypedVectorList<1, 'd'>(MI, 0, STI, O);
    O << ", [";
    printOperand(MI, 1, STI, O);
    O << ']';
    return;
    break;
  case 24:
    // LD1Fourv1d_POST, LD1Onev1d_POST, LD1Rv1d_POST, LD1Threev1d_POST, LD1Tw...
    printTypedVectorList<1, 'd'>(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << "], ";
    break;
  case 25:
    // LD1Fourv2d, LD1Onev2d, LD1Rv2d, LD1Threev2d, LD1Twov2d, LD2Rv2d, LD2Tw...
    printTypedVectorList<2, 'd'>(MI, 0, STI, O);
    O << ", [";
    printOperand(MI, 1, STI, O);
    O << ']';
    return;
    break;
  case 26:
    // LD1Fourv2d_POST, LD1Onev2d_POST, LD1Rv2d_POST, LD1Threev2d_POST, LD1Tw...
    printTypedVectorList<2, 'd'>(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << "], ";
    break;
  case 27:
    // LD1Fourv2s, LD1Onev2s, LD1Rv2s, LD1Threev2s, LD1Twov2s, LD2Rv2s, LD2Tw...
    printTypedVectorList<2, 's'>(MI, 0, STI, O);
    O << ", [";
    printOperand(MI, 1, STI, O);
    O << ']';
    return;
    break;
  case 28:
    // LD1Fourv2s_POST, LD1Onev2s_POST, LD1Rv2s_POST, LD1Threev2s_POST, LD1Tw...
    printTypedVectorList<2, 's'>(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << "], ";
    break;
  case 29:
    // LD1Fourv4h, LD1Onev4h, LD1Rv4h, LD1Threev4h, LD1Twov4h, LD2Rv4h, LD2Tw...
    printTypedVectorList<4, 'h'>(MI, 0, STI, O);
    O << ", [";
    printOperand(MI, 1, STI, O);
    O << ']';
    return;
    break;
  case 30:
    // LD1Fourv4h_POST, LD1Onev4h_POST, LD1Rv4h_POST, LD1Threev4h_POST, LD1Tw...
    printTypedVectorList<4, 'h'>(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << "], ";
    break;
  case 31:
    // LD1Fourv4s, LD1Onev4s, LD1Rv4s, LD1Threev4s, LD1Twov4s, LD2Rv4s, LD2Tw...
    printTypedVectorList<4, 's'>(MI, 0, STI, O);
    O << ", [";
    printOperand(MI, 1, STI, O);
    O << ']';
    return;
    break;
  case 32:
    // LD1Fourv4s_POST, LD1Onev4s_POST, LD1Rv4s_POST, LD1Threev4s_POST, LD1Tw...
    printTypedVectorList<4, 's'>(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << "], ";
    break;
  case 33:
    // LD1Fourv8b, LD1Onev8b, LD1Rv8b, LD1Threev8b, LD1Twov8b, LD2Rv8b, LD2Tw...
    printTypedVectorList<8, 'b'>(MI, 0, STI, O);
    O << ", [";
    printOperand(MI, 1, STI, O);
    O << ']';
    return;
    break;
  case 34:
    // LD1Fourv8b_POST, LD1Onev8b_POST, LD1Rv8b_POST, LD1Threev8b_POST, LD1Tw...
    printTypedVectorList<8, 'b'>(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << "], ";
    break;
  case 35:
    // LD1Fourv8h, LD1Onev8h, LD1Rv8h, LD1Threev8h, LD1Twov8h, LD2Rv8h, LD2Tw...
    printTypedVectorList<8, 'h'>(MI, 0, STI, O);
    O << ", [";
    printOperand(MI, 1, STI, O);
    O << ']';
    return;
    break;
  case 36:
    // LD1Fourv8h_POST, LD1Onev8h_POST, LD1Rv8h_POST, LD1Threev8h_POST, LD1Tw...
    printTypedVectorList<8, 'h'>(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << "], ";
    break;
  case 37:
    // LD1i16, LD2i16, LD3i16, LD4i16, ST1i16_POST, ST2i16_POST, ST3i16_POST,...
    printTypedVectorList<0, 'h'>(MI, 1, STI, O);
    printVectorIndex(MI, 2, STI, O);
    O << ", [";
    printOperand(MI, 3, STI, O);
    break;
  case 38:
    // LD1i16_POST, LD2i16_POST, LD3i16_POST, LD4i16_POST
    printTypedVectorList<0, 'h'>(MI, 2, STI, O);
    printVectorIndex(MI, 3, STI, O);
    O << ", [";
    printOperand(MI, 4, STI, O);
    O << "], ";
    break;
  case 39:
    // LD1i32, LD2i32, LD3i32, LD4i32, ST1i32_POST, ST2i32_POST, ST3i32_POST,...
    printTypedVectorList<0, 's'>(MI, 1, STI, O);
    printVectorIndex(MI, 2, STI, O);
    O << ", [";
    printOperand(MI, 3, STI, O);
    break;
  case 40:
    // LD1i32_POST, LD2i32_POST, LD3i32_POST, LD4i32_POST
    printTypedVectorList<0, 's'>(MI, 2, STI, O);
    printVectorIndex(MI, 3, STI, O);
    O << ", [";
    printOperand(MI, 4, STI, O);
    O << "], ";
    break;
  case 41:
    // LD1i64, LD2i64, LD3i64, LD4i64, ST1i64_POST, ST2i64_POST, ST3i64_POST,...
    printTypedVectorList<0, 'd'>(MI, 1, STI, O);
    printVectorIndex(MI, 2, STI, O);
    O << ", [";
    printOperand(MI, 3, STI, O);
    break;
  case 42:
    // LD1i64_POST, LD2i64_POST, LD3i64_POST, LD4i64_POST
    printTypedVectorList<0, 'd'>(MI, 2, STI, O);
    printVectorIndex(MI, 3, STI, O);
    O << ", [";
    printOperand(MI, 4, STI, O);
    O << "], ";
    break;
  case 43:
    // LD1i8, LD2i8, LD3i8, LD4i8, ST1i8_POST, ST2i8_POST, ST3i8_POST, ST4i8_...
    printTypedVectorList<0, 'b'>(MI, 1, STI, O);
    printVectorIndex(MI, 2, STI, O);
    O << ", [";
    printOperand(MI, 3, STI, O);
    break;
  case 44:
    // LD1i8_POST, LD2i8_POST, LD3i8_POST, LD4i8_POST
    printTypedVectorList<0, 'b'>(MI, 2, STI, O);
    printVectorIndex(MI, 3, STI, O);
    O << ", [";
    printOperand(MI, 4, STI, O);
    O << "], ";
    break;
  case 45:
    // LDR_PXI, LDR_ZXI, MOVPRFX_ZZ, PTEST_PP, STR_PXI, STR_ZXI
    printSVERegOp<>(MI, 0, STI, O);
    break;
  case 46:
    // MSR
    printMSRSystemRegister(MI, 0, STI, O);
    O << ", ";
    printOperand(MI, 1, STI, O);
    return;
    break;
  case 47:
    // MSRpstateImm1, MSRpstateImm4
    printSystemPStateField(MI, 0, STI, O);
    O << ", ";
    printOperand(MI, 1, STI, O);
    return;
    break;
  case 48:
    // PRFB_D_PZI, PRFB_D_SCALED, PRFB_D_SXTW_SCALED, PRFB_D_UXTW_SCALED, PRF...
    printPrefetchOp<true>(MI, 0, STI, O);
    O << ", ";
    printSVERegOp<>(MI, 1, STI, O);
    O << ", [";
    break;
  case 49:
    // PRFMl, PRFMroW, PRFMroX, PRFMui, PRFUMi
    printPrefetchOp(MI, 0, STI, O);
    break;
  case 50:
    // ST1i16, ST2i16, ST3i16, ST4i16
    printTypedVectorList<0, 'h'>(MI, 0, STI, O);
    printVectorIndex(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 51:
    // ST1i32, ST2i32, ST3i32, ST4i32
    printTypedVectorList<0, 's'>(MI, 0, STI, O);
    printVectorIndex(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 52:
    // ST1i64, ST2i64, ST3i64, ST4i64
    printTypedVectorList<0, 'd'>(MI, 0, STI, O);
    printVectorIndex(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 53:
    // ST1i8, ST2i8, ST3i8, ST4i8
    printTypedVectorList<0, 'b'>(MI, 0, STI, O);
    printVectorIndex(MI, 1, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << ']';
    return;
    break;
  }


  // Fragment 1 encoded into 6 bits for 56 unique commands.
  switch ((Bits >> 19) & 63) {
  default: llvm_unreachable("Invalid command number.");
  case 0:
    // ABS_ZPmZ_B, ABS_ZPmZ_D, ABS_ZPmZ_S, ABSv1i64, ADCSWr, ADCSXr, ADCWr, A...
    O << ", ";
    break;
  case 1:
    // ABS_ZPmZ_H, CLS_ZPmZ_H, CLZ_ZPmZ_H, CNOT_ZPmZ_H, CNT_ZPmZ_H, CPY_ZPmI_...
    printSVERegOp<>(MI, 2, STI, O);
    break;
  case 2:
    // ABSv16i8, ADDHNv8i16_v16i8, ADDPv16i8, ADDv16i8, AESDrr, AESErr, AESIM...
    O << ".16b, ";
    break;
  case 3:
    // ABSv2i32, ADDHNv2i64_v2i32, ADDPv2i32, ADDv2i32, BICv2i32, CLSv2i32, C...
    O << ".2s, ";
    break;
  case 4:
    // ABSv2i64, ADDPv2i64, ADDv2i64, CMEQv2i64, CMEQv2i64rz, CMGEv2i64, CMGE...
    O << ".2d, ";
    break;
  case 5:
    // ABSv4i16, ADDHNv4i32_v4i16, ADDPv4i16, ADDv4i16, BICv4i16, CLSv4i16, C...
    O << ".4h, ";
    break;
  case 6:
    // ABSv4i32, ADDHNv2i64_v4i32, ADDPv4i32, ADDv4i32, BICv4i32, CLSv4i32, C...
    O << ".4s, ";
    break;
  case 7:
    // ABSv8i16, ADDHNv4i32_v8i16, ADDPv8i16, ADDv8i16, BICv8i16, CLSv8i16, C...
    O << ".8h, ";
    break;
  case 8:
    // ABSv8i8, ADDHNv8i16_v8i8, ADDPv8i8, ADDv8i8, ANDv8i8, BICv8i8, BIFv8i8...
    O << ".8b, ";
    break;
  case 9:
    // ADD_ZI_H, ADD_ZZZ_H, ASR_WIDE_ZZZ_H, ASR_ZZI_H, DUP_ZZI_H, FADD_ZZZ_H,...
    printSVERegOp<'h'>(MI, 1, STI, O);
    break;
  case 10:
    // ADD_ZPmZ_H, AND_ZPmZ_H, ASRD_ZPmI_H, ASRR_ZPmZ_H, ASR_WIDE_ZPmZ_H, ASR...
    printSVERegOp<>(MI, 1, STI, O);
    break;
  case 11:
    // ADR_LSL_ZZZ_D_0, ADR_LSL_ZZZ_D_1, ADR_LSL_ZZZ_D_2, ADR_LSL_ZZZ_D_3, AD...
    O << ", [";
    break;
  case 12:
    // AUTDZA, AUTDZB, AUTIZA, AUTIZB, BLR, BLRAAZ, BLRABZ, BR, BRAAZ, BRABZ,...
    return;
    break;
  case 13:
    // DECH_ZPiI, INCH_ZPiI, SQDECH_ZPiI, SQINCH_ZPiI, UQDECH_ZPiI, UQINCH_ZP...
    printSVEPattern(MI, 2, STI, O);
    O << ", mul ";
    printOperand(MI, 3, STI, O);
    return;
    break;
  case 14:
    // DUP_ZI_H
    printImm8OptLsl<int16_t>(MI, 1, STI, O);
    return;
    break;
  case 15:
    // DUP_ZR_H, INDEX_II_H, INDEX_IR_H, INDEX_RI_H, INDEX_RR_H, WHILELE_PWW_...
    printOperand(MI, 1, STI, O);
    break;
  case 16:
    // FCMLA_ZZZI_H, FMLA_ZZZI_H, FMLS_ZZZI_H
    printSVERegOp<'h'>(MI, 2, STI, O);
    O << ", ";
    printSVERegOp<'h'>(MI, 3, STI, O);
    printVectorIndex(MI, 4, STI, O);
    break;
  case 17:
    // FCMPDri, FCMPEDri, FCMPEHri, FCMPESri, FCMPHri, FCMPSri
    O << ", #0.0";
    return;
    break;
  case 18:
    // FDUP_ZI_H
    printFPImmOperand(MI, 1, STI, O);
    return;
    break;
  case 19:
    // FMOVXDHighr, INSvi64gpr, INSvi64lane
    O << ".d";
    printVectorIndex(MI, 2, STI, O);
    O << ", ";
    break;
  case 20:
    // GLD1B_D_IMM_REAL, GLD1B_D_REAL, GLD1B_D_SXTW_REAL, GLD1B_D_UXTW_REAL, ...
    O << "/z, [";
    break;
  case 21:
    // INSR_ZR_H, INSR_ZV_H, PRFB_D_SCALED, PRFB_D_SXTW_SCALED, PRFB_D_UXTW_S...
    printOperand(MI, 2, STI, O);
    break;
  case 22:
    // INSvi16gpr, INSvi16lane
    O << ".h";
    printVectorIndex(MI, 2, STI, O);
    O << ", ";
    break;
  case 23:
    // INSvi32gpr, INSvi32lane
    O << ".s";
    printVectorIndex(MI, 2, STI, O);
    O << ", ";
    break;
  case 24:
    // INSvi8gpr, INSvi8lane
    O << ".b";
    printVectorIndex(MI, 2, STI, O);
    O << ", ";
    break;
  case 25:
    // LD1Fourv16b_POST, LD1Fourv2d_POST, LD1Fourv4s_POST, LD1Fourv8h_POST, L...
    printPostIncOperand<64>(MI, 3, STI, O);
    return;
    break;
  case 26:
    // LD1Fourv1d_POST, LD1Fourv2s_POST, LD1Fourv4h_POST, LD1Fourv8b_POST, LD...
    printPostIncOperand<32>(MI, 3, STI, O);
    return;
    break;
  case 27:
    // LD1Onev16b_POST, LD1Onev2d_POST, LD1Onev4s_POST, LD1Onev8h_POST, LD1Tw...
    printPostIncOperand<16>(MI, 3, STI, O);
    return;
    break;
  case 28:
    // LD1Onev1d_POST, LD1Onev2s_POST, LD1Onev4h_POST, LD1Onev8b_POST, LD1Rv1...
    printPostIncOperand<8>(MI, 3, STI, O);
    return;
    break;
  case 29:
    // LD1Rv16b_POST, LD1Rv8b_POST
    printPostIncOperand<1>(MI, 3, STI, O);
    return;
    break;
  case 30:
    // LD1Rv2s_POST, LD1Rv4s_POST, LD2Rv4h_POST, LD2Rv8h_POST, LD4Rv16b_POST,...
    printPostIncOperand<4>(MI, 3, STI, O);
    return;
    break;
  case 31:
    // LD1Rv4h_POST, LD1Rv8h_POST, LD2Rv16b_POST, LD2Rv8b_POST
    printPostIncOperand<2>(MI, 3, STI, O);
    return;
    break;
  case 32:
    // LD1Threev16b_POST, LD1Threev2d_POST, LD1Threev4s_POST, LD1Threev8h_POS...
    printPostIncOperand<48>(MI, 3, STI, O);
    return;
    break;
  case 33:
    // LD1Threev1d_POST, LD1Threev2s_POST, LD1Threev4h_POST, LD1Threev8b_POST...
    printPostIncOperand<24>(MI, 3, STI, O);
    return;
    break;
  case 34:
    // LD1i16, LD1i32, LD1i64, LD1i8, LD2i16, LD2i32, LD2i64, LD2i8, LD3i16, ...
    O << ']';
    return;
    break;
  case 35:
    // LD1i16_POST, LD2i8_POST
    printPostIncOperand<2>(MI, 5, STI, O);
    return;
    break;
  case 36:
    // LD1i32_POST, LD2i16_POST, LD4i8_POST
    printPostIncOperand<4>(MI, 5, STI, O);
    return;
    break;
  case 37:
    // LD1i64_POST, LD2i32_POST, LD4i16_POST
    printPostIncOperand<8>(MI, 5, STI, O);
    return;
    break;
  case 38:
    // LD1i8_POST
    printPostIncOperand<1>(MI, 5, STI, O);
    return;
    break;
  case 39:
    // LD2i64_POST, LD4i32_POST
    printPostIncOperand<16>(MI, 5, STI, O);
    return;
    break;
  case 40:
    // LD3Rv16b_POST, LD3Rv8b_POST
    printPostIncOperand<3>(MI, 3, STI, O);
    return;
    break;
  case 41:
    // LD3Rv2s_POST, LD3Rv4s_POST
    printPostIncOperand<12>(MI, 3, STI, O);
    return;
    break;
  case 42:
    // LD3Rv4h_POST, LD3Rv8h_POST
    printPostIncOperand<6>(MI, 3, STI, O);
    return;
    break;
  case 43:
    // LD3i16_POST
    printPostIncOperand<6>(MI, 5, STI, O);
    return;
    break;
  case 44:
    // LD3i32_POST
    printPostIncOperand<12>(MI, 5, STI, O);
    return;
    break;
  case 45:
    // LD3i64_POST
    printPostIncOperand<24>(MI, 5, STI, O);
    return;
    break;
  case 46:
    // LD3i8_POST
    printPostIncOperand<3>(MI, 5, STI, O);
    return;
    break;
  case 47:
    // LD4i64_POST
    printPostIncOperand<32>(MI, 5, STI, O);
    return;
    break;
  case 48:
    // PMULLv1i64, PMULLv2i64
    O << ".1q, ";
    printVRegOperand(MI, 1, STI, O);
    break;
  case 49:
    // PRFB_D_PZI, PRFD_D_PZI, PRFH_D_PZI, PRFW_D_PZI
    printSVERegOp<'d'>(MI, 2, STI, O);
    O << ", ";
    break;
  case 50:
    // PRFB_S_PZI, PRFD_S_PZI, PRFH_S_PZI, PRFW_S_PZI
    printSVERegOp<'s'>(MI, 2, STI, O);
    O << ", ";
    break;
  case 51:
    // PTRUES_H, PTRUE_H
    printSVEPattern(MI, 1, STI, O);
    return;
    break;
  case 52:
    // PUNPKHI_PP, PUNPKLO_PP, SUNPKHI_ZZ_H, SUNPKLO_ZZ_H, UUNPKHI_ZZ_H, UUNP...
    printSVERegOp<'b'>(MI, 1, STI, O);
    return;
    break;
  case 53:
    // SADALPv2i32_v1i64, SADDLPv2i32_v1i64, UADALPv2i32_v1i64, UADDLPv2i32_v...
    O << ".1d, ";
    break;
  case 54:
    // ST1i16_POST, ST1i32_POST, ST1i64_POST, ST1i8_POST, ST2i16_POST, ST2i32...
    O << "], ";
    break;
  case 55:
    // TBL_ZZZ_H
    printTypedVectorList<0,'h'>(MI, 1, STI, O);
    O << ", ";
    printSVERegOp<'h'>(MI, 2, STI, O);
    return;
    break;
  }


  // Fragment 2 encoded into 6 bits for 57 unique commands.
  switch ((Bits >> 25) & 63) {
  default: llvm_unreachable("Invalid command number.");
  case 0:
    // ABS_ZPmZ_B, ABS_ZPmZ_D, ABS_ZPmZ_S, BRKA_PPmP, BRKB_PPmP, CLS_ZPmZ_B, ...
    printSVERegOp<>(MI, 2, STI, O);
    break;
  case 1:
    // ABS_ZPmZ_H, ADD_ZPmZ_H, AND_ZPmZ_H, ASRD_ZPmI_H, ASRR_ZPmZ_H, ASR_WIDE...
    O << "/m, ";
    break;
  case 2:
    // ABSv16i8, ABSv2i32, ABSv2i64, ABSv4i16, ABSv4i32, ABSv8i16, ABSv8i8, A...
    printVRegOperand(MI, 1, STI, O);
    break;
  case 3:
    // ABSv1i64, ADCSWr, ADCSXr, ADCWr, ADCXr, ADDPL_XXI, ADDSWri, ADDSWrs, A...
    printOperand(MI, 1, STI, O);
    break;
  case 4:
    // ADDHNv2i64_v4i32, ADDHNv4i32_v8i16, ADDHNv8i16_v16i8, AESDrr, AESErr, ...
    printVRegOperand(MI, 2, STI, O);
    break;
  case 5:
    // ADD_ZI_B, ADD_ZZZ_B, ASR_WIDE_ZZZ_B, ASR_ZZI_B, DECP_XP_B, DUP_ZZI_B, ...
    printSVERegOp<'b'>(MI, 1, STI, O);
    break;
  case 6:
    // ADD_ZI_D, ADD_ZZZ_D, ADR_LSL_ZZZ_D_0, ADR_LSL_ZZZ_D_1, ADR_LSL_ZZZ_D_2...
    printSVERegOp<'d'>(MI, 1, STI, O);
    break;
  case 7:
    // ADD_ZI_H, ADD_ZZZ_H, ASR_WIDE_ZZZ_H, ASR_ZZI_H, CLASTA_ZPZ_H, CLASTB_Z...
    O << ", ";
    break;
  case 8:
    // ADD_ZI_S, ADD_ZZZ_S, ADR_LSL_ZZZ_S_0, ADR_LSL_ZZZ_S_1, ADR_LSL_ZZZ_S_2...
    printSVERegOp<'s'>(MI, 1, STI, O);
    break;
  case 9:
    // ADD_ZPmZ_B, ADD_ZPmZ_D, ADD_ZPmZ_S, ANDS_PPzPP, ANDV_VPZ_B, ANDV_VPZ_D...
    printSVERegOp<>(MI, 1, STI, O);
    break;
  case 10:
    // ADRP
    printAdrpLabel(MI, 1, STI, O);
    return;
    break;
  case 11:
    // BFMWri, BFMXri, CASAB, CASAH, CASALB, CASALH, CASALW, CASALX, CASAW, C...
    printOperand(MI, 2, STI, O);
    break;
  case 12:
    // BICv2i32, BICv4i16, BICv4i32, BICv8i16, MOVKWi, MOVKXi, ORRv2i32, ORRv...
    printImm(MI, 2, STI, O);
    printShifter(MI, 3, STI, O);
    return;
    break;
  case 13:
    // CBNZW, CBNZX, CBZW, CBZX, LDRDl, LDRQl, LDRSWl, LDRSl, LDRWl, LDRXl, P...
    printAlignedLabel(MI, 1, STI, O);
    return;
    break;
  case 14:
    // CMPEQ_PPzZI_H, CMPEQ_PPzZZ_H, CMPEQ_WIDE_PPzZZ_H, CMPGE_PPzZI_H, CMPGE...
    O << "/z, ";
    break;
  case 15:
    // CNTB_XPiI, CNTD_XPiI, CNTH_XPiI, CNTW_XPiI, PTRUES_B, PTRUES_D, PTRUES...
    printSVEPattern(MI, 1, STI, O);
    break;
  case 16:
    // DECB_XPiI, DECD_XPiI, DECD_ZPiI, DECH_XPiI, DECW_XPiI, DECW_ZPiI, INCB...
    printSVEPattern(MI, 2, STI, O);
    O << ", mul ";
    printOperand(MI, 3, STI, O);
    return;
    break;
  case 17:
    // DECP_XP_H, INCP_XP_H, SQDECP_XPWd_H, SQDECP_XP_H, SQINCP_XPWd_H, SQINC...
    printSVERegOp<'h'>(MI, 1, STI, O);
    break;
  case 18:
    // DECP_ZP_H, DUP_ZR_H, FEXPA_ZZ_H, FMLA_ZZZI_H, FMLS_ZZZI_H, FRECPE_ZZ_H...
    return;
    break;
  case 19:
    // DUPM_ZI
    printLogicalImm<int64_t>(MI, 1, STI, O);
    return;
    break;
  case 20:
    // DUP_ZI_B
    printImm8OptLsl<int8_t>(MI, 1, STI, O);
    return;
    break;
  case 21:
    // DUP_ZI_D
    printImm8OptLsl<int64_t>(MI, 1, STI, O);
    return;
    break;
  case 22:
    // DUP_ZI_S
    printImm8OptLsl<int32_t>(MI, 1, STI, O);
    return;
    break;
  case 23:
    // DUP_ZZI_H
    printVectorIndex(MI, 2, STI, O);
    return;
    break;
  case 24:
    // FCMLA_ZZZI_S, FMLA_ZZZI_S, FMLS_ZZZI_S, GLD1B_S_IMM_REAL, GLD1H_S_IMM_...
    printSVERegOp<'s'>(MI, 2, STI, O);
    O << ", ";
    break;
  case 25:
    // FDUP_ZI_D, FDUP_ZI_S, FMOVDi, FMOVHi, FMOVSi, FMOVv2f32_ns, FMOVv2f64_...
    printFPImmOperand(MI, 1, STI, O);
    return;
    break;
  case 26:
    // FMLA_ZZZI_D, FMLS_ZZZI_D, GLD1B_D_IMM_REAL, GLD1D_IMM_REAL, GLD1H_D_IM...
    printSVERegOp<'d'>(MI, 2, STI, O);
    O << ", ";
    break;
  case 27:
    // INSvi16gpr, INSvi32gpr, INSvi64gpr, INSvi8gpr, PRFB_D_PZI, PRFB_S_PZI
    printOperand(MI, 3, STI, O);
    break;
  case 28:
    // INSvi16lane, INSvi32lane, INSvi64lane, INSvi8lane
    printVRegOperand(MI, 3, STI, O);
    break;
  case 29:
    // LDADDAB, LDADDAH, LDADDALB, LDADDALH, LDADDALW, LDADDALX, LDADDAW, LDA...
    printOperand(MI, 0, STI, O);
    O << ", [";
    printOperand(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 30:
    // MOVID, MOVIv2d_ns
    printSIMDType10Operand(MI, 1, STI, O);
    return;
    break;
  case 31:
    // MOVIv16b_ns, MOVIv2i32, MOVIv2s_msl, MOVIv4i16, MOVIv4i32, MOVIv4s_msl...
    printImm(MI, 1, STI, O);
    break;
  case 32:
    // MRS
    printMRSSystemRegister(MI, 1, STI, O);
    return;
    break;
  case 33:
    // PMULLv1i64
    O << ".1d, ";
    printVRegOperand(MI, 2, STI, O);
    O << ".1d";
    return;
    break;
  case 34:
    // PMULLv2i64
    O << ".2d, ";
    printVRegOperand(MI, 2, STI, O);
    O << ".2d";
    return;
    break;
  case 35:
    // PRFD_D_PZI, PRFD_S_PZI
    printImmScale<8>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 36:
    // PRFH_D_PZI, PRFH_S_PZI
    printImmScale<2>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 37:
    // PRFW_D_PZI, PRFW_S_PZI
    printImmScale<4>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 38:
    // SDOT_ZZZI_D, SDOT_ZZZ_D, UDOT_ZZZI_D, UDOT_ZZZ_D
    printSVERegOp<'h'>(MI, 2, STI, O);
    O << ", ";
    printSVERegOp<'h'>(MI, 3, STI, O);
    break;
  case 39:
    // SDOT_ZZZI_S, SDOT_ZZZ_S, UDOT_ZZZI_S, UDOT_ZZZ_S
    printSVERegOp<'b'>(MI, 2, STI, O);
    O << ", ";
    printSVERegOp<'b'>(MI, 3, STI, O);
    break;
  case 40:
    // SQDECB_XPiWdI, SQDECD_XPiWdI, SQDECH_XPiWdI, SQDECW_XPiWdI, SQINCB_XPi...
    printGPR64as32(MI, 1, STI, O);
    O << ", ";
    printSVEPattern(MI, 2, STI, O);
    O << ", mul ";
    printOperand(MI, 3, STI, O);
    return;
    break;
  case 41:
    // ST1i16_POST, ST2i8_POST
    printPostIncOperand<2>(MI, 4, STI, O);
    return;
    break;
  case 42:
    // ST1i32_POST, ST2i16_POST, ST4i8_POST
    printPostIncOperand<4>(MI, 4, STI, O);
    return;
    break;
  case 43:
    // ST1i64_POST, ST2i32_POST, ST4i16_POST
    printPostIncOperand<8>(MI, 4, STI, O);
    return;
    break;
  case 44:
    // ST1i8_POST
    printPostIncOperand<1>(MI, 4, STI, O);
    return;
    break;
  case 45:
    // ST2i64_POST, ST4i32_POST
    printPostIncOperand<16>(MI, 4, STI, O);
    return;
    break;
  case 46:
    // ST3i16_POST
    printPostIncOperand<6>(MI, 4, STI, O);
    return;
    break;
  case 47:
    // ST3i32_POST
    printPostIncOperand<12>(MI, 4, STI, O);
    return;
    break;
  case 48:
    // ST3i64_POST
    printPostIncOperand<24>(MI, 4, STI, O);
    return;
    break;
  case 49:
    // ST3i8_POST
    printPostIncOperand<3>(MI, 4, STI, O);
    return;
    break;
  case 50:
    // ST4i64_POST
    printPostIncOperand<32>(MI, 4, STI, O);
    return;
    break;
  case 51:
    // SYSxt
    printSysCROperand(MI, 1, STI, O);
    O << ", ";
    printSysCROperand(MI, 2, STI, O);
    O << ", ";
    printOperand(MI, 3, STI, O);
    O << ", ";
    printOperand(MI, 4, STI, O);
    return;
    break;
  case 52:
    // TBL_ZZZ_B
    printTypedVectorList<0,'b'>(MI, 1, STI, O);
    O << ", ";
    printSVERegOp<'b'>(MI, 2, STI, O);
    return;
    break;
  case 53:
    // TBL_ZZZ_D
    printTypedVectorList<0,'d'>(MI, 1, STI, O);
    O << ", ";
    printSVERegOp<'d'>(MI, 2, STI, O);
    return;
    break;
  case 54:
    // TBL_ZZZ_S
    printTypedVectorList<0,'s'>(MI, 1, STI, O);
    O << ", ";
    printSVERegOp<'s'>(MI, 2, STI, O);
    return;
    break;
  case 55:
    // TBLv16i8Four, TBLv16i8One, TBLv16i8Three, TBLv16i8Two, TBLv8i8Four, TB...
    printTypedVectorList<16, 'b'>(MI, 1, STI, O);
    O << ", ";
    printVRegOperand(MI, 2, STI, O);
    break;
  case 56:
    // TBXv16i8Four, TBXv16i8One, TBXv16i8Three, TBXv16i8Two, TBXv8i8Four, TB...
    printTypedVectorList<16, 'b'>(MI, 2, STI, O);
    O << ", ";
    printVRegOperand(MI, 3, STI, O);
    break;
  }


  // Fragment 3 encoded into 7 bits for 91 unique commands.
  switch ((Bits >> 31) & 127) {
  default: llvm_unreachable("Invalid command number.");
  case 0:
    // ABS_ZPmZ_B, ABS_ZPmZ_D, ABS_ZPmZ_S, ADD_ZPmZ_B, ADD_ZPmZ_D, ADD_ZPmZ_S...
    O << "/m, ";
    break;
  case 1:
    // ABS_ZPmZ_H, CLS_ZPmZ_H, CLZ_ZPmZ_H, CNOT_ZPmZ_H, CNT_ZPmZ_H, FABS_ZPmZ...
    printSVERegOp<'h'>(MI, 3, STI, O);
    break;
  case 2:
    // ABSv16i8, ADDVv16i8v, AESDrr, AESErr, AESIMCrr, AESMCrr, CLSv16i8, CLZ...
    O << ".16b";
    return;
    break;
  case 3:
    // ABSv1i64, ADR, AUTDA, AUTDB, AUTIA, AUTIB, BLRAA, BLRAB, BRAA, BRAB, C...
    return;
    break;
  case 4:
    // ABSv2i32, CLSv2i32, CLZv2i32, FABSv2f32, FADDPv2i32p, FCVTASv2f32, FCV...
    O << ".2s";
    return;
    break;
  case 5:
    // ABSv2i64, ADDPv2i64p, FABSv2f64, FADDPv2i64p, FCVTASv2f64, FCVTAUv2f64...
    O << ".2d";
    return;
    break;
  case 6:
    // ABSv4i16, ADDVv4i16v, CLSv4i16, CLZv4i16, FABSv4f16, FCVTASv4f16, FCVT...
    O << ".4h";
    return;
    break;
  case 7:
    // ABSv4i32, ADDVv4i32v, CLSv4i32, CLZv4i32, FABSv4f32, FCVTASv4f32, FCVT...
    O << ".4s";
    return;
    break;
  case 8:
    // ABSv8i16, ADDVv8i16v, CLSv8i16, CLZv8i16, FABSv8f16, FCVTASv8f16, FCVT...
    O << ".8h";
    return;
    break;
  case 9:
    // ABSv8i8, ADDVv8i8v, CLSv8i8, CLZv8i8, CNTv8i8, NEGv8i8, NOTv8i8, RBITv...
    O << ".8b";
    return;
    break;
  case 10:
    // ADCSWr, ADCSXr, ADCWr, ADCXr, ADDPL_XXI, ADDSWri, ADDSWrs, ADDSWrx, AD...
    O << ", ";
    break;
  case 11:
    // ADDHNv2i64_v2i32, ADDHNv2i64_v4i32, ADDPv2i64, ADDv2i64, CMEQv2i64, CM...
    O << ".2d, ";
    break;
  case 12:
    // ADDHNv4i32_v4i16, ADDHNv4i32_v8i16, ADDPv4i32, ADDv4i32, CMEQv4i32, CM...
    O << ".4s, ";
    break;
  case 13:
    // ADDHNv8i16_v16i8, ADDHNv8i16_v8i8, ADDPv8i16, ADDv8i16, CMEQv8i16, CMG...
    O << ".8h, ";
    break;
  case 14:
    // ADDPv16i8, ADDv16i8, ANDv16i8, BCAX, BICv16i8, BIFv16i8, BITv16i8, BSL...
    O << ".16b, ";
    break;
  case 15:
    // ADDPv2i32, ADDv2i32, CMEQv2i32, CMGEv2i32, CMGTv2i32, CMHIv2i32, CMHSv...
    O << ".2s, ";
    break;
  case 16:
    // ADDPv4i16, ADDv4i16, CMEQv4i16, CMGEv4i16, CMGTv4i16, CMHIv4i16, CMHSv...
    O << ".4h, ";
    break;
  case 17:
    // ADDPv8i8, ADDv8i8, ANDv8i8, BICv8i8, BIFv8i8, BITv8i8, BSLv8i8, CMEQv8...
    O << ".8b, ";
    break;
  case 18:
    // ADD_ZI_H, SQADD_ZI_H, SQSUB_ZI_H, SUBR_ZI_H, SUB_ZI_H, UQADD_ZI_H, UQS...
    printImm8OptLsl<uint16_t>(MI, 2, STI, O);
    return;
    break;
  case 19:
    // ADD_ZPmZ_H, ADD_ZZZ_H, AND_ZPmZ_H, ASRD_ZPmI_H, ASRR_ZPmZ_H, ASR_WIDE_...
    printSVERegOp<'h'>(MI, 2, STI, O);
    break;
  case 20:
    // ANDS_PPzPP, AND_PPzPP, BICS_PPzPP, BIC_PPzPP, BRKAS_PPzP, BRKA_PPzP, B...
    O << "/z, ";
    break;
  case 21:
    // ASR_WIDE_ZZZ_H, LSL_WIDE_ZZZ_H, LSR_WIDE_ZZZ_H
    printSVERegOp<'d'>(MI, 2, STI, O);
    return;
    break;
  case 22:
    // ASR_ZZI_H, INDEX_II_H, INDEX_IR_H, INDEX_RI_H, INDEX_RR_H, LSL_ZZI_H, ...
    printOperand(MI, 2, STI, O);
    return;
    break;
  case 23:
    // CASAB, CASAH, CASALB, CASALH, CASALW, CASALX, CASAW, CASAX, CASB, CASH...
    O << ", [";
    break;
  case 24:
    // CMEQv16i8rz, CMGEv16i8rz, CMGTv16i8rz, CMLEv16i8rz, CMLTv16i8rz
    O << ".16b, #0";
    return;
    break;
  case 25:
    // CMEQv1i64rz, CMGEv1i64rz, CMGTv1i64rz, CMLEv1i64rz, CMLTv1i64rz
    O << ", #0";
    return;
    break;
  case 26:
    // CMEQv2i32rz, CMGEv2i32rz, CMGTv2i32rz, CMLEv2i32rz, CMLTv2i32rz
    O << ".2s, #0";
    return;
    break;
  case 27:
    // CMEQv2i64rz, CMGEv2i64rz, CMGTv2i64rz, CMLEv2i64rz, CMLTv2i64rz
    O << ".2d, #0";
    return;
    break;
  case 28:
    // CMEQv4i16rz, CMGEv4i16rz, CMGTv4i16rz, CMLEv4i16rz, CMLTv4i16rz
    O << ".4h, #0";
    return;
    break;
  case 29:
    // CMEQv4i32rz, CMGEv4i32rz, CMGTv4i32rz, CMLEv4i32rz, CMLTv4i32rz
    O << ".4s, #0";
    return;
    break;
  case 30:
    // CMEQv8i16rz, CMGEv8i16rz, CMGTv8i16rz, CMLEv8i16rz, CMLTv8i16rz
    O << ".8h, #0";
    return;
    break;
  case 31:
    // CMEQv8i8rz, CMGEv8i8rz, CMGTv8i8rz, CMLEv8i8rz, CMLTv8i8rz
    O << ".8b, #0";
    return;
    break;
  case 32:
    // CNTB_XPiI, CNTD_XPiI, CNTH_XPiI, CNTW_XPiI
    O << ", mul ";
    printOperand(MI, 2, STI, O);
    return;
    break;
  case 33:
    // CPY_ZPmI_H
    printImm8OptLsl<int16_t>(MI, 3, STI, O);
    return;
    break;
  case 34:
    // CPY_ZPmR_H, CPY_ZPmV_H, GLD1B_D_IMM_REAL, GLD1B_S_IMM_REAL, GLD1SB_D_I...
    printOperand(MI, 3, STI, O);
    break;
  case 35:
    // CPY_ZPzI_H
    printImm8OptLsl<int16_t>(MI, 2, STI, O);
    return;
    break;
  case 36:
    // CPYi16, DUPv4i16lane, DUPv8i16lane, INSvi16lane, SMOVvi16to32, SMOVvi1...
    O << ".h";
    break;
  case 37:
    // CPYi32, DUPv2i32lane, DUPv4i32lane, INSvi32lane, SMOVvi32to64, UMOVvi3...
    O << ".s";
    break;
  case 38:
    // CPYi64, DUPv2i64lane, FMOVDXHighr, INSvi64lane, UMOVvi64
    O << ".d";
    break;
  case 39:
    // CPYi8, DUPv16i8lane, DUPv8i8lane, INSvi8lane, SMOVvi8to32, SMOVvi8to64...
    O << ".b";
    break;
  case 40:
    // DUP_ZZI_B, DUP_ZZI_D, DUP_ZZI_S
    printVectorIndex(MI, 2, STI, O);
    return;
    break;
  case 41:
    // FADDPv2i16p, FMAXNMPv2i16p, FMAXPv2i16p, FMINNMPv2i16p, FMINPv2i16p
    O << ".2h";
    return;
    break;
  case 42:
    // FCMEQv1i16rz, FCMEQv1i32rz, FCMEQv1i64rz, FCMGEv1i16rz, FCMGEv1i32rz, ...
    O << ", #0.0";
    return;
    break;
  case 43:
    // FCMEQv2i32rz, FCMGEv2i32rz, FCMGTv2i32rz, FCMLEv2i32rz, FCMLTv2i32rz
    O << ".2s, #0.0";
    return;
    break;
  case 44:
    // FCMEQv2i64rz, FCMGEv2i64rz, FCMGTv2i64rz, FCMLEv2i64rz, FCMLTv2i64rz
    O << ".2d, #0.0";
    return;
    break;
  case 45:
    // FCMEQv4i16rz, FCMGEv4i16rz, FCMGTv4i16rz, FCMLEv4i16rz, FCMLTv4i16rz
    O << ".4h, #0.0";
    return;
    break;
  case 46:
    // FCMEQv4i32rz, FCMGEv4i32rz, FCMGTv4i32rz, FCMLEv4i32rz, FCMLTv4i32rz
    O << ".4s, #0.0";
    return;
    break;
  case 47:
    // FCMEQv8i16rz, FCMGEv8i16rz, FCMGTv8i16rz, FCMLEv8i16rz, FCMLTv8i16rz
    O << ".8h, #0.0";
    return;
    break;
  case 48:
    // FCMLA_ZZZI_H
    printComplexRotationOp<90, 0>(MI, 5, STI, O);
    return;
    break;
  case 49:
    // FCMLA_ZZZI_S, FCVT_ZPmZ_StoH, FMLA_ZZZI_S, FMLS_ZZZI_S, SCVTF_ZPmZ_Sto...
    printSVERegOp<'s'>(MI, 3, STI, O);
    break;
  case 50:
    // FCPY_ZPmI_H
    printFPImmOperand(MI, 3, STI, O);
    return;
    break;
  case 51:
    // FCVT_ZPmZ_DtoH, FMLA_ZZZI_D, FMLS_ZZZI_D, SCVTF_ZPmZ_DtoH, UCVTF_ZPmZ_...
    printSVERegOp<'d'>(MI, 3, STI, O);
    break;
  case 52:
    // GLD1D_IMM_REAL, GLDFF1D_IMM_REAL, SST1D_IMM
    printImmScale<8>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 53:
    // GLD1H_D_IMM_REAL, GLD1H_S_IMM_REAL, GLD1SH_D_IMM_REAL, GLD1SH_S_IMM_RE...
    printImmScale<2>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 54:
    // GLD1SW_D_IMM_REAL, GLD1W_D_IMM_REAL, GLD1W_IMM_REAL, GLDFF1SW_D_IMM_RE...
    printImmScale<4>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 55:
    // LDAPRB, LDAPRH, LDAPRW, LDAPRX, LDARB, LDARH, LDARW, LDARX, LDAXRB, LD...
    O << ']';
    return;
    break;
  case 56:
    // LDRBBpost, LDRBpost, LDRDpost, LDRHHpost, LDRHpost, LDRQpost, LDRSBWpo...
    O << "], ";
    printOperand(MI, 3, STI, O);
    return;
    break;
  case 57:
    // MOVIv2i32, MOVIv2s_msl, MOVIv4i16, MOVIv4i32, MOVIv4s_msl, MOVIv8i16, ...
    printShifter(MI, 2, STI, O);
    return;
    break;
  case 58:
    // PRFB_D_SCALED
    printRegWithShiftExtend<false, 8, 'x', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 59:
    // PRFB_D_SXTW_SCALED
    printRegWithShiftExtend<true, 8, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 60:
    // PRFB_D_UXTW_SCALED
    printRegWithShiftExtend<false, 8, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 61:
    // PRFB_PRR
    printRegWithShiftExtend<false, 8, 'x', 0>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 62:
    // PRFB_S_SXTW_SCALED
    printRegWithShiftExtend<true, 8, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 63:
    // PRFB_S_UXTW_SCALED
    printRegWithShiftExtend<false, 8, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 64:
    // PRFD_D_SCALED
    printRegWithShiftExtend<false, 64, 'x', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 65:
    // PRFD_D_SXTW_SCALED
    printRegWithShiftExtend<true, 64, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 66:
    // PRFD_D_UXTW_SCALED
    printRegWithShiftExtend<false, 64, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 67:
    // PRFD_PRR
    printRegWithShiftExtend<false, 64, 'x', 0>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 68:
    // PRFD_S_SXTW_SCALED
    printRegWithShiftExtend<true, 64, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 69:
    // PRFD_S_UXTW_SCALED
    printRegWithShiftExtend<false, 64, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 70:
    // PRFH_D_SCALED
    printRegWithShiftExtend<false, 16, 'x', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 71:
    // PRFH_D_SXTW_SCALED
    printRegWithShiftExtend<true, 16, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 72:
    // PRFH_D_UXTW_SCALED
    printRegWithShiftExtend<false, 16, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 73:
    // PRFH_PRR
    printRegWithShiftExtend<false, 16, 'x', 0>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 74:
    // PRFH_S_SXTW_SCALED
    printRegWithShiftExtend<true, 16, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 75:
    // PRFH_S_UXTW_SCALED
    printRegWithShiftExtend<false, 16, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 76:
    // PRFS_PRR
    printRegWithShiftExtend<false, 32, 'x', 0>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 77:
    // PRFW_D_SCALED
    printRegWithShiftExtend<false, 32, 'x', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 78:
    // PRFW_D_SXTW_SCALED
    printRegWithShiftExtend<true, 32, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 79:
    // PRFW_D_UXTW_SCALED
    printRegWithShiftExtend<false, 32, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 80:
    // PRFW_S_SXTW_SCALED
    printRegWithShiftExtend<true, 32, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 81:
    // PRFW_S_UXTW_SCALED
    printRegWithShiftExtend<false, 32, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 82:
    // RDFFRS_PPz, RDFFR_PPz
    O << "/z";
    return;
    break;
  case 83:
    // SDOT_ZZZI_D, SDOT_ZZZI_S, UDOT_ZZZI_D, UDOT_ZZZI_S
    printVectorIndex(MI, 4, STI, O);
    return;
    break;
  case 84:
    // SHLLv16i8
    O << ".16b, #8";
    return;
    break;
  case 85:
    // SHLLv2i32
    O << ".2s, #32";
    return;
    break;
  case 86:
    // SHLLv4i16
    O << ".4h, #16";
    return;
    break;
  case 87:
    // SHLLv4i32
    O << ".4s, #32";
    return;
    break;
  case 88:
    // SHLLv8i16
    O << ".8h, #16";
    return;
    break;
  case 89:
    // SHLLv8i8
    O << ".8b, #8";
    return;
    break;
  case 90:
    // UMAX_ZI_H, UMIN_ZI_H
    printImm(MI, 2, STI, O);
    return;
    break;
  }


  // Fragment 4 encoded into 7 bits for 88 unique commands.
  switch ((Bits >> 38) & 127) {
  default: llvm_unreachable("Invalid command number.");
  case 0:
    // ABS_ZPmZ_B, BRKA_PPmP, BRKB_PPmP, CLS_ZPmZ_B, CLZ_ZPmZ_B, CNOT_ZPmZ_B,...
    printSVERegOp<'b'>(MI, 3, STI, O);
    break;
  case 1:
    // ABS_ZPmZ_D, CLS_ZPmZ_D, CLZ_ZPmZ_D, CNOT_ZPmZ_D, CNT_ZPmZ_D, FABS_ZPmZ...
    printSVERegOp<'d'>(MI, 3, STI, O);
    break;
  case 2:
    // ABS_ZPmZ_H, ADD_ZZZ_H, CLS_ZPmZ_H, CLZ_ZPmZ_H, CNOT_ZPmZ_H, CNT_ZPmZ_H...
    return;
    break;
  case 3:
    // ABS_ZPmZ_S, CLS_ZPmZ_S, CLZ_ZPmZ_S, CNOT_ZPmZ_S, CNT_ZPmZ_S, FABS_ZPmZ...
    printSVERegOp<'s'>(MI, 3, STI, O);
    break;
  case 4:
    // ADCSWr, ADCSXr, ADCWr, ADCXr, ADDPL_XXI, ADDSXrx64, ADDVL_XXI, ADDXrx6...
    printOperand(MI, 2, STI, O);
    break;
  case 5:
    // ADDHNv2i64_v2i32, ADDHNv4i32_v4i16, ADDHNv8i16_v8i8, ADDPv16i8, ADDPv2...
    printVRegOperand(MI, 2, STI, O);
    break;
  case 6:
    // ADDHNv2i64_v4i32, ADDHNv4i32_v8i16, ADDHNv8i16_v16i8, BITv16i8, BITv8i...
    printVRegOperand(MI, 3, STI, O);
    break;
  case 7:
    // ADDSWri, ADDSXri, ADDWri, ADDXri, SUBSWri, SUBSXri, SUBWri, SUBXri
    printAddSubImm(MI, 2, STI, O);
    return;
    break;
  case 8:
    // ADDSWrs, ADDSXrs, ADDWrs, ADDXrs, ANDSWrs, ANDSXrs, ANDWrs, ANDXrs, BI...
    printShiftedRegister(MI, 2, STI, O);
    return;
    break;
  case 9:
    // ADDSWrx, ADDSXrx, ADDWrx, ADDXrx, SUBSWrx, SUBSXrx, SUBWrx, SUBXrx
    printExtendedRegister(MI, 2, STI, O);
    return;
    break;
  case 10:
    // ADD_ZI_B, SQADD_ZI_B, SQSUB_ZI_B, SUBR_ZI_B, SUB_ZI_B, UQADD_ZI_B, UQS...
    printImm8OptLsl<uint8_t>(MI, 2, STI, O);
    return;
    break;
  case 11:
    // ADD_ZI_D, SQADD_ZI_D, SQSUB_ZI_D, SUBR_ZI_D, SUB_ZI_D, UQADD_ZI_D, UQS...
    printImm8OptLsl<uint64_t>(MI, 2, STI, O);
    return;
    break;
  case 12:
    // ADD_ZI_S, SQADD_ZI_S, SQSUB_ZI_S, SUBR_ZI_S, SUB_ZI_S, UQADD_ZI_S, UQS...
    printImm8OptLsl<uint32_t>(MI, 2, STI, O);
    return;
    break;
  case 13:
    // ADD_ZPmZ_B, ADD_ZZZ_B, ANDS_PPzPP, ANDV_VPZ_B, AND_PPzPP, AND_ZPmZ_B, ...
    printSVERegOp<'b'>(MI, 2, STI, O);
    break;
  case 14:
    // ADD_ZPmZ_D, ADD_ZZZ_D, ANDV_VPZ_D, AND_ZPmZ_D, AND_ZZZ, ASRD_ZPmI_D, A...
    printSVERegOp<'d'>(MI, 2, STI, O);
    break;
  case 15:
    // ADD_ZPmZ_H, AND_ZPmZ_H, ASRD_ZPmI_H, ASRR_ZPmZ_H, ASR_WIDE_ZPmZ_H, ASR...
    O << ", ";
    break;
  case 16:
    // ADD_ZPmZ_S, ADD_ZZZ_S, ANDV_VPZ_S, AND_ZPmZ_S, ASRD_ZPmI_S, ASRR_ZPmZ_...
    printSVERegOp<'s'>(MI, 2, STI, O);
    break;
  case 17:
    // ADR_LSL_ZZZ_D_0
    printRegWithShiftExtend<false, 8, 'x', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 18:
    // ADR_LSL_ZZZ_D_1
    printRegWithShiftExtend<false, 16, 'x', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 19:
    // ADR_LSL_ZZZ_D_2
    printRegWithShiftExtend<false, 32, 'x', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 20:
    // ADR_LSL_ZZZ_D_3
    printRegWithShiftExtend<false, 64, 'x', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 21:
    // ADR_LSL_ZZZ_S_0
    printRegWithShiftExtend<false, 8, 'x', 's'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 22:
    // ADR_LSL_ZZZ_S_1
    printRegWithShiftExtend<false, 16, 'x', 's'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 23:
    // ADR_LSL_ZZZ_S_2
    printRegWithShiftExtend<false, 32, 'x', 's'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 24:
    // ADR_LSL_ZZZ_S_3
    printRegWithShiftExtend<false, 64, 'x', 's'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 25:
    // ADR_SXTW_ZZZ_D_0
    printRegWithShiftExtend<true, 8, 'w', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 26:
    // ADR_SXTW_ZZZ_D_1
    printRegWithShiftExtend<true, 16, 'w', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 27:
    // ADR_SXTW_ZZZ_D_2
    printRegWithShiftExtend<true, 32, 'w', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 28:
    // ADR_SXTW_ZZZ_D_3
    printRegWithShiftExtend<true, 64, 'w', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 29:
    // ADR_UXTW_ZZZ_D_0
    printRegWithShiftExtend<false, 8, 'w', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 30:
    // ADR_UXTW_ZZZ_D_1
    printRegWithShiftExtend<false, 16, 'w', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 31:
    // ADR_UXTW_ZZZ_D_2
    printRegWithShiftExtend<false, 32, 'w', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 32:
    // ADR_UXTW_ZZZ_D_3
    printRegWithShiftExtend<false, 64, 'w', 'd'>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 33:
    // ANDSWri, ANDWri, EORWri, ORRWri
    printLogicalImm<int32_t>(MI, 2, STI, O);
    return;
    break;
  case 34:
    // ANDSXri, ANDXri, AND_ZI, EORXri, EOR_ZI, ORRXri, ORR_ZI
    printLogicalImm<int64_t>(MI, 2, STI, O);
    return;
    break;
  case 35:
    // ANDV_VPZ_H, CNTP_XPP_H, EORV_VPZ_H, FADDV_VPZ_H, FMAXNMV_VPZ_H, FMAXV_...
    printSVERegOp<'h'>(MI, 2, STI, O);
    return;
    break;
  case 36:
    // BFMWri, BFMXri, CASAB, CASAH, CASALB, CASALH, CASALW, CASALX, CASAW, C...
    printOperand(MI, 3, STI, O);
    break;
  case 37:
    // CPY_ZPmI_B
    printImm8OptLsl<int8_t>(MI, 3, STI, O);
    return;
    break;
  case 38:
    // CPY_ZPmI_D
    printImm8OptLsl<int64_t>(MI, 3, STI, O);
    return;
    break;
  case 39:
    // CPY_ZPmI_S
    printImm8OptLsl<int32_t>(MI, 3, STI, O);
    return;
    break;
  case 40:
    // CPY_ZPzI_B
    printImm8OptLsl<int8_t>(MI, 2, STI, O);
    return;
    break;
  case 41:
    // CPY_ZPzI_D
    printImm8OptLsl<int64_t>(MI, 2, STI, O);
    return;
    break;
  case 42:
    // CPY_ZPzI_S
    printImm8OptLsl<int32_t>(MI, 2, STI, O);
    return;
    break;
  case 43:
    // CPYi16, CPYi32, CPYi64, CPYi8, DUPv16i8lane, DUPv2i32lane, DUPv2i64lan...
    printVectorIndex(MI, 2, STI, O);
    return;
    break;
  case 44:
    // FCMEQ_PPzZ0_H, FCMGE_PPzZ0_H, FCMGT_PPzZ0_H, FCMLE_PPzZ0_H, FCMLT_PPzZ...
    O << ", #0.0";
    return;
    break;
  case 45:
    // FCMLA_ZZZI_S, FMLA_ZZZI_D, FMLA_ZZZI_S, FMLS_ZZZI_D, FMLS_ZZZI_S, INSv...
    printVectorIndex(MI, 4, STI, O);
    break;
  case 46:
    // FCPY_ZPmI_D, FCPY_ZPmI_S
    printFPImmOperand(MI, 3, STI, O);
    return;
    break;
  case 47:
    // FCVTZS_ZPmZ_HtoD, FCVTZS_ZPmZ_HtoS, FCVTZU_ZPmZ_HtoD, FCVTZU_ZPmZ_HtoS...
    printSVERegOp<'h'>(MI, 3, STI, O);
    return;
    break;
  case 48:
    // FMUL_ZZZI_H
    printVectorIndex(MI, 3, STI, O);
    return;
    break;
  case 49:
    // GLD1B_D_IMM_REAL, GLD1B_S_IMM_REAL, GLD1SB_D_IMM_REAL, GLD1SB_S_IMM_RE...
    O << ']';
    return;
    break;
  case 50:
    // GLD1B_D_REAL, GLD1D_REAL, GLD1H_D_REAL, GLD1SB_D_REAL, GLD1SH_D_REAL, ...
    printRegWithShiftExtend<false, 8, 'x', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 51:
    // GLD1B_D_SXTW_REAL, GLD1D_SXTW_REAL, GLD1H_D_SXTW_REAL, GLD1SB_D_SXTW_R...
    printRegWithShiftExtend<true, 8, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 52:
    // GLD1B_D_UXTW_REAL, GLD1D_UXTW_REAL, GLD1H_D_UXTW_REAL, GLD1SB_D_UXTW_R...
    printRegWithShiftExtend<false, 8, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 53:
    // GLD1B_S_SXTW_REAL, GLD1H_S_SXTW_REAL, GLD1SB_S_SXTW_REAL, GLD1SH_S_SXT...
    printRegWithShiftExtend<true, 8, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 54:
    // GLD1B_S_UXTW_REAL, GLD1H_S_UXTW_REAL, GLD1SB_S_UXTW_REAL, GLD1SH_S_UXT...
    printRegWithShiftExtend<false, 8, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 55:
    // GLD1D_SCALED_REAL, GLDFF1D_SCALED_REAL, SST1D_SCALED
    printRegWithShiftExtend<false, 64, 'x', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 56:
    // GLD1D_SXTW_SCALED_REAL, GLDFF1D_SXTW_SCALED_REAL, SST1D_SXTW_SCALED
    printRegWithShiftExtend<true, 64, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 57:
    // GLD1D_UXTW_SCALED_REAL, GLDFF1D_UXTW_SCALED_REAL, SST1D_UXTW_SCALED
    printRegWithShiftExtend<false, 64, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 58:
    // GLD1H_D_SCALED_REAL, GLD1SH_D_SCALED_REAL, GLDFF1H_D_SCALED_REAL, GLDF...
    printRegWithShiftExtend<false, 16, 'x', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 59:
    // GLD1H_D_SXTW_SCALED_REAL, GLD1SH_D_SXTW_SCALED_REAL, GLDFF1H_D_SXTW_SC...
    printRegWithShiftExtend<true, 16, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 60:
    // GLD1H_D_UXTW_SCALED_REAL, GLD1SH_D_UXTW_SCALED_REAL, GLDFF1H_D_UXTW_SC...
    printRegWithShiftExtend<false, 16, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 61:
    // GLD1H_S_SXTW_SCALED_REAL, GLD1SH_S_SXTW_SCALED_REAL, GLDFF1H_S_SXTW_SC...
    printRegWithShiftExtend<true, 16, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 62:
    // GLD1H_S_UXTW_SCALED_REAL, GLD1SH_S_UXTW_SCALED_REAL, GLDFF1H_S_UXTW_SC...
    printRegWithShiftExtend<false, 16, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 63:
    // GLD1SW_D_SCALED_REAL, GLD1W_D_SCALED_REAL, GLDFF1SW_D_SCALED_REAL, GLD...
    printRegWithShiftExtend<false, 32, 'x', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 64:
    // GLD1SW_D_SXTW_SCALED_REAL, GLD1W_D_SXTW_SCALED_REAL, GLDFF1SW_D_SXTW_S...
    printRegWithShiftExtend<true, 32, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 65:
    // GLD1SW_D_UXTW_SCALED_REAL, GLD1W_D_UXTW_SCALED_REAL, GLDFF1SW_D_UXTW_S...
    printRegWithShiftExtend<false, 32, 'w', 'd'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 66:
    // GLD1W_SXTW_SCALED_REAL, GLDFF1W_SXTW_SCALED_REAL, SST1W_SXTW_SCALED
    printRegWithShiftExtend<true, 32, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 67:
    // GLD1W_UXTW_SCALED_REAL, GLDFF1W_UXTW_SCALED_REAL, SST1W_UXTW_SCALED
    printRegWithShiftExtend<false, 32, 'w', 's'>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 68:
    // LD1B, LD1B_D, LD1B_H, LD1B_S, LD1RQ_B, LD1SB_D, LD1SB_H, LD1SB_S, LD2B...
    printRegWithShiftExtend<false, 8, 'x', 0>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 69:
    // LD1D, LD1RQ_D, LD2D, LD3D, LD4D, LDFF1D_REAL, LDNT1D_ZRR, ST1D, ST2D, ...
    printRegWithShiftExtend<false, 64, 'x', 0>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 70:
    // LD1H, LD1H_D, LD1H_S, LD1RQ_H, LD1SH_D, LD1SH_S, LD2H, LD3H, LD4H, LDF...
    printRegWithShiftExtend<false, 16, 'x', 0>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 71:
    // LD1RD_IMM, LDRAAwriteback, LDRABwriteback
    printImmScale<8>(MI, 3, STI, O);
    break;
  case 72:
    // LD1RH_D_IMM, LD1RH_IMM, LD1RH_S_IMM, LD1RSH_D_IMM, LD1RSH_S_IMM, LD2B_...
    printImmScale<2>(MI, 3, STI, O);
    break;
  case 73:
    // LD1RQ_B_IMM, LD1RQ_D_IMM, LD1RQ_H_IMM, LD1RQ_W_IMM
    printImmScale<16>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 74:
    // LD1RQ_W, LD1SW_D, LD1W, LD1W_D, LD2W, LD3W, LD4W, LDFF1SW_D_REAL, LDFF...
    printRegWithShiftExtend<false, 32, 'x', 0>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 75:
    // LD1RSW_IMM, LD1RW_D_IMM, LD1RW_IMM, LD4B_IMM, LD4D_IMM, LD4H_IMM, LD4W...
    printImmScale<4>(MI, 3, STI, O);
    break;
  case 76:
    // LD3B_IMM, LD3D_IMM, LD3H_IMM, LD3W_IMM, ST3B_IMM, ST3D_IMM, ST3H_IMM, ...
    printImmScale<3>(MI, 3, STI, O);
    O << ", mul vl]";
    return;
    break;
  case 77:
    // LDRAAindexed, LDRABindexed
    printImmScale<8>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 78:
    // LDRBBui, LDRBui, LDRSBWui, LDRSBXui, STRBBui, STRBui
    printUImm12Offset<1>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 79:
    // LDRDui, LDRXui, PRFMui, STRDui, STRXui
    printUImm12Offset<8>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 80:
    // LDRHHui, LDRHui, LDRSHWui, LDRSHXui, STRHHui, STRHui
    printUImm12Offset<2>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 81:
    // LDRQui, STRQui
    printUImm12Offset<16>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 82:
    // LDRSWui, LDRSui, LDRWui, STRSui, STRWui
    printUImm12Offset<4>(MI, 2, STI, O);
    O << ']';
    return;
    break;
  case 83:
    // PRFB_PRI, PRFD_PRI, PRFH_PRI, PRFW_PRI
    O << ", mul vl]";
    return;
    break;
  case 84:
    // SQDECP_XPWd_B, SQDECP_XPWd_D, SQDECP_XPWd_H, SQDECP_XPWd_S, SQINCP_XPW...
    printGPR64as32(MI, 2, STI, O);
    return;
    break;
  case 85:
    // SYSLxt
    printSysCROperand(MI, 2, STI, O);
    O << ", ";
    printSysCROperand(MI, 3, STI, O);
    O << ", ";
    printOperand(MI, 4, STI, O);
    return;
    break;
  case 86:
    // TBNZW, TBNZX, TBZW, TBZX
    printAlignedLabel(MI, 2, STI, O);
    return;
    break;
  case 87:
    // UMAX_ZI_B, UMAX_ZI_D, UMAX_ZI_S, UMIN_ZI_B, UMIN_ZI_D, UMIN_ZI_S
    printImm(MI, 2, STI, O);
    return;
    break;
  }


  // Fragment 5 encoded into 6 bits for 36 unique commands.
  switch ((Bits >> 45) & 63) {
  default: llvm_unreachable("Invalid command number.");
  case 0:
    // ABS_ZPmZ_B, ABS_ZPmZ_D, ABS_ZPmZ_S, ADCSWr, ADCSXr, ADCWr, ADCXr, ADDP...
    return;
    break;
  case 1:
    // ADDHNv2i64_v2i32, ADDHNv2i64_v4i32, ADDPv2i64, ADDv2i64, CMEQv2i64, CM...
    O << ".2d";
    return;
    break;
  case 2:
    // ADDHNv4i32_v4i16, ADDHNv4i32_v8i16, ADDPv4i32, ADDv4i32, CMEQv4i32, CM...
    O << ".4s";
    return;
    break;
  case 3:
    // ADDHNv8i16_v16i8, ADDHNv8i16_v8i8, ADDPv8i16, ADDv8i16, CMEQv8i16, CMG...
    O << ".8h";
    return;
    break;
  case 4:
    // ADDPv16i8, ADDv16i8, ANDv16i8, BICv16i8, BIFv16i8, BITv16i8, BSLv16i8,...
    O << ".16b";
    return;
    break;
  case 5:
    // ADDPv2i32, ADDv2i32, CMEQv2i32, CMGEv2i32, CMGTv2i32, CMHIv2i32, CMHSv...
    O << ".2s";
    return;
    break;
  case 6:
    // ADDPv4i16, ADDv4i16, CMEQv4i16, CMGEv4i16, CMGTv4i16, CMHIv4i16, CMHSv...
    O << ".4h";
    return;
    break;
  case 7:
    // ADDPv8i8, ADDv8i8, ANDv8i8, BICv8i8, BIFv8i8, BITv8i8, BSLv8i8, CMEQv8...
    O << ".8b";
    return;
    break;
  case 8:
    // ADDSXrx64, ADDXrx64, SUBSXrx64, SUBXrx64
    printArithExtend(MI, 3, STI, O);
    return;
    break;
  case 9:
    // ADD_ZPmZ_B, ADD_ZPmZ_D, ADD_ZPmZ_S, ANDS_PPzPP, AND_PPzPP, AND_ZPmZ_B,...
    O << ", ";
    break;
  case 10:
    // ADD_ZPmZ_H, AND_ZPmZ_H, ASRR_ZPmZ_H, ASR_ZPmZ_H, BIC_ZPmZ_H, CLASTA_ZP...
    printSVERegOp<'h'>(MI, 3, STI, O);
    break;
  case 11:
    // ASRD_ZPmI_H, ASR_ZPmI_H, CMPEQ_PPzZI_H, CMPGE_PPzZI_H, CMPGT_PPzZI_H, ...
    printOperand(MI, 3, STI, O);
    return;
    break;
  case 12:
    // ASR_WIDE_ZPmZ_H, CMPEQ_WIDE_PPzZZ_H, CMPGE_WIDE_PPzZZ_H, CMPGT_WIDE_PP...
    printSVERegOp<'d'>(MI, 3, STI, O);
    return;
    break;
  case 13:
    // BCAX, EOR3, EXTv16i8
    O << ".16b, ";
    break;
  case 14:
    // CASAB, CASAH, CASALB, CASALH, CASALW, CASALX, CASAW, CASAX, CASB, CASH...
    O << ']';
    return;
    break;
  case 15:
    // CMPHI_PPzZI_H, CMPHS_PPzZI_H, CMPLO_PPzZI_H, CMPLS_PPzZI_H
    printImm(MI, 3, STI, O);
    return;
    break;
  case 16:
    // EXTv8i8
    O << ".8b, ";
    printOperand(MI, 3, STI, O);
    return;
    break;
  case 17:
    // FADD_ZPmI_H, FSUBR_ZPmI_H, FSUB_ZPmI_H
    printExactFPImm<AArch64ExactFPImm::half, AArch64ExactFPImm::one>(MI, 3, STI, O);
    return;
    break;
  case 18:
    // FCADDv2f32, FCMLAv2f32
    O << ".2s, ";
    break;
  case 19:
    // FCADDv2f64, FCMLAv2f64, XAR
    O << ".2d, ";
    break;
  case 20:
    // FCADDv4f16, FCMLAv4f16
    O << ".4h, ";
    break;
  case 21:
    // FCADDv4f32, FCMLAv4f32, SM3SS1
    O << ".4s, ";
    break;
  case 22:
    // FCADDv8f16, FCMLAv8f16
    O << ".8h, ";
    break;
  case 23:
    // FCMEQ_PPzZ0_D, FCMEQ_PPzZ0_S, FCMGE_PPzZ0_D, FCMGE_PPzZ0_S, FCMGT_PPzZ...
    O << ", #0.0";
    return;
    break;
  case 24:
    // FCMLA_ZPmZZ_H, FMAD_ZPmZZ_H, FMLA_ZPmZZ_H, FMLS_ZPmZZ_H, FMSB_ZPmZZ_H,...
    printSVERegOp<'h'>(MI, 4, STI, O);
    break;
  case 25:
    // FCMLAv4f16_indexed, FCMLAv8f16_indexed, FMLAv1i16_indexed, FMLAv4i16_i...
    O << ".h";
    break;
  case 26:
    // FCMLAv4f32_indexed, FMLAv1i32_indexed, FMLAv2i32_indexed, FMLAv4i32_in...
    O << ".s";
    break;
  case 27:
    // FMAXNM_ZPmI_H, FMAX_ZPmI_H, FMINNM_ZPmI_H, FMIN_ZPmI_H
    printExactFPImm<AArch64ExactFPImm::zero, AArch64ExactFPImm::one>(MI, 3, STI, O);
    return;
    break;
  case 28:
    // FMLAv1i64_indexed, FMLAv2i64_indexed, FMLSv1i64_indexed, FMLSv2i64_ind...
    O << ".d";
    break;
  case 29:
    // FMUL_ZPmI_H
    printExactFPImm<AArch64ExactFPImm::half, AArch64ExactFPImm::two>(MI, 3, STI, O);
    return;
    break;
  case 30:
    // FMUL_ZZZI_D, FMUL_ZZZI_S
    printVectorIndex(MI, 3, STI, O);
    return;
    break;
  case 31:
    // LD1B_D_IMM_REAL, LD1B_H_IMM_REAL, LD1B_IMM_REAL, LD1B_S_IMM_REAL, LD1D...
    O << ", mul vl]";
    return;
    break;
  case 32:
    // LDPDpost, LDPQpost, LDPSWpost, LDPSpost, LDPWpost, LDPXpost, STPDpost,...
    O << "], ";
    break;
  case 33:
    // LDRAAwriteback, LDRABwriteback, LDRBBpre, LDRBpre, LDRDpre, LDRHHpre, ...
    O << "]!";
    return;
    break;
  case 34:
    // SDOTlanev16i8, SDOTlanev8i8, UDOTlanev16i8, UDOTlanev8i8
    O << ".4b";
    printVectorIndex(MI, 4, STI, O);
    return;
    break;
  case 35:
    // STLXPW, STLXPX, STXPW, STXPX
    O << ", [";
    printOperand(MI, 3, STI, O);
    O << ']';
    return;
    break;
  }


  // Fragment 6 encoded into 6 bits for 38 unique commands.
  switch ((Bits >> 51) & 63) {
  default: llvm_unreachable("Invalid command number.");
  case 0:
    // ADD_ZPmZ_B, ANDS_PPzPP, AND_PPzPP, AND_ZPmZ_B, ASRR_ZPmZ_B, ASR_ZPmZ_B...
    printSVERegOp<'b'>(MI, 3, STI, O);
    return;
    break;
  case 1:
    // ADD_ZPmZ_D, AND_ZPmZ_D, ASRR_ZPmZ_D, ASR_WIDE_ZPmZ_B, ASR_WIDE_ZPmZ_S,...
    printSVERegOp<'d'>(MI, 3, STI, O);
    break;
  case 2:
    // ADD_ZPmZ_H, AND_ZPmZ_H, ASRR_ZPmZ_H, ASR_ZPmZ_H, BIC_ZPmZ_H, CLASTA_ZP...
    return;
    break;
  case 3:
    // ADD_ZPmZ_S, AND_ZPmZ_S, ASRR_ZPmZ_S, ASR_ZPmZ_S, BIC_ZPmZ_S, CLASTA_RP...
    printSVERegOp<'s'>(MI, 3, STI, O);
    break;
  case 4:
    // ASRD_ZPmI_B, ASRD_ZPmI_D, ASRD_ZPmI_S, ASR_ZPmI_B, ASR_ZPmI_D, ASR_ZPm...
    printOperand(MI, 3, STI, O);
    return;
    break;
  case 5:
    // BCAX, EOR3, SM3SS1
    printVRegOperand(MI, 3, STI, O);
    break;
  case 6:
    // BFMWri, BFMXri
    printOperand(MI, 4, STI, O);
    return;
    break;
  case 7:
    // CCMNWi, CCMNWr, CCMNXi, CCMNXr, CCMPWi, CCMPWr, CCMPXi, CCMPXr, CSELWr...
    printCondCode(MI, 3, STI, O);
    return;
    break;
  case 8:
    // CLASTA_RPZ_H, CLASTA_VPZ_H, CLASTB_RPZ_H, CLASTB_VPZ_H, FADDA_VPZ_H
    printSVERegOp<'h'>(MI, 3, STI, O);
    return;
    break;
  case 9:
    // CMPHI_PPzZI_B, CMPHI_PPzZI_D, CMPHI_PPzZI_S, CMPHS_PPzZI_B, CMPHS_PPzZ...
    printImm(MI, 3, STI, O);
    return;
    break;
  case 10:
    // FADD_ZPmI_D, FADD_ZPmI_S, FSUBR_ZPmI_D, FSUBR_ZPmI_S, FSUB_ZPmI_D, FSU...
    printExactFPImm<AArch64ExactFPImm::half, AArch64ExactFPImm::one>(MI, 3, STI, O);
    return;
    break;
  case 11:
    // FCADD_ZPmZ_H, FCMLA_ZPmZZ_H
    O << ", ";
    break;
  case 12:
    // FCADDv2f32, FCADDv2f64, FCADDv4f16, FCADDv4f32, FCADDv8f16
    printComplexRotationOp<180, 90>(MI, 3, STI, O);
    return;
    break;
  case 13:
    // FCMLA_ZPmZZ_D, FMAD_ZPmZZ_D, FMLA_ZPmZZ_D, FMLS_ZPmZZ_D, FMSB_ZPmZZ_D,...
    printSVERegOp<'d'>(MI, 4, STI, O);
    break;
  case 14:
    // FCMLA_ZPmZZ_S, FMAD_ZPmZZ_S, FMLA_ZPmZZ_S, FMLS_ZPmZZ_S, FMSB_ZPmZZ_S,...
    printSVERegOp<'s'>(MI, 4, STI, O);
    break;
  case 15:
    // FCMLA_ZZZI_S
    printComplexRotationOp<90, 0>(MI, 5, STI, O);
    return;
    break;
  case 16:
    // FCMLAv2f32, FCMLAv2f64, FCMLAv4f16, FCMLAv4f32, FCMLAv8f16
    printComplexRotationOp<90, 0>(MI, 4, STI, O);
    return;
    break;
  case 17:
    // FCMLAv4f16_indexed, FCMLAv4f32_indexed, FCMLAv8f16_indexed, FMLAv1i16_...
    printVectorIndex(MI, 4, STI, O);
    break;
  case 18:
    // FMAXNM_ZPmI_D, FMAXNM_ZPmI_S, FMAX_ZPmI_D, FMAX_ZPmI_S, FMINNM_ZPmI_D,...
    printExactFPImm<AArch64ExactFPImm::zero, AArch64ExactFPImm::one>(MI, 3, STI, O);
    return;
    break;
  case 19:
    // FMULXv1i16_indexed, FMULXv1i32_indexed, FMULXv1i64_indexed, FMULXv2i32...
    printVectorIndex(MI, 3, STI, O);
    return;
    break;
  case 20:
    // FMUL_ZPmI_D, FMUL_ZPmI_S
    printExactFPImm<AArch64ExactFPImm::half, AArch64ExactFPImm::two>(MI, 3, STI, O);
    return;
    break;
  case 21:
    // LDNPDi, LDNPXi, LDPDi, LDPXi, STNPDi, STNPXi, STPDi, STPXi
    printImmScale<8>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 22:
    // LDNPQi, LDPQi, STNPQi, STPQi
    printImmScale<16>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 23:
    // LDNPSi, LDNPWi, LDPSWi, LDPSi, LDPWi, STNPSi, STNPWi, STPSi, STPWi
    printImmScale<4>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 24:
    // LDPDpost, LDPDpre, LDPXpost, LDPXpre, STPDpost, STPDpre, STPXpost, STP...
    printImmScale<8>(MI, 4, STI, O);
    break;
  case 25:
    // LDPQpost, LDPQpre, STPQpost, STPQpre
    printImmScale<16>(MI, 4, STI, O);
    break;
  case 26:
    // LDPSWpost, LDPSWpre, LDPSpost, LDPSpre, LDPWpost, LDPWpre, STPSpost, S...
    printImmScale<4>(MI, 4, STI, O);
    break;
  case 27:
    // LDRBBroW, LDRBroW, LDRSBWroW, LDRSBXroW, STRBBroW, STRBroW
    printMemExtend<'w', 8>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 28:
    // LDRBBroX, LDRBroX, LDRSBWroX, LDRSBXroX, STRBBroX, STRBroX
    printMemExtend<'x', 8>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 29:
    // LDRDroW, LDRXroW, PRFMroW, STRDroW, STRXroW
    printMemExtend<'w', 64>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 30:
    // LDRDroX, LDRXroX, PRFMroX, STRDroX, STRXroX
    printMemExtend<'x', 64>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 31:
    // LDRHHroW, LDRHroW, LDRSHWroW, LDRSHXroW, STRHHroW, STRHroW
    printMemExtend<'w', 16>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 32:
    // LDRHHroX, LDRHroX, LDRSHWroX, LDRSHXroX, STRHHroX, STRHroX
    printMemExtend<'x', 16>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 33:
    // LDRQroW, STRQroW
    printMemExtend<'w', 128>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 34:
    // LDRQroX, STRQroX
    printMemExtend<'x', 128>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 35:
    // LDRSWroW, LDRSroW, LDRWroW, STRSroW, STRWroW
    printMemExtend<'w', 32>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 36:
    // LDRSWroX, LDRSroX, LDRWroX, STRSroX, STRWroX
    printMemExtend<'x', 32>(MI, 3, STI, O);
    O << ']';
    return;
    break;
  case 37:
    // MAD_ZPmZZ_B, MLA_ZPmZZ_B, MLS_ZPmZZ_B, MSB_ZPmZZ_B
    printSVERegOp<'b'>(MI, 4, STI, O);
    return;
    break;
  }


  // Fragment 7 encoded into 3 bits for 7 unique commands.
  switch ((Bits >> 57) & 7) {
  default: llvm_unreachable("Invalid command number.");
  case 0:
    // ADD_ZPmZ_D, ADD_ZPmZ_S, AND_ZPmZ_D, AND_ZPmZ_S, ASRR_ZPmZ_D, ASRR_ZPmZ...
    return;
    break;
  case 1:
    // BCAX, EOR3
    O << ".16b";
    return;
    break;
  case 2:
    // FCADD_ZPmZ_D, FCADD_ZPmZ_S, FCMLA_ZPmZZ_D, FCMLA_ZPmZZ_S, FCMLAv4f16_i...
    O << ", ";
    break;
  case 3:
    // FCADD_ZPmZ_H
    printComplexRotationOp<180, 90>(MI, 4, STI, O);
    return;
    break;
  case 4:
    // FCMLA_ZPmZZ_H
    printComplexRotationOp<90, 0>(MI, 5, STI, O);
    return;
    break;
  case 5:
    // LDPDpre, LDPQpre, LDPSWpre, LDPSpre, LDPWpre, LDPXpre, STPDpre, STPQpr...
    O << "]!";
    return;
    break;
  case 6:
    // SM3SS1
    O << ".4s";
    return;
    break;
  }


  // Fragment 8 encoded into 1 bits for 2 unique commands.
  if ((Bits >> 60) & 1) {
    // FCMLA_ZPmZZ_D, FCMLA_ZPmZZ_S, FCMLAv4f16_indexed, FCMLAv4f32_indexed, ...
    printComplexRotationOp<90, 0>(MI, 5, STI, O);
    return;
  } else {
    // FCADD_ZPmZ_D, FCADD_ZPmZ_S
    printComplexRotationOp<180, 90>(MI, 4, STI, O);
    return;
  }

}


/// getRegisterName - This method is automatically generated by tblgen
/// from the register set description.  This returns the assembler name
/// for the specified register.
const char *AArch64InstPrinter::
getRegisterName(unsigned RegNo, unsigned AltIdx) {
  assert(RegNo && RegNo < 661 && "Invalid register number!");

  static const char AsmStrsNoRegAltName[] = {
  /* 0 */ 'D', '7', '_', 'D', '8', '_', 'D', '9', '_', 'D', '1', '0', 0,
  /* 13 */ 'Q', '7', '_', 'Q', '8', '_', 'Q', '9', '_', 'Q', '1', '0', 0,
  /* 26 */ 'W', '9', '_', 'W', '1', '0', 0,
  /* 33 */ 'X', '9', '_', 'X', '1', '0', 0,
  /* 40 */ 'Z', '7', '_', 'Z', '8', '_', 'Z', '9', '_', 'Z', '1', '0', 0,
  /* 53 */ 'b', '1', '0', 0,
  /* 57 */ 'd', '1', '0', 0,
  /* 61 */ 'h', '1', '0', 0,
  /* 65 */ 'p', '1', '0', 0,
  /* 69 */ 'q', '1', '0', 0,
  /* 73 */ 's', '1', '0', 0,
  /* 77 */ 'w', '1', '0', 0,
  /* 81 */ 'x', '1', '0', 0,
  /* 85 */ 'z', '1', '0', 0,
  /* 89 */ 'D', '1', '7', '_', 'D', '1', '8', '_', 'D', '1', '9', '_', 'D', '2', '0', 0,
  /* 105 */ 'Q', '1', '7', '_', 'Q', '1', '8', '_', 'Q', '1', '9', '_', 'Q', '2', '0', 0,
  /* 121 */ 'W', '1', '9', '_', 'W', '2', '0', 0,
  /* 129 */ 'X', '1', '9', '_', 'X', '2', '0', 0,
  /* 137 */ 'Z', '1', '7', '_', 'Z', '1', '8', '_', 'Z', '1', '9', '_', 'Z', '2', '0', 0,
  /* 153 */ 'b', '2', '0', 0,
  /* 157 */ 'd', '2', '0', 0,
  /* 161 */ 'h', '2', '0', 0,
  /* 165 */ 'q', '2', '0', 0,
  /* 169 */ 's', '2', '0', 0,
  /* 173 */ 'w', '2', '0', 0,
  /* 177 */ 'x', '2', '0', 0,
  /* 181 */ 'z', '2', '0', 0,
  /* 185 */ 'D', '2', '7', '_', 'D', '2', '8', '_', 'D', '2', '9', '_', 'D', '3', '0', 0,
  /* 201 */ 'Q', '2', '7', '_', 'Q', '2', '8', '_', 'Q', '2', '9', '_', 'Q', '3', '0', 0,
  /* 217 */ 'W', '2', '9', '_', 'W', '3', '0', 0,
  /* 225 */ 'Z', '2', '7', '_', 'Z', '2', '8', '_', 'Z', '2', '9', '_', 'Z', '3', '0', 0,
  /* 241 */ 'b', '3', '0', 0,
  /* 245 */ 'd', '3', '0', 0,
  /* 249 */ 'h', '3', '0', 0,
  /* 253 */ 'q', '3', '0', 0,
  /* 257 */ 's', '3', '0', 0,
  /* 261 */ 'w', '3', '0', 0,
  /* 265 */ 'x', '3', '0', 0,
  /* 269 */ 'z', '3', '0', 0,
  /* 273 */ 'D', '2', '9', '_', 'D', '3', '0', '_', 'D', '3', '1', '_', 'D', '0', 0,
  /* 288 */ 'Q', '2', '9', '_', 'Q', '3', '0', '_', 'Q', '3', '1', '_', 'Q', '0', 0,
  /* 303 */ 'W', 'Z', 'R', '_', 'W', '0', 0,
  /* 310 */ 'X', 'Z', 'R', '_', 'X', '0', 0,
  /* 317 */ 'Z', '2', '9', '_', 'Z', '3', '0', '_', 'Z', '3', '1', '_', 'Z', '0', 0,
  /* 332 */ 'b', '0', 0,
  /* 335 */ 'd', '0', 0,
  /* 338 */ 'h', '0', 0,
  /* 341 */ 'p', '0', 0,
  /* 344 */ 'q', '0', 0,
  /* 347 */ 's', '0', 0,
  /* 350 */ 'w', '0', 0,
  /* 353 */ 'x', '0', 0,
  /* 356 */ 'z', '0', 0,
  /* 359 */ 'D', '8', '_', 'D', '9', '_', 'D', '1', '0', '_', 'D', '1', '1', 0,
  /* 373 */ 'Q', '8', '_', 'Q', '9', '_', 'Q', '1', '0', '_', 'Q', '1', '1', 0,
  /* 387 */ 'W', '1', '0', '_', 'W', '1', '1', 0,
  /* 395 */ 'X', '1', '0', '_', 'X', '1', '1', 0,
  /* 403 */ 'Z', '8', '_', 'Z', '9', '_', 'Z', '1', '0', '_', 'Z', '1', '1', 0,
  /* 417 */ 'b', '1', '1', 0,
  /* 421 */ 'd', '1', '1', 0,
  /* 425 */ 'h', '1', '1', 0,
  /* 429 */ 'p', '1', '1', 0,
  /* 433 */ 'q', '1', '1', 0,
  /* 437 */ 's', '1', '1', 0,
  /* 441 */ 'w', '1', '1', 0,
  /* 445 */ 'x', '1', '1', 0,
  /* 449 */ 'z', '1', '1', 0,
  /* 453 */ 'D', '1', '8', '_', 'D', '1', '9', '_', 'D', '2', '0', '_', 'D', '2', '1', 0,
  /* 469 */ 'Q', '1', '8', '_', 'Q', '1', '9', '_', 'Q', '2', '0', '_', 'Q', '2', '1', 0,
  /* 485 */ 'W', '2', '0', '_', 'W', '2', '1', 0,
  /* 493 */ 'X', '2', '0', '_', 'X', '2', '1', 0,
  /* 501 */ 'Z', '1', '8', '_', 'Z', '1', '9', '_', 'Z', '2', '0', '_', 'Z', '2', '1', 0,
  /* 517 */ 'b', '2', '1', 0,
  /* 521 */ 'd', '2', '1', 0,
  /* 525 */ 'h', '2', '1', 0,
  /* 529 */ 'q', '2', '1', 0,
  /* 533 */ 's', '2', '1', 0,
  /* 537 */ 'w', '2', '1', 0,
  /* 541 */ 'x', '2', '1', 0,
  /* 545 */ 'z', '2', '1', 0,
  /* 549 */ 'D', '2', '8', '_', 'D', '2', '9', '_', 'D', '3', '0', '_', 'D', '3', '1', 0,
  /* 565 */ 'Q', '2', '8', '_', 'Q', '2', '9', '_', 'Q', '3', '0', '_', 'Q', '3', '1', 0,
  /* 581 */ 'Z', '2', '8', '_', 'Z', '2', '9', '_', 'Z', '3', '0', '_', 'Z', '3', '1', 0,
  /* 597 */ 'b', '3', '1', 0,
  /* 601 */ 'd', '3', '1', 0,
  /* 605 */ 'h', '3', '1', 0,
  /* 609 */ 'q', '3', '1', 0,
  /* 613 */ 's', '3', '1', 0,
  /* 617 */ 'z', '3', '1', 0,
  /* 621 */ 'D', '3', '0', '_', 'D', '3', '1', '_', 'D', '0', '_', 'D', '1', 0,
  /* 635 */ 'Q', '3', '0', '_', 'Q', '3', '1', '_', 'Q', '0', '_', 'Q', '1', 0,
  /* 649 */ 'W', '0', '_', 'W', '1', 0,
  /* 655 */ 'X', '0', '_', 'X', '1', 0,
  /* 661 */ 'Z', '3', '0', '_', 'Z', '3', '1', '_', 'Z', '0', '_', 'Z', '1', 0,
  /* 675 */ 'b', '1', 0,
  /* 678 */ 'd', '1', 0,
  /* 681 */ 'h', '1', 0,
  /* 684 */ 'p', '1', 0,
  /* 687 */ 'q', '1', 0,
  /* 690 */ 's', '1', 0,
  /* 693 */ 'w', '1', 0,
  /* 696 */ 'x', '1', 0,
  /* 699 */ 'z', '1', 0,
  /* 702 */ 'D', '9', '_', 'D', '1', '0', '_', 'D', '1', '1', '_', 'D', '1', '2', 0,
  /* 717 */ 'Q', '9', '_', 'Q', '1', '0', '_', 'Q', '1', '1', '_', 'Q', '1', '2', 0,
  /* 732 */ 'W', '1', '1', '_', 'W', '1', '2', 0,
  /* 740 */ 'X', '1', '1', '_', 'X', '1', '2', 0,
  /* 748 */ 'Z', '9', '_', 'Z', '1', '0', '_', 'Z', '1', '1', '_', 'Z', '1', '2', 0,
  /* 763 */ 'b', '1', '2', 0,
  /* 767 */ 'd', '1', '2', 0,
  /* 771 */ 'h', '1', '2', 0,
  /* 775 */ 'p', '1', '2', 0,
  /* 779 */ 'q', '1', '2', 0,
  /* 783 */ 's', '1', '2', 0,
  /* 787 */ 'w', '1', '2', 0,
  /* 791 */ 'x', '1', '2', 0,
  /* 795 */ 'z', '1', '2', 0,
  /* 799 */ 'D', '1', '9', '_', 'D', '2', '0', '_', 'D', '2', '1', '_', 'D', '2', '2', 0,
  /* 815 */ 'Q', '1', '9', '_', 'Q', '2', '0', '_', 'Q', '2', '1', '_', 'Q', '2', '2', 0,
  /* 831 */ 'W', '2', '1', '_', 'W', '2', '2', 0,
  /* 839 */ 'X', '2', '1', '_', 'X', '2', '2', 0,
  /* 847 */ 'Z', '1', '9', '_', 'Z', '2', '0', '_', 'Z', '2', '1', '_', 'Z', '2', '2', 0,
  /* 863 */ 'b', '2', '2', 0,
  /* 867 */ 'd', '2', '2', 0,
  /* 871 */ 'h', '2', '2', 0,
  /* 875 */ 'q', '2', '2', 0,
  /* 879 */ 's', '2', '2', 0,
  /* 883 */ 'w', '2', '2', 0,
  /* 887 */ 'x', '2', '2', 0,
  /* 891 */ 'z', '2', '2', 0,
  /* 895 */ 'D', '3', '1', '_', 'D', '0', '_', 'D', '1', '_', 'D', '2', 0,
  /* 908 */ 'Q', '3', '1', '_', 'Q', '0', '_', 'Q', '1', '_', 'Q', '2', 0,
  /* 921 */ 'W', '1', '_', 'W', '2', 0,
  /* 927 */ 'X', '1', '_', 'X', '2', 0,
  /* 933 */ 'Z', '3', '1', '_', 'Z', '0', '_', 'Z', '1', '_', 'Z', '2', 0,
  /* 946 */ 'b', '2', 0,
  /* 949 */ 'd', '2', 0,
  /* 952 */ 'h', '2', 0,
  /* 955 */ 'p', '2', 0,
  /* 958 */ 'q', '2', 0,
  /* 961 */ 's', '2', 0,
  /* 964 */ 'w', '2', 0,
  /* 967 */ 'x', '2', 0,
  /* 970 */ 'z', '2', 0,
  /* 973 */ 'D', '1', '0', '_', 'D', '1', '1', '_', 'D', '1', '2', '_', 'D', '1', '3', 0,
  /* 989 */ 'Q', '1', '0', '_', 'Q', '1', '1', '_', 'Q', '1', '2', '_', 'Q', '1', '3', 0,
  /* 1005 */ 'W', '1', '2', '_', 'W', '1', '3', 0,
  /* 1013 */ 'X', '1', '2', '_', 'X', '1', '3', 0,
  /* 1021 */ 'Z', '1', '0', '_', 'Z', '1', '1', '_', 'Z', '1', '2', '_', 'Z', '1', '3', 0,
  /* 1037 */ 'b', '1', '3', 0,
  /* 1041 */ 'd', '1', '3', 0,
  /* 1045 */ 'h', '1', '3', 0,
  /* 1049 */ 'p', '1', '3', 0,
  /* 1053 */ 'q', '1', '3', 0,
  /* 1057 */ 's', '1', '3', 0,
  /* 1061 */ 'w', '1', '3', 0,
  /* 1065 */ 'x', '1', '3', 0,
  /* 1069 */ 'z', '1', '3', 0,
  /* 1073 */ 'D', '2', '0', '_', 'D', '2', '1', '_', 'D', '2', '2', '_', 'D', '2', '3', 0,
  /* 1089 */ 'Q', '2', '0', '_', 'Q', '2', '1', '_', 'Q', '2', '2', '_', 'Q', '2', '3', 0,
  /* 1105 */ 'W', '2', '2', '_', 'W', '2', '3', 0,
  /* 1113 */ 'X', '2', '2', '_', 'X', '2', '3', 0,
  /* 1121 */ 'Z', '2', '0', '_', 'Z', '2', '1', '_', 'Z', '2', '2', '_', 'Z', '2', '3', 0,
  /* 1137 */ 'b', '2', '3', 0,
  /* 1141 */ 'd', '2', '3', 0,
  /* 1145 */ 'h', '2', '3', 0,
  /* 1149 */ 'q', '2', '3', 0,
  /* 1153 */ 's', '2', '3', 0,
  /* 1157 */ 'w', '2', '3', 0,
  /* 1161 */ 'x', '2', '3', 0,
  /* 1165 */ 'z', '2', '3', 0,
  /* 1169 */ 'D', '0', '_', 'D', '1', '_', 'D', '2', '_', 'D', '3', 0,
  /* 1181 */ 'Q', '0', '_', 'Q', '1', '_', 'Q', '2', '_', 'Q', '3', 0,
  /* 1193 */ 'W', '2', '_', 'W', '3', 0,
  /* 1199 */ 'X', '2', '_', 'X', '3', 0,
  /* 1205 */ 'Z', '0', '_', 'Z', '1', '_', 'Z', '2', '_', 'Z', '3', 0,
  /* 1217 */ 'b', '3', 0,
  /* 1220 */ 'd', '3', 0,
  /* 1223 */ 'h', '3', 0,
  /* 1226 */ 'p', '3', 0,
  /* 1229 */ 'q', '3', 0,
  /* 1232 */ 's', '3', 0,
  /* 1235 */ 'w', '3', 0,
  /* 1238 */ 'x', '3', 0,
  /* 1241 */ 'z', '3', 0,
  /* 1244 */ 'D', '1', '1', '_', 'D', '1', '2', '_', 'D', '1', '3', '_', 'D', '1', '4', 0,
  /* 1260 */ 'Q', '1', '1', '_', 'Q', '1', '2', '_', 'Q', '1', '3', '_', 'Q', '1', '4', 0,
  /* 1276 */ 'W', '1', '3', '_', 'W', '1', '4', 0,
  /* 1284 */ 'X', '1', '3', '_', 'X', '1', '4', 0,
  /* 1292 */ 'Z', '1', '1', '_', 'Z', '1', '2', '_', 'Z', '1', '3', '_', 'Z', '1', '4', 0,
  /* 1308 */ 'b', '1', '4', 0,
  /* 1312 */ 'd', '1', '4', 0,
  /* 1316 */ 'h', '1', '4', 0,
  /* 1320 */ 'p', '1', '4', 0,
  /* 1324 */ 'q', '1', '4', 0,
  /* 1328 */ 's', '1', '4', 0,
  /* 1332 */ 'w', '1', '4', 0,
  /* 1336 */ 'x', '1', '4', 0,
  /* 1340 */ 'z', '1', '4', 0,
  /* 1344 */ 'D', '2', '1', '_', 'D', '2', '2', '_', 'D', '2', '3', '_', 'D', '2', '4', 0,
  /* 1360 */ 'Q', '2', '1', '_', 'Q', '2', '2', '_', 'Q', '2', '3', '_', 'Q', '2', '4', 0,
  /* 1376 */ 'W', '2', '3', '_', 'W', '2', '4', 0,
  /* 1384 */ 'X', '2', '3', '_', 'X', '2', '4', 0,
  /* 1392 */ 'Z', '2', '1', '_', 'Z', '2', '2', '_', 'Z', '2', '3', '_', 'Z', '2', '4', 0,
  /* 1408 */ 'b', '2', '4', 0,
  /* 1412 */ 'd', '2', '4', 0,
  /* 1416 */ 'h', '2', '4', 0,
  /* 1420 */ 'q', '2', '4', 0,
  /* 1424 */ 's', '2', '4', 0,
  /* 1428 */ 'w', '2', '4', 0,
  /* 1432 */ 'x', '2', '4', 0,
  /* 1436 */ 'z', '2', '4', 0,
  /* 1440 */ 'D', '1', '_', 'D', '2', '_', 'D', '3', '_', 'D', '4', 0,
  /* 1452 */ 'Q', '1', '_', 'Q', '2', '_', 'Q', '3', '_', 'Q', '4', 0,
  /* 1464 */ 'W', '3', '_', 'W', '4', 0,
  /* 1470 */ 'X', '3', '_', 'X', '4', 0,
  /* 1476 */ 'Z', '1', '_', 'Z', '2', '_', 'Z', '3', '_', 'Z', '4', 0,
  /* 1488 */ 'b', '4', 0,
  /* 1491 */ 'd', '4', 0,
  /* 1494 */ 'h', '4', 0,
  /* 1497 */ 'p', '4', 0,
  /* 1500 */ 'q', '4', 0,
  /* 1503 */ 's', '4', 0,
  /* 1506 */ 'w', '4', 0,
  /* 1509 */ 'x', '4', 0,
  /* 1512 */ 'z', '4', 0,
  /* 1515 */ 'D', '1', '2', '_', 'D', '1', '3', '_', 'D', '1', '4', '_', 'D', '1', '5', 0,
  /* 1531 */ 'Q', '1', '2', '_', 'Q', '1', '3', '_', 'Q', '1', '4', '_', 'Q', '1', '5', 0,
  /* 1547 */ 'W', '1', '4', '_', 'W', '1', '5', 0,
  /* 1555 */ 'X', '1', '4', '_', 'X', '1', '5', 0,
  /* 1563 */ 'Z', '1', '2', '_', 'Z', '1', '3', '_', 'Z', '1', '4', '_', 'Z', '1', '5', 0,
  /* 1579 */ 'b', '1', '5', 0,
  /* 1583 */ 'd', '1', '5', 0,
  /* 1587 */ 'h', '1', '5', 0,
  /* 1591 */ 'p', '1', '5', 0,
  /* 1595 */ 'q', '1', '5', 0,
  /* 1599 */ 's', '1', '5', 0,
  /* 1603 */ 'w', '1', '5', 0,
  /* 1607 */ 'x', '1', '5', 0,
  /* 1611 */ 'z', '1', '5', 0,
  /* 1615 */ 'D', '2', '2', '_', 'D', '2', '3', '_', 'D', '2', '4', '_', 'D', '2', '5', 0,
  /* 1631 */ 'Q', '2', '2', '_', 'Q', '2', '3', '_', 'Q', '2', '4', '_', 'Q', '2', '5', 0,
  /* 1647 */ 'W', '2', '4', '_', 'W', '2', '5', 0,
  /* 1655 */ 'X', '2', '4', '_', 'X', '2', '5', 0,
  /* 1663 */ 'Z', '2', '2', '_', 'Z', '2', '3', '_', 'Z', '2', '4', '_', 'Z', '2', '5', 0,
  /* 1679 */ 'b', '2', '5', 0,
  /* 1683 */ 'd', '2', '5', 0,
  /* 1687 */ 'h', '2', '5', 0,
  /* 1691 */ 'q', '2', '5', 0,
  /* 1695 */ 's', '2', '5', 0,
  /* 1699 */ 'w', '2', '5', 0,
  /* 1703 */ 'x', '2', '5', 0,
  /* 1707 */ 'z', '2', '5', 0,
  /* 1711 */ 'D', '2', '_', 'D', '3', '_', 'D', '4', '_', 'D', '5', 0,
  /* 1723 */ 'Q', '2', '_', 'Q', '3', '_', 'Q', '4', '_', 'Q', '5', 0,
  /* 1735 */ 'W', '4', '_', 'W', '5', 0,
  /* 1741 */ 'X', '4', '_', 'X', '5', 0,
  /* 1747 */ 'Z', '2', '_', 'Z', '3', '_', 'Z', '4', '_', 'Z', '5', 0,
  /* 1759 */ 'b', '5', 0,
  /* 1762 */ 'd', '5', 0,
  /* 1765 */ 'h', '5', 0,
  /* 1768 */ 'p', '5', 0,
  /* 1771 */ 'q', '5', 0,
  /* 1774 */ 's', '5', 0,
  /* 1777 */ 'w', '5', 0,
  /* 1780 */ 'x', '5', 0,
  /* 1783 */ 'z', '5', 0,
  /* 1786 */ 'D', '1', '3', '_', 'D', '1', '4', '_', 'D', '1', '5', '_', 'D', '1', '6', 0,
  /* 1802 */ 'Q', '1', '3', '_', 'Q', '1', '4', '_', 'Q', '1', '5', '_', 'Q', '1', '6', 0,
  /* 1818 */ 'W', '1', '5', '_', 'W', '1', '6', 0,
  /* 1826 */ 'X', '1', '5', '_', 'X', '1', '6', 0,
  /* 1834 */ 'Z', '1', '3', '_', 'Z', '1', '4', '_', 'Z', '1', '5', '_', 'Z', '1', '6', 0,
  /* 1850 */ 'b', '1', '6', 0,
  /* 1854 */ 'd', '1', '6', 0,
  /* 1858 */ 'h', '1', '6', 0,
  /* 1862 */ 'q', '1', '6', 0,
  /* 1866 */ 's', '1', '6', 0,
  /* 1870 */ 'w', '1', '6', 0,
  /* 1874 */ 'x', '1', '6', 0,
  /* 1878 */ 'z', '1', '6', 0,
  /* 1882 */ 'D', '2', '3', '_', 'D', '2', '4', '_', 'D', '2', '5', '_', 'D', '2', '6', 0,
  /* 1898 */ 'Q', '2', '3', '_', 'Q', '2', '4', '_', 'Q', '2', '5', '_', 'Q', '2', '6', 0,
  /* 1914 */ 'W', '2', '5', '_', 'W', '2', '6', 0,
  /* 1922 */ 'X', '2', '5', '_', 'X', '2', '6', 0,
  /* 1930 */ 'Z', '2', '3', '_', 'Z', '2', '4', '_', 'Z', '2', '5', '_', 'Z', '2', '6', 0,
  /* 1946 */ 'b', '2', '6', 0,
  /* 1950 */ 'd', '2', '6', 0,
  /* 1954 */ 'h', '2', '6', 0,
  /* 1958 */ 'q', '2', '6', 0,
  /* 1962 */ 's', '2', '6', 0,
  /* 1966 */ 'w', '2', '6', 0,
  /* 1970 */ 'x', '2', '6', 0,
  /* 1974 */ 'z', '2', '6', 0,
  /* 1978 */ 'D', '3', '_', 'D', '4', '_', 'D', '5', '_', 'D', '6', 0,
  /* 1990 */ 'Q', '3', '_', 'Q', '4', '_', 'Q', '5', '_', 'Q', '6', 0,
  /* 2002 */ 'W', '5', '_', 'W', '6', 0,
  /* 2008 */ 'X', '5', '_', 'X', '6', 0,
  /* 2014 */ 'Z', '3', '_', 'Z', '4', '_', 'Z', '5', '_', 'Z', '6', 0,
  /* 2026 */ 'b', '6', 0,
  /* 2029 */ 'd', '6', 0,
  /* 2032 */ 'h', '6', 0,
  /* 2035 */ 'p', '6', 0,
  /* 2038 */ 'q', '6', 0,
  /* 2041 */ 's', '6', 0,
  /* 2044 */ 'w', '6', 0,
  /* 2047 */ 'x', '6', 0,
  /* 2050 */ 'z', '6', 0,
  /* 2053 */ 'D', '1', '4', '_', 'D', '1', '5', '_', 'D', '1', '6', '_', 'D', '1', '7', 0,
  /* 2069 */ 'Q', '1', '4', '_', 'Q', '1', '5', '_', 'Q', '1', '6', '_', 'Q', '1', '7', 0,
  /* 2085 */ 'W', '1', '6', '_', 'W', '1', '7', 0,
  /* 2093 */ 'X', '1', '6', '_', 'X', '1', '7', 0,
  /* 2101 */ 'Z', '1', '4', '_', 'Z', '1', '5', '_', 'Z', '1', '6', '_', 'Z', '1', '7', 0,
  /* 2117 */ 'b', '1', '7', 0,
  /* 2121 */ 'd', '1', '7', 0,
  /* 2125 */ 'h', '1', '7', 0,
  /* 2129 */ 'q', '1', '7', 0,
  /* 2133 */ 's', '1', '7', 0,
  /* 2137 */ 'w', '1', '7', 0,
  /* 2141 */ 'x', '1', '7', 0,
  /* 2145 */ 'z', '1', '7', 0,
  /* 2149 */ 'D', '2', '4', '_', 'D', '2', '5', '_', 'D', '2', '6', '_', 'D', '2', '7', 0,
  /* 2165 */ 'Q', '2', '4', '_', 'Q', '2', '5', '_', 'Q', '2', '6', '_', 'Q', '2', '7', 0,
  /* 2181 */ 'W', '2', '6', '_', 'W', '2', '7', 0,
  /* 2189 */ 'X', '2', '6', '_', 'X', '2', '7', 0,
  /* 2197 */ 'Z', '2', '4', '_', 'Z', '2', '5', '_', 'Z', '2', '6', '_', 'Z', '2', '7', 0,
  /* 2213 */ 'b', '2', '7', 0,
  /* 2217 */ 'd', '2', '7', 0,
  /* 2221 */ 'h', '2', '7', 0,
  /* 2225 */ 'q', '2', '7', 0,
  /* 2229 */ 's', '2', '7', 0,
  /* 2233 */ 'w', '2', '7', 0,
  /* 2237 */ 'x', '2', '7', 0,
  /* 2241 */ 'z', '2', '7', 0,
  /* 2245 */ 'D', '4', '_', 'D', '5', '_', 'D', '6', '_', 'D', '7', 0,
  /* 2257 */ 'Q', '4', '_', 'Q', '5', '_', 'Q', '6', '_', 'Q', '7', 0,
  /* 2269 */ 'W', '6', '_', 'W', '7', 0,
  /* 2275 */ 'X', '6', '_', 'X', '7', 0,
  /* 2281 */ 'Z', '4', '_', 'Z', '5', '_', 'Z', '6', '_', 'Z', '7', 0,
  /* 2293 */ 'b', '7', 0,
  /* 2296 */ 'd', '7', 0,
  /* 2299 */ 'h', '7', 0,
  /* 2302 */ 'p', '7', 0,
  /* 2305 */ 'q', '7', 0,
  /* 2308 */ 's', '7', 0,
  /* 2311 */ 'w', '7', 0,
  /* 2314 */ 'x', '7', 0,
  /* 2317 */ 'z', '7', 0,
  /* 2320 */ 'D', '1', '5', '_', 'D', '1', '6', '_', 'D', '1', '7', '_', 'D', '1', '8', 0,
  /* 2336 */ 'Q', '1', '5', '_', 'Q', '1', '6', '_', 'Q', '1', '7', '_', 'Q', '1', '8', 0,
  /* 2352 */ 'W', '1', '7', '_', 'W', '1', '8', 0,
  /* 2360 */ 'X', '1', '7', '_', 'X', '1', '8', 0,
  /* 2368 */ 'Z', '1', '5', '_', 'Z', '1', '6', '_', 'Z', '1', '7', '_', 'Z', '1', '8', 0,
  /* 2384 */ 'b', '1', '8', 0,
  /* 2388 */ 'd', '1', '8', 0,
  /* 2392 */ 'h', '1', '8', 0,
  /* 2396 */ 'q', '1', '8', 0,
  /* 2400 */ 's', '1', '8', 0,
  /* 2404 */ 'w', '1', '8', 0,
  /* 2408 */ 'x', '1', '8', 0,
  /* 2412 */ 'z', '1', '8', 0,
  /* 2416 */ 'D', '2', '5', '_', 'D', '2', '6', '_', 'D', '2', '7', '_', 'D', '2', '8', 0,
  /* 2432 */ 'Q', '2', '5', '_', 'Q', '2', '6', '_', 'Q', '2', '7', '_', 'Q', '2', '8', 0,
  /* 2448 */ 'W', '2', '7', '_', 'W', '2', '8', 0,
  /* 2456 */ 'X', '2', '7', '_', 'X', '2', '8', 0,
  /* 2464 */ 'Z', '2', '5', '_', 'Z', '2', '6', '_', 'Z', '2', '7', '_', 'Z', '2', '8', 0,
  /* 2480 */ 'b', '2', '8', 0,
  /* 2484 */ 'd', '2', '8', 0,
  /* 2488 */ 'h', '2', '8', 0,
  /* 2492 */ 'q', '2', '8', 0,
  /* 2496 */ 's', '2', '8', 0,
  /* 2500 */ 'w', '2', '8', 0,
  /* 2504 */ 'x', '2', '8', 0,
  /* 2508 */ 'z', '2', '8', 0,
  /* 2512 */ 'D', '5', '_', 'D', '6', '_', 'D', '7', '_', 'D', '8', 0,
  /* 2524 */ 'Q', '5', '_', 'Q', '6', '_', 'Q', '7', '_', 'Q', '8', 0,
  /* 2536 */ 'W', '7', '_', 'W', '8', 0,
  /* 2542 */ 'X', '7', '_', 'X', '8', 0,
  /* 2548 */ 'Z', '5', '_', 'Z', '6', '_', 'Z', '7', '_', 'Z', '8', 0,
  /* 2560 */ 'b', '8', 0,
  /* 2563 */ 'd', '8', 0,
  /* 2566 */ 'h', '8', 0,
  /* 2569 */ 'p', '8', 0,
  /* 2572 */ 'q', '8', 0,
  /* 2575 */ 's', '8', 0,
  /* 2578 */ 'w', '8', 0,
  /* 2581 */ 'x', '8', 0,
  /* 2584 */ 'z', '8', 0,
  /* 2587 */ 'D', '1', '6', '_', 'D', '1', '7', '_', 'D', '1', '8', '_', 'D', '1', '9', 0,
  /* 2603 */ 'Q', '1', '6', '_', 'Q', '1', '7', '_', 'Q', '1', '8', '_', 'Q', '1', '9', 0,
  /* 2619 */ 'W', '1', '8', '_', 'W', '1', '9', 0,
  /* 2627 */ 'X', '1', '8', '_', 'X', '1', '9', 0,
  /* 2635 */ 'Z', '1', '6', '_', 'Z', '1', '7', '_', 'Z', '1', '8', '_', 'Z', '1', '9', 0,
  /* 2651 */ 'b', '1', '9', 0,
  /* 2655 */ 'd', '1', '9', 0,
  /* 2659 */ 'h', '1', '9', 0,
  /* 2663 */ 'q', '1', '9', 0,
  /* 2667 */ 's', '1', '9', 0,
  /* 2671 */ 'w', '1', '9', 0,
  /* 2675 */ 'x', '1', '9', 0,
  /* 2679 */ 'z', '1', '9', 0,
  /* 2683 */ 'D', '2', '6', '_', 'D', '2', '7', '_', 'D', '2', '8', '_', 'D', '2', '9', 0,
  /* 2699 */ 'Q', '2', '6', '_', 'Q', '2', '7', '_', 'Q', '2', '8', '_', 'Q', '2', '9', 0,
  /* 2715 */ 'W', '2', '8', '_', 'W', '2', '9', 0,
  /* 2723 */ 'Z', '2', '6', '_', 'Z', '2', '7', '_', 'Z', '2', '8', '_', 'Z', '2', '9', 0,
  /* 2739 */ 'b', '2', '9', 0,
  /* 2743 */ 'd', '2', '9', 0,
  /* 2747 */ 'h', '2', '9', 0,
  /* 2751 */ 'q', '2', '9', 0,
  /* 2755 */ 's', '2', '9', 0,
  /* 2759 */ 'w', '2', '9', 0,
  /* 2763 */ 'x', '2', '9', 0,
  /* 2767 */ 'z', '2', '9', 0,
  /* 2771 */ 'D', '6', '_', 'D', '7', '_', 'D', '8', '_', 'D', '9', 0,
  /* 2783 */ 'Q', '6', '_', 'Q', '7', '_', 'Q', '8', '_', 'Q', '9', 0,
  /* 2795 */ 'W', '8', '_', 'W', '9', 0,
  /* 2801 */ 'X', '8', '_', 'X', '9', 0,
  /* 2807 */ 'Z', '6', '_', 'Z', '7', '_', 'Z', '8', '_', 'Z', '9', 0,
  /* 2819 */ 'b', '9', 0,
  /* 2822 */ 'd', '9', 0,
  /* 2825 */ 'h', '9', 0,
  /* 2828 */ 'p', '9', 0,
  /* 2831 */ 'q', '9', 0,
  /* 2834 */ 's', '9', 0,
  /* 2837 */ 'w', '9', 0,
  /* 2840 */ 'x', '9', 0,
  /* 2843 */ 'z', '9', 0,
  /* 2846 */ 'X', '2', '8', '_', 'F', 'P', 0,
  /* 2853 */ 'F', 'P', '_', 'L', 'R', 0,
  /* 2859 */ 'W', '3', '0', '_', 'W', 'Z', 'R', 0,
  /* 2867 */ 'L', 'R', '_', 'X', 'Z', 'R', 0,
  /* 2874 */ 'z', '1', '0', '_', 'h', 'i', 0,
  /* 2881 */ 'z', '2', '0', '_', 'h', 'i', 0,
  /* 2888 */ 'z', '3', '0', '_', 'h', 'i', 0,
  /* 2895 */ 'z', '0', '_', 'h', 'i', 0,
  /* 2901 */ 'z', '1', '1', '_', 'h', 'i', 0,
  /* 2908 */ 'z', '2', '1', '_', 'h', 'i', 0,
  /* 2915 */ 'z', '3', '1', '_', 'h', 'i', 0,
  /* 2922 */ 'z', '1', '_', 'h', 'i', 0,
  /* 2928 */ 'z', '1', '2', '_', 'h', 'i', 0,
  /* 2935 */ 'z', '2', '2', '_', 'h', 'i', 0,
  /* 2942 */ 'z', '2', '_', 'h', 'i', 0,
  /* 2948 */ 'z', '1', '3', '_', 'h', 'i', 0,
  /* 2955 */ 'z', '2', '3', '_', 'h', 'i', 0,
  /* 2962 */ 'z', '3', '_', 'h', 'i', 0,
  /* 2968 */ 'z', '1', '4', '_', 'h', 'i', 0,
  /* 2975 */ 'z', '2', '4', '_', 'h', 'i', 0,
  /* 2982 */ 'z', '4', '_', 'h', 'i', 0,
  /* 2988 */ 'z', '1', '5', '_', 'h', 'i', 0,
  /* 2995 */ 'z', '2', '5', '_', 'h', 'i', 0,
  /* 3002 */ 'z', '5', '_', 'h', 'i', 0,
  /* 3008 */ 'z', '1', '6', '_', 'h', 'i', 0,
  /* 3015 */ 'z', '2', '6', '_', 'h', 'i', 0,
  /* 3022 */ 'z', '6', '_', 'h', 'i', 0,
  /* 3028 */ 'z', '1', '7', '_', 'h', 'i', 0,
  /* 3035 */ 'z', '2', '7', '_', 'h', 'i', 0,
  /* 3042 */ 'z', '7', '_', 'h', 'i', 0,
  /* 3048 */ 'z', '1', '8', '_', 'h', 'i', 0,
  /* 3055 */ 'z', '2', '8', '_', 'h', 'i', 0,
  /* 3062 */ 'z', '8', '_', 'h', 'i', 0,
  /* 3068 */ 'z', '1', '9', '_', 'h', 'i', 0,
  /* 3075 */ 'z', '2', '9', '_', 'h', 'i', 0,
  /* 3082 */ 'z', '9', '_', 'h', 'i', 0,
  /* 3088 */ 'w', 's', 'p', 0,
  /* 3092 */ 'f', 'f', 'r', 0,
  /* 3096 */ 'w', 'z', 'r', 0,
  /* 3100 */ 'x', 'z', 'r', 0,
  /* 3104 */ 'n', 'z', 'c', 'v', 0,
  };

  static const uint16_t RegAsmOffsetNoRegAltName[] = {
    3092, 2763, 265, 3104, 3089, 3088, 3096, 3100, 332, 675, 946, 1217, 1488, 1759, 
    2026, 2293, 2560, 2819, 53, 417, 763, 1037, 1308, 1579, 1850, 2117, 2384, 2651, 
    153, 517, 863, 1137, 1408, 1679, 1946, 2213, 2480, 2739, 241, 597, 335, 678, 
    949, 1220, 1491, 1762, 2029, 2296, 2563, 2822, 57, 421, 767, 1041, 1312, 1583, 
    1854, 2121, 2388, 2655, 157, 521, 867, 1141, 1412, 1683, 1950, 2217, 2484, 2743, 
    245, 601, 338, 681, 952, 1223, 1494, 1765, 2032, 2299, 2566, 2825, 61, 425, 
    771, 1045, 1316, 1587, 1858, 2125, 2392, 2659, 161, 525, 871, 1145, 1416, 1687, 
    1954, 2221, 2488, 2747, 249, 605, 341, 684, 955, 1226, 1497, 1768, 2035, 2302, 
    2569, 2828, 65, 429, 775, 1049, 1320, 1591, 344, 687, 958, 1229, 1500, 1771, 
    2038, 2305, 2572, 2831, 69, 433, 779, 1053, 1324, 1595, 1862, 2129, 2396, 2663, 
    165, 529, 875, 1149, 1420, 1691, 1958, 2225, 2492, 2751, 253, 609, 347, 690, 
    961, 1232, 1503, 1774, 2041, 2308, 2575, 2834, 73, 437, 783, 1057, 1328, 1599, 
    1866, 2133, 2400, 2667, 169, 533, 879, 1153, 1424, 1695, 1962, 2229, 2496, 2755, 
    257, 613, 350, 693, 964, 1235, 1506, 1777, 2044, 2311, 2578, 2837, 77, 441, 
    787, 1061, 1332, 1603, 1870, 2137, 2404, 2671, 173, 537, 883, 1157, 1428, 1699, 
    1966, 2233, 2500, 2759, 261, 353, 696, 967, 1238, 1509, 1780, 2047, 2314, 2581, 
    2840, 81, 445, 791, 1065, 1336, 1607, 1874, 2141, 2408, 2675, 177, 541, 887, 
    1161, 1432, 1703, 1970, 2237, 2504, 356, 699, 970, 1241, 1512, 1783, 2050, 2317, 
    2584, 2843, 85, 449, 795, 1069, 1340, 1611, 1878, 2145, 2412, 2679, 181, 545, 
    891, 1165, 1436, 1707, 1974, 2241, 2508, 2767, 269, 617, 2895, 2922, 2942, 2962, 
    2982, 3002, 3022, 3042, 3062, 3082, 2874, 2901, 2928, 2948, 2968, 2988, 3008, 3028, 
    3048, 3068, 2881, 2908, 2935, 2955, 2975, 2995, 3015, 3035, 3055, 3075, 2888, 2915, 
    629, 902, 1175, 1446, 1717, 1984, 2251, 2518, 2777, 6, 365, 709, 981, 1252, 
    1523, 1794, 2061, 2328, 2595, 97, 461, 807, 1081, 1352, 1623, 1890, 2157, 2424, 
    2691, 193, 557, 281, 1169, 1440, 1711, 1978, 2245, 2512, 2771, 0, 359, 702, 
    973, 1244, 1515, 1786, 2053, 2320, 2587, 89, 453, 799, 1073, 1344, 1615, 1882, 
    2149, 2416, 2683, 185, 549, 273, 621, 895, 899, 1172, 1443, 1714, 1981, 2248, 
    2515, 2774, 3, 362, 705, 977, 1248, 1519, 1790, 2057, 2324, 2591, 93, 457, 
    803, 1077, 1348, 1619, 1886, 2153, 2420, 2687, 189, 553, 277, 625, 643, 915, 
    1187, 1458, 1729, 1996, 2263, 2530, 2789, 19, 379, 724, 997, 1268, 1539, 1810, 
    2077, 2344, 2611, 113, 477, 823, 1097, 1368, 1639, 1906, 2173, 2440, 2707, 209, 
    573, 296, 1181, 1452, 1723, 1990, 2257, 2524, 2783, 13, 373, 717, 989, 1260, 
    1531, 1802, 2069, 2336, 2603, 105, 469, 815, 1089, 1360, 1631, 1898, 2165, 2432, 
    2699, 201, 565, 288, 635, 908, 912, 1184, 1455, 1726, 1993, 2260, 2527, 2786, 
    16, 376, 720, 993, 1264, 1535, 1806, 2073, 2340, 2607, 109, 473, 819, 1093, 
    1364, 1635, 1902, 2169, 2436, 2703, 205, 569, 292, 639, 303, 2859, 649, 921, 
    1193, 1464, 1735, 2002, 2269, 2536, 2795, 26, 387, 732, 1005, 1276, 1547, 1818, 
    2085, 2352, 2619, 121, 485, 831, 1105, 1376, 1647, 1914, 2181, 2448, 2715, 217, 
    2853, 2867, 310, 2846, 655, 927, 1199, 1470, 1741, 2008, 2275, 2542, 2801, 33, 
    395, 740, 1013, 1284, 1555, 1826, 2093, 2360, 2627, 129, 493, 839, 1113, 1384, 
    1655, 1922, 2189, 2456, 669, 940, 1211, 1482, 1753, 2020, 2287, 2554, 2813, 46, 
    409, 755, 1029, 1300, 1571, 1842, 2109, 2376, 2643, 145, 509, 855, 1129, 1400, 
    1671, 1938, 2205, 2472, 2731, 233, 589, 325, 1205, 1476, 1747, 2014, 2281, 2548, 
    2807, 40, 403, 748, 1021, 1292, 1563, 1834, 2101, 2368, 2635, 137, 501, 847, 
    1121, 1392, 1663, 1930, 2197, 2464, 2723, 225, 581, 317, 661, 933, 937, 1208, 
    1479, 1750, 2017, 2284, 2551, 2810, 43, 406, 751, 1025, 1296, 1567, 1838, 2105, 
    2372, 2639, 141, 505, 851, 1125, 1396, 1667, 1934, 2201, 2468, 2727, 229, 585, 
    321, 665, 
  };

  static const char AsmStrsvlist1[] = {
  /* 0 */ 0,
  };

  static const uint8_t RegAsmOffsetvlist1[] = {
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 
  };

  static const char AsmStrsvreg[] = {
  /* 0 */ 'v', '1', '0', 0,
  /* 4 */ 'v', '2', '0', 0,
  /* 8 */ 'v', '3', '0', 0,
  /* 12 */ 'v', '0', 0,
  /* 15 */ 'v', '1', '1', 0,
  /* 19 */ 'v', '2', '1', 0,
  /* 23 */ 'v', '3', '1', 0,
  /* 27 */ 'v', '1', 0,
  /* 30 */ 'v', '1', '2', 0,
  /* 34 */ 'v', '2', '2', 0,
  /* 38 */ 'v', '2', 0,
  /* 41 */ 'v', '1', '3', 0,
  /* 45 */ 'v', '2', '3', 0,
  /* 49 */ 'v', '3', 0,
  /* 52 */ 'v', '1', '4', 0,
  /* 56 */ 'v', '2', '4', 0,
  /* 60 */ 'v', '4', 0,
  /* 63 */ 'v', '1', '5', 0,
  /* 67 */ 'v', '2', '5', 0,
  /* 71 */ 'v', '5', 0,
  /* 74 */ 'v', '1', '6', 0,
  /* 78 */ 'v', '2', '6', 0,
  /* 82 */ 'v', '6', 0,
  /* 85 */ 'v', '1', '7', 0,
  /* 89 */ 'v', '2', '7', 0,
  /* 93 */ 'v', '7', 0,
  /* 96 */ 'v', '1', '8', 0,
  /* 100 */ 'v', '2', '8', 0,
  /* 104 */ 'v', '8', 0,
  /* 107 */ 'v', '1', '9', 0,
  /* 111 */ 'v', '2', '9', 0,
  /* 115 */ 'v', '9', 0,
  };

  static const uint8_t RegAsmOffsetvreg[] = {
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 12, 27, 
    38, 49, 60, 71, 82, 93, 104, 115, 0, 15, 30, 41, 52, 63, 
    74, 85, 96, 107, 4, 19, 34, 45, 56, 67, 78, 89, 100, 111, 
    8, 23, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 12, 27, 38, 49, 60, 71, 
    82, 93, 104, 115, 0, 15, 30, 41, 52, 63, 74, 85, 96, 107, 
    4, 19, 34, 45, 56, 67, 78, 89, 100, 111, 8, 23, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    12, 27, 38, 49, 60, 71, 82, 93, 104, 115, 0, 15, 30, 41, 
    52, 63, 74, 85, 96, 107, 4, 19, 34, 45, 56, 67, 78, 89, 
    100, 111, 8, 23, 12, 27, 38, 49, 60, 71, 82, 93, 104, 115, 
    0, 15, 30, 41, 52, 63, 74, 85, 96, 107, 4, 19, 34, 45, 
    56, 67, 78, 89, 100, 111, 8, 23, 12, 27, 38, 49, 60, 71, 
    82, 93, 104, 115, 0, 15, 30, 41, 52, 63, 74, 85, 96, 107, 
    4, 19, 34, 45, 56, 67, 78, 89, 100, 111, 8, 23, 12, 27, 
    38, 49, 60, 71, 82, 93, 104, 115, 0, 15, 30, 41, 52, 63, 
    74, 85, 96, 107, 4, 19, 34, 45, 56, 67, 78, 89, 100, 111, 
    8, 23, 12, 27, 38, 49, 60, 71, 82, 93, 104, 115, 0, 15, 
    30, 41, 52, 63, 74, 85, 96, 107, 4, 19, 34, 45, 56, 67, 
    78, 89, 100, 111, 8, 23, 12, 27, 38, 49, 60, 71, 82, 93, 
    104, 115, 0, 15, 30, 41, 52, 63, 74, 85, 96, 107, 4, 19, 
    34, 45, 56, 67, 78, 89, 100, 111, 8, 23, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 
  };

  switch(AltIdx) {
  default: llvm_unreachable("Invalid register alt name index!");
  case AArch64::NoRegAltName:
    assert(*(AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1]) &&
           "Invalid alt name index for register!");
    return AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1];
  case AArch64::vlist1:
    assert(*(AsmStrsvlist1+RegAsmOffsetvlist1[RegNo-1]) &&
           "Invalid alt name index for register!");
    return AsmStrsvlist1+RegAsmOffsetvlist1[RegNo-1];
  case AArch64::vreg:
    assert(*(AsmStrsvreg+RegAsmOffsetvreg[RegNo-1]) &&
           "Invalid alt name index for register!");
    return AsmStrsvreg+RegAsmOffsetvreg[RegNo-1];
  }
}

#ifdef PRINT_ALIAS_INSTR
#undef PRINT_ALIAS_INSTR

static bool AArch64InstPrinterValidateMCOperand(const MCOperand &MCOp,
                  const MCSubtargetInfo &STI,
                  unsigned PredicateIndex);
bool AArch64InstPrinter::printAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI, raw_ostream &OS) {
  const char *AsmString;
  switch (MI->getOpcode()) {
  default: return false;
  case AArch64::ADDSWri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(1).getReg())) {
      // (ADDSWri WZR, GPR32sp:$src, addsub_shifted_imm32:$imm)
      AsmString = "cmn	$\x02, $\xFF\x03\x01";
      break;
    }
    return false;
  case AArch64::ADDSWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ADDSWrs WZR, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "cmn	$\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (ADDSWrs WZR, GPR32:$src1, GPR32:$src2, arith_shift32:$sh)
      AsmString = "cmn	$\x02, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ADDSWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "adds	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ADDSWrx:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 16) {
      // (ADDSWrx WZR, GPR32sponly:$src1, GPR32:$src2, 16)
      AsmString = "cmn	$\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (ADDSWrx WZR, GPR32sp:$src1, GPR32:$src2, arith_extend:$sh)
      AsmString = "cmn	$\x02, $\x03$\xFF\x04\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 16) {
      // (ADDSWrx GPR32:$dst, GPR32sponly:$src1, GPR32:$src2, 16)
      AsmString = "adds	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ADDSXri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg())) {
      // (ADDSXri XZR, GPR64sp:$src, addsub_shifted_imm64:$imm)
      AsmString = "cmn	$\x02, $\xFF\x03\x01";
      break;
    }
    return false;
  case AArch64::ADDSXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ADDSXrs XZR, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "cmn	$\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg())) {
      // (ADDSXrs XZR, GPR64:$src1, GPR64:$src2, arith_shift64:$sh)
      AsmString = "cmn	$\x02, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ADDSXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "adds	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ADDSXrx:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (ADDSXrx XZR, GPR64sp:$src1, GPR32:$src2, arith_extend:$sh)
      AsmString = "cmn	$\x02, $\x03$\xFF\x04\x03";
      break;
    }
    return false;
  case AArch64::ADDSXrx64:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 24) {
      // (ADDSXrx64 XZR, GPR64sponly:$src1, GPR64:$src2, 24)
      AsmString = "cmn	$\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg())) {
      // (ADDSXrx64 XZR, GPR64sp:$src1, GPR64:$src2, arith_extendlsl64:$sh)
      AsmString = "cmn	$\x02, $\x03$\xFF\x04\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 24) {
      // (ADDSXrx64 GPR64:$dst, GPR64sponly:$src1, GPR64:$src2, 24)
      AsmString = "adds	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ADDWri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32sponlyRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ADDWri GPR32sponly:$dst, GPR32sp:$src, 0, 0)
      AsmString = "mov $\x01, $\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ADDWri GPR32sp:$dst, GPR32sponly:$src, 0, 0)
      AsmString = "mov $\x01, $\x02";
      break;
    }
    return false;
  case AArch64::ADDWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ADDWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "add	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ADDWrx:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32sponlyRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 16) {
      // (ADDWrx GPR32sponly:$dst, GPR32sp:$src1, GPR32:$src2, 16)
      AsmString = "add	$\x01, $\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 16) {
      // (ADDWrx GPR32sp:$dst, GPR32sponly:$src1, GPR32:$src2, 16)
      AsmString = "add	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ADDXri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64sponlyRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ADDXri GPR64sponly:$dst, GPR64sp:$src, 0, 0)
      AsmString = "mov $\x01, $\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ADDXri GPR64sp:$dst, GPR64sponly:$src, 0, 0)
      AsmString = "mov $\x01, $\x02";
      break;
    }
    return false;
  case AArch64::ADDXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ADDXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "add	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ADDXrx64:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64sponlyRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 24) {
      // (ADDXrx64 GPR64sponly:$dst, GPR64sp:$src1, GPR64:$src2, 24)
      AsmString = "add	$\x01, $\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 24) {
      // (ADDXrx64 GPR64sp:$dst, GPR64sponly:$src1, GPR64:$src2, 24)
      AsmString = "add	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ANDSWri:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg())) {
      // (ANDSWri WZR, GPR32:$src1, logical_imm32:$src2)
      AsmString = "tst $\x02, $\xFF\x03\x04";
      break;
    }
    return false;
  case AArch64::ANDSWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ANDSWrs WZR, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "tst $\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (ANDSWrs WZR, GPR32:$src1, GPR32:$src2, logical_shift32:$sh)
      AsmString = "tst $\x02, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ANDSWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "ands	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ANDSXri:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg())) {
      // (ANDSXri XZR, GPR64:$src1, logical_imm64:$src2)
      AsmString = "tst $\x02, $\xFF\x03\x05";
      break;
    }
    return false;
  case AArch64::ANDSXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ANDSXrs XZR, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "tst $\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg())) {
      // (ANDSXrs XZR, GPR64:$src1, GPR64:$src2, logical_shift64:$sh)
      AsmString = "tst $\x02, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ANDSXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "ands	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ANDS_PPzPP:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(2).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ANDS_PPzPP PPR8:$Pd, PPRAny:$Pg, PPR8:$Pn, PPR8:$Pn)
      AsmString = "movs $\xFF\x01\x06, $\xFF\x02\x07/z, $\xFF\x03\x06";
      break;
    }
    return false;
  case AArch64::ANDWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ANDWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "and	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ANDXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ANDXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "and	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::AND_PPzPP:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(2).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (AND_PPzPP PPR8:$Pd, PPRAny:$Pg, PPR8:$Pn, PPR8:$Pn)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x02\x07/z, $\xFF\x03\x06";
      break;
    }
    return false;
  case AArch64::AND_ZI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(2), STI, 1) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (AND_ZI ZPR8:$Zdn, sve_logical_imm8:$imm)
      AsmString = "and	$\xFF\x01\x06, $\xFF\x01\x06, $\xFF\x03\x08";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(2), STI, 2) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (AND_ZI ZPR16:$Zdn, sve_logical_imm16:$imm)
      AsmString = "and	$\xFF\x01\x09, $\xFF\x01\x09, $\xFF\x03\x0A";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(2), STI, 3) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (AND_ZI ZPR32:$Zdn, sve_logical_imm32:$imm)
      AsmString = "and	$\xFF\x01\x0B, $\xFF\x01\x0B, $\xFF\x03\x04";
      break;
    }
    return false;
  case AArch64::BICSWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (BICSWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "bics	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::BICSXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (BICSXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "bics	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::BICWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (BICWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "bic	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::BICXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (BICXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "bic	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::CLREX:
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 15) {
      // (CLREX 15)
      AsmString = "clrex";
      break;
    }
    return false;
  case AArch64::CNTB_XPiI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CNTB_XPiI GPR64:$Rd, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "cntb	$\x01";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CNTB_XPiI GPR64:$Rd, sve_pred_enum:$pattern, 1)
      AsmString = "cntb	$\x01, $\xFF\x02\x0E";
      break;
    }
    return false;
  case AArch64::CNTD_XPiI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CNTD_XPiI GPR64:$Rd, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "cntd	$\x01";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CNTD_XPiI GPR64:$Rd, sve_pred_enum:$pattern, 1)
      AsmString = "cntd	$\x01, $\xFF\x02\x0E";
      break;
    }
    return false;
  case AArch64::CNTH_XPiI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CNTH_XPiI GPR64:$Rd, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "cnth	$\x01";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CNTH_XPiI GPR64:$Rd, sve_pred_enum:$pattern, 1)
      AsmString = "cnth	$\x01, $\xFF\x02\x0E";
      break;
    }
    return false;
  case AArch64::CNTW_XPiI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CNTW_XPiI GPR64:$Rd, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "cntw	$\x01";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CNTW_XPiI GPR64:$Rd, sve_pred_enum:$pattern, 1)
      AsmString = "cntw	$\x01, $\xFF\x02\x0E";
      break;
    }
    return false;
  case AArch64::CPY_ZPmI_B:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmI_B ZPR8:$Zd, PPRAny:$Pg, cpy_imm8_opt_lsl_i8:$imm)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x03\x07/m, $\xFF\x04\x0F";
      break;
    }
    return false;
  case AArch64::CPY_ZPmI_D:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmI_D ZPR64:$Zd, PPRAny:$Pg, cpy_imm8_opt_lsl_i64:$imm)
      AsmString = "mov $\xFF\x01\x10, $\xFF\x03\x07/m, $\xFF\x04\x11";
      break;
    }
    return false;
  case AArch64::CPY_ZPmI_H:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmI_H ZPR16:$Zd, PPRAny:$Pg, cpy_imm8_opt_lsl_i16:$imm)
      AsmString = "mov $\xFF\x01\x09, $\xFF\x03\x07/m, $\xFF\x04\x12";
      break;
    }
    return false;
  case AArch64::CPY_ZPmI_S:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmI_S ZPR32:$Zd, PPRAny:$Pg, cpy_imm8_opt_lsl_i32:$imm)
      AsmString = "mov $\xFF\x01\x0B, $\xFF\x03\x07/m, $\xFF\x04\x13";
      break;
    }
    return false;
  case AArch64::CPY_ZPmR_B:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmR_B ZPR8:$Zd, PPR3bAny:$Pg, GPR32sp:$Rn)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x03\x07/m, $\x04";
      break;
    }
    return false;
  case AArch64::CPY_ZPmR_D:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmR_D ZPR64:$Zd, PPR3bAny:$Pg, GPR64sp:$Rn)
      AsmString = "mov $\xFF\x01\x10, $\xFF\x03\x07/m, $\x04";
      break;
    }
    return false;
  case AArch64::CPY_ZPmR_H:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmR_H ZPR16:$Zd, PPR3bAny:$Pg, GPR32sp:$Rn)
      AsmString = "mov $\xFF\x01\x09, $\xFF\x03\x07/m, $\x04";
      break;
    }
    return false;
  case AArch64::CPY_ZPmR_S:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmR_S ZPR32:$Zd, PPR3bAny:$Pg, GPR32sp:$Rn)
      AsmString = "mov $\xFF\x01\x0B, $\xFF\x03\x07/m, $\x04";
      break;
    }
    return false;
  case AArch64::CPY_ZPmV_B:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::FPR8RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmV_B ZPR8:$Zd, PPR3bAny:$Pg, FPR8:$Vn)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x03\x07/m, $\x04";
      break;
    }
    return false;
  case AArch64::CPY_ZPmV_D:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmV_D ZPR64:$Zd, PPR3bAny:$Pg, FPR64:$Vn)
      AsmString = "mov $\xFF\x01\x10, $\xFF\x03\x07/m, $\x04";
      break;
    }
    return false;
  case AArch64::CPY_ZPmV_H:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::FPR16RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmV_H ZPR16:$Zd, PPR3bAny:$Pg, FPR16:$Vn)
      AsmString = "mov $\xFF\x01\x09, $\xFF\x03\x07/m, $\x04";
      break;
    }
    return false;
  case AArch64::CPY_ZPmV_S:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPmV_S ZPR32:$Zd, PPR3bAny:$Pg, FPR32:$Vn)
      AsmString = "mov $\xFF\x01\x0B, $\xFF\x03\x07/m, $\x04";
      break;
    }
    return false;
  case AArch64::CPY_ZPzI_B:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPzI_B ZPR8:$Zd, PPRAny:$Pg, cpy_imm8_opt_lsl_i8:$imm)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x02\x07/z, $\xFF\x03\x0F";
      break;
    }
    return false;
  case AArch64::CPY_ZPzI_D:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPzI_D ZPR64:$Zd, PPRAny:$Pg, cpy_imm8_opt_lsl_i64:$imm)
      AsmString = "mov $\xFF\x01\x10, $\xFF\x02\x07/z, $\xFF\x03\x11";
      break;
    }
    return false;
  case AArch64::CPY_ZPzI_H:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPzI_H ZPR16:$Zd, PPRAny:$Pg, cpy_imm8_opt_lsl_i16:$imm)
      AsmString = "mov $\xFF\x01\x09, $\xFF\x02\x07/z, $\xFF\x03\x12";
      break;
    }
    return false;
  case AArch64::CPY_ZPzI_S:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (CPY_ZPzI_S ZPR32:$Zd, PPRAny:$Pg, cpy_imm8_opt_lsl_i32:$imm)
      AsmString = "mov $\xFF\x01\x0B, $\xFF\x02\x07/z, $\xFF\x03\x13";
      break;
    }
    return false;
  case AArch64::CSINCWr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).getReg() == AArch64::WZR &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(3), STI, 4)) {
      // (CSINCWr GPR32:$dst, WZR, WZR, inv_ccode:$cc)
      AsmString = "cset $\x01, $\xFF\x04\x14";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg() &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(3), STI, 4)) {
      // (CSINCWr GPR32:$dst, GPR32:$src, GPR32:$src, inv_ccode:$cc)
      AsmString = "cinc $\x01, $\x02, $\xFF\x04\x14";
      break;
    }
    return false;
  case AArch64::CSINCXr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).getReg() == AArch64::XZR &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(3), STI, 4)) {
      // (CSINCXr GPR64:$dst, XZR, XZR, inv_ccode:$cc)
      AsmString = "cset $\x01, $\xFF\x04\x14";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg() &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(3), STI, 4)) {
      // (CSINCXr GPR64:$dst, GPR64:$src, GPR64:$src, inv_ccode:$cc)
      AsmString = "cinc $\x01, $\x02, $\xFF\x04\x14";
      break;
    }
    return false;
  case AArch64::CSINVWr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).getReg() == AArch64::WZR &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(3), STI, 4)) {
      // (CSINVWr GPR32:$dst, WZR, WZR, inv_ccode:$cc)
      AsmString = "csetm $\x01, $\xFF\x04\x14";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg() &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(3), STI, 4)) {
      // (CSINVWr GPR32:$dst, GPR32:$src, GPR32:$src, inv_ccode:$cc)
      AsmString = "cinv $\x01, $\x02, $\xFF\x04\x14";
      break;
    }
    return false;
  case AArch64::CSINVXr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).getReg() == AArch64::XZR &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(3), STI, 4)) {
      // (CSINVXr GPR64:$dst, XZR, XZR, inv_ccode:$cc)
      AsmString = "csetm $\x01, $\xFF\x04\x14";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg() &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(3), STI, 4)) {
      // (CSINVXr GPR64:$dst, GPR64:$src, GPR64:$src, inv_ccode:$cc)
      AsmString = "cinv $\x01, $\x02, $\xFF\x04\x14";
      break;
    }
    return false;
  case AArch64::CSNEGWr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg() &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(3), STI, 4)) {
      // (CSNEGWr GPR32:$dst, GPR32:$src, GPR32:$src, inv_ccode:$cc)
      AsmString = "cneg $\x01, $\x02, $\xFF\x04\x14";
      break;
    }
    return false;
  case AArch64::CSNEGXr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg() &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(3), STI, 4)) {
      // (CSNEGXr GPR64:$dst, GPR64:$src, GPR64:$src, inv_ccode:$cc)
      AsmString = "cneg $\x01, $\x02, $\xFF\x04\x14";
      break;
    }
    return false;
  case AArch64::DCPS1:
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 0) {
      // (DCPS1 0)
      AsmString = "dcps1";
      break;
    }
    return false;
  case AArch64::DCPS2:
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 0) {
      // (DCPS2 0)
      AsmString = "dcps2";
      break;
    }
    return false;
  case AArch64::DCPS3:
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 0) {
      // (DCPS3 0)
      AsmString = "dcps3";
      break;
    }
    return false;
  case AArch64::DECB_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECB_XPiI GPR64:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "decb	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECB_XPiI GPR64:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "decb	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::DECD_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECD_XPiI GPR64:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "decd	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECD_XPiI GPR64:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "decd	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::DECD_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECD_ZPiI ZPR64:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "decd	$\xFF\x01\x10";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECD_ZPiI ZPR64:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "decd	$\xFF\x01\x10, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::DECH_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECH_XPiI GPR64:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "dech	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECH_XPiI GPR64:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "dech	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::DECH_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECH_ZPiI ZPR16:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "dech	$\xFF\x01\x09";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECH_ZPiI ZPR16:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "dech	$\xFF\x01\x09, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::DECW_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECW_XPiI GPR64:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "decw	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECW_XPiI GPR64:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "decw	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::DECW_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECW_ZPiI ZPR32:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "decw	$\xFF\x01\x0B";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DECW_ZPiI ZPR32:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "decw	$\xFF\x01\x0B, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::DUPM_ZI:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(1), STI, 5) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUPM_ZI ZPR16:$Zd, sve_preferred_logical_imm16:$imm)
      AsmString = "mov $\xFF\x01\x09, $\xFF\x02\x15";
      break;
    }
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(1), STI, 6) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUPM_ZI ZPR32:$Zd, sve_preferred_logical_imm32:$imm)
      AsmString = "mov $\xFF\x01\x0B, $\xFF\x02\x16";
      break;
    }
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(1), STI, 7) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUPM_ZI ZPR64:$Zd, sve_preferred_logical_imm64:$imm)
      AsmString = "mov $\xFF\x01\x10, $\xFF\x02\x17";
      break;
    }
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(1), STI, 1) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUPM_ZI ZPR8:$Zd, sve_logical_imm8:$imm)
      AsmString = "dupm $\xFF\x01\x06, $\xFF\x02\x08";
      break;
    }
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(1), STI, 2) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUPM_ZI ZPR16:$Zd, sve_logical_imm16:$imm)
      AsmString = "dupm $\xFF\x01\x09, $\xFF\x02\x0A";
      break;
    }
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(1), STI, 3) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUPM_ZI ZPR32:$Zd, sve_logical_imm32:$imm)
      AsmString = "dupm $\xFF\x01\x0B, $\xFF\x02\x04";
      break;
    }
    return false;
  case AArch64::DUP_ZI_B:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZI_B ZPR8:$Zd, cpy_imm8_opt_lsl_i8:$imm)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x02\x0F";
      break;
    }
    return false;
  case AArch64::DUP_ZI_D:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZI_D ZPR64:$Zd, cpy_imm8_opt_lsl_i64:$imm)
      AsmString = "mov $\xFF\x01\x10, $\xFF\x02\x11";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 0 &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZI_D ZPR64:$Zd, 0, 0)
      AsmString = "fmov $\xFF\x01\x10, #0.0";
      break;
    }
    return false;
  case AArch64::DUP_ZI_H:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZI_H ZPR16:$Zd, cpy_imm8_opt_lsl_i16:$imm)
      AsmString = "mov $\xFF\x01\x09, $\xFF\x02\x12";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 0 &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZI_H ZPR16:$Zd, 0, 0)
      AsmString = "fmov $\xFF\x01\x09, #0.0";
      break;
    }
    return false;
  case AArch64::DUP_ZI_S:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZI_S ZPR32:$Zd, cpy_imm8_opt_lsl_i32:$imm)
      AsmString = "mov $\xFF\x01\x0B, $\xFF\x02\x13";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 0 &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZI_S ZPR32:$Zd, 0, 0)
      AsmString = "fmov $\xFF\x01\x0B, #0.0";
      break;
    }
    return false;
  case AArch64::DUP_ZR_B:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZR_B ZPR8:$Zd, GPR32sp:$Rn)
      AsmString = "mov $\xFF\x01\x06, $\x02";
      break;
    }
    return false;
  case AArch64::DUP_ZR_D:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZR_D ZPR64:$Zd, GPR64sp:$Rn)
      AsmString = "mov $\xFF\x01\x10, $\x02";
      break;
    }
    return false;
  case AArch64::DUP_ZR_H:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZR_H ZPR16:$Zd, GPR32sp:$Rn)
      AsmString = "mov $\xFF\x01\x09, $\x02";
      break;
    }
    return false;
  case AArch64::DUP_ZR_S:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZR_S ZPR32:$Zd, GPR32sp:$Rn)
      AsmString = "mov $\xFF\x01\x0B, $\x02";
      break;
    }
    return false;
  case AArch64::DUP_ZZI_B:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZZI_B ZPR8:$Zd, FPR8asZPR:$Bn, 0)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x02\x18";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZZI_B ZPR8:$Zd, ZPR8:$Zn, sve_elm_idx_extdup_b:$idx)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x02\x06$\xFF\x03\x19";
      break;
    }
    return false;
  case AArch64::DUP_ZZI_D:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZZI_D ZPR64:$Zd, FPR64asZPR:$Dn, 0)
      AsmString = "mov $\xFF\x01\x10, $\xFF\x02\x1A";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZZI_D ZPR64:$Zd, ZPR64:$Zn, sve_elm_idx_extdup_d:$idx)
      AsmString = "mov $\xFF\x01\x10, $\xFF\x02\x10$\xFF\x03\x19";
      break;
    }
    return false;
  case AArch64::DUP_ZZI_H:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZZI_H ZPR16:$Zd, FPR16asZPR:$Hn, 0)
      AsmString = "mov $\xFF\x01\x09, $\xFF\x02\x1B";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZZI_H ZPR16:$Zd, ZPR16:$Zn, sve_elm_idx_extdup_h:$idx)
      AsmString = "mov $\xFF\x01\x09, $\xFF\x02\x09$\xFF\x03\x19";
      break;
    }
    return false;
  case AArch64::DUP_ZZI_Q:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZZI_Q ZPR128:$Zd, FPR128asZPR:$Qn, 0)
      AsmString = "mov $\xFF\x01\x1C, $\xFF\x02\x1D";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZZI_Q ZPR128:$Zd, ZPR128:$Zn, sve_elm_idx_extdup_q:$idx)
      AsmString = "mov $\xFF\x01\x1C, $\xFF\x02\x1C$\xFF\x03\x19";
      break;
    }
    return false;
  case AArch64::DUP_ZZI_S:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZZI_S ZPR32:$Zd, FPR32asZPR:$Sn, 0)
      AsmString = "mov $\xFF\x01\x0B, $\xFF\x02\x1E";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (DUP_ZZI_S ZPR32:$Zd, ZPR32:$Zn, sve_elm_idx_extdup_s:$idx)
      AsmString = "mov $\xFF\x01\x0B, $\xFF\x02\x0B$\xFF\x03\x19";
      break;
    }
    return false;
  case AArch64::EONWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (EONWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "eon	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::EONXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (EONXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "eon	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::EORS_PPzPP:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(1).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (EORS_PPzPP PPR8:$Pd, PPRAny:$Pg, PPR8:$Pn, PPRAny:$Pg)
      AsmString = "nots $\xFF\x01\x06, $\xFF\x02\x07/z, $\xFF\x03\x06";
      break;
    }
    return false;
  case AArch64::EORWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (EORWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "eor	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::EORXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (EORXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "eor	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::EOR_PPzPP:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(1).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (EOR_PPzPP PPR8:$Pd, PPRAny:$Pg, PPR8:$Pn, PPRAny:$Pg)
      AsmString = "not $\xFF\x01\x06, $\xFF\x02\x07/z, $\xFF\x03\x06";
      break;
    }
    return false;
  case AArch64::EOR_ZI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(2), STI, 1) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (EOR_ZI ZPR8:$Zdn, sve_logical_imm8:$imm)
      AsmString = "eor	$\xFF\x01\x06, $\xFF\x01\x06, $\xFF\x03\x08";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(2), STI, 2) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (EOR_ZI ZPR16:$Zdn, sve_logical_imm16:$imm)
      AsmString = "eor	$\xFF\x01\x09, $\xFF\x01\x09, $\xFF\x03\x0A";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(2), STI, 3) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (EOR_ZI ZPR32:$Zdn, sve_logical_imm32:$imm)
      AsmString = "eor	$\xFF\x01\x0B, $\xFF\x01\x0B, $\xFF\x03\x04";
      break;
    }
    return false;
  case AArch64::EXTRWrri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg()) {
      // (EXTRWrri GPR32:$dst, GPR32:$src, GPR32:$src, imm0_31:$shift)
      AsmString = "ror $\x01, $\x02, $\x04";
      break;
    }
    return false;
  case AArch64::EXTRXrri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg()) {
      // (EXTRXrri GPR64:$dst, GPR64:$src, GPR64:$src, imm0_63:$shift)
      AsmString = "ror $\x01, $\x02, $\x04";
      break;
    }
    return false;
  case AArch64::FCPY_ZPmI_D:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (FCPY_ZPmI_D ZPR64:$Zd, PPRAny:$Pg, fpimm64:$imm8)
      AsmString = "fmov $\xFF\x01\x10, $\xFF\x03\x07/m, $\xFF\x04\x1F";
      break;
    }
    return false;
  case AArch64::FCPY_ZPmI_H:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (FCPY_ZPmI_H ZPR16:$Zd, PPRAny:$Pg, fpimm16:$imm8)
      AsmString = "fmov $\xFF\x01\x09, $\xFF\x03\x07/m, $\xFF\x04\x1F";
      break;
    }
    return false;
  case AArch64::FCPY_ZPmI_S:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (FCPY_ZPmI_S ZPR32:$Zd, PPRAny:$Pg, fpimm32:$imm8)
      AsmString = "fmov $\xFF\x01\x0B, $\xFF\x03\x07/m, $\xFF\x04\x1F";
      break;
    }
    return false;
  case AArch64::FDUP_ZI_D:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (FDUP_ZI_D ZPR64:$Zd, fpimm64:$imm8)
      AsmString = "fmov $\xFF\x01\x10, $\xFF\x02\x1F";
      break;
    }
    return false;
  case AArch64::FDUP_ZI_H:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (FDUP_ZI_H ZPR16:$Zd, fpimm16:$imm8)
      AsmString = "fmov $\xFF\x01\x09, $\xFF\x02\x1F";
      break;
    }
    return false;
  case AArch64::FDUP_ZI_S:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (FDUP_ZI_S ZPR32:$Zd, fpimm32:$imm8)
      AsmString = "fmov $\xFF\x01\x0B, $\xFF\x02\x1F";
      break;
    }
    return false;
  case AArch64::GLD1B_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1B_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ld1b	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLD1B_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1B_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "ld1b	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::GLD1D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ld1d	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLD1H_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1H_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ld1h	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLD1H_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1H_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "ld1h	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::GLD1SB_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1SB_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ld1sb	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLD1SB_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1SB_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "ld1sb	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::GLD1SH_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1SH_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ld1sh	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLD1SH_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1SH_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "ld1sh	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::GLD1SW_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1SW_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ld1sw	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLD1W_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1W_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ld1w	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLD1W_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLD1W_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "ld1w	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::GLDFF1B_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1B_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ldff1b	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLDFF1B_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1B_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "ldff1b	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::GLDFF1D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ldff1d	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLDFF1H_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1H_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ldff1h	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLDFF1H_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1H_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "ldff1h	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::GLDFF1SB_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1SB_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ldff1sb	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLDFF1SB_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1SB_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "ldff1sb	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::GLDFF1SH_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1SH_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ldff1sh	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLDFF1SH_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1SH_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "ldff1sh	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::GLDFF1SW_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1SW_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ldff1sw	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLDFF1W_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1W_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "ldff1w	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::GLDFF1W_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (GLDFF1W_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "ldff1w	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::HINT:
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 0) {
      // (HINT { 0, 0, 0 })
      AsmString = "nop";
      break;
    }
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 1) {
      // (HINT { 0, 0, 1 })
      AsmString = "yield";
      break;
    }
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 2) {
      // (HINT { 0, 1, 0 })
      AsmString = "wfe";
      break;
    }
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 3) {
      // (HINT { 0, 1, 1 })
      AsmString = "wfi";
      break;
    }
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 4) {
      // (HINT { 1, 0, 0 })
      AsmString = "sev";
      break;
    }
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 5) {
      // (HINT { 1, 0, 1 })
      AsmString = "sevl";
      break;
    }
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 16 &&
        STI.getFeatureBits()[AArch64::FeatureRAS]) {
      // (HINT { 1, 0, 0, 0, 0 })
      AsmString = "esb";
      break;
    }
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 20) {
      // (HINT 20)
      AsmString = "csdb";
      break;
    }
    if (MI->getNumOperands() == 1 &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(0), STI, 8) &&
        STI.getFeatureBits()[AArch64::FeatureSPE]) {
      // (HINT psbhint_op:$op)
      AsmString = "psb $\xFF\x01\x22";
      break;
    }
    return false;
  case AArch64::INCB_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCB_XPiI GPR64:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "incb	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCB_XPiI GPR64:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "incb	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::INCD_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCD_XPiI GPR64:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "incd	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCD_XPiI GPR64:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "incd	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::INCD_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCD_ZPiI ZPR64:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "incd	$\xFF\x01\x10";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCD_ZPiI ZPR64:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "incd	$\xFF\x01\x10, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::INCH_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCH_XPiI GPR64:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "inch	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCH_XPiI GPR64:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "inch	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::INCH_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCH_ZPiI ZPR16:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "inch	$\xFF\x01\x09";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCH_ZPiI ZPR16:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "inch	$\xFF\x01\x09, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::INCW_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCW_XPiI GPR64:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "incw	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCW_XPiI GPR64:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "incw	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::INCW_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCW_ZPiI ZPR32:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "incw	$\xFF\x01\x0B";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (INCW_ZPiI ZPR32:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "incw	$\xFF\x01\x0B, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::INSvi16gpr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (INSvi16gpr V128:$dst, VectorIndexH:$idx, GPR32:$src)
      AsmString = "mov	$\xFF\x01\x0C.h$\xFF\x03\x19, $\x04";
      break;
    }
    return false;
  case AArch64::INSvi16lane:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (INSvi16lane V128:$dst, VectorIndexH:$idx, V128:$src, VectorIndexH:$idx2)
      AsmString = "mov	$\xFF\x01\x0C.h$\xFF\x03\x19, $\xFF\x04\x0C.h$\xFF\x05\x19";
      break;
    }
    return false;
  case AArch64::INSvi32gpr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (INSvi32gpr V128:$dst, VectorIndexS:$idx, GPR32:$src)
      AsmString = "mov	$\xFF\x01\x0C.s$\xFF\x03\x19, $\x04";
      break;
    }
    return false;
  case AArch64::INSvi32lane:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (INSvi32lane V128:$dst, VectorIndexS:$idx, V128:$src, VectorIndexS:$idx2)
      AsmString = "mov	$\xFF\x01\x0C.s$\xFF\x03\x19, $\xFF\x04\x0C.s$\xFF\x05\x19";
      break;
    }
    return false;
  case AArch64::INSvi64gpr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (INSvi64gpr V128:$dst, VectorIndexD:$idx, GPR64:$src)
      AsmString = "mov	$\xFF\x01\x0C.d$\xFF\x03\x19, $\x04";
      break;
    }
    return false;
  case AArch64::INSvi64lane:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (INSvi64lane V128:$dst, VectorIndexD:$idx, V128:$src, VectorIndexD:$idx2)
      AsmString = "mov	$\xFF\x01\x0C.d$\xFF\x03\x19, $\xFF\x04\x0C.d$\xFF\x05\x19";
      break;
    }
    return false;
  case AArch64::INSvi8gpr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (INSvi8gpr V128:$dst, VectorIndexB:$idx, GPR32:$src)
      AsmString = "mov	$\xFF\x01\x0C.b$\xFF\x03\x19, $\x04";
      break;
    }
    return false;
  case AArch64::INSvi8lane:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(3).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (INSvi8lane V128:$dst, VectorIndexB:$idx, V128:$src, VectorIndexB:$idx2)
      AsmString = "mov	$\xFF\x01\x0C.b$\xFF\x03\x19, $\xFF\x04\x0C.b$\xFF\x05\x19";
      break;
    }
    return false;
  case AArch64::ISB:
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).isImm() &&
        MI->getOperand(0).getImm() == 15) {
      // (ISB 15)
      AsmString = "isb";
      break;
    }
    return false;
  case AArch64::LD1B_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1B_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1b	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1B_H_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1B_H_IMM_REAL Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1b	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1B_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1B_IMM_REAL Z_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1b	$\xFF\x01\x24, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1B_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1B_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1b	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1d	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1Fourv16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Fourv16b_POST GPR64sp:$Rn, VecListFour16b:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x25, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::LD1Fourv1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Fourv1d_POST GPR64sp:$Rn, VecListFour1d:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x26, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD1Fourv2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Fourv2d_POST GPR64sp:$Rn, VecListFour2d:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x27, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::LD1Fourv2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Fourv2s_POST GPR64sp:$Rn, VecListFour2s:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x28, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD1Fourv4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Fourv4h_POST GPR64sp:$Rn, VecListFour4h:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x29, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD1Fourv4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Fourv4s_POST GPR64sp:$Rn, VecListFour4s:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2A, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::LD1Fourv8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Fourv8b_POST GPR64sp:$Rn, VecListFour8b:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2B, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD1Fourv8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Fourv8h_POST GPR64sp:$Rn, VecListFour8h:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2C, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::LD1H_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1H_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1h	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1H_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1H_IMM_REAL Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1h	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1H_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1H_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1h	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1Onev16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Onev16b_POST GPR64sp:$Rn, VecListOne16b:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x25, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD1Onev1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Onev1d_POST GPR64sp:$Rn, VecListOne1d:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x26, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD1Onev2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Onev2d_POST GPR64sp:$Rn, VecListOne2d:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x27, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD1Onev2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Onev2s_POST GPR64sp:$Rn, VecListOne2s:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x28, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD1Onev4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Onev4h_POST GPR64sp:$Rn, VecListOne4h:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x29, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD1Onev4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Onev4s_POST GPR64sp:$Rn, VecListOne4s:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2A, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD1Onev8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Onev8b_POST GPR64sp:$Rn, VecListOne8b:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2B, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD1Onev8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Onev8h_POST GPR64sp:$Rn, VecListOne8h:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2C, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD1RB_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RB_D_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rb	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RB_H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RB_H_IMM Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rb	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RB_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RB_IMM Z_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rb	$\xFF\x01\x24, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RB_S_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RB_S_IMM Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rb	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RD_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RD_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rd	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RH_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RH_D_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rh	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RH_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RH_IMM Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rh	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RH_S_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RH_S_IMM Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rh	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RQ_B_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RQ_B_IMM Z_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rqb	$\xFF\x01\x24, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RQ_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RQ_D_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rqd	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RQ_H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RQ_H_IMM Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rqh	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RQ_W_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RQ_W_IMM Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rqw	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RSB_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RSB_D_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rsb	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RSB_H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RSB_H_IMM Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rsb	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RSB_S_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RSB_S_IMM Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rsb	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RSH_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RSH_D_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rsh	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RSH_S_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RSH_S_IMM Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rsh	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RSW_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RSW_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rsw	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RW_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RW_D_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rw	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1RW_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1RW_IMM Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1rw	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1Rv16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Rv16b_POST GPR64sp:$Rn, VecListOne16b:$Vt, XZR)
      AsmString = "ld1r	$\xFF\x02\x25, [$\x01], #1";
      break;
    }
    return false;
  case AArch64::LD1Rv1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Rv1d_POST GPR64sp:$Rn, VecListOne1d:$Vt, XZR)
      AsmString = "ld1r	$\xFF\x02\x26, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD1Rv2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Rv2d_POST GPR64sp:$Rn, VecListOne2d:$Vt, XZR)
      AsmString = "ld1r	$\xFF\x02\x27, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD1Rv2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Rv2s_POST GPR64sp:$Rn, VecListOne2s:$Vt, XZR)
      AsmString = "ld1r	$\xFF\x02\x28, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::LD1Rv4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Rv4h_POST GPR64sp:$Rn, VecListOne4h:$Vt, XZR)
      AsmString = "ld1r	$\xFF\x02\x29, [$\x01], #2";
      break;
    }
    return false;
  case AArch64::LD1Rv4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Rv4s_POST GPR64sp:$Rn, VecListOne4s:$Vt, XZR)
      AsmString = "ld1r	$\xFF\x02\x2A, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::LD1Rv8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Rv8b_POST GPR64sp:$Rn, VecListOne8b:$Vt, XZR)
      AsmString = "ld1r	$\xFF\x02\x2B, [$\x01], #1";
      break;
    }
    return false;
  case AArch64::LD1Rv8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Rv8h_POST GPR64sp:$Rn, VecListOne8h:$Vt, XZR)
      AsmString = "ld1r	$\xFF\x02\x2C, [$\x01], #2";
      break;
    }
    return false;
  case AArch64::LD1SB_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1SB_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1sb	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1SB_H_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1SB_H_IMM_REAL Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1sb	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1SB_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1SB_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1sb	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1SH_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1SH_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1sh	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1SH_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1SH_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1sh	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1SW_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1SW_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1sw	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1Threev16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Threev16b_POST GPR64sp:$Rn, VecListThree16b:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x25, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::LD1Threev1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Threev1d_POST GPR64sp:$Rn, VecListThree1d:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x26, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::LD1Threev2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Threev2d_POST GPR64sp:$Rn, VecListThree2d:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x27, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::LD1Threev2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Threev2s_POST GPR64sp:$Rn, VecListThree2s:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x28, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::LD1Threev4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Threev4h_POST GPR64sp:$Rn, VecListThree4h:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x29, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::LD1Threev4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Threev4s_POST GPR64sp:$Rn, VecListThree4s:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2A, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::LD1Threev8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Threev8b_POST GPR64sp:$Rn, VecListThree8b:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2B, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::LD1Threev8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Threev8h_POST GPR64sp:$Rn, VecListThree8h:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2C, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::LD1Twov16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Twov16b_POST GPR64sp:$Rn, VecListTwo16b:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x25, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD1Twov1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Twov1d_POST GPR64sp:$Rn, VecListTwo1d:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x26, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD1Twov2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Twov2d_POST GPR64sp:$Rn, VecListTwo2d:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x27, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD1Twov2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Twov2s_POST GPR64sp:$Rn, VecListTwo2s:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x28, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD1Twov4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Twov4h_POST GPR64sp:$Rn, VecListTwo4h:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x29, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD1Twov4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Twov4s_POST GPR64sp:$Rn, VecListTwo4s:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2A, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD1Twov8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Twov8b_POST GPR64sp:$Rn, VecListTwo8b:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2B, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD1Twov8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1Twov8h_POST GPR64sp:$Rn, VecListTwo8h:$Vt, XZR)
      AsmString = "ld1	$\xFF\x02\x2C, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD1W_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1W_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1w	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1W_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD1W_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld1w	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD1i16_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1i16_POST GPR64sp:$Rn, VecListOneh:$Vt, VectorIndexH:$idx, XZR)
      AsmString = "ld1	$\xFF\x02\x2D$\xFF\x04\x19, [$\x01], #2";
      break;
    }
    return false;
  case AArch64::LD1i32_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1i32_POST GPR64sp:$Rn, VecListOnes:$Vt, VectorIndexS:$idx, XZR)
      AsmString = "ld1	$\xFF\x02\x2E$\xFF\x04\x19, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::LD1i64_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1i64_POST GPR64sp:$Rn, VecListOned:$Vt, VectorIndexD:$idx, XZR)
      AsmString = "ld1	$\xFF\x02\x2F$\xFF\x04\x19, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD1i8_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD1i8_POST GPR64sp:$Rn, VecListOneb:$Vt, VectorIndexB:$idx, XZR)
      AsmString = "ld1	$\xFF\x02\x30$\xFF\x04\x19, [$\x01], #1";
      break;
    }
    return false;
  case AArch64::LD2B_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR2RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD2B_IMM ZZ_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld2b	$\xFF\x01\x24, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD2D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR2RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD2D_IMM ZZ_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld2d	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD2H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR2RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD2H_IMM ZZ_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld2h	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD2Rv16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Rv16b_POST GPR64sp:$Rn, VecListTwo16b:$Vt, XZR)
      AsmString = "ld2r	$\xFF\x02\x25, [$\x01], #2";
      break;
    }
    return false;
  case AArch64::LD2Rv1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Rv1d_POST GPR64sp:$Rn, VecListTwo1d:$Vt, XZR)
      AsmString = "ld2r	$\xFF\x02\x26, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD2Rv2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Rv2d_POST GPR64sp:$Rn, VecListTwo2d:$Vt, XZR)
      AsmString = "ld2r	$\xFF\x02\x27, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD2Rv2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Rv2s_POST GPR64sp:$Rn, VecListTwo2s:$Vt, XZR)
      AsmString = "ld2r	$\xFF\x02\x28, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD2Rv4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Rv4h_POST GPR64sp:$Rn, VecListTwo4h:$Vt, XZR)
      AsmString = "ld2r	$\xFF\x02\x29, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::LD2Rv4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Rv4s_POST GPR64sp:$Rn, VecListTwo4s:$Vt, XZR)
      AsmString = "ld2r	$\xFF\x02\x2A, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD2Rv8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Rv8b_POST GPR64sp:$Rn, VecListTwo8b:$Vt, XZR)
      AsmString = "ld2r	$\xFF\x02\x2B, [$\x01], #2";
      break;
    }
    return false;
  case AArch64::LD2Rv8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Rv8h_POST GPR64sp:$Rn, VecListTwo8h:$Vt, XZR)
      AsmString = "ld2r	$\xFF\x02\x2C, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::LD2Twov16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Twov16b_POST GPR64sp:$Rn, VecListTwo16b:$Vt, XZR)
      AsmString = "ld2	$\xFF\x02\x25, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD2Twov2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Twov2d_POST GPR64sp:$Rn, VecListTwo2d:$Vt, XZR)
      AsmString = "ld2	$\xFF\x02\x27, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD2Twov2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Twov2s_POST GPR64sp:$Rn, VecListTwo2s:$Vt, XZR)
      AsmString = "ld2	$\xFF\x02\x28, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD2Twov4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Twov4h_POST GPR64sp:$Rn, VecListTwo4h:$Vt, XZR)
      AsmString = "ld2	$\xFF\x02\x29, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD2Twov4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Twov4s_POST GPR64sp:$Rn, VecListTwo4s:$Vt, XZR)
      AsmString = "ld2	$\xFF\x02\x2A, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD2Twov8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Twov8b_POST GPR64sp:$Rn, VecListTwo8b:$Vt, XZR)
      AsmString = "ld2	$\xFF\x02\x2B, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD2Twov8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2Twov8h_POST GPR64sp:$Rn, VecListTwo8h:$Vt, XZR)
      AsmString = "ld2	$\xFF\x02\x2C, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD2W_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR2RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD2W_IMM ZZ_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld2w	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD2i16_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2i16_POST GPR64sp:$Rn, VecListTwoh:$Vt, VectorIndexH:$idx, XZR)
      AsmString = "ld2	$\xFF\x02\x2D$\xFF\x04\x19, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::LD2i32_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2i32_POST GPR64sp:$Rn, VecListTwos:$Vt, VectorIndexS:$idx, XZR)
      AsmString = "ld2	$\xFF\x02\x2E$\xFF\x04\x19, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD2i64_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2i64_POST GPR64sp:$Rn, VecListTwod:$Vt, VectorIndexD:$idx, XZR)
      AsmString = "ld2	$\xFF\x02\x2F$\xFF\x04\x19, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD2i8_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD2i8_POST GPR64sp:$Rn, VecListTwob:$Vt, VectorIndexB:$idx, XZR)
      AsmString = "ld2	$\xFF\x02\x30$\xFF\x04\x19, [$\x01], #2";
      break;
    }
    return false;
  case AArch64::LD3B_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR3RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD3B_IMM ZZZ_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld3b	$\xFF\x01\x24, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD3D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR3RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD3D_IMM ZZZ_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld3d	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD3H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR3RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD3H_IMM ZZZ_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld3h	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD3Rv16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Rv16b_POST GPR64sp:$Rn, VecListThree16b:$Vt, XZR)
      AsmString = "ld3r	$\xFF\x02\x25, [$\x01], #3";
      break;
    }
    return false;
  case AArch64::LD3Rv1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Rv1d_POST GPR64sp:$Rn, VecListThree1d:$Vt, XZR)
      AsmString = "ld3r	$\xFF\x02\x26, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::LD3Rv2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Rv2d_POST GPR64sp:$Rn, VecListThree2d:$Vt, XZR)
      AsmString = "ld3r	$\xFF\x02\x27, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::LD3Rv2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Rv2s_POST GPR64sp:$Rn, VecListThree2s:$Vt, XZR)
      AsmString = "ld3r	$\xFF\x02\x28, [$\x01], #12";
      break;
    }
    return false;
  case AArch64::LD3Rv4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Rv4h_POST GPR64sp:$Rn, VecListThree4h:$Vt, XZR)
      AsmString = "ld3r	$\xFF\x02\x29, [$\x01], #6";
      break;
    }
    return false;
  case AArch64::LD3Rv4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Rv4s_POST GPR64sp:$Rn, VecListThree4s:$Vt, XZR)
      AsmString = "ld3r	$\xFF\x02\x2A, [$\x01], #12";
      break;
    }
    return false;
  case AArch64::LD3Rv8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Rv8b_POST GPR64sp:$Rn, VecListThree8b:$Vt, XZR)
      AsmString = "ld3r	$\xFF\x02\x2B, [$\x01], #3";
      break;
    }
    return false;
  case AArch64::LD3Rv8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Rv8h_POST GPR64sp:$Rn, VecListThree8h:$Vt, XZR)
      AsmString = "ld3r	$\xFF\x02\x2C, [$\x01], #6";
      break;
    }
    return false;
  case AArch64::LD3Threev16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Threev16b_POST GPR64sp:$Rn, VecListThree16b:$Vt, XZR)
      AsmString = "ld3	$\xFF\x02\x25, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::LD3Threev2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Threev2d_POST GPR64sp:$Rn, VecListThree2d:$Vt, XZR)
      AsmString = "ld3	$\xFF\x02\x27, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::LD3Threev2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Threev2s_POST GPR64sp:$Rn, VecListThree2s:$Vt, XZR)
      AsmString = "ld3	$\xFF\x02\x28, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::LD3Threev4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Threev4h_POST GPR64sp:$Rn, VecListThree4h:$Vt, XZR)
      AsmString = "ld3	$\xFF\x02\x29, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::LD3Threev4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Threev4s_POST GPR64sp:$Rn, VecListThree4s:$Vt, XZR)
      AsmString = "ld3	$\xFF\x02\x2A, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::LD3Threev8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Threev8b_POST GPR64sp:$Rn, VecListThree8b:$Vt, XZR)
      AsmString = "ld3	$\xFF\x02\x2B, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::LD3Threev8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3Threev8h_POST GPR64sp:$Rn, VecListThree8h:$Vt, XZR)
      AsmString = "ld3	$\xFF\x02\x2C, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::LD3W_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR3RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD3W_IMM ZZZ_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld3w	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD3i16_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3i16_POST GPR64sp:$Rn, VecListThreeh:$Vt, VectorIndexH:$idx, XZR)
      AsmString = "ld3	$\xFF\x02\x2D$\xFF\x04\x19, [$\x01], #6";
      break;
    }
    return false;
  case AArch64::LD3i32_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3i32_POST GPR64sp:$Rn, VecListThrees:$Vt, VectorIndexS:$idx, XZR)
      AsmString = "ld3	$\xFF\x02\x2E$\xFF\x04\x19, [$\x01], #12";
      break;
    }
    return false;
  case AArch64::LD3i64_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3i64_POST GPR64sp:$Rn, VecListThreed:$Vt, VectorIndexD:$idx, XZR)
      AsmString = "ld3	$\xFF\x02\x2F$\xFF\x04\x19, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::LD3i8_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD3i8_POST GPR64sp:$Rn, VecListThreeb:$Vt, VectorIndexB:$idx, XZR)
      AsmString = "ld3	$\xFF\x02\x30$\xFF\x04\x19, [$\x01], #3";
      break;
    }
    return false;
  case AArch64::LD4B_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR4RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD4B_IMM ZZZZ_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld4b	$\xFF\x01\x24, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD4D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR4RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD4D_IMM ZZZZ_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld4d	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD4Fourv16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Fourv16b_POST GPR64sp:$Rn, VecListFour16b:$Vt, XZR)
      AsmString = "ld4	$\xFF\x02\x25, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::LD4Fourv2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Fourv2d_POST GPR64sp:$Rn, VecListFour2d:$Vt, XZR)
      AsmString = "ld4	$\xFF\x02\x27, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::LD4Fourv2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Fourv2s_POST GPR64sp:$Rn, VecListFour2s:$Vt, XZR)
      AsmString = "ld4	$\xFF\x02\x28, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD4Fourv4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Fourv4h_POST GPR64sp:$Rn, VecListFour4h:$Vt, XZR)
      AsmString = "ld4	$\xFF\x02\x29, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD4Fourv4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Fourv4s_POST GPR64sp:$Rn, VecListFour4s:$Vt, XZR)
      AsmString = "ld4	$\xFF\x02\x2A, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::LD4Fourv8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Fourv8b_POST GPR64sp:$Rn, VecListFour8b:$Vt, XZR)
      AsmString = "ld4	$\xFF\x02\x2B, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD4Fourv8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Fourv8h_POST GPR64sp:$Rn, VecListFour8h:$Vt, XZR)
      AsmString = "ld4	$\xFF\x02\x2C, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::LD4H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR4RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD4H_IMM ZZZZ_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld4h	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD4Rv16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Rv16b_POST GPR64sp:$Rn, VecListFour16b:$Vt, XZR)
      AsmString = "ld4r	$\xFF\x02\x25, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::LD4Rv1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Rv1d_POST GPR64sp:$Rn, VecListFour1d:$Vt, XZR)
      AsmString = "ld4r	$\xFF\x02\x26, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD4Rv2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Rv2d_POST GPR64sp:$Rn, VecListFour2d:$Vt, XZR)
      AsmString = "ld4r	$\xFF\x02\x27, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD4Rv2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Rv2s_POST GPR64sp:$Rn, VecListFour2s:$Vt, XZR)
      AsmString = "ld4r	$\xFF\x02\x28, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD4Rv4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Rv4h_POST GPR64sp:$Rn, VecListFour4h:$Vt, XZR)
      AsmString = "ld4r	$\xFF\x02\x29, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD4Rv4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Rv4s_POST GPR64sp:$Rn, VecListFour4s:$Vt, XZR)
      AsmString = "ld4r	$\xFF\x02\x2A, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD4Rv8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Rv8b_POST GPR64sp:$Rn, VecListFour8b:$Vt, XZR)
      AsmString = "ld4r	$\xFF\x02\x2B, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::LD4Rv8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4Rv8h_POST GPR64sp:$Rn, VecListFour8h:$Vt, XZR)
      AsmString = "ld4r	$\xFF\x02\x2C, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD4W_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR4RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LD4W_IMM ZZZZ_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ld4w	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LD4i16_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4i16_POST GPR64sp:$Rn, VecListFourh:$Vt, VectorIndexH:$idx, XZR)
      AsmString = "ld4	$\xFF\x02\x2D$\xFF\x04\x19, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::LD4i32_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4i32_POST GPR64sp:$Rn, VecListFours:$Vt, VectorIndexS:$idx, XZR)
      AsmString = "ld4	$\xFF\x02\x2E$\xFF\x04\x19, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::LD4i64_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4i64_POST GPR64sp:$Rn, VecListFourd:$Vt, VectorIndexD:$idx, XZR)
      AsmString = "ld4	$\xFF\x02\x2F$\xFF\x04\x19, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::LD4i8_POST:
    if (MI->getNumOperands() == 6 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(5).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (LD4i8_POST GPR64sp:$Rn, VecListFourb:$Vt, VectorIndexB:$idx, XZR)
      AsmString = "ld4	$\xFF\x02\x30$\xFF\x04\x19, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::LDADDB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDADDB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "staddb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDADDH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDADDH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "staddh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDADDLB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDADDLB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "staddlb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDADDLH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDADDLH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "staddlh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDADDLW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDADDLW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "staddl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDADDLX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDADDLX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "staddl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDADDW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDADDW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stadd	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDADDX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDADDX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stadd	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDAPURBi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (LDAPURBi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldapurb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDAPURHi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (LDAPURHi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldapurh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDAPURSBWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (LDAPURSBWi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldapursb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDAPURSBXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (LDAPURSBXi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldapursb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDAPURSHWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (LDAPURSHWi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldapursh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDAPURSHXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (LDAPURSHXi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldapursh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDAPURSWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (LDAPURSWi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldapursw	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDAPURXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (LDAPURXi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldapur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDAPURi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (LDAPURi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldapur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDCLRB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDCLRB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stclrb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDCLRH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDCLRH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stclrh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDCLRLB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDCLRLB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stclrlb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDCLRLH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDCLRLH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stclrlh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDCLRLW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDCLRLW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stclrl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDCLRLX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDCLRLX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stclrl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDCLRW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDCLRW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stclr	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDCLRX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDCLRX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stclr	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDEORB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDEORB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "steorb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDEORH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDEORH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "steorh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDEORLB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDEORLB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "steorlb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDEORLH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDEORLH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "steorlh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDEORLW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDEORLW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "steorl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDEORLX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDEORLX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "steorl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDEORW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDEORW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "steor	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDEORX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDEORX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "steor	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1B_D_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1B_D_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1b	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1B_H_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1B_H_REAL Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1b	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1B_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1B_REAL Z_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1b	$\xFF\x01\x24, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1B_S_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1B_S_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1b	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1D_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1D_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1d	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1H_D_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1H_D_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1h	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1H_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1H_REAL Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1h	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1H_S_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1H_S_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1h	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1SB_D_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1SB_D_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1sb	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1SB_H_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1SB_H_REAL Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1sb	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1SB_S_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1SB_S_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1sb	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1SH_D_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1SH_D_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1sh	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1SH_S_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1SH_S_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1sh	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1SW_D_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1SW_D_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1sw	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1W_D_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1W_D_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1w	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDFF1W_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDFF1W_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, XZR)
      AsmString = "ldff1w	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1B_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1B_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1b	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1B_H_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1B_H_IMM_REAL Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1b	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1B_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1B_IMM_REAL Z_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1b	$\xFF\x01\x24, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1B_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1B_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1b	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1d	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1H_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1H_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1h	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1H_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1H_IMM_REAL Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1h	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1H_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1H_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1h	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1SB_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1SB_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1sb	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1SB_H_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1SB_H_IMM_REAL Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1sb	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1SB_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1SB_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1sb	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1SH_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1SH_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1sh	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1SH_S_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1SH_S_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1sh	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1SW_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1SW_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1sw	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1W_D_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1W_D_IMM_REAL Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1w	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNF1W_IMM_REAL:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNF1W_IMM_REAL Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnf1w	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNPDi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDNPDi FPR64Op:$Rt, FPR64Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldnp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNPQi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDNPQi FPR128Op:$Rt, FPR128Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldnp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNPSi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDNPSi FPR32Op:$Rt, FPR32Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldnp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNPWi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDNPWi GPR32z:$Rt, GPR32z:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldnp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNPXi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDNPXi GPR64z:$Rt, GPR64z:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldnp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNT1B_ZRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNT1B_ZRI Z_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnt1b	$\xFF\x01\x24, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNT1D_ZRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNT1D_ZRI Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnt1d	$\xFF\x01\x20, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNT1H_ZRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNT1H_ZRI Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnt1h	$\xFF\x01\x23, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDNT1W_ZRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDNT1W_ZRI Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "ldnt1w	$\xFF\x01\x21, $\xFF\x02\x07/z, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDPDi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDPDi FPR64Op:$Rt, FPR64Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDPQi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDPQi FPR128Op:$Rt, FPR128Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDPSWi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDPSWi GPR64z:$Rt, GPR64z:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldpsw	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDPSi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDPSi FPR32Op:$Rt, FPR32Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDPWi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDPWi GPR32z:$Rt, GPR32z:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDPXi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (LDPXi GPR64z:$Rt, GPR64z:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "ldp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDRAAindexed:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_3aOps]) {
      // (LDRAAindexed GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldraa	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRABindexed:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_3aOps]) {
      // (LDRABindexed GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldrab	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRBBroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRBBroX GPR32:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldrb	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRBBui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRBBui GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldrb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRBroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR8RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRBroX FPR8Op:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldr	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRBui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR8RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRBui FPR8Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRDroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRDroX FPR64Op:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldr	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRDui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRDui FPR64Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRHHroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRHHroX GPR32:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldrh	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRHHui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRHHui GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldrh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRHroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR16RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRHroX FPR16Op:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldr	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRHui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR16RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRHui FPR16Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRQroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRQroX FPR128Op:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldr	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRQui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRQui FPR128Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRSBWroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRSBWroX GPR32:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldrsb	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRSBWui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRSBWui GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldrsb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRSBXroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRSBXroX GPR64:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldrsb	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRSBXui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRSBXui GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldrsb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRSHWroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRSHWroX GPR32:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldrsh	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRSHWui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRSHWui GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldrsh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRSHXroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRSHXroX GPR64:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldrsh	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRSHXui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRSHXui GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldrsh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRSWroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRSWroX GPR64:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldrsw	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRSWui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRSWui GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldrsw	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRSroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRSroX FPR32Op:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldr	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRSui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRSui FPR32Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRWroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRWroX GPR32:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldr	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRWui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRWui GPR32z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDRXroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (LDRXroX GPR64:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "ldr	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::LDRXui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDRXui GPR64z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDR_PXI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDR_PXI PPRAny:$Pt, GPR64sp:$Rn, 0)
      AsmString = "ldr	$\xFF\x01\x07, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDR_ZXI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (LDR_ZXI ZPRAny:$Zt, GPR64sp:$Rn, 0)
      AsmString = "ldr	$\xFF\x01\x07, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDSETB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSETB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsetb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSETH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSETH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stseth	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSETLB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSETLB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsetlb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSETLH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSETLH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsetlh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSETLW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSETLW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsetl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSETLX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSETLX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stsetl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSETW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSETW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stset	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSETX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSETX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stset	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMAXB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMAXB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsmaxb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMAXH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMAXH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsmaxh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMAXLB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMAXLB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsmaxlb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMAXLH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMAXLH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsmaxlh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMAXLW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMAXLW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsmaxl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMAXLX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMAXLX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stsmaxl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMAXW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMAXW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsmax	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMAXX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMAXX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stsmax	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMINB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMINB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsminb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMINH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMINH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsminh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMINLB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMINLB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsminlb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMINLH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMINLH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsminlh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMINLW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMINLW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsminl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMINLX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMINLX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stsminl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMINW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMINW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stsmin	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDSMINX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDSMINX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stsmin	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDTRBi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDTRBi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldtrb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDTRHi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDTRHi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldtrh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDTRSBWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDTRSBWi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldtrsb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDTRSBXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDTRSBXi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldtrsb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDTRSHWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDTRSHWi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldtrsh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDTRSHXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDTRSHXi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldtrsh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDTRSWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDTRSWi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldtrsw	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDTRWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDTRWi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldtr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDTRXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDTRXi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldtr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDUMAXB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMAXB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stumaxb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMAXH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMAXH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stumaxh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMAXLB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMAXLB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stumaxlb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMAXLH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMAXLH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stumaxlh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMAXLW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMAXLW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stumaxl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMAXLX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMAXLX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stumaxl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMAXW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMAXW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stumax	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMAXX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMAXX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stumax	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMINB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMINB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stuminb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMINH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMINH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stuminh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMINLB:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMINLB WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stuminlb	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMINLH:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMINLH WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stuminlh	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMINLW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMINLW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stuminl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMINLX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMINLX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stuminl	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMINW:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMINW WZR, GPR32:$Rs, GPR64sp:$Rn)
      AsmString = "stumin	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDUMINX:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureLSE]) {
      // (LDUMINX XZR, GPR64:$Rs, GPR64sp:$Rn)
      AsmString = "stumin	$\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::LDURBBi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURBBi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldurb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURBi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR8RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURBi FPR8Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURDi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURDi FPR64Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURHHi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURHHi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldurh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURHi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR16RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURHi FPR16Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURQi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURQi FPR128Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURSBWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURSBWi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldursb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURSBXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURSBXi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldursb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURSHWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURSHWi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldursh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURSHXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURSHXi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldursh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURSWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURSWi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldursw	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURSi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURSi FPR32Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURWi GPR32z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::LDURXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (LDURXi GPR64z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "ldur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::MADDWrrr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::WZR) {
      // (MADDWrrr GPR32:$dst, GPR32:$src1, GPR32:$src2, WZR)
      AsmString = "mul	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::MADDXrrr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR) {
      // (MADDXrrr GPR64:$dst, GPR64:$src1, GPR64:$src2, XZR)
      AsmString = "mul	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::MSUBWrrr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::WZR) {
      // (MSUBWrrr GPR32:$dst, GPR32:$src1, GPR32:$src2, WZR)
      AsmString = "mneg	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::MSUBXrrr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR) {
      // (MSUBXrrr GPR64:$dst, GPR64:$src1, GPR64:$src2, XZR)
      AsmString = "mneg	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::NOTv16i8:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg())) {
      // (NOTv16i8 V128:$Vd, V128:$Vn)
      AsmString = "mvn $\xFF\x01\x0C.16b, $\xFF\x02\x0C.16b";
      break;
    }
    return false;
  case AArch64::NOTv8i8:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg())) {
      // (NOTv8i8 V64:$Vd, V64:$Vn)
      AsmString = "mvn $\xFF\x01\x0C.8b, $\xFF\x02\x0C.8b";
      break;
    }
    return false;
  case AArch64::ORNWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ORNWrs GPR32:$Wd, WZR, GPR32:$Wm, 0)
      AsmString = "mvn $\x01, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (ORNWrs GPR32:$Wd, WZR, GPR32:$Wm, logical_shift32:$sh)
      AsmString = "mvn $\x01, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ORNWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "orn	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ORNXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ORNXrs GPR64:$Xd, XZR, GPR64:$Xm, 0)
      AsmString = "mvn $\x01, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg())) {
      // (ORNXrs GPR64:$Xd, XZR, GPR64:$Xm, logical_shift64:$sh)
      AsmString = "mvn $\x01, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ORNXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "orn	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ORRS_PPzPP:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg() &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(1).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ORRS_PPzPP PPR8:$Pd, PPR8:$Pn, PPR8:$Pn, PPR8:$Pn)
      AsmString = "movs $\xFF\x01\x06, $\xFF\x02\x06";
      break;
    }
    return false;
  case AArch64::ORRWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ORRWrs GPR32:$dst, WZR, GPR32:$src, 0)
      AsmString = "mov $\x01, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ORRWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "orr	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ORRXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ORRXrs GPR64:$dst, XZR, GPR64:$src, 0)
      AsmString = "mov $\x01, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (ORRXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "orr	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::ORR_PPzPP:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg() &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(1).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ORR_PPzPP PPR8:$Pd, PPR8:$Pn, PPR8:$Pn, PPR8:$Pn)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x02\x06";
      break;
    }
    return false;
  case AArch64::ORR_ZI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(2), STI, 1) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ORR_ZI ZPR8:$Zdn, sve_logical_imm8:$imm)
      AsmString = "orr	$\xFF\x01\x06, $\xFF\x01\x06, $\xFF\x03\x08";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(2), STI, 2) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ORR_ZI ZPR16:$Zdn, sve_logical_imm16:$imm)
      AsmString = "orr	$\xFF\x01\x09, $\xFF\x01\x09, $\xFF\x03\x0A";
      break;
    }
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        AArch64InstPrinterValidateMCOperand(MI->getOperand(2), STI, 3) &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ORR_ZI ZPR32:$Zdn, sve_logical_imm32:$imm)
      AsmString = "orr	$\xFF\x01\x0B, $\xFF\x01\x0B, $\xFF\x03\x04";
      break;
    }
    return false;
  case AArch64::ORR_ZZZ:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ORR_ZZZ ZPR64:$Zd, ZPR64:$Zn, ZPR64:$Zn)
      AsmString = "mov $\xFF\x01\x10, $\xFF\x02\x10";
      break;
    }
    return false;
  case AArch64::ORRv16i8:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg()) {
      // (ORRv16i8 V128:$dst, V128:$src, V128:$src)
      AsmString = "mov	$\xFF\x01\x0C.16b, $\xFF\x02\x0C.16b";
      break;
    }
    return false;
  case AArch64::ORRv8i8:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MI->getOperand(2).getReg() == MI->getOperand(1).getReg()) {
      // (ORRv8i8 V64:$dst, V64:$src, V64:$src)
      AsmString = "mov	$\xFF\x01\x0C.8b, $\xFF\x02\x0C.8b";
      break;
    }
    return false;
  case AArch64::PRFB_D_PZI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFB_D_PZI sve_prfop:$prfop, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "prfb	$\xFF\x01\x32, $\xFF\x02\x07, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::PRFB_PRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFB_PRI sve_prfop:$prfop, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "prfb	$\xFF\x01\x32, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::PRFB_S_PZI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFB_S_PZI sve_prfop:$prfop, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "prfb	$\xFF\x01\x32, $\xFF\x02\x07, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::PRFD_D_PZI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFD_D_PZI sve_prfop:$prfop, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "prfd	$\xFF\x01\x32, $\xFF\x02\x07, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::PRFD_PRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFD_PRI sve_prfop:$prfop, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "prfd	$\xFF\x01\x32, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::PRFD_S_PZI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFD_S_PZI sve_prfop:$prfop, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "prfd	$\xFF\x01\x32, $\xFF\x02\x07, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::PRFH_D_PZI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFH_D_PZI sve_prfop:$prfop, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "prfh	$\xFF\x01\x32, $\xFF\x02\x07, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::PRFH_PRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFH_PRI sve_prfop:$prfop, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "prfh	$\xFF\x01\x32, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::PRFH_S_PZI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFH_S_PZI sve_prfop:$prfop, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "prfh	$\xFF\x01\x32, $\xFF\x02\x07, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::PRFMroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (PRFMroX prfop:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "prfm $\xFF\x01\x33, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::PRFMui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (PRFMui prfop:$Rt, GPR64sp:$Rn, 0)
      AsmString = "prfm $\xFF\x01\x33, [$\x02]";
      break;
    }
    return false;
  case AArch64::PRFUMi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (PRFUMi prfop:$Rt, GPR64sp:$Rn, 0)
      AsmString = "prfum	$\xFF\x01\x33, [$\x02]";
      break;
    }
    return false;
  case AArch64::PRFW_D_PZI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFW_D_PZI sve_prfop:$prfop, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "prfw	$\xFF\x01\x32, $\xFF\x02\x07, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::PRFW_PRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFW_PRI sve_prfop:$prfop, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "prfw	$\xFF\x01\x32, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::PRFW_S_PZI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PRFW_S_PZI sve_prfop:$prfop, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "prfw	$\xFF\x01\x32, $\xFF\x02\x07, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::PTRUES_B:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PTRUES_B PPR8:$Pd, { 1, 1, 1, 1, 1 })
      AsmString = "ptrues	$\xFF\x01\x06";
      break;
    }
    return false;
  case AArch64::PTRUES_D:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PTRUES_D PPR64:$Pd, { 1, 1, 1, 1, 1 })
      AsmString = "ptrues	$\xFF\x01\x10";
      break;
    }
    return false;
  case AArch64::PTRUES_H:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PTRUES_H PPR16:$Pd, { 1, 1, 1, 1, 1 })
      AsmString = "ptrues	$\xFF\x01\x09";
      break;
    }
    return false;
  case AArch64::PTRUES_S:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PTRUES_S PPR32:$Pd, { 1, 1, 1, 1, 1 })
      AsmString = "ptrues	$\xFF\x01\x0B";
      break;
    }
    return false;
  case AArch64::PTRUE_B:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PTRUE_B PPR8:$Pd, { 1, 1, 1, 1, 1 })
      AsmString = "ptrue	$\xFF\x01\x06";
      break;
    }
    return false;
  case AArch64::PTRUE_D:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PTRUE_D PPR64:$Pd, { 1, 1, 1, 1, 1 })
      AsmString = "ptrue	$\xFF\x01\x10";
      break;
    }
    return false;
  case AArch64::PTRUE_H:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PTRUE_H PPR16:$Pd, { 1, 1, 1, 1, 1 })
      AsmString = "ptrue	$\xFF\x01\x09";
      break;
    }
    return false;
  case AArch64::PTRUE_S:
    if (MI->getNumOperands() == 2 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isImm() &&
        MI->getOperand(1).getImm() == 31 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (PTRUE_S PPR32:$Pd, { 1, 1, 1, 1, 1 })
      AsmString = "ptrue	$\xFF\x01\x0B";
      break;
    }
    return false;
  case AArch64::RET:
    if (MI->getNumOperands() == 1 &&
        MI->getOperand(0).getReg() == AArch64::LR) {
      // (RET LR)
      AsmString = "ret";
      break;
    }
    return false;
  case AArch64::SBCSWr:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SBCSWr GPR32:$dst, WZR, GPR32:$src)
      AsmString = "ngcs $\x01, $\x03";
      break;
    }
    return false;
  case AArch64::SBCSXr:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SBCSXr GPR64:$dst, XZR, GPR64:$src)
      AsmString = "ngcs $\x01, $\x03";
      break;
    }
    return false;
  case AArch64::SBCWr:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SBCWr GPR32:$dst, WZR, GPR32:$src)
      AsmString = "ngc $\x01, $\x03";
      break;
    }
    return false;
  case AArch64::SBCXr:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SBCXr GPR64:$dst, XZR, GPR64:$src)
      AsmString = "ngc $\x01, $\x03";
      break;
    }
    return false;
  case AArch64::SBFMWri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 31) {
      // (SBFMWri GPR32:$dst, GPR32:$src, imm0_31:$shift, 31)
      AsmString = "asr $\x01, $\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 7) {
      // (SBFMWri GPR32:$dst, GPR32:$src, 0, 7)
      AsmString = "sxtb $\x01, $\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 15) {
      // (SBFMWri GPR32:$dst, GPR32:$src, 0, 15)
      AsmString = "sxth $\x01, $\x02";
      break;
    }
    return false;
  case AArch64::SBFMXri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 63) {
      // (SBFMXri GPR64:$dst, GPR64:$src, imm0_63:$shift, 63)
      AsmString = "asr $\x01, $\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 7) {
      // (SBFMXri GPR64:$dst, GPR64:$src, 0, 7)
      AsmString = "sxtb $\x01, $\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 15) {
      // (SBFMXri GPR64:$dst, GPR64:$src, 0, 15)
      AsmString = "sxth $\x01, $\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 31) {
      // (SBFMXri GPR64:$dst, GPR64:$src, 0, 31)
      AsmString = "sxtw $\x01, $\x02";
      break;
    }
    return false;
  case AArch64::SEL_PPPP:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(0).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SEL_PPPP PPR8:$Pd, PPRAny:$Pg, PPR8:$Pn, PPR8:$Pd)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x02\x07/m, $\xFF\x03\x06";
      break;
    }
    return false;
  case AArch64::SEL_ZPZZ_B:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(0).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SEL_ZPZZ_B ZPR8:$Zd, PPRAny:$Pg, ZPR8:$Zn, ZPR8:$Zd)
      AsmString = "mov $\xFF\x01\x06, $\xFF\x02\x07/m, $\xFF\x03\x06";
      break;
    }
    return false;
  case AArch64::SEL_ZPZZ_D:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(0).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SEL_ZPZZ_D ZPR64:$Zd, PPRAny:$Pg, ZPR64:$Zn, ZPR64:$Zd)
      AsmString = "mov $\xFF\x01\x10, $\xFF\x02\x07/m, $\xFF\x03\x10";
      break;
    }
    return false;
  case AArch64::SEL_ZPZZ_H:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(0).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SEL_ZPZZ_H ZPR16:$Zd, PPRAny:$Pg, ZPR16:$Zn, ZPR16:$Zd)
      AsmString = "mov $\xFF\x01\x09, $\xFF\x02\x07/m, $\xFF\x03\x09";
      break;
    }
    return false;
  case AArch64::SEL_ZPZZ_S:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isReg() &&
        MI->getOperand(3).getReg() == MI->getOperand(0).getReg() &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SEL_ZPZZ_S ZPR32:$Zd, PPRAny:$Pg, ZPR32:$Zn, ZPR32:$Zd)
      AsmString = "mov $\xFF\x01\x0B, $\xFF\x02\x07/m, $\xFF\x03\x0B";
      break;
    }
    return false;
  case AArch64::SMADDLrrr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR) {
      // (SMADDLrrr GPR64:$dst, GPR32:$src1, GPR32:$src2, XZR)
      AsmString = "smull	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::SMSUBLrrr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR) {
      // (SMSUBLrrr GPR64:$dst, GPR32:$src1, GPR32:$src2, XZR)
      AsmString = "smnegl	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::SQDECB_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECB_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdecb	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECB_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdecb	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQDECB_XPiWdI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECB_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdecb	$\x01, $\xFF\x02\x34";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECB_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdecb	$\x01, $\xFF\x02\x34, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQDECD_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECD_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdecd	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECD_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdecd	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQDECD_XPiWdI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECD_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdecd	$\x01, $\xFF\x02\x34";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECD_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdecd	$\x01, $\xFF\x02\x34, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQDECD_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECD_ZPiI ZPR64:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdecd	$\xFF\x01\x10";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECD_ZPiI ZPR64:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdecd	$\xFF\x01\x10, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQDECH_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECH_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdech	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECH_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdech	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQDECH_XPiWdI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECH_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdech	$\x01, $\xFF\x02\x34";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECH_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdech	$\x01, $\xFF\x02\x34, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQDECH_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECH_ZPiI ZPR16:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdech	$\xFF\x01\x09";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECH_ZPiI ZPR16:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdech	$\xFF\x01\x09, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQDECW_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECW_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdecw	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECW_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdecw	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQDECW_XPiWdI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECW_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdecw	$\x01, $\xFF\x02\x34";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECW_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdecw	$\x01, $\xFF\x02\x34, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQDECW_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECW_ZPiI ZPR32:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqdecw	$\xFF\x01\x0B";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQDECW_ZPiI ZPR32:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqdecw	$\xFF\x01\x0B, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCB_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCB_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqincb	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCB_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqincb	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCB_XPiWdI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCB_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqincb	$\x01, $\xFF\x02\x34";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCB_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, sve_pred_enum:$pattern, 1)
      AsmString = "sqincb	$\x01, $\xFF\x02\x34, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCD_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCD_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqincd	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCD_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqincd	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCD_XPiWdI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCD_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqincd	$\x01, $\xFF\x02\x34";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCD_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, sve_pred_enum:$pattern, 1)
      AsmString = "sqincd	$\x01, $\xFF\x02\x34, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCD_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCD_ZPiI ZPR64:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqincd	$\xFF\x01\x10";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCD_ZPiI ZPR64:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqincd	$\xFF\x01\x10, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCH_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCH_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqinch	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCH_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqinch	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCH_XPiWdI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCH_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqinch	$\x01, $\xFF\x02\x34";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCH_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, sve_pred_enum:$pattern, 1)
      AsmString = "sqinch	$\x01, $\xFF\x02\x34, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCH_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCH_ZPiI ZPR16:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqinch	$\xFF\x01\x09";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCH_ZPiI ZPR16:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqinch	$\xFF\x01\x09, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCW_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCW_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqincw	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCW_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqincw	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCW_XPiWdI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCW_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqincw	$\x01, $\xFF\x02\x34";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCW_XPiWdI GPR64z:$Rd, GPR64as32:$Rn, sve_pred_enum:$pattern, 1)
      AsmString = "sqincw	$\x01, $\xFF\x02\x34, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SQINCW_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCW_ZPiI ZPR32:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "sqincw	$\xFF\x01\x0B";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SQINCW_ZPiI ZPR32:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "sqincw	$\xFF\x01\x0B, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::SST1B_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SST1B_D_IMM Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "st1b	$\xFF\x01\x20, $\xFF\x02\x07, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::SST1B_S_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SST1B_S_IMM Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "st1b	$\xFF\x01\x21, $\xFF\x02\x07, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::SST1D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SST1D_IMM Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "st1d	$\xFF\x01\x20, $\xFF\x02\x07, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::SST1H_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SST1H_D_IMM Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "st1h	$\xFF\x01\x20, $\xFF\x02\x07, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::SST1H_S_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SST1H_S_IMM Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "st1h	$\xFF\x01\x21, $\xFF\x02\x07, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::SST1W_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SST1W_D_IMM Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0)
      AsmString = "st1w	$\xFF\x01\x20, $\xFF\x02\x07, [$\xFF\x03\x10]";
      break;
    }
    return false;
  case AArch64::SST1W_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (SST1W_IMM Z_s:$Zt, PPR3bAny:$Pg, ZPR32:$Zn, 0)
      AsmString = "st1w	$\xFF\x01\x21, $\xFF\x02\x07, [$\xFF\x03\x0B]";
      break;
    }
    return false;
  case AArch64::ST1B_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST1B_D_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st1b	$\xFF\x01\x20, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST1B_H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST1B_H_IMM Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st1b	$\xFF\x01\x23, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST1B_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST1B_IMM Z_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st1b	$\xFF\x01\x24, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST1B_S_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST1B_S_IMM Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st1b	$\xFF\x01\x21, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST1D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST1D_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st1d	$\xFF\x01\x20, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST1Fourv16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Fourv16b_POST GPR64sp:$Rn, VecListFour16b:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x25, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::ST1Fourv1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Fourv1d_POST GPR64sp:$Rn, VecListFour1d:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x26, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST1Fourv2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Fourv2d_POST GPR64sp:$Rn, VecListFour2d:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x27, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::ST1Fourv2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Fourv2s_POST GPR64sp:$Rn, VecListFour2s:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x28, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST1Fourv4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Fourv4h_POST GPR64sp:$Rn, VecListFour4h:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x29, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST1Fourv4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Fourv4s_POST GPR64sp:$Rn, VecListFour4s:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2A, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::ST1Fourv8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Fourv8b_POST GPR64sp:$Rn, VecListFour8b:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2B, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST1Fourv8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Fourv8h_POST GPR64sp:$Rn, VecListFour8h:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2C, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::ST1H_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST1H_D_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st1h	$\xFF\x01\x20, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST1H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST1H_IMM Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st1h	$\xFF\x01\x23, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST1H_S_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST1H_S_IMM Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st1h	$\xFF\x01\x21, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST1Onev16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Onev16b_POST GPR64sp:$Rn, VecListOne16b:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x25, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST1Onev1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Onev1d_POST GPR64sp:$Rn, VecListOne1d:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x26, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::ST1Onev2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Onev2d_POST GPR64sp:$Rn, VecListOne2d:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x27, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST1Onev2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Onev2s_POST GPR64sp:$Rn, VecListOne2s:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x28, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::ST1Onev4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Onev4h_POST GPR64sp:$Rn, VecListOne4h:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x29, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::ST1Onev4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Onev4s_POST GPR64sp:$Rn, VecListOne4s:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2A, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST1Onev8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Onev8b_POST GPR64sp:$Rn, VecListOne8b:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2B, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::ST1Onev8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Onev8h_POST GPR64sp:$Rn, VecListOne8h:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2C, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST1Threev16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Threev16b_POST GPR64sp:$Rn, VecListThree16b:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x25, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::ST1Threev1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Threev1d_POST GPR64sp:$Rn, VecListThree1d:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x26, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::ST1Threev2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Threev2d_POST GPR64sp:$Rn, VecListThree2d:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x27, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::ST1Threev2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Threev2s_POST GPR64sp:$Rn, VecListThree2s:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x28, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::ST1Threev4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Threev4h_POST GPR64sp:$Rn, VecListThree4h:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x29, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::ST1Threev4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Threev4s_POST GPR64sp:$Rn, VecListThree4s:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2A, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::ST1Threev8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Threev8b_POST GPR64sp:$Rn, VecListThree8b:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2B, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::ST1Threev8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Threev8h_POST GPR64sp:$Rn, VecListThree8h:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2C, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::ST1Twov16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Twov16b_POST GPR64sp:$Rn, VecListTwo16b:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x25, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST1Twov1d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Twov1d_POST GPR64sp:$Rn, VecListTwo1d:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x26, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST1Twov2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Twov2d_POST GPR64sp:$Rn, VecListTwo2d:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x27, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST1Twov2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Twov2s_POST GPR64sp:$Rn, VecListTwo2s:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x28, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST1Twov4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Twov4h_POST GPR64sp:$Rn, VecListTwo4h:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x29, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST1Twov4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Twov4s_POST GPR64sp:$Rn, VecListTwo4s:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2A, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST1Twov8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Twov8b_POST GPR64sp:$Rn, VecListTwo8b:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2B, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST1Twov8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1Twov8h_POST GPR64sp:$Rn, VecListTwo8h:$Vt, XZR)
      AsmString = "st1	$\xFF\x02\x2C, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST1W_D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST1W_D_IMM Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st1w	$\xFF\x01\x20, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST1W_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST1W_IMM Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st1w	$\xFF\x01\x21, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST1i16_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1i16_POST GPR64sp:$Rn, VecListOneh:$Vt, VectorIndexH:$idx, XZR)
      AsmString = "st1	$\xFF\x02\x2D$\xFF\x03\x19, [$\x01], #2";
      break;
    }
    return false;
  case AArch64::ST1i32_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1i32_POST GPR64sp:$Rn, VecListOnes:$Vt, VectorIndexS:$idx, XZR)
      AsmString = "st1	$\xFF\x02\x2E$\xFF\x03\x19, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::ST1i64_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1i64_POST GPR64sp:$Rn, VecListOned:$Vt, VectorIndexD:$idx, XZR)
      AsmString = "st1	$\xFF\x02\x2F$\xFF\x03\x19, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::ST1i8_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST1i8_POST GPR64sp:$Rn, VecListOneb:$Vt, VectorIndexB:$idx, XZR)
      AsmString = "st1	$\xFF\x02\x30$\xFF\x03\x19, [$\x01], #1";
      break;
    }
    return false;
  case AArch64::ST2B_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR2RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST2B_IMM ZZ_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st2b	$\xFF\x01\x24, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST2D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR2RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST2D_IMM ZZ_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st2d	$\xFF\x01\x20, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST2H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR2RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST2H_IMM ZZ_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st2h	$\xFF\x01\x23, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST2Twov16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2Twov16b_POST GPR64sp:$Rn, VecListTwo16b:$Vt, XZR)
      AsmString = "st2	$\xFF\x02\x25, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST2Twov2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2Twov2d_POST GPR64sp:$Rn, VecListTwo2d:$Vt, XZR)
      AsmString = "st2	$\xFF\x02\x27, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST2Twov2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2Twov2s_POST GPR64sp:$Rn, VecListTwo2s:$Vt, XZR)
      AsmString = "st2	$\xFF\x02\x28, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST2Twov4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2Twov4h_POST GPR64sp:$Rn, VecListTwo4h:$Vt, XZR)
      AsmString = "st2	$\xFF\x02\x29, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST2Twov4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2Twov4s_POST GPR64sp:$Rn, VecListTwo4s:$Vt, XZR)
      AsmString = "st2	$\xFF\x02\x2A, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST2Twov8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2Twov8b_POST GPR64sp:$Rn, VecListTwo8b:$Vt, XZR)
      AsmString = "st2	$\xFF\x02\x2B, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST2Twov8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2Twov8h_POST GPR64sp:$Rn, VecListTwo8h:$Vt, XZR)
      AsmString = "st2	$\xFF\x02\x2C, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST2W_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR2RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST2W_IMM ZZ_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st2w	$\xFF\x01\x21, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST2i16_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2i16_POST GPR64sp:$Rn, VecListTwoh:$Vt, VectorIndexH:$idx, XZR)
      AsmString = "st2	$\xFF\x02\x2D$\xFF\x03\x19, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::ST2i32_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2i32_POST GPR64sp:$Rn, VecListTwos:$Vt, VectorIndexS:$idx, XZR)
      AsmString = "st2	$\xFF\x02\x2E$\xFF\x03\x19, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::ST2i64_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2i64_POST GPR64sp:$Rn, VecListTwod:$Vt, VectorIndexD:$idx, XZR)
      AsmString = "st2	$\xFF\x02\x2F$\xFF\x03\x19, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST2i8_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST2i8_POST GPR64sp:$Rn, VecListTwob:$Vt, VectorIndexB:$idx, XZR)
      AsmString = "st2	$\xFF\x02\x30$\xFF\x03\x19, [$\x01], #2";
      break;
    }
    return false;
  case AArch64::ST3B_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR3RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST3B_IMM ZZZ_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st3b	$\xFF\x01\x24, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST3D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR3RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST3D_IMM ZZZ_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st3d	$\xFF\x01\x20, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST3H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR3RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST3H_IMM ZZZ_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st3h	$\xFF\x01\x23, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST3Threev16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3Threev16b_POST GPR64sp:$Rn, VecListThree16b:$Vt, XZR)
      AsmString = "st3	$\xFF\x02\x25, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::ST3Threev2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3Threev2d_POST GPR64sp:$Rn, VecListThree2d:$Vt, XZR)
      AsmString = "st3	$\xFF\x02\x27, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::ST3Threev2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3Threev2s_POST GPR64sp:$Rn, VecListThree2s:$Vt, XZR)
      AsmString = "st3	$\xFF\x02\x28, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::ST3Threev4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3Threev4h_POST GPR64sp:$Rn, VecListThree4h:$Vt, XZR)
      AsmString = "st3	$\xFF\x02\x29, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::ST3Threev4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3Threev4s_POST GPR64sp:$Rn, VecListThree4s:$Vt, XZR)
      AsmString = "st3	$\xFF\x02\x2A, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::ST3Threev8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3Threev8b_POST GPR64sp:$Rn, VecListThree8b:$Vt, XZR)
      AsmString = "st3	$\xFF\x02\x2B, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::ST3Threev8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3Threev8h_POST GPR64sp:$Rn, VecListThree8h:$Vt, XZR)
      AsmString = "st3	$\xFF\x02\x2C, [$\x01], #48";
      break;
    }
    return false;
  case AArch64::ST3W_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR3RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST3W_IMM ZZZ_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st3w	$\xFF\x01\x21, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST3i16_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3i16_POST GPR64sp:$Rn, VecListThreeh:$Vt, VectorIndexH:$idx, XZR)
      AsmString = "st3	$\xFF\x02\x2D$\xFF\x03\x19, [$\x01], #6";
      break;
    }
    return false;
  case AArch64::ST3i32_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3i32_POST GPR64sp:$Rn, VecListThrees:$Vt, VectorIndexS:$idx, XZR)
      AsmString = "st3	$\xFF\x02\x2E$\xFF\x03\x19, [$\x01], #12";
      break;
    }
    return false;
  case AArch64::ST3i64_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3i64_POST GPR64sp:$Rn, VecListThreed:$Vt, VectorIndexD:$idx, XZR)
      AsmString = "st3	$\xFF\x02\x2F$\xFF\x03\x19, [$\x01], #24";
      break;
    }
    return false;
  case AArch64::ST3i8_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST3i8_POST GPR64sp:$Rn, VecListThreeb:$Vt, VectorIndexB:$idx, XZR)
      AsmString = "st3	$\xFF\x02\x30$\xFF\x03\x19, [$\x01], #3";
      break;
    }
    return false;
  case AArch64::ST4B_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR4RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST4B_IMM ZZZZ_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st4b	$\xFF\x01\x24, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST4D_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR4RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST4D_IMM ZZZZ_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st4d	$\xFF\x01\x20, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST4Fourv16b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4Fourv16b_POST GPR64sp:$Rn, VecListFour16b:$Vt, XZR)
      AsmString = "st4	$\xFF\x02\x25, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::ST4Fourv2d_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4Fourv2d_POST GPR64sp:$Rn, VecListFour2d:$Vt, XZR)
      AsmString = "st4	$\xFF\x02\x27, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::ST4Fourv2s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4Fourv2s_POST GPR64sp:$Rn, VecListFour2s:$Vt, XZR)
      AsmString = "st4	$\xFF\x02\x28, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST4Fourv4h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4Fourv4h_POST GPR64sp:$Rn, VecListFour4h:$Vt, XZR)
      AsmString = "st4	$\xFF\x02\x29, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST4Fourv4s_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4Fourv4s_POST GPR64sp:$Rn, VecListFour4s:$Vt, XZR)
      AsmString = "st4	$\xFF\x02\x2A, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::ST4Fourv8b_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::DDDDRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4Fourv8b_POST GPR64sp:$Rn, VecListFour8b:$Vt, XZR)
      AsmString = "st4	$\xFF\x02\x2B, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST4Fourv8h_POST:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4Fourv8h_POST GPR64sp:$Rn, VecListFour8h:$Vt, XZR)
      AsmString = "st4	$\xFF\x02\x2C, [$\x01], #64";
      break;
    }
    return false;
  case AArch64::ST4H_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR4RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST4H_IMM ZZZZ_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st4h	$\xFF\x01\x23, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST4W_IMM:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPR4RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (ST4W_IMM ZZZZ_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "st4w	$\xFF\x01\x21, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::ST4i16_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4i16_POST GPR64sp:$Rn, VecListFourh:$Vt, VectorIndexH:$idx, XZR)
      AsmString = "st4	$\xFF\x02\x2D$\xFF\x03\x19, [$\x01], #8";
      break;
    }
    return false;
  case AArch64::ST4i32_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4i32_POST GPR64sp:$Rn, VecListFours:$Vt, VectorIndexS:$idx, XZR)
      AsmString = "st4	$\xFF\x02\x2E$\xFF\x03\x19, [$\x01], #16";
      break;
    }
    return false;
  case AArch64::ST4i64_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4i64_POST GPR64sp:$Rn, VecListFourd:$Vt, VectorIndexD:$idx, XZR)
      AsmString = "st4	$\xFF\x02\x2F$\xFF\x03\x19, [$\x01], #32";
      break;
    }
    return false;
  case AArch64::ST4i8_POST:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::QQQQRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(4).getReg() == AArch64::XZR &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (ST4i8_POST GPR64sp:$Rn, VecListFourb:$Vt, VectorIndexB:$idx, XZR)
      AsmString = "st4	$\xFF\x02\x30$\xFF\x03\x19, [$\x01], #4";
      break;
    }
    return false;
  case AArch64::STLURBi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (STLURBi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stlurb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STLURHi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (STLURHi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stlurh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STLURWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (STLURWi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stlur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STLURXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::HasV8_4aOps]) {
      // (STLURXi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stlur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STNPDi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (STNPDi FPR64Op:$Rt, FPR64Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "stnp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::STNPQi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (STNPQi FPR128Op:$Rt, FPR128Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "stnp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::STNPSi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (STNPSi FPR32Op:$Rt, FPR32Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "stnp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::STNPWi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (STNPWi GPR32z:$Rt, GPR32z:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "stnp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::STNPXi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (STNPXi GPR64z:$Rt, GPR64z:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "stnp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::STNT1B_ZRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (STNT1B_ZRI Z_b:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "stnt1b	$\xFF\x01\x24, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::STNT1D_ZRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (STNT1D_ZRI Z_d:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "stnt1d	$\xFF\x01\x20, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::STNT1H_ZRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (STNT1H_ZRI Z_h:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "stnt1h	$\xFF\x01\x23, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::STNT1W_ZRI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::PPR_3bRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (STNT1W_ZRI Z_s:$Zt, PPR3bAny:$Pg, GPR64sp:$Rn, 0)
      AsmString = "stnt1w	$\xFF\x01\x21, $\xFF\x02\x07, [$\x03]";
      break;
    }
    return false;
  case AArch64::STPDi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (STPDi FPR64Op:$Rt, FPR64Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "stp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::STPQi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (STPQi FPR128Op:$Rt, FPR128Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "stp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::STPSi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (STPSi FPR32Op:$Rt, FPR32Op:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "stp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::STPWi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (STPWi GPR32z:$Rt, GPR32z:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "stp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::STPXi:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (STPXi GPR64z:$Rt, GPR64z:$Rt2, GPR64sp:$Rn, 0)
      AsmString = "stp	$\x01, $\x02, [$\x03]";
      break;
    }
    return false;
  case AArch64::STRBBroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (STRBBroX GPR32:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "strb	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::STRBBui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STRBBui GPR32z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "strb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STRBroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR8RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (STRBroX FPR8Op:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "str	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::STRBui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR8RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STRBui FPR8Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "str	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STRDroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (STRDroX FPR64Op:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "str	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::STRDui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STRDui FPR64Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "str	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STRHHroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (STRHHroX GPR32:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "strh	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::STRHHui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STRHHui GPR32z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "strh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STRHroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR16RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (STRHroX FPR16Op:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "str	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::STRHui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR16RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STRHui FPR16Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "str	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STRQroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (STRQroX FPR128Op:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "str	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::STRQui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STRQui FPR128Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "str	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STRSroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (STRSroX FPR32Op:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "str	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::STRSui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STRSui FPR32Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "str	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STRWroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (STRWroX GPR32:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "str	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::STRWui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STRWui GPR32z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "str	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STRXroX:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0 &&
        MI->getOperand(4).isImm() &&
        MI->getOperand(4).getImm() == 0) {
      // (STRXroX GPR64:$Rt, GPR64sp:$Rn, GPR64:$Rm, 0, 0)
      AsmString = "str	$\x01, [$\x02, $\x03]";
      break;
    }
    return false;
  case AArch64::STRXui:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STRXui GPR64z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "str	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STR_PXI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::PPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (STR_PXI PPRAny:$Pt, GPR64sp:$Rn, 0)
      AsmString = "str	$\xFF\x01\x07, [$\x02]";
      break;
    }
    return false;
  case AArch64::STR_ZXI:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (STR_ZXI ZPRAny:$Zt, GPR64sp:$Rn, 0)
      AsmString = "str	$\xFF\x01\x07, [$\x02]";
      break;
    }
    return false;
  case AArch64::STTRBi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STTRBi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "sttrb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STTRHi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STTRHi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "sttrh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STTRWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STTRWi GPR32:$Rt, GPR64sp:$Rn, 0)
      AsmString = "sttr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STTRXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STTRXi GPR64:$Rt, GPR64sp:$Rn, 0)
      AsmString = "sttr	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STURBBi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STURBBi GPR32z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "sturb	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STURBi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR8RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STURBi FPR8Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STURDi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STURDi FPR64Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STURHHi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STURHHi GPR32z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "sturh	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STURHi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR16RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STURHi FPR16Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STURQi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STURQi FPR128Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STURSi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::FPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STURSi FPR32Op:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STURWi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STURWi GPR32z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::STURXi:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0) {
      // (STURXi GPR64z:$Rt, GPR64sp:$Rn, 0)
      AsmString = "stur	$\x01, [$\x02]";
      break;
    }
    return false;
  case AArch64::SUBSWri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(1).getReg())) {
      // (SUBSWri WZR, GPR32sp:$src, addsub_shifted_imm32:$imm)
      AsmString = "cmp	$\x02, $\xFF\x03\x01";
      break;
    }
    return false;
  case AArch64::SUBSWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (SUBSWrs WZR, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "cmp	$\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SUBSWrs WZR, GPR32:$src1, GPR32:$src2, arith_shift32:$sh)
      AsmString = "cmp	$\x02, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (SUBSWrs GPR32:$dst, WZR, GPR32:$src, 0)
      AsmString = "negs $\x01, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SUBSWrs GPR32:$dst, WZR, GPR32:$src, arith_shift32:$shift)
      AsmString = "negs $\x01, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (SUBSWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "subs	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::SUBSWrx:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 16) {
      // (SUBSWrx WZR, GPR32sponly:$src1, GPR32:$src2, 16)
      AsmString = "cmp	$\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::WZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SUBSWrx WZR, GPR32sp:$src1, GPR32:$src2, arith_extend:$sh)
      AsmString = "cmp	$\x02, $\x03$\xFF\x04\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 16) {
      // (SUBSWrx GPR32:$dst, GPR32sponly:$src1, GPR32:$src2, 16)
      AsmString = "subs	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::SUBSXri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg())) {
      // (SUBSXri XZR, GPR64sp:$src, addsub_shifted_imm64:$imm)
      AsmString = "cmp	$\x02, $\xFF\x03\x01";
      break;
    }
    return false;
  case AArch64::SUBSXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (SUBSXrs XZR, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "cmp	$\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SUBSXrs XZR, GPR64:$src1, GPR64:$src2, arith_shift64:$sh)
      AsmString = "cmp	$\x02, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (SUBSXrs GPR64:$dst, XZR, GPR64:$src, 0)
      AsmString = "negs $\x01, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SUBSXrs GPR64:$dst, XZR, GPR64:$src, arith_shift64:$shift)
      AsmString = "negs $\x01, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (SUBSXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "subs	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::SUBSXrx:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SUBSXrx XZR, GPR64sp:$src1, GPR32:$src2, arith_extend:$sh)
      AsmString = "cmp	$\x02, $\x03$\xFF\x04\x03";
      break;
    }
    return false;
  case AArch64::SUBSXrx64:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 24) {
      // (SUBSXrx64 XZR, GPR64sponly:$src1, GPR64:$src2, 24)
      AsmString = "cmp	$\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).getReg() == AArch64::XZR &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SUBSXrx64 XZR, GPR64sp:$src1, GPR64:$src2, arith_extendlsl64:$sh)
      AsmString = "cmp	$\x02, $\x03$\xFF\x04\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 24) {
      // (SUBSXrx64 GPR64:$dst, GPR64sponly:$src1, GPR64:$src2, 24)
      AsmString = "subs	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::SUBWrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (SUBWrs GPR32:$dst, WZR, GPR32:$src, 0)
      AsmString = "neg $\x01, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::WZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SUBWrs GPR32:$dst, WZR, GPR32:$src, arith_shift32:$shift)
      AsmString = "neg $\x01, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (SUBWrs GPR32:$dst, GPR32:$src1, GPR32:$src2, 0)
      AsmString = "sub	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::SUBWrx:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32sponlyRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 16) {
      // (SUBWrx GPR32sponly:$dst, GPR32sp:$src1, GPR32:$src2, 16)
      AsmString = "sub	$\x01, $\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 16) {
      // (SUBWrx GPR32sp:$dst, GPR32sponly:$src1, GPR32:$src2, 16)
      AsmString = "sub	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::SUBXrs:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (SUBXrs GPR64:$dst, XZR, GPR64:$src, 0)
      AsmString = "neg $\x01, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).getReg() == AArch64::XZR &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg())) {
      // (SUBXrs GPR64:$dst, XZR, GPR64:$src, arith_shift64:$shift)
      AsmString = "neg $\x01, $\x03$\xFF\x04\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 0) {
      // (SUBXrs GPR64:$dst, GPR64:$src1, GPR64:$src2, 0)
      AsmString = "sub	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::SUBXrx64:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64sponlyRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 24) {
      // (SUBXrx64 GPR64sponly:$dst, GPR64sp:$src1, GPR64:$src2, 24)
      AsmString = "sub	$\x01, $\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64spRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64sponlyRegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 24) {
      // (SUBXrx64 GPR64sp:$dst, GPR64sponly:$src1, GPR64:$src2, 24)
      AsmString = "sub	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::SYSxt:
    if (MI->getNumOperands() == 5 &&
        MI->getOperand(4).getReg() == AArch64::XZR) {
      // (SYSxt imm0_7:$op1, sys_cr_op:$Cn, sys_cr_op:$Cm, imm0_7:$op2, XZR)
      AsmString = "sys $\x01, $\xFF\x02\x35, $\xFF\x03\x35, $\x04";
      break;
    }
    return false;
  case AArch64::UBFMWri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 31) {
      // (UBFMWri GPR32:$dst, GPR32:$src, imm0_31:$shift, 31)
      AsmString = "lsr $\x01, $\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 7) {
      // (UBFMWri GPR32:$dst, GPR32:$src, 0, 7)
      AsmString = "uxtb $\x01, $\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 15) {
      // (UBFMWri GPR32:$dst, GPR32:$src, 0, 15)
      AsmString = "uxth $\x01, $\x02";
      break;
    }
    return false;
  case AArch64::UBFMXri:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 63) {
      // (UBFMXri GPR64:$dst, GPR64:$src, imm0_63:$shift, 63)
      AsmString = "lsr $\x01, $\x02, $\x03";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 7) {
      // (UBFMXri GPR64:$dst, GPR64:$src, 0, 7)
      AsmString = "uxtb $\x01, $\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 15) {
      // (UBFMXri GPR64:$dst, GPR64:$src, 0, 15)
      AsmString = "uxth $\x01, $\x02";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 0 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 31) {
      // (UBFMXri GPR64:$dst, GPR64:$src, 0, 31)
      AsmString = "uxtw $\x01, $\x02";
      break;
    }
    return false;
  case AArch64::UMADDLrrr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR) {
      // (UMADDLrrr GPR64:$dst, GPR32:$src1, GPR32:$src2, XZR)
      AsmString = "umull	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::UMOVvi32:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (UMOVvi32 GPR32:$dst, V128:$src, VectorIndexS:$idx)
      AsmString = "mov	$\x01, $\xFF\x02\x0C.s$\xFF\x03\x19";
      break;
    }
    return false;
  case AArch64::UMOVvi64:
    if (MI->getNumOperands() == 3 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::FPR128RegClassID).contains(MI->getOperand(1).getReg()) &&
        STI.getFeatureBits()[AArch64::FeatureNEON]) {
      // (UMOVvi64 GPR64:$dst, V128:$src, VectorIndexD:$idx)
      AsmString = "mov	$\x01, $\xFF\x02\x0C.d$\xFF\x03\x19";
      break;
    }
    return false;
  case AArch64::UMSUBLrrr:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(1).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(1).getReg()) &&
        MI->getOperand(2).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(2).getReg()) &&
        MI->getOperand(3).getReg() == AArch64::XZR) {
      // (UMSUBLrrr GPR64:$dst, GPR32:$src1, GPR32:$src2, XZR)
      AsmString = "umnegl	$\x01, $\x02, $\x03";
      break;
    }
    return false;
  case AArch64::UQDECB_WPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECB_WPiI GPR32z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdecb	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECB_WPiI GPR32z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdecb	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQDECB_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECB_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdecb	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECB_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdecb	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQDECD_WPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECD_WPiI GPR32z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdecd	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECD_WPiI GPR32z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdecd	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQDECD_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECD_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdecd	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECD_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdecd	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQDECD_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECD_ZPiI ZPR64:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdecd	$\xFF\x01\x10";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECD_ZPiI ZPR64:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdecd	$\xFF\x01\x10, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQDECH_WPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECH_WPiI GPR32z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdech	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECH_WPiI GPR32z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdech	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQDECH_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECH_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdech	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECH_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdech	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQDECH_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECH_ZPiI ZPR16:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdech	$\xFF\x01\x09";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECH_ZPiI ZPR16:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdech	$\xFF\x01\x09, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQDECW_WPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECW_WPiI GPR32z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdecw	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECW_WPiI GPR32z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdecw	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQDECW_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECW_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdecw	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECW_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdecw	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQDECW_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECW_ZPiI ZPR32:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqdecw	$\xFF\x01\x0B";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQDECW_ZPiI ZPR32:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqdecw	$\xFF\x01\x0B, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCB_WPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCB_WPiI GPR32z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqincb	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCB_WPiI GPR32z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqincb	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCB_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCB_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqincb	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCB_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqincb	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCD_WPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCD_WPiI GPR32z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqincd	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCD_WPiI GPR32z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqincd	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCD_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCD_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqincd	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCD_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqincd	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCD_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCD_ZPiI ZPR64:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqincd	$\xFF\x01\x10";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCD_ZPiI ZPR64:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqincd	$\xFF\x01\x10, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCH_WPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCH_WPiI GPR32z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqinch	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCH_WPiI GPR32z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqinch	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCH_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCH_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqinch	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCH_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqinch	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCH_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCH_ZPiI ZPR16:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqinch	$\xFF\x01\x09";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCH_ZPiI ZPR16:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqinch	$\xFF\x01\x09, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCW_WPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCW_WPiI GPR32z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqincw	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR32RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCW_WPiI GPR32z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqincw	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCW_XPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCW_XPiI GPR64z:$Rdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqincw	$\x01";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::GPR64RegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCW_XPiI GPR64z:$Rdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqincw	$\x01, $\xFF\x03\x0E";
      break;
    }
    return false;
  case AArch64::UQINCW_ZPiI:
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(2).isImm() &&
        MI->getOperand(2).getImm() == 31 &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCW_ZPiI ZPR32:$Zdn, { 1, 1, 1, 1, 1 }, 1)
      AsmString = "uqincw	$\xFF\x01\x0B";
      break;
    }
    if (MI->getNumOperands() == 4 &&
        MI->getOperand(0).isReg() &&
        MRI.getRegClass(AArch64::ZPRRegClassID).contains(MI->getOperand(0).getReg()) &&
        MI->getOperand(3).isImm() &&
        MI->getOperand(3).getImm() == 1 &&
        STI.getFeatureBits()[AArch64::FeatureSVE]) {
      // (UQINCW_ZPiI ZPR32:$Zdn, sve_pred_enum:$pattern, 1)
      AsmString = "uqincw	$\xFF\x01\x0B, $\xFF\x03\x0E";
      break;
    }
    return false;
  }

  unsigned I = 0;
  while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
         AsmString[I] != '$' && AsmString[I] != '\0')
    ++I;
  OS << '\t' << StringRef(AsmString, I);
  if (AsmString[I] != '\0') {
    if (AsmString[I] == ' ' || AsmString[I] == '\t') {
      OS << '\t';
      ++I;
    }
    do {
      if (AsmString[I] == '$') {
        ++I;
        if (AsmString[I] == (char)0xff) {
          ++I;
          int OpIdx = AsmString[I++] - 1;
          int PrintMethodIdx = AsmString[I++] - 1;
          printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, STI, OS);
        } else
          printOperand(MI, unsigned(AsmString[I++]) - 1, STI, OS);
      } else {
        OS << AsmString[I++];
      }
    } while (AsmString[I] != '\0');
  }

  return true;
}

void AArch64InstPrinter::printCustomAliasOperand(
         const MCInst *MI, unsigned OpIdx,
         unsigned PrintMethodIdx,
         const MCSubtargetInfo &STI,
         raw_ostream &OS) {
  switch (PrintMethodIdx) {
  default:
    llvm_unreachable("Unknown PrintMethod kind");
    break;
  case 0:
    printAddSubImm(MI, OpIdx, STI, OS);
    break;
  case 1:
    printShifter(MI, OpIdx, STI, OS);
    break;
  case 2:
    printArithExtend(MI, OpIdx, STI, OS);
    break;
  case 3:
    printLogicalImm<int32_t>(MI, OpIdx, STI, OS);
    break;
  case 4:
    printLogicalImm<int64_t>(MI, OpIdx, STI, OS);
    break;
  case 5:
    printSVERegOp<'b'>(MI, OpIdx, STI, OS);
    break;
  case 6:
    printSVERegOp<>(MI, OpIdx, STI, OS);
    break;
  case 7:
    printLogicalImm<int8_t>(MI, OpIdx, STI, OS);
    break;
  case 8:
    printSVERegOp<'h'>(MI, OpIdx, STI, OS);
    break;
  case 9:
    printLogicalImm<int16_t>(MI, OpIdx, STI, OS);
    break;
  case 10:
    printSVERegOp<'s'>(MI, OpIdx, STI, OS);
    break;
  case 11:
    printVRegOperand(MI, OpIdx, STI, OS);
    break;
  case 12:
    printImm(MI, OpIdx, STI, OS);
    break;
  case 13:
    printSVEPattern(MI, OpIdx, STI, OS);
    break;
  case 14:
    printImm8OptLsl<int8_t>(MI, OpIdx, STI, OS);
    break;
  case 15:
    printSVERegOp<'d'>(MI, OpIdx, STI, OS);
    break;
  case 16:
    printImm8OptLsl<int64_t>(MI, OpIdx, STI, OS);
    break;
  case 17:
    printImm8OptLsl<int16_t>(MI, OpIdx, STI, OS);
    break;
  case 18:
    printImm8OptLsl<int32_t>(MI, OpIdx, STI, OS);
    break;
  case 19:
    printInverseCondCode(MI, OpIdx, STI, OS);
    break;
  case 20:
    printSVELogicalImm<int16_t>(MI, OpIdx, STI, OS);
    break;
  case 21:
    printSVELogicalImm<int32_t>(MI, OpIdx, STI, OS);
    break;
  case 22:
    printSVELogicalImm<int64_t>(MI, OpIdx, STI, OS);
    break;
  case 23:
    printZPRasFPR<8>(MI, OpIdx, STI, OS);
    break;
  case 24:
    printVectorIndex(MI, OpIdx, STI, OS);
    break;
  case 25:
    printZPRasFPR<64>(MI, OpIdx, STI, OS);
    break;
  case 26:
    printZPRasFPR<16>(MI, OpIdx, STI, OS);
    break;
  case 27:
    printSVERegOp<'q'>(MI, OpIdx, STI, OS);
    break;
  case 28:
    printZPRasFPR<128>(MI, OpIdx, STI, OS);
    break;
  case 29:
    printZPRasFPR<32>(MI, OpIdx, STI, OS);
    break;
  case 30:
    printFPImmOperand(MI, OpIdx, STI, OS);
    break;
  case 31:
    printTypedVectorList<0,'d'>(MI, OpIdx, STI, OS);
    break;
  case 32:
    printTypedVectorList<0,'s'>(MI, OpIdx, STI, OS);
    break;
  case 33:
    printPSBHintOp(MI, OpIdx, STI, OS);
    break;
  case 34:
    printTypedVectorList<0,'h'>(MI, OpIdx, STI, OS);
    break;
  case 35:
    printTypedVectorList<0,'b'>(MI, OpIdx, STI, OS);
    break;
  case 36:
    printTypedVectorList<16, 'b'>(MI, OpIdx, STI, OS);
    break;
  case 37:
    printTypedVectorList<1, 'd'>(MI, OpIdx, STI, OS);
    break;
  case 38:
    printTypedVectorList<2, 'd'>(MI, OpIdx, STI, OS);
    break;
  case 39:
    printTypedVectorList<2, 's'>(MI, OpIdx, STI, OS);
    break;
  case 40:
    printTypedVectorList<4, 'h'>(MI, OpIdx, STI, OS);
    break;
  case 41:
    printTypedVectorList<4, 's'>(MI, OpIdx, STI, OS);
    break;
  case 42:
    printTypedVectorList<8, 'b'>(MI, OpIdx, STI, OS);
    break;
  case 43:
    printTypedVectorList<8, 'h'>(MI, OpIdx, STI, OS);
    break;
  case 44:
    printTypedVectorList<0, 'h'>(MI, OpIdx, STI, OS);
    break;
  case 45:
    printTypedVectorList<0, 's'>(MI, OpIdx, STI, OS);
    break;
  case 46:
    printTypedVectorList<0, 'd'>(MI, OpIdx, STI, OS);
    break;
  case 47:
    printTypedVectorList<0, 'b'>(MI, OpIdx, STI, OS);
    break;
  case 48:
    printImmHex(MI, OpIdx, STI, OS);
    break;
  case 49:
    printPrefetchOp<true>(MI, OpIdx, STI, OS);
    break;
  case 50:
    printPrefetchOp(MI, OpIdx, STI, OS);
    break;
  case 51:
    printGPR64as32(MI, OpIdx, STI, OS);
    break;
  case 52:
    printSysCROperand(MI, OpIdx, STI, OS);
    break;
  }
}

static bool AArch64InstPrinterValidateMCOperand(const MCOperand &MCOp,
                  const MCSubtargetInfo &STI,
                  unsigned PredicateIndex) {
  switch (PredicateIndex) {
  default:
    llvm_unreachable("Unknown MCOperandPredicate kind");
    break;
  case 1: {

    if (!MCOp.isImm())
      return false;
    int64_t Val = AArch64_AM::decodeLogicalImmediate(MCOp.getImm(), 64);
    return AArch64_AM::isSVEMaskOfIdenticalElements<int8_t>(Val);
  
    }
  case 2: {

    if (!MCOp.isImm())
      return false;
    int64_t Val = AArch64_AM::decodeLogicalImmediate(MCOp.getImm(), 64);
    return AArch64_AM::isSVEMaskOfIdenticalElements<int16_t>(Val);
  
    }
  case 3: {

    if (!MCOp.isImm())
      return false;
    int64_t Val = AArch64_AM::decodeLogicalImmediate(MCOp.getImm(), 64);
    return AArch64_AM::isSVEMaskOfIdenticalElements<int32_t>(Val);
  
    }
  case 4: {

    return MCOp.isImm() &&
           MCOp.getImm() != AArch64CC::AL &&
           MCOp.getImm() != AArch64CC::NV;
  
    }
  case 5: {

    if (!MCOp.isImm())
      return false;
    int64_t Val = AArch64_AM::decodeLogicalImmediate(MCOp.getImm(), 64);
    return AArch64_AM::isSVEMaskOfIdenticalElements<int16_t>(Val) &&
           AArch64_AM::isSVEMoveMaskPreferredLogicalImmediate(Val);
  
    }
  case 6: {

    if (!MCOp.isImm())
      return false;
    int64_t Val = AArch64_AM::decodeLogicalImmediate(MCOp.getImm(), 64);
    return AArch64_AM::isSVEMaskOfIdenticalElements<int32_t>(Val) &&
           AArch64_AM::isSVEMoveMaskPreferredLogicalImmediate(Val);
  
    }
  case 7: {

    if (!MCOp.isImm())
      return false;
    int64_t Val = AArch64_AM::decodeLogicalImmediate(MCOp.getImm(), 64);
    return AArch64_AM::isSVEMaskOfIdenticalElements<int64_t>(Val) &&
           AArch64_AM::isSVEMoveMaskPreferredLogicalImmediate(Val);
  
    }
  case 8: {

    // Check, if operand is valid, to fix exhaustive aliasing in disassembly.
    // "psb" is an alias to "hint" only for certain values of CRm:Op2 fields.
    if (!MCOp.isImm())
      return false;
    return AArch64PSBHint::lookupPSBByEncoding(MCOp.getImm()) != nullptr;
  
    }
  }
}

#endif // PRINT_ALIAS_INSTR
