| /* This file is automatically generated by aarch64-gen. Do not edit! */ |
| /* Copyright (C) 2012-2025 Free Software Foundation, Inc. |
| Contributed by ARM Ltd. |
| |
| This file is part of the GNU opcodes library. |
| |
| This library is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 3, or (at your option) |
| any later version. |
| |
| It is distributed in the hope that it will be useful, but WITHOUT |
| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
| or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public |
| License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program; see the file COPYING3. If not, |
| see <http://www.gnu.org/licenses/>. */ |
| |
| #include "sysdep.h" |
| #include "aarch64-asm.h" |
| |
| |
| const aarch64_opcode * |
| aarch64_find_real_opcode (const aarch64_opcode *opcode) |
| { |
| /* Use the index as the key to locate the real opcode. */ |
| int key = opcode - aarch64_opcode_table; |
| int value; |
| switch (key) |
| { |
| case 3: /* ngc */ |
| case 2: /* sbc */ |
| value = 2; /* --> sbc. */ |
| break; |
| case 5: /* ngcs */ |
| case 4: /* sbcs */ |
| value = 4; /* --> sbcs. */ |
| break; |
| case 8: /* cmn */ |
| case 7: /* adds */ |
| value = 7; /* --> adds. */ |
| break; |
| case 11: /* cmp */ |
| case 10: /* subs */ |
| value = 10; /* --> subs. */ |
| break; |
| case 13: /* mov */ |
| case 12: /* add */ |
| value = 12; /* --> add. */ |
| break; |
| case 15: /* cmn */ |
| case 14: /* adds */ |
| value = 14; /* --> adds. */ |
| break; |
| case 18: /* cmp */ |
| case 17: /* subs */ |
| value = 17; /* --> subs. */ |
| break; |
| case 23: /* cmn */ |
| case 22: /* adds */ |
| value = 22; /* --> adds. */ |
| break; |
| case 25: /* neg */ |
| case 24: /* sub */ |
| value = 24; /* --> sub. */ |
| break; |
| case 27: /* cmp */ |
| case 28: /* negs */ |
| case 26: /* subs */ |
| value = 26; /* --> subs. */ |
| break; |
| case 153: /* mov */ |
| case 152: /* umov */ |
| value = 152; /* --> umov. */ |
| break; |
| case 155: /* mov */ |
| case 154: /* ins */ |
| value = 154; /* --> ins. */ |
| break; |
| case 157: /* mov */ |
| case 156: /* ins */ |
| value = 156; /* --> ins. */ |
| break; |
| case 243: /* mvn */ |
| case 242: /* not */ |
| value = 242; /* --> not. */ |
| break; |
| case 318: /* mov */ |
| case 317: /* orr */ |
| value = 317; /* --> orr. */ |
| break; |
| case 389: /* sxtl */ |
| case 388: /* sshll */ |
| value = 388; /* --> sshll. */ |
| break; |
| case 391: /* sxtl2 */ |
| case 390: /* sshll2 */ |
| value = 390; /* --> sshll2. */ |
| break; |
| case 413: /* uxtl */ |
| case 412: /* ushll */ |
| value = 412; /* --> ushll. */ |
| break; |
| case 415: /* uxtl2 */ |
| case 414: /* ushll2 */ |
| value = 414; /* --> ushll2. */ |
| break; |
| case 536: /* mov */ |
| case 535: /* dup */ |
| value = 535; /* --> dup. */ |
| break; |
| case 623: /* sxtw */ |
| case 622: /* sxth */ |
| case 621: /* sxtb */ |
| case 624: /* asr */ |
| case 620: /* sbfx */ |
| case 619: /* sbfiz */ |
| case 618: /* sbfm */ |
| value = 618; /* --> sbfm. */ |
| break; |
| case 627: /* bfc */ |
| case 628: /* bfxil */ |
| case 626: /* bfi */ |
| case 625: /* bfm */ |
| value = 625; /* --> bfm. */ |
| break; |
| case 633: /* uxth */ |
| case 632: /* uxtb */ |
| case 635: /* lsr */ |
| case 634: /* lsl */ |
| case 631: /* ubfx */ |
| case 630: /* ubfiz */ |
| case 629: /* ubfm */ |
| value = 629; /* --> ubfm. */ |
| break; |
| case 659: /* cblt */ |
| case 658: /* cbgt */ |
| value = 658; /* --> cbgt. */ |
| break; |
| case 661: /* cble */ |
| case 660: /* cbge */ |
| value = 660; /* --> cbge. */ |
| break; |
| case 663: /* cblo */ |
| case 662: /* cbhi */ |
| value = 662; /* --> cbhi. */ |
| break; |
| case 665: /* cbls */ |
| case 664: /* cbhs */ |
| value = 664; /* --> cbhs. */ |
| break; |
| case 669: /* cbge */ |
| case 668: /* cbgt */ |
| value = 668; /* --> cbgt. */ |
| break; |
| case 671: /* cble */ |
| case 670: /* cblt */ |
| value = 670; /* --> cblt. */ |
| break; |
| case 673: /* cbhs */ |
| case 672: /* cbhi */ |
| value = 672; /* --> cbhi. */ |
| break; |
| case 675: /* cbls */ |
| case 674: /* cblo */ |
| value = 674; /* --> cblo. */ |
| break; |
| case 679: /* cbblt */ |
| case 678: /* cbbgt */ |
| value = 678; /* --> cbbgt. */ |
| break; |
| case 681: /* cbble */ |
| case 680: /* cbbge */ |
| value = 680; /* --> cbbge. */ |
| break; |
| case 683: /* cbblo */ |
| case 682: /* cbbhi */ |
| value = 682; /* --> cbbhi. */ |
| break; |
| case 685: /* cbbls */ |
| case 684: /* cbbhs */ |
| value = 684; /* --> cbbhs. */ |
| break; |
| case 689: /* cbhlt */ |
| case 688: /* cbhgt */ |
| value = 688; /* --> cbhgt. */ |
| break; |
| case 691: /* cbhle */ |
| case 690: /* cbhge */ |
| value = 690; /* --> cbhge. */ |
| break; |
| case 693: /* cbhlo */ |
| case 692: /* cbhhi */ |
| value = 692; /* --> cbhhi. */ |
| break; |
| case 695: /* cbhls */ |
| case 694: /* cbhhs */ |
| value = 694; /* --> cbhhs. */ |
| break; |
| case 705: /* cset */ |
| case 704: /* cinc */ |
| case 703: /* csinc */ |
| value = 703; /* --> csinc. */ |
| break; |
| case 708: /* csetm */ |
| case 707: /* cinv */ |
| case 706: /* csinv */ |
| value = 706; /* --> csinv. */ |
| break; |
| case 710: /* cneg */ |
| case 709: /* csneg */ |
| value = 709; /* --> csneg. */ |
| break; |
| case 729: /* rev64 */ |
| case 728: /* rev */ |
| value = 728; /* --> rev. */ |
| break; |
| case 754: /* lsl */ |
| case 753: /* lslv */ |
| value = 753; /* --> lslv. */ |
| break; |
| case 756: /* lsr */ |
| case 755: /* lsrv */ |
| value = 755; /* --> lsrv. */ |
| break; |
| case 758: /* asr */ |
| case 757: /* asrv */ |
| value = 757; /* --> asrv. */ |
| break; |
| case 760: /* ror */ |
| case 759: /* rorv */ |
| value = 759; /* --> rorv. */ |
| break; |
| case 763: /* cmpp */ |
| case 762: /* subps */ |
| value = 762; /* --> subps. */ |
| break; |
| case 776: /* mul */ |
| case 775: /* madd */ |
| value = 775; /* --> madd. */ |
| break; |
| case 778: /* mneg */ |
| case 777: /* msub */ |
| value = 777; /* --> msub. */ |
| break; |
| case 780: /* smull */ |
| case 779: /* smaddl */ |
| value = 779; /* --> smaddl. */ |
| break; |
| case 782: /* smnegl */ |
| case 781: /* smsubl */ |
| value = 781; /* --> smsubl. */ |
| break; |
| case 785: /* umull */ |
| case 784: /* umaddl */ |
| value = 784; /* --> umaddl. */ |
| break; |
| case 787: /* umnegl */ |
| case 786: /* umsubl */ |
| value = 786; /* --> umsubl. */ |
| break; |
| case 799: /* ror */ |
| case 798: /* extr */ |
| value = 798; /* --> extr. */ |
| break; |
| case 1048: /* bic */ |
| case 1047: /* and */ |
| value = 1047; /* --> and. */ |
| break; |
| case 1050: /* mov */ |
| case 1049: /* orr */ |
| value = 1049; /* --> orr. */ |
| break; |
| case 1053: /* tst */ |
| case 1052: /* ands */ |
| value = 1052; /* --> ands. */ |
| break; |
| case 1058: /* uxtw */ |
| case 1057: /* mov */ |
| case 1056: /* orr */ |
| value = 1056; /* --> orr. */ |
| break; |
| case 1060: /* mvn */ |
| case 1059: /* orn */ |
| value = 1059; /* --> orn. */ |
| break; |
| case 1064: /* tst */ |
| case 1063: /* ands */ |
| value = 1063; /* --> ands. */ |
| break; |
| case 1190: /* staddb */ |
| case 1094: /* ldaddb */ |
| value = 1094; /* --> ldaddb. */ |
| break; |
| case 1191: /* staddh */ |
| case 1095: /* ldaddh */ |
| value = 1095; /* --> ldaddh. */ |
| break; |
| case 1192: /* stadd */ |
| case 1096: /* ldadd */ |
| value = 1096; /* --> ldadd. */ |
| break; |
| case 1193: /* staddlb */ |
| case 1098: /* ldaddlb */ |
| value = 1098; /* --> ldaddlb. */ |
| break; |
| case 1194: /* staddlh */ |
| case 1101: /* ldaddlh */ |
| value = 1101; /* --> ldaddlh. */ |
| break; |
| case 1195: /* staddl */ |
| case 1104: /* ldaddl */ |
| value = 1104; /* --> ldaddl. */ |
| break; |
| case 1196: /* stclrb */ |
| case 1106: /* ldclrb */ |
| value = 1106; /* --> ldclrb. */ |
| break; |
| case 1197: /* stclrh */ |
| case 1107: /* ldclrh */ |
| value = 1107; /* --> ldclrh. */ |
| break; |
| case 1198: /* stclr */ |
| case 1108: /* ldclr */ |
| value = 1108; /* --> ldclr. */ |
| break; |
| case 1199: /* stclrlb */ |
| case 1110: /* ldclrlb */ |
| value = 1110; /* --> ldclrlb. */ |
| break; |
| case 1200: /* stclrlh */ |
| case 1113: /* ldclrlh */ |
| value = 1113; /* --> ldclrlh. */ |
| break; |
| case 1201: /* stclrl */ |
| case 1116: /* ldclrl */ |
| value = 1116; /* --> ldclrl. */ |
| break; |
| case 1202: /* steorb */ |
| case 1118: /* ldeorb */ |
| value = 1118; /* --> ldeorb. */ |
| break; |
| case 1203: /* steorh */ |
| case 1119: /* ldeorh */ |
| value = 1119; /* --> ldeorh. */ |
| break; |
| case 1204: /* steor */ |
| case 1120: /* ldeor */ |
| value = 1120; /* --> ldeor. */ |
| break; |
| case 1205: /* steorlb */ |
| case 1122: /* ldeorlb */ |
| value = 1122; /* --> ldeorlb. */ |
| break; |
| case 1206: /* steorlh */ |
| case 1125: /* ldeorlh */ |
| value = 1125; /* --> ldeorlh. */ |
| break; |
| case 1207: /* steorl */ |
| case 1128: /* ldeorl */ |
| value = 1128; /* --> ldeorl. */ |
| break; |
| case 1208: /* stsetb */ |
| case 1130: /* ldsetb */ |
| value = 1130; /* --> ldsetb. */ |
| break; |
| case 1209: /* stseth */ |
| case 1131: /* ldseth */ |
| value = 1131; /* --> ldseth. */ |
| break; |
| case 1210: /* stset */ |
| case 1132: /* ldset */ |
| value = 1132; /* --> ldset. */ |
| break; |
| case 1211: /* stsetlb */ |
| case 1134: /* ldsetlb */ |
| value = 1134; /* --> ldsetlb. */ |
| break; |
| case 1212: /* stsetlh */ |
| case 1137: /* ldsetlh */ |
| value = 1137; /* --> ldsetlh. */ |
| break; |
| case 1213: /* stsetl */ |
| case 1140: /* ldsetl */ |
| value = 1140; /* --> ldsetl. */ |
| break; |
| case 1214: /* stsmaxb */ |
| case 1142: /* ldsmaxb */ |
| value = 1142; /* --> ldsmaxb. */ |
| break; |
| case 1215: /* stsmaxh */ |
| case 1143: /* ldsmaxh */ |
| value = 1143; /* --> ldsmaxh. */ |
| break; |
| case 1216: /* stsmax */ |
| case 1144: /* ldsmax */ |
| value = 1144; /* --> ldsmax. */ |
| break; |
| case 1217: /* stsmaxlb */ |
| case 1146: /* ldsmaxlb */ |
| value = 1146; /* --> ldsmaxlb. */ |
| break; |
| case 1218: /* stsmaxlh */ |
| case 1149: /* ldsmaxlh */ |
| value = 1149; /* --> ldsmaxlh. */ |
| break; |
| case 1219: /* stsmaxl */ |
| case 1152: /* ldsmaxl */ |
| value = 1152; /* --> ldsmaxl. */ |
| break; |
| case 1220: /* stsminb */ |
| case 1154: /* ldsminb */ |
| value = 1154; /* --> ldsminb. */ |
| break; |
| case 1221: /* stsminh */ |
| case 1155: /* ldsminh */ |
| value = 1155; /* --> ldsminh. */ |
| break; |
| case 1222: /* stsmin */ |
| case 1156: /* ldsmin */ |
| value = 1156; /* --> ldsmin. */ |
| break; |
| case 1223: /* stsminlb */ |
| case 1158: /* ldsminlb */ |
| value = 1158; /* --> ldsminlb. */ |
| break; |
| case 1224: /* stsminlh */ |
| case 1161: /* ldsminlh */ |
| value = 1161; /* --> ldsminlh. */ |
| break; |
| case 1225: /* stsminl */ |
| case 1164: /* ldsminl */ |
| value = 1164; /* --> ldsminl. */ |
| break; |
| case 1226: /* stumaxb */ |
| case 1166: /* ldumaxb */ |
| value = 1166; /* --> ldumaxb. */ |
| break; |
| case 1227: /* stumaxh */ |
| case 1167: /* ldumaxh */ |
| value = 1167; /* --> ldumaxh. */ |
| break; |
| case 1228: /* stumax */ |
| case 1168: /* ldumax */ |
| value = 1168; /* --> ldumax. */ |
| break; |
| case 1229: /* stumaxlb */ |
| case 1170: /* ldumaxlb */ |
| value = 1170; /* --> ldumaxlb. */ |
| break; |
| case 1230: /* stumaxlh */ |
| case 1173: /* ldumaxlh */ |
| value = 1173; /* --> ldumaxlh. */ |
| break; |
| case 1231: /* stumaxl */ |
| case 1176: /* ldumaxl */ |
| value = 1176; /* --> ldumaxl. */ |
| break; |
| case 1232: /* stuminb */ |
| case 1178: /* lduminb */ |
| value = 1178; /* --> lduminb. */ |
| break; |
| case 1233: /* stuminh */ |
| case 1179: /* lduminh */ |
| value = 1179; /* --> lduminh. */ |
| break; |
| case 1234: /* stumin */ |
| case 1180: /* ldumin */ |
| value = 1180; /* --> ldumin. */ |
| break; |
| case 1235: /* stuminlb */ |
| case 1182: /* lduminlb */ |
| value = 1182; /* --> lduminlb. */ |
| break; |
| case 1236: /* stuminlh */ |
| case 1185: /* lduminlh */ |
| value = 1185; /* --> lduminlh. */ |
| break; |
| case 1237: /* stuminl */ |
| case 1188: /* lduminl */ |
| value = 1188; /* --> lduminl. */ |
| break; |
| case 1267: /* sttadd */ |
| case 1266: /* ldtadd */ |
| value = 1266; /* --> ldtadd. */ |
| break; |
| case 1271: /* sttaddl */ |
| case 1270: /* ldtaddl */ |
| value = 1270; /* --> ldtaddl. */ |
| break; |
| case 1273: /* sttclr */ |
| case 1272: /* ldtclr */ |
| value = 1272; /* --> ldtclr. */ |
| break; |
| case 1277: /* sttclrl */ |
| case 1276: /* ldtclrl */ |
| value = 1276; /* --> ldtclrl. */ |
| break; |
| case 1279: /* sttset */ |
| case 1278: /* ldtset */ |
| value = 1278; /* --> ldtset. */ |
| break; |
| case 1283: /* sttsetl */ |
| case 1282: /* ldtsetl */ |
| value = 1282; /* --> ldtsetl. */ |
| break; |
| case 1315: /* mov */ |
| case 1314: /* movn */ |
| value = 1314; /* --> movn. */ |
| break; |
| case 1317: /* mov */ |
| case 1316: /* movz */ |
| value = 1316; /* --> movz. */ |
| break; |
| case 3373: /* clrbhb */ |
| case 1398: /* autibsp */ |
| case 1397: /* autibz */ |
| case 1396: /* autiasp */ |
| case 1395: /* autiaz */ |
| case 1394: /* pacibsp */ |
| case 1393: /* pacibz */ |
| case 1392: /* paciasp */ |
| case 1391: /* paciaz */ |
| case 1370: /* gcsb */ |
| case 1350: /* clearbhb */ |
| case 1349: /* tsb */ |
| case 1348: /* psb */ |
| case 1347: /* esb */ |
| case 1346: /* autib1716 */ |
| case 1345: /* autia1716 */ |
| case 1344: /* pacib1716 */ |
| case 1343: /* pacia1716 */ |
| case 1342: /* xpaclri */ |
| case 1341: /* dgh */ |
| case 1340: /* sevl */ |
| case 1339: /* sev */ |
| case 1338: /* wfi */ |
| case 1337: /* wfe */ |
| case 1336: /* yield */ |
| case 1335: /* bti */ |
| case 1334: /* csdb */ |
| case 1333: /* nop */ |
| case 1330: /* stshh */ |
| case 1332: /* hint */ |
| value = 1332; /* --> hint. */ |
| break; |
| case 1356: /* pssbb */ |
| case 1355: /* ssbb */ |
| case 1354: /* dfb */ |
| case 1352: /* dsb */ |
| value = 1352; /* --> dsb. */ |
| break; |
| case 1353: /* dsb */ |
| value = 1353; /* --> dsb. */ |
| break; |
| case 3374: /* trcit */ |
| case 1384: /* brb */ |
| case 1383: /* cosp */ |
| case 1382: /* cpp */ |
| case 1381: /* dvp */ |
| case 1380: /* cfp */ |
| case 1376: /* tlbi */ |
| case 1375: /* ic */ |
| case 1374: /* dc */ |
| case 1373: /* at */ |
| case 1371: /* sys */ |
| value = 1371; /* --> sys. */ |
| break; |
| case 1377: /* tlbip */ |
| case 1372: /* sysp */ |
| value = 1372; /* --> sysp. */ |
| break; |
| case 1378: /* wfet */ |
| value = 1378; /* --> wfet. */ |
| break; |
| case 1379: /* wfit */ |
| value = 1379; /* --> wfit. */ |
| break; |
| case 2184: /* bic */ |
| case 1447: /* and */ |
| value = 1447; /* --> and. */ |
| break; |
| case 1430: /* mov */ |
| case 1449: /* and */ |
| value = 1449; /* --> and. */ |
| break; |
| case 1434: /* movs */ |
| case 1450: /* ands */ |
| value = 1450; /* --> ands. */ |
| break; |
| case 2185: /* cmple */ |
| case 1485: /* cmpge */ |
| value = 1485; /* --> cmpge. */ |
| break; |
| case 2188: /* cmplt */ |
| case 1488: /* cmpgt */ |
| value = 1488; /* --> cmpgt. */ |
| break; |
| case 2186: /* cmplo */ |
| case 1490: /* cmphi */ |
| value = 1490; /* --> cmphi. */ |
| break; |
| case 2187: /* cmpls */ |
| case 1493: /* cmphs */ |
| value = 1493; /* --> cmphs. */ |
| break; |
| case 1427: /* mov */ |
| case 1515: /* cpy */ |
| value = 1515; /* --> cpy. */ |
| break; |
| case 1429: /* mov */ |
| case 1516: /* cpy */ |
| value = 1516; /* --> cpy. */ |
| break; |
| case 2195: /* fmov */ |
| case 1432: /* mov */ |
| case 1517: /* cpy */ |
| value = 1517; /* --> cpy. */ |
| break; |
| case 1421: /* mov */ |
| case 1529: /* dup */ |
| value = 1529; /* --> dup. */ |
| break; |
| case 1424: /* mov */ |
| case 1420: /* mov */ |
| case 1530: /* dup */ |
| value = 1530; /* --> dup. */ |
| break; |
| case 2194: /* fmov */ |
| case 1426: /* mov */ |
| case 1531: /* dup */ |
| value = 1531; /* --> dup. */ |
| break; |
| case 1425: /* mov */ |
| case 1532: /* dupm */ |
| value = 1532; /* --> dupm. */ |
| break; |
| case 2189: /* eon */ |
| case 1534: /* eor */ |
| value = 1534; /* --> eor. */ |
| break; |
| case 1435: /* not */ |
| case 1536: /* eor */ |
| value = 1536; /* --> eor. */ |
| break; |
| case 1436: /* nots */ |
| case 1537: /* eors */ |
| value = 1537; /* --> eors. */ |
| break; |
| case 2190: /* facle */ |
| case 1542: /* facge */ |
| value = 1542; /* --> facge. */ |
| break; |
| case 2191: /* faclt */ |
| case 1543: /* facgt */ |
| value = 1543; /* --> facgt. */ |
| break; |
| case 2192: /* fcmle */ |
| case 1556: /* fcmge */ |
| value = 1556; /* --> fcmge. */ |
| break; |
| case 2193: /* fcmlt */ |
| case 1558: /* fcmgt */ |
| value = 1558; /* --> fcmgt. */ |
| break; |
| case 1418: /* fmov */ |
| case 1564: /* fcpy */ |
| value = 1564; /* --> fcpy. */ |
| break; |
| case 1417: /* fmov */ |
| case 1587: /* fdup */ |
| value = 1587; /* --> fdup. */ |
| break; |
| case 1873: /* ldr */ |
| case 1872: /* ldr */ |
| value = 1872; /* --> ldr. */ |
| break; |
| case 1419: /* mov */ |
| case 1903: /* orr */ |
| value = 1903; /* --> orr. */ |
| break; |
| case 2196: /* orn */ |
| case 1904: /* orr */ |
| value = 1904; /* --> orr. */ |
| break; |
| case 1423: /* mov */ |
| case 1422: /* mov */ |
| case 1906: /* orr */ |
| value = 1906; /* --> orr. */ |
| break; |
| case 1433: /* movs */ |
| case 1907: /* orrs */ |
| value = 1907; /* --> orrs. */ |
| break; |
| case 1910: /* pfalse */ |
| case 1909: /* pfalse */ |
| value = 1909; /* --> pfalse. */ |
| break; |
| case 1428: /* mov */ |
| case 1970: /* sel */ |
| value = 1970; /* --> sel. */ |
| break; |
| case 1431: /* mov */ |
| case 1971: /* sel */ |
| value = 1971; /* --> sel. */ |
| break; |
| case 2092: /* str */ |
| case 2091: /* str */ |
| value = 2091; /* --> str. */ |
| break; |
| case 2529: /* mov */ |
| case 2531: /* mova */ |
| value = 2531; /* --> mova. */ |
| break; |
| case 2530: /* mov */ |
| case 2532: /* mova */ |
| value = 2532; /* --> mova. */ |
| break; |
| case 2550: /* psel */ |
| case 2549: /* psel */ |
| value = 2549; /* --> psel. */ |
| break; |
| case 2755: /* mov */ |
| case 2763: /* mova */ |
| value = 2763; /* --> mova. */ |
| break; |
| case 2756: /* mov */ |
| case 2764: /* mova */ |
| value = 2764; /* --> mova. */ |
| break; |
| case 2757: /* mov */ |
| case 2765: /* mova */ |
| value = 2765; /* --> mova. */ |
| break; |
| case 2758: /* mov */ |
| case 2766: /* mova */ |
| value = 2766; /* --> mova. */ |
| break; |
| case 2759: /* mov */ |
| case 2767: /* mova */ |
| value = 2767; /* --> mova. */ |
| break; |
| case 2760: /* mov */ |
| case 2768: /* mova */ |
| value = 2768; /* --> mova. */ |
| break; |
| case 2761: /* mov */ |
| case 2769: /* mova */ |
| value = 2769; /* --> mova. */ |
| break; |
| case 2762: /* mov */ |
| case 2770: /* mova */ |
| value = 2770; /* --> mova. */ |
| break; |
| default: return NULL; |
| } |
| |
| return aarch64_opcode_table + value; |
| } |
| |
| bool |
| aarch64_insert_operand (const aarch64_operand *self, |
| const aarch64_opnd_info *info, |
| aarch64_insn *code, const aarch64_inst *inst, |
| aarch64_operand_error *errors) |
| { |
| /* Use the index as the key. */ |
| int key = self - aarch64_operands; |
| switch (key) |
| { |
| case 1: |
| case 2: |
| case 3: |
| case 4: |
| case 5: |
| case 7: |
| case 8: |
| case 9: |
| case 10: |
| case 11: |
| case 12: |
| case 13: |
| case 14: |
| case 20: |
| case 21: |
| case 22: |
| case 23: |
| case 25: |
| case 26: |
| case 27: |
| case 28: |
| case 29: |
| case 30: |
| case 31: |
| case 32: |
| case 33: |
| case 34: |
| case 127: |
| case 128: |
| case 129: |
| case 192: |
| case 193: |
| case 194: |
| case 195: |
| case 196: |
| case 197: |
| case 198: |
| case 199: |
| case 200: |
| case 201: |
| case 202: |
| case 203: |
| case 204: |
| case 205: |
| case 221: |
| case 222: |
| case 223: |
| case 224: |
| case 234: |
| case 235: |
| case 236: |
| case 237: |
| case 238: |
| case 249: |
| case 253: |
| case 257: |
| case 258: |
| case 266: |
| case 267: |
| case 268: |
| case 275: |
| case 276: |
| case 277: |
| case 278: |
| case 313: |
| case 317: |
| return aarch64_ins_regno (self, info, code, inst, errors); |
| case 6: |
| case 122: |
| case 123: |
| case 323: |
| case 326: |
| return aarch64_ins_none (self, info, code, inst, errors); |
| case 17: |
| return aarch64_ins_reg_extended (self, info, code, inst, errors); |
| case 18: |
| return aarch64_ins_reg_shifted (self, info, code, inst, errors); |
| case 19: |
| return aarch64_ins_reg_lsl_shifted (self, info, code, inst, errors); |
| case 24: |
| return aarch64_ins_ft (self, info, code, inst, errors); |
| case 35: |
| case 36: |
| case 37: |
| case 38: |
| case 39: |
| case 328: |
| return aarch64_ins_reglane (self, info, code, inst, errors); |
| case 40: |
| case 41: |
| case 42: |
| case 239: |
| case 240: |
| case 243: |
| case 279: |
| case 280: |
| case 295: |
| case 296: |
| case 297: |
| case 298: |
| case 299: |
| case 300: |
| case 301: |
| case 302: |
| case 303: |
| case 304: |
| case 305: |
| case 306: |
| case 307: |
| case 308: |
| case 309: |
| case 310: |
| case 311: |
| case 312: |
| case 314: |
| case 315: |
| case 316: |
| case 318: |
| case 319: |
| case 320: |
| return aarch64_ins_simple_index (self, info, code, inst, errors); |
| case 43: |
| return aarch64_ins_reglist (self, info, code, inst, errors); |
| case 44: |
| return aarch64_ins_ldst_reglist (self, info, code, inst, errors); |
| case 45: |
| return aarch64_ins_ldst_reglist_r (self, info, code, inst, errors); |
| case 46: |
| return aarch64_ins_lut_reglist (self, info, code, inst, errors); |
| case 47: |
| return aarch64_ins_ldst_elemlist (self, info, code, inst, errors); |
| case 48: |
| case 49: |
| case 50: |
| case 51: |
| case 61: |
| case 62: |
| case 63: |
| case 64: |
| case 65: |
| case 66: |
| case 67: |
| case 68: |
| case 69: |
| case 70: |
| case 71: |
| case 72: |
| case 73: |
| case 74: |
| case 75: |
| case 76: |
| case 77: |
| case 78: |
| case 79: |
| case 91: |
| case 92: |
| case 93: |
| case 94: |
| case 95: |
| case 121: |
| case 126: |
| case 189: |
| case 191: |
| case 212: |
| case 213: |
| case 214: |
| case 215: |
| case 216: |
| case 217: |
| case 218: |
| case 219: |
| case 220: |
| case 281: |
| case 321: |
| case 322: |
| case 324: |
| case 325: |
| case 327: |
| case 332: |
| case 333: |
| return aarch64_ins_imm (self, info, code, inst, errors); |
| case 52: |
| case 53: |
| return aarch64_ins_advsimd_imm_shift (self, info, code, inst, errors); |
| case 54: |
| case 55: |
| case 56: |
| return aarch64_ins_advsimd_imm_modified (self, info, code, inst, errors); |
| case 60: |
| case 179: |
| return aarch64_ins_fpimm (self, info, code, inst, errors); |
| case 80: |
| case 187: |
| return aarch64_ins_limm (self, info, code, inst, errors); |
| case 81: |
| return aarch64_ins_aimm (self, info, code, inst, errors); |
| case 82: |
| return aarch64_ins_imm_half (self, info, code, inst, errors); |
| case 83: |
| return aarch64_ins_fbits (self, info, code, inst, errors); |
| case 85: |
| case 86: |
| case 184: |
| return aarch64_ins_imm_rotate2 (self, info, code, inst, errors); |
| case 87: |
| case 183: |
| case 185: |
| return aarch64_ins_imm_rotate1 (self, info, code, inst, errors); |
| case 88: |
| case 89: |
| return aarch64_ins_cond (self, info, code, inst, errors); |
| case 96: |
| case 105: |
| return aarch64_ins_addr_simple (self, info, code, inst, errors); |
| case 97: |
| return aarch64_ins_addr_regoff (self, info, code, inst, errors); |
| case 98: |
| case 99: |
| case 100: |
| case 102: |
| case 104: |
| return aarch64_ins_addr_simm (self, info, code, inst, errors); |
| case 101: |
| return aarch64_ins_addr_simm10 (self, info, code, inst, errors); |
| case 103: |
| return aarch64_ins_addr_uimm12 (self, info, code, inst, errors); |
| case 106: |
| return aarch64_ins_addr_offset (self, info, code, inst, errors); |
| case 107: |
| return aarch64_ins_simd_addr_post (self, info, code, inst, errors); |
| case 108: |
| case 109: |
| return aarch64_ins_sysreg (self, info, code, inst, errors); |
| case 110: |
| return aarch64_ins_pstatefield (self, info, code, inst, errors); |
| case 111: |
| case 112: |
| case 113: |
| case 114: |
| case 115: |
| case 116: |
| return aarch64_ins_sysins_op (self, info, code, inst, errors); |
| case 117: |
| case 119: |
| return aarch64_ins_barrier (self, info, code, inst, errors); |
| case 118: |
| return aarch64_ins_barrier_dsb_nxs (self, info, code, inst, errors); |
| case 120: |
| return aarch64_ins_prfop (self, info, code, inst, errors); |
| case 124: |
| case 125: |
| return aarch64_ins_hint (self, info, code, inst, errors); |
| case 130: |
| case 131: |
| return aarch64_ins_sve_addr_ri_s4 (self, info, code, inst, errors); |
| case 132: |
| case 133: |
| case 134: |
| case 135: |
| return aarch64_ins_sve_addr_ri_s4xvl (self, info, code, inst, errors); |
| case 136: |
| return aarch64_ins_sve_addr_ri_s6xvl (self, info, code, inst, errors); |
| case 137: |
| return aarch64_ins_sve_addr_ri_s9xvl (self, info, code, inst, errors); |
| case 138: |
| case 139: |
| case 140: |
| case 141: |
| return aarch64_ins_sve_addr_ri_u6 (self, info, code, inst, errors); |
| case 142: |
| case 143: |
| case 144: |
| case 145: |
| case 146: |
| case 147: |
| case 148: |
| case 149: |
| case 150: |
| case 151: |
| case 152: |
| case 153: |
| case 154: |
| case 155: |
| case 156: |
| case 157: |
| case 158: |
| case 159: |
| case 160: |
| case 161: |
| return aarch64_ins_sve_addr_rr_lsl (self, info, code, inst, errors); |
| case 162: |
| case 163: |
| case 164: |
| case 165: |
| case 166: |
| case 167: |
| case 168: |
| case 169: |
| return aarch64_ins_sve_addr_rz_xtw (self, info, code, inst, errors); |
| case 170: |
| case 171: |
| case 172: |
| case 173: |
| return aarch64_ins_sve_addr_zi_u5 (self, info, code, inst, errors); |
| case 174: |
| return aarch64_ins_sve_addr_zz_lsl (self, info, code, inst, errors); |
| case 175: |
| return aarch64_ins_sve_addr_zz_sxtw (self, info, code, inst, errors); |
| case 176: |
| return aarch64_ins_sve_addr_zz_uxtw (self, info, code, inst, errors); |
| case 177: |
| return aarch64_ins_sve_aimm (self, info, code, inst, errors); |
| case 178: |
| return aarch64_ins_sve_asimm (self, info, code, inst, errors); |
| case 180: |
| return aarch64_ins_sve_float_half_one (self, info, code, inst, errors); |
| case 181: |
| return aarch64_ins_sve_float_half_two (self, info, code, inst, errors); |
| case 182: |
| return aarch64_ins_sve_float_zero_one (self, info, code, inst, errors); |
| case 186: |
| return aarch64_ins_inv_limm (self, info, code, inst, errors); |
| case 188: |
| return aarch64_ins_sve_limm_mov (self, info, code, inst, errors); |
| case 190: |
| return aarch64_ins_sve_scale (self, info, code, inst, errors); |
| case 206: |
| case 207: |
| case 208: |
| return aarch64_ins_sve_shlimm (self, info, code, inst, errors); |
| case 209: |
| case 210: |
| case 211: |
| case 294: |
| return aarch64_ins_sve_shrimm (self, info, code, inst, errors); |
| case 225: |
| case 226: |
| case 227: |
| case 228: |
| return aarch64_ins_sme_za_vrs1 (self, info, code, inst, errors); |
| case 229: |
| case 230: |
| case 231: |
| case 232: |
| return aarch64_ins_sme_za_vrs2 (self, info, code, inst, errors); |
| case 233: |
| return aarch64_ins_sme_za_tile_to_vec (self, info, code, inst, errors); |
| case 241: |
| case 242: |
| case 244: |
| case 245: |
| case 246: |
| case 247: |
| case 248: |
| return aarch64_ins_sve_quad_index (self, info, code, inst, errors); |
| case 250: |
| case 251: |
| return aarch64_ins_sve_index (self, info, code, inst, errors); |
| case 252: |
| case 254: |
| case 274: |
| return aarch64_ins_sve_reglist (self, info, code, inst, errors); |
| case 255: |
| case 256: |
| case 259: |
| case 260: |
| case 261: |
| case 262: |
| case 263: |
| case 273: |
| return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors); |
| case 264: |
| case 265: |
| return aarch64_ins_sve_strided_reglist (self, info, code, inst, errors); |
| case 269: |
| case 271: |
| case 282: |
| return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors); |
| case 270: |
| case 272: |
| return aarch64_ins_sme_za_hv_tiles_range (self, info, code, inst, errors); |
| case 283: |
| case 284: |
| case 285: |
| case 286: |
| case 287: |
| case 288: |
| case 289: |
| return aarch64_ins_sme_za_array (self, info, code, inst, errors); |
| case 290: |
| return aarch64_ins_sme_addr_ri_u4xvl (self, info, code, inst, errors); |
| case 291: |
| return aarch64_ins_sme_sm_za (self, info, code, inst, errors); |
| case 292: |
| return aarch64_ins_sme_pred_reg_with_index (self, info, code, inst, errors); |
| case 293: |
| return aarch64_ins_plain_shrimm (self, info, code, inst, errors); |
| case 329: |
| case 330: |
| case 331: |
| return aarch64_ins_x0_to_x30 (self, info, code, inst, errors); |
| case 334: |
| case 335: |
| case 336: |
| case 337: |
| return aarch64_ins_rcpc3_addr_opt_offset (self, info, code, inst, errors); |
| case 338: |
| return aarch64_ins_rcpc3_addr_offset (self, info, code, inst, errors); |
| default: assert (0); abort (); |
| } |
| } |