[AArch64] Add ARMv8.3 single source PAC instructions
Add support for ARMv8.3 pointer authentication instructions that are encoded as single source data processing instructions. opcodes/ 2016-11-08 Szabolcs Nagy <szabolcs.nagy@arm.com> * aarch64-tbl.h (arch64_opcode_table): Add pacia, pacib, pacda, pacdb, autia, autib, autda, autdb, paciza, pacizb, pacdza, pacdzb, autiza, autizb, autdza, autdzb, xpaci, xpacd. * aarch64-asm-2.c: Regenerate. * aarch64-dis-2.c: Regenerate. * aarch64-opc-2.c: Regenerate. gas/testsuite/ 2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com> * testsuite/gas/aarch64/pac.s: New. * testsuite/gas/aarch64/pac.d: New.
This commit is contained in:
parent
b0bfa7b5b8
commit
a2cfc830e7
|
@ -1,3 +1,8 @@
|
|||
2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
* testsuite/gas/aarch64/pac.s: New.
|
||||
* testsuite/gas/aarch64/pac.d: New.
|
||||
|
||||
2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
* testsuite/gas/aarch64/sysreg-3.s: New.
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
#objdump: -dr
|
||||
#as: -march=armv8.3-a
|
||||
|
||||
.*: file .*
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
0000000000000000 <.*>:
|
||||
0: dac10083 pacia x3, x4
|
||||
4: dac103e5 pacia x5, sp
|
||||
8: dac10483 pacib x3, x4
|
||||
c: dac107e5 pacib x5, sp
|
||||
10: dac10883 pacda x3, x4
|
||||
14: dac10be5 pacda x5, sp
|
||||
18: dac10c83 pacdb x3, x4
|
||||
1c: dac10fe5 pacdb x5, sp
|
||||
20: dac11083 autia x3, x4
|
||||
24: dac113e5 autia x5, sp
|
||||
28: dac11483 autib x3, x4
|
||||
2c: dac117e5 autib x5, sp
|
||||
30: dac11883 autda x3, x4
|
||||
34: dac11be5 autda x5, sp
|
||||
38: dac11c83 autdb x3, x4
|
||||
3c: dac11fe5 autdb x5, sp
|
||||
40: dac123e5 paciza x5
|
||||
44: dac127e5 pacizb x5
|
||||
48: dac12be5 pacdza x5
|
||||
4c: dac12fe5 pacdzb x5
|
||||
50: dac133e5 autiza x5
|
||||
54: dac137e5 autizb x5
|
||||
58: dac13be5 autdza x5
|
||||
5c: dac13fe5 autdzb x5
|
||||
60: dac143e5 xpaci x5
|
||||
64: dac147e5 xpacd x5
|
|
@ -0,0 +1,34 @@
|
|||
/* ARMv8.3 Pointer authentication instructions. */
|
||||
.text
|
||||
|
||||
/* Basic instructions. */
|
||||
pacia x3, x4
|
||||
pacia x5, sp
|
||||
pacib x3, x4
|
||||
pacib x5, sp
|
||||
pacda x3, x4
|
||||
pacda x5, sp
|
||||
pacdb x3, x4
|
||||
pacdb x5, sp
|
||||
|
||||
autia x3, x4
|
||||
autia x5, sp
|
||||
autib x3, x4
|
||||
autib x5, sp
|
||||
autda x3, x4
|
||||
autda x5, sp
|
||||
autdb x3, x4
|
||||
autdb x5, sp
|
||||
|
||||
paciza x5
|
||||
pacizb x5
|
||||
pacdza x5
|
||||
pacdzb x5
|
||||
|
||||
autiza x5
|
||||
autizb x5
|
||||
autdza x5
|
||||
autdzb x5
|
||||
|
||||
xpaci x5
|
||||
xpacd x5
|
|
@ -1,3 +1,12 @@
|
|||
2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
* aarch64-tbl.h (arch64_opcode_table): Add pacia, pacib, pacda, pacdb, autia,
|
||||
autib, autda, autdb, paciza, pacizb, pacdza, pacdzb, autiza, autizb, autdza,
|
||||
autdzb, xpaci, xpacd.
|
||||
* aarch64-asm-2.c: Regenerate.
|
||||
* aarch64-dis-2.c: Regenerate.
|
||||
* aarch64-opc-2.c: Regenerate.
|
||||
|
||||
2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
* aarch64-opc.c (aarch64_sys_regs): Add apiakeylo_el1, apiakeyhi_el1,
|
||||
|
|
|
@ -153,424 +153,424 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
|
|||
case 668: /* rev64 */
|
||||
value = 667; /* --> rev. */
|
||||
break;
|
||||
case 675: /* lsl */
|
||||
case 674: /* lslv */
|
||||
value = 674; /* --> lslv. */
|
||||
break;
|
||||
case 677: /* lsr */
|
||||
case 676: /* lsrv */
|
||||
value = 676; /* --> lsrv. */
|
||||
break;
|
||||
case 679: /* asr */
|
||||
case 678: /* asrv */
|
||||
value = 678; /* --> asrv. */
|
||||
break;
|
||||
case 681: /* ror */
|
||||
case 680: /* rorv */
|
||||
value = 680; /* --> rorv. */
|
||||
break;
|
||||
case 691: /* mul */
|
||||
case 690: /* madd */
|
||||
value = 690; /* --> madd. */
|
||||
break;
|
||||
case 693: /* mneg */
|
||||
case 692: /* msub */
|
||||
value = 692; /* --> msub. */
|
||||
break;
|
||||
case 695: /* smull */
|
||||
case 694: /* smaddl */
|
||||
value = 694; /* --> smaddl. */
|
||||
break;
|
||||
case 697: /* smnegl */
|
||||
case 696: /* smsubl */
|
||||
value = 696; /* --> smsubl. */
|
||||
break;
|
||||
case 700: /* umull */
|
||||
case 699: /* umaddl */
|
||||
value = 699; /* --> umaddl. */
|
||||
break;
|
||||
case 702: /* umnegl */
|
||||
case 701: /* umsubl */
|
||||
value = 701; /* --> umsubl. */
|
||||
break;
|
||||
case 713: /* ror */
|
||||
case 712: /* extr */
|
||||
value = 712; /* --> extr. */
|
||||
break;
|
||||
case 920: /* bic */
|
||||
case 919: /* and */
|
||||
value = 919; /* --> and. */
|
||||
break;
|
||||
case 922: /* mov */
|
||||
case 921: /* orr */
|
||||
value = 921; /* --> orr. */
|
||||
break;
|
||||
case 925: /* tst */
|
||||
case 924: /* ands */
|
||||
value = 924; /* --> ands. */
|
||||
break;
|
||||
case 930: /* uxtw */
|
||||
case 929: /* mov */
|
||||
case 928: /* orr */
|
||||
value = 928; /* --> orr. */
|
||||
case 693: /* lsl */
|
||||
case 692: /* lslv */
|
||||
value = 692; /* --> lslv. */
|
||||
break;
|
||||
case 695: /* lsr */
|
||||
case 694: /* lsrv */
|
||||
value = 694; /* --> lsrv. */
|
||||
break;
|
||||
case 697: /* asr */
|
||||
case 696: /* asrv */
|
||||
value = 696; /* --> asrv. */
|
||||
break;
|
||||
case 699: /* ror */
|
||||
case 698: /* rorv */
|
||||
value = 698; /* --> rorv. */
|
||||
break;
|
||||
case 709: /* mul */
|
||||
case 708: /* madd */
|
||||
value = 708; /* --> madd. */
|
||||
break;
|
||||
case 711: /* mneg */
|
||||
case 710: /* msub */
|
||||
value = 710; /* --> msub. */
|
||||
break;
|
||||
case 713: /* smull */
|
||||
case 712: /* smaddl */
|
||||
value = 712; /* --> smaddl. */
|
||||
break;
|
||||
case 715: /* smnegl */
|
||||
case 714: /* smsubl */
|
||||
value = 714; /* --> smsubl. */
|
||||
break;
|
||||
case 718: /* umull */
|
||||
case 717: /* umaddl */
|
||||
value = 717; /* --> umaddl. */
|
||||
break;
|
||||
case 720: /* umnegl */
|
||||
case 719: /* umsubl */
|
||||
value = 719; /* --> umsubl. */
|
||||
break;
|
||||
case 731: /* ror */
|
||||
case 730: /* extr */
|
||||
value = 730; /* --> extr. */
|
||||
break;
|
||||
case 938: /* bic */
|
||||
case 937: /* and */
|
||||
value = 937; /* --> and. */
|
||||
break;
|
||||
case 940: /* mov */
|
||||
case 939: /* orr */
|
||||
value = 939; /* --> orr. */
|
||||
break;
|
||||
case 943: /* tst */
|
||||
case 942: /* ands */
|
||||
value = 942; /* --> ands. */
|
||||
break;
|
||||
case 948: /* uxtw */
|
||||
case 947: /* mov */
|
||||
case 946: /* orr */
|
||||
value = 946; /* --> orr. */
|
||||
break;
|
||||
case 932: /* mvn */
|
||||
case 931: /* orn */
|
||||
value = 931; /* --> orn. */
|
||||
case 950: /* mvn */
|
||||
case 949: /* orn */
|
||||
value = 949; /* --> orn. */
|
||||
break;
|
||||
case 936: /* tst */
|
||||
case 935: /* ands */
|
||||
value = 935; /* --> ands. */
|
||||
case 954: /* tst */
|
||||
case 953: /* ands */
|
||||
value = 953; /* --> ands. */
|
||||
break;
|
||||
case 1062: /* staddb */
|
||||
case 966: /* ldaddb */
|
||||
value = 966; /* --> ldaddb. */
|
||||
case 1080: /* staddb */
|
||||
case 984: /* ldaddb */
|
||||
value = 984; /* --> ldaddb. */
|
||||
break;
|
||||
case 1063: /* staddh */
|
||||
case 967: /* ldaddh */
|
||||
value = 967; /* --> ldaddh. */
|
||||
case 1081: /* staddh */
|
||||
case 985: /* ldaddh */
|
||||
value = 985; /* --> ldaddh. */
|
||||
break;
|
||||
case 1064: /* stadd */
|
||||
case 968: /* ldadd */
|
||||
value = 968; /* --> ldadd. */
|
||||
case 1082: /* stadd */
|
||||
case 986: /* ldadd */
|
||||
value = 986; /* --> ldadd. */
|
||||
break;
|
||||
case 1065: /* staddlb */
|
||||
case 970: /* ldaddlb */
|
||||
value = 970; /* --> ldaddlb. */
|
||||
case 1083: /* staddlb */
|
||||
case 988: /* ldaddlb */
|
||||
value = 988; /* --> ldaddlb. */
|
||||
break;
|
||||
case 1066: /* staddlh */
|
||||
case 973: /* ldaddlh */
|
||||
value = 973; /* --> ldaddlh. */
|
||||
case 1084: /* staddlh */
|
||||
case 991: /* ldaddlh */
|
||||
value = 991; /* --> ldaddlh. */
|
||||
break;
|
||||
case 1067: /* staddl */
|
||||
case 976: /* ldaddl */
|
||||
value = 976; /* --> ldaddl. */
|
||||
case 1085: /* staddl */
|
||||
case 994: /* ldaddl */
|
||||
value = 994; /* --> ldaddl. */
|
||||
break;
|
||||
case 1068: /* stclrb */
|
||||
case 978: /* ldclrb */
|
||||
value = 978; /* --> ldclrb. */
|
||||
case 1086: /* stclrb */
|
||||
case 996: /* ldclrb */
|
||||
value = 996; /* --> ldclrb. */
|
||||
break;
|
||||
case 1069: /* stclrh */
|
||||
case 979: /* ldclrh */
|
||||
value = 979; /* --> ldclrh. */
|
||||
case 1087: /* stclrh */
|
||||
case 997: /* ldclrh */
|
||||
value = 997; /* --> ldclrh. */
|
||||
break;
|
||||
case 1070: /* stclr */
|
||||
case 980: /* ldclr */
|
||||
value = 980; /* --> ldclr. */
|
||||
case 1088: /* stclr */
|
||||
case 998: /* ldclr */
|
||||
value = 998; /* --> ldclr. */
|
||||
break;
|
||||
case 1071: /* stclrlb */
|
||||
case 982: /* ldclrlb */
|
||||
value = 982; /* --> ldclrlb. */
|
||||
case 1089: /* stclrlb */
|
||||
case 1000: /* ldclrlb */
|
||||
value = 1000; /* --> ldclrlb. */
|
||||
break;
|
||||
case 1072: /* stclrlh */
|
||||
case 985: /* ldclrlh */
|
||||
value = 985; /* --> ldclrlh. */
|
||||
case 1090: /* stclrlh */
|
||||
case 1003: /* ldclrlh */
|
||||
value = 1003; /* --> ldclrlh. */
|
||||
break;
|
||||
case 1073: /* stclrl */
|
||||
case 988: /* ldclrl */
|
||||
value = 988; /* --> ldclrl. */
|
||||
case 1091: /* stclrl */
|
||||
case 1006: /* ldclrl */
|
||||
value = 1006; /* --> ldclrl. */
|
||||
break;
|
||||
case 1074: /* steorb */
|
||||
case 990: /* ldeorb */
|
||||
value = 990; /* --> ldeorb. */
|
||||
case 1092: /* steorb */
|
||||
case 1008: /* ldeorb */
|
||||
value = 1008; /* --> ldeorb. */
|
||||
break;
|
||||
case 1075: /* steorh */
|
||||
case 991: /* ldeorh */
|
||||
value = 991; /* --> ldeorh. */
|
||||
case 1093: /* steorh */
|
||||
case 1009: /* ldeorh */
|
||||
value = 1009; /* --> ldeorh. */
|
||||
break;
|
||||
case 1076: /* steor */
|
||||
case 992: /* ldeor */
|
||||
value = 992; /* --> ldeor. */
|
||||
case 1094: /* steor */
|
||||
case 1010: /* ldeor */
|
||||
value = 1010; /* --> ldeor. */
|
||||
break;
|
||||
case 1077: /* steorlb */
|
||||
case 994: /* ldeorlb */
|
||||
value = 994; /* --> ldeorlb. */
|
||||
case 1095: /* steorlb */
|
||||
case 1012: /* ldeorlb */
|
||||
value = 1012; /* --> ldeorlb. */
|
||||
break;
|
||||
case 1078: /* steorlh */
|
||||
case 997: /* ldeorlh */
|
||||
value = 997; /* --> ldeorlh. */
|
||||
case 1096: /* steorlh */
|
||||
case 1015: /* ldeorlh */
|
||||
value = 1015; /* --> ldeorlh. */
|
||||
break;
|
||||
case 1079: /* steorl */
|
||||
case 1000: /* ldeorl */
|
||||
value = 1000; /* --> ldeorl. */
|
||||
case 1097: /* steorl */
|
||||
case 1018: /* ldeorl */
|
||||
value = 1018; /* --> ldeorl. */
|
||||
break;
|
||||
case 1080: /* stsetb */
|
||||
case 1002: /* ldsetb */
|
||||
value = 1002; /* --> ldsetb. */
|
||||
case 1098: /* stsetb */
|
||||
case 1020: /* ldsetb */
|
||||
value = 1020; /* --> ldsetb. */
|
||||
break;
|
||||
case 1081: /* stseth */
|
||||
case 1003: /* ldseth */
|
||||
value = 1003; /* --> ldseth. */
|
||||
case 1099: /* stseth */
|
||||
case 1021: /* ldseth */
|
||||
value = 1021; /* --> ldseth. */
|
||||
break;
|
||||
case 1082: /* stset */
|
||||
case 1004: /* ldset */
|
||||
value = 1004; /* --> ldset. */
|
||||
case 1100: /* stset */
|
||||
case 1022: /* ldset */
|
||||
value = 1022; /* --> ldset. */
|
||||
break;
|
||||
case 1083: /* stsetlb */
|
||||
case 1006: /* ldsetlb */
|
||||
value = 1006; /* --> ldsetlb. */
|
||||
case 1101: /* stsetlb */
|
||||
case 1024: /* ldsetlb */
|
||||
value = 1024; /* --> ldsetlb. */
|
||||
break;
|
||||
case 1084: /* stsetlh */
|
||||
case 1009: /* ldsetlh */
|
||||
value = 1009; /* --> ldsetlh. */
|
||||
case 1102: /* stsetlh */
|
||||
case 1027: /* ldsetlh */
|
||||
value = 1027; /* --> ldsetlh. */
|
||||
break;
|
||||
case 1085: /* stsetl */
|
||||
case 1012: /* ldsetl */
|
||||
value = 1012; /* --> ldsetl. */
|
||||
case 1103: /* stsetl */
|
||||
case 1030: /* ldsetl */
|
||||
value = 1030; /* --> ldsetl. */
|
||||
break;
|
||||
case 1086: /* stsmaxb */
|
||||
case 1014: /* ldsmaxb */
|
||||
value = 1014; /* --> ldsmaxb. */
|
||||
case 1104: /* stsmaxb */
|
||||
case 1032: /* ldsmaxb */
|
||||
value = 1032; /* --> ldsmaxb. */
|
||||
break;
|
||||
case 1087: /* stsmaxh */
|
||||
case 1015: /* ldsmaxh */
|
||||
value = 1015; /* --> ldsmaxh. */
|
||||
case 1105: /* stsmaxh */
|
||||
case 1033: /* ldsmaxh */
|
||||
value = 1033; /* --> ldsmaxh. */
|
||||
break;
|
||||
case 1088: /* stsmax */
|
||||
case 1016: /* ldsmax */
|
||||
value = 1016; /* --> ldsmax. */
|
||||
break;
|
||||
case 1089: /* stsmaxlb */
|
||||
case 1018: /* ldsmaxlb */
|
||||
value = 1018; /* --> ldsmaxlb. */
|
||||
break;
|
||||
case 1090: /* stsmaxlh */
|
||||
case 1021: /* ldsmaxlh */
|
||||
value = 1021; /* --> ldsmaxlh. */
|
||||
break;
|
||||
case 1091: /* stsmaxl */
|
||||
case 1024: /* ldsmaxl */
|
||||
value = 1024; /* --> ldsmaxl. */
|
||||
break;
|
||||
case 1092: /* stsminb */
|
||||
case 1026: /* ldsminb */
|
||||
value = 1026; /* --> ldsminb. */
|
||||
break;
|
||||
case 1093: /* stsminh */
|
||||
case 1027: /* ldsminh */
|
||||
value = 1027; /* --> ldsminh. */
|
||||
break;
|
||||
case 1094: /* stsmin */
|
||||
case 1028: /* ldsmin */
|
||||
value = 1028; /* --> ldsmin. */
|
||||
break;
|
||||
case 1095: /* stsminlb */
|
||||
case 1030: /* ldsminlb */
|
||||
value = 1030; /* --> ldsminlb. */
|
||||
break;
|
||||
case 1096: /* stsminlh */
|
||||
case 1033: /* ldsminlh */
|
||||
value = 1033; /* --> ldsminlh. */
|
||||
break;
|
||||
case 1097: /* stsminl */
|
||||
case 1036: /* ldsminl */
|
||||
value = 1036; /* --> ldsminl. */
|
||||
break;
|
||||
case 1098: /* stumaxb */
|
||||
case 1038: /* ldumaxb */
|
||||
value = 1038; /* --> ldumaxb. */
|
||||
break;
|
||||
case 1099: /* stumaxh */
|
||||
case 1039: /* ldumaxh */
|
||||
value = 1039; /* --> ldumaxh. */
|
||||
break;
|
||||
case 1100: /* stumax */
|
||||
case 1040: /* ldumax */
|
||||
value = 1040; /* --> ldumax. */
|
||||
break;
|
||||
case 1101: /* stumaxlb */
|
||||
case 1042: /* ldumaxlb */
|
||||
value = 1042; /* --> ldumaxlb. */
|
||||
break;
|
||||
case 1102: /* stumaxlh */
|
||||
case 1045: /* ldumaxlh */
|
||||
value = 1045; /* --> ldumaxlh. */
|
||||
break;
|
||||
case 1103: /* stumaxl */
|
||||
case 1048: /* ldumaxl */
|
||||
value = 1048; /* --> ldumaxl. */
|
||||
break;
|
||||
case 1104: /* stuminb */
|
||||
case 1050: /* lduminb */
|
||||
value = 1050; /* --> lduminb. */
|
||||
break;
|
||||
case 1105: /* stuminh */
|
||||
case 1051: /* lduminh */
|
||||
value = 1051; /* --> lduminh. */
|
||||
break;
|
||||
case 1106: /* stumin */
|
||||
case 1052: /* ldumin */
|
||||
value = 1052; /* --> ldumin. */
|
||||
break;
|
||||
case 1107: /* stuminlb */
|
||||
case 1054: /* lduminlb */
|
||||
value = 1054; /* --> lduminlb. */
|
||||
break;
|
||||
case 1108: /* stuminlh */
|
||||
case 1057: /* lduminlh */
|
||||
value = 1057; /* --> lduminlh. */
|
||||
break;
|
||||
case 1109: /* stuminl */
|
||||
case 1060: /* lduminl */
|
||||
value = 1060; /* --> lduminl. */
|
||||
break;
|
||||
case 1111: /* mov */
|
||||
case 1110: /* movn */
|
||||
value = 1110; /* --> movn. */
|
||||
break;
|
||||
case 1113: /* mov */
|
||||
case 1112: /* movz */
|
||||
value = 1112; /* --> movz. */
|
||||
break;
|
||||
case 1151: /* autibsp */
|
||||
case 1150: /* autibz */
|
||||
case 1149: /* autiasp */
|
||||
case 1148: /* autiaz */
|
||||
case 1147: /* pacibsp */
|
||||
case 1146: /* pacibz */
|
||||
case 1145: /* paciasp */
|
||||
case 1144: /* paciaz */
|
||||
case 1131: /* psb */
|
||||
case 1130: /* esb */
|
||||
case 1129: /* autib1716 */
|
||||
case 1128: /* autia1716 */
|
||||
case 1127: /* pacib1716 */
|
||||
case 1126: /* pacia1716 */
|
||||
case 1125: /* xpaclri */
|
||||
case 1124: /* sevl */
|
||||
case 1123: /* sev */
|
||||
case 1122: /* wfi */
|
||||
case 1121: /* wfe */
|
||||
case 1120: /* yield */
|
||||
case 1119: /* nop */
|
||||
case 1118: /* hint */
|
||||
value = 1118; /* --> hint. */
|
||||
break;
|
||||
case 1140: /* tlbi */
|
||||
case 1139: /* ic */
|
||||
case 1138: /* dc */
|
||||
case 1137: /* at */
|
||||
case 1136: /* sys */
|
||||
value = 1136; /* --> sys. */
|
||||
break;
|
||||
case 1894: /* bic */
|
||||
case 1199: /* and */
|
||||
value = 1199; /* --> and. */
|
||||
break;
|
||||
case 1182: /* mov */
|
||||
case 1201: /* and */
|
||||
value = 1201; /* --> and. */
|
||||
break;
|
||||
case 1186: /* movs */
|
||||
case 1202: /* ands */
|
||||
value = 1202; /* --> ands. */
|
||||
break;
|
||||
case 1895: /* cmple */
|
||||
case 1237: /* cmpge */
|
||||
value = 1237; /* --> cmpge. */
|
||||
break;
|
||||
case 1898: /* cmplt */
|
||||
case 1240: /* cmpgt */
|
||||
value = 1240; /* --> cmpgt. */
|
||||
break;
|
||||
case 1896: /* cmplo */
|
||||
case 1242: /* cmphi */
|
||||
value = 1242; /* --> cmphi. */
|
||||
break;
|
||||
case 1897: /* cmpls */
|
||||
case 1245: /* cmphs */
|
||||
value = 1245; /* --> cmphs. */
|
||||
break;
|
||||
case 1179: /* mov */
|
||||
case 1267: /* cpy */
|
||||
value = 1267; /* --> cpy. */
|
||||
break;
|
||||
case 1181: /* mov */
|
||||
case 1268: /* cpy */
|
||||
value = 1268; /* --> cpy. */
|
||||
break;
|
||||
case 1905: /* fmov */
|
||||
case 1184: /* mov */
|
||||
case 1269: /* cpy */
|
||||
value = 1269; /* --> cpy. */
|
||||
break;
|
||||
case 1174: /* mov */
|
||||
case 1281: /* dup */
|
||||
value = 1281; /* --> dup. */
|
||||
break;
|
||||
case 1176: /* mov */
|
||||
case 1173: /* mov */
|
||||
case 1282: /* dup */
|
||||
value = 1282; /* --> dup. */
|
||||
break;
|
||||
case 1904: /* fmov */
|
||||
case 1178: /* mov */
|
||||
case 1283: /* dup */
|
||||
value = 1283; /* --> dup. */
|
||||
break;
|
||||
case 1177: /* mov */
|
||||
case 1284: /* dupm */
|
||||
value = 1284; /* --> dupm. */
|
||||
break;
|
||||
case 1899: /* eon */
|
||||
case 1286: /* eor */
|
||||
value = 1286; /* --> eor. */
|
||||
break;
|
||||
case 1187: /* not */
|
||||
case 1288: /* eor */
|
||||
value = 1288; /* --> eor. */
|
||||
break;
|
||||
case 1188: /* nots */
|
||||
case 1289: /* eors */
|
||||
value = 1289; /* --> eors. */
|
||||
break;
|
||||
case 1900: /* facle */
|
||||
case 1294: /* facge */
|
||||
value = 1294; /* --> facge. */
|
||||
break;
|
||||
case 1901: /* faclt */
|
||||
case 1295: /* facgt */
|
||||
value = 1295; /* --> facgt. */
|
||||
break;
|
||||
case 1902: /* fcmle */
|
||||
case 1304: /* fcmge */
|
||||
value = 1304; /* --> fcmge. */
|
||||
break;
|
||||
case 1903: /* fcmlt */
|
||||
case 1306: /* fcmgt */
|
||||
value = 1306; /* --> fcmgt. */
|
||||
break;
|
||||
case 1171: /* fmov */
|
||||
case 1312: /* fcpy */
|
||||
value = 1312; /* --> fcpy. */
|
||||
break;
|
||||
case 1170: /* fmov */
|
||||
case 1329: /* fdup */
|
||||
value = 1329; /* --> fdup. */
|
||||
break;
|
||||
case 1172: /* mov */
|
||||
case 1627: /* orr */
|
||||
value = 1627; /* --> orr. */
|
||||
break;
|
||||
case 1906: /* orn */
|
||||
case 1628: /* orr */
|
||||
value = 1628; /* --> orr. */
|
||||
break;
|
||||
case 1175: /* mov */
|
||||
case 1630: /* orr */
|
||||
value = 1630; /* --> orr. */
|
||||
break;
|
||||
case 1185: /* movs */
|
||||
case 1631: /* orrs */
|
||||
value = 1631; /* --> orrs. */
|
||||
break;
|
||||
case 1180: /* mov */
|
||||
case 1687: /* sel */
|
||||
value = 1687; /* --> sel. */
|
||||
break;
|
||||
case 1183: /* mov */
|
||||
case 1688: /* sel */
|
||||
value = 1688; /* --> sel. */
|
||||
case 1106: /* stsmax */
|
||||
case 1034: /* ldsmax */
|
||||
value = 1034; /* --> ldsmax. */
|
||||
break;
|
||||
case 1107: /* stsmaxlb */
|
||||
case 1036: /* ldsmaxlb */
|
||||
value = 1036; /* --> ldsmaxlb. */
|
||||
break;
|
||||
case 1108: /* stsmaxlh */
|
||||
case 1039: /* ldsmaxlh */
|
||||
value = 1039; /* --> ldsmaxlh. */
|
||||
break;
|
||||
case 1109: /* stsmaxl */
|
||||
case 1042: /* ldsmaxl */
|
||||
value = 1042; /* --> ldsmaxl. */
|
||||
break;
|
||||
case 1110: /* stsminb */
|
||||
case 1044: /* ldsminb */
|
||||
value = 1044; /* --> ldsminb. */
|
||||
break;
|
||||
case 1111: /* stsminh */
|
||||
case 1045: /* ldsminh */
|
||||
value = 1045; /* --> ldsminh. */
|
||||
break;
|
||||
case 1112: /* stsmin */
|
||||
case 1046: /* ldsmin */
|
||||
value = 1046; /* --> ldsmin. */
|
||||
break;
|
||||
case 1113: /* stsminlb */
|
||||
case 1048: /* ldsminlb */
|
||||
value = 1048; /* --> ldsminlb. */
|
||||
break;
|
||||
case 1114: /* stsminlh */
|
||||
case 1051: /* ldsminlh */
|
||||
value = 1051; /* --> ldsminlh. */
|
||||
break;
|
||||
case 1115: /* stsminl */
|
||||
case 1054: /* ldsminl */
|
||||
value = 1054; /* --> ldsminl. */
|
||||
break;
|
||||
case 1116: /* stumaxb */
|
||||
case 1056: /* ldumaxb */
|
||||
value = 1056; /* --> ldumaxb. */
|
||||
break;
|
||||
case 1117: /* stumaxh */
|
||||
case 1057: /* ldumaxh */
|
||||
value = 1057; /* --> ldumaxh. */
|
||||
break;
|
||||
case 1118: /* stumax */
|
||||
case 1058: /* ldumax */
|
||||
value = 1058; /* --> ldumax. */
|
||||
break;
|
||||
case 1119: /* stumaxlb */
|
||||
case 1060: /* ldumaxlb */
|
||||
value = 1060; /* --> ldumaxlb. */
|
||||
break;
|
||||
case 1120: /* stumaxlh */
|
||||
case 1063: /* ldumaxlh */
|
||||
value = 1063; /* --> ldumaxlh. */
|
||||
break;
|
||||
case 1121: /* stumaxl */
|
||||
case 1066: /* ldumaxl */
|
||||
value = 1066; /* --> ldumaxl. */
|
||||
break;
|
||||
case 1122: /* stuminb */
|
||||
case 1068: /* lduminb */
|
||||
value = 1068; /* --> lduminb. */
|
||||
break;
|
||||
case 1123: /* stuminh */
|
||||
case 1069: /* lduminh */
|
||||
value = 1069; /* --> lduminh. */
|
||||
break;
|
||||
case 1124: /* stumin */
|
||||
case 1070: /* ldumin */
|
||||
value = 1070; /* --> ldumin. */
|
||||
break;
|
||||
case 1125: /* stuminlb */
|
||||
case 1072: /* lduminlb */
|
||||
value = 1072; /* --> lduminlb. */
|
||||
break;
|
||||
case 1126: /* stuminlh */
|
||||
case 1075: /* lduminlh */
|
||||
value = 1075; /* --> lduminlh. */
|
||||
break;
|
||||
case 1127: /* stuminl */
|
||||
case 1078: /* lduminl */
|
||||
value = 1078; /* --> lduminl. */
|
||||
break;
|
||||
case 1129: /* mov */
|
||||
case 1128: /* movn */
|
||||
value = 1128; /* --> movn. */
|
||||
break;
|
||||
case 1131: /* mov */
|
||||
case 1130: /* movz */
|
||||
value = 1130; /* --> movz. */
|
||||
break;
|
||||
case 1169: /* autibsp */
|
||||
case 1168: /* autibz */
|
||||
case 1167: /* autiasp */
|
||||
case 1166: /* autiaz */
|
||||
case 1165: /* pacibsp */
|
||||
case 1164: /* pacibz */
|
||||
case 1163: /* paciasp */
|
||||
case 1162: /* paciaz */
|
||||
case 1149: /* psb */
|
||||
case 1148: /* esb */
|
||||
case 1147: /* autib1716 */
|
||||
case 1146: /* autia1716 */
|
||||
case 1145: /* pacib1716 */
|
||||
case 1144: /* pacia1716 */
|
||||
case 1143: /* xpaclri */
|
||||
case 1142: /* sevl */
|
||||
case 1141: /* sev */
|
||||
case 1140: /* wfi */
|
||||
case 1139: /* wfe */
|
||||
case 1138: /* yield */
|
||||
case 1137: /* nop */
|
||||
case 1136: /* hint */
|
||||
value = 1136; /* --> hint. */
|
||||
break;
|
||||
case 1158: /* tlbi */
|
||||
case 1157: /* ic */
|
||||
case 1156: /* dc */
|
||||
case 1155: /* at */
|
||||
case 1154: /* sys */
|
||||
value = 1154; /* --> sys. */
|
||||
break;
|
||||
case 1912: /* bic */
|
||||
case 1217: /* and */
|
||||
value = 1217; /* --> and. */
|
||||
break;
|
||||
case 1200: /* mov */
|
||||
case 1219: /* and */
|
||||
value = 1219; /* --> and. */
|
||||
break;
|
||||
case 1204: /* movs */
|
||||
case 1220: /* ands */
|
||||
value = 1220; /* --> ands. */
|
||||
break;
|
||||
case 1913: /* cmple */
|
||||
case 1255: /* cmpge */
|
||||
value = 1255; /* --> cmpge. */
|
||||
break;
|
||||
case 1916: /* cmplt */
|
||||
case 1258: /* cmpgt */
|
||||
value = 1258; /* --> cmpgt. */
|
||||
break;
|
||||
case 1914: /* cmplo */
|
||||
case 1260: /* cmphi */
|
||||
value = 1260; /* --> cmphi. */
|
||||
break;
|
||||
case 1915: /* cmpls */
|
||||
case 1263: /* cmphs */
|
||||
value = 1263; /* --> cmphs. */
|
||||
break;
|
||||
case 1197: /* mov */
|
||||
case 1285: /* cpy */
|
||||
value = 1285; /* --> cpy. */
|
||||
break;
|
||||
case 1199: /* mov */
|
||||
case 1286: /* cpy */
|
||||
value = 1286; /* --> cpy. */
|
||||
break;
|
||||
case 1923: /* fmov */
|
||||
case 1202: /* mov */
|
||||
case 1287: /* cpy */
|
||||
value = 1287; /* --> cpy. */
|
||||
break;
|
||||
case 1192: /* mov */
|
||||
case 1299: /* dup */
|
||||
value = 1299; /* --> dup. */
|
||||
break;
|
||||
case 1194: /* mov */
|
||||
case 1191: /* mov */
|
||||
case 1300: /* dup */
|
||||
value = 1300; /* --> dup. */
|
||||
break;
|
||||
case 1922: /* fmov */
|
||||
case 1196: /* mov */
|
||||
case 1301: /* dup */
|
||||
value = 1301; /* --> dup. */
|
||||
break;
|
||||
case 1195: /* mov */
|
||||
case 1302: /* dupm */
|
||||
value = 1302; /* --> dupm. */
|
||||
break;
|
||||
case 1917: /* eon */
|
||||
case 1304: /* eor */
|
||||
value = 1304; /* --> eor. */
|
||||
break;
|
||||
case 1205: /* not */
|
||||
case 1306: /* eor */
|
||||
value = 1306; /* --> eor. */
|
||||
break;
|
||||
case 1206: /* nots */
|
||||
case 1307: /* eors */
|
||||
value = 1307; /* --> eors. */
|
||||
break;
|
||||
case 1918: /* facle */
|
||||
case 1312: /* facge */
|
||||
value = 1312; /* --> facge. */
|
||||
break;
|
||||
case 1919: /* faclt */
|
||||
case 1313: /* facgt */
|
||||
value = 1313; /* --> facgt. */
|
||||
break;
|
||||
case 1920: /* fcmle */
|
||||
case 1322: /* fcmge */
|
||||
value = 1322; /* --> fcmge. */
|
||||
break;
|
||||
case 1921: /* fcmlt */
|
||||
case 1324: /* fcmgt */
|
||||
value = 1324; /* --> fcmgt. */
|
||||
break;
|
||||
case 1189: /* fmov */
|
||||
case 1330: /* fcpy */
|
||||
value = 1330; /* --> fcpy. */
|
||||
break;
|
||||
case 1188: /* fmov */
|
||||
case 1347: /* fdup */
|
||||
value = 1347; /* --> fdup. */
|
||||
break;
|
||||
case 1190: /* mov */
|
||||
case 1645: /* orr */
|
||||
value = 1645; /* --> orr. */
|
||||
break;
|
||||
case 1924: /* orn */
|
||||
case 1646: /* orr */
|
||||
value = 1646; /* --> orr. */
|
||||
break;
|
||||
case 1193: /* mov */
|
||||
case 1648: /* orr */
|
||||
value = 1648; /* --> orr. */
|
||||
break;
|
||||
case 1203: /* movs */
|
||||
case 1649: /* orrs */
|
||||
value = 1649; /* --> orrs. */
|
||||
break;
|
||||
case 1198: /* mov */
|
||||
case 1705: /* sel */
|
||||
value = 1705; /* --> sel. */
|
||||
break;
|
||||
case 1201: /* mov */
|
||||
case 1706: /* sel */
|
||||
value = 1706; /* --> sel. */
|
||||
break;
|
||||
default: return NULL;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -208,48 +208,48 @@ const struct aarch64_operand aarch64_operands[] =
|
|||
static const unsigned op_enum_table [] =
|
||||
{
|
||||
0,
|
||||
828,
|
||||
829,
|
||||
830,
|
||||
833,
|
||||
834,
|
||||
835,
|
||||
836,
|
||||
837,
|
||||
831,
|
||||
832,
|
||||
838,
|
||||
839,
|
||||
861,
|
||||
862,
|
||||
863,
|
||||
866,
|
||||
867,
|
||||
868,
|
||||
869,
|
||||
870,
|
||||
864,
|
||||
865,
|
||||
871,
|
||||
872,
|
||||
915,
|
||||
916,
|
||||
917,
|
||||
918,
|
||||
846,
|
||||
847,
|
||||
848,
|
||||
851,
|
||||
852,
|
||||
853,
|
||||
854,
|
||||
855,
|
||||
849,
|
||||
850,
|
||||
856,
|
||||
857,
|
||||
879,
|
||||
880,
|
||||
881,
|
||||
884,
|
||||
885,
|
||||
886,
|
||||
887,
|
||||
888,
|
||||
882,
|
||||
883,
|
||||
889,
|
||||
890,
|
||||
933,
|
||||
934,
|
||||
935,
|
||||
936,
|
||||
12,
|
||||
627,
|
||||
628,
|
||||
1110,
|
||||
1112,
|
||||
1114,
|
||||
922,
|
||||
1113,
|
||||
1111,
|
||||
1128,
|
||||
1130,
|
||||
1132,
|
||||
940,
|
||||
1131,
|
||||
1129,
|
||||
311,
|
||||
615,
|
||||
626,
|
||||
625,
|
||||
920,
|
||||
938,
|
||||
622,
|
||||
619,
|
||||
611,
|
||||
|
@ -259,34 +259,34 @@ static const unsigned op_enum_table [] =
|
|||
621,
|
||||
623,
|
||||
624,
|
||||
930,
|
||||
948,
|
||||
643,
|
||||
646,
|
||||
649,
|
||||
644,
|
||||
647,
|
||||
772,
|
||||
790,
|
||||
171,
|
||||
172,
|
||||
173,
|
||||
174,
|
||||
507,
|
||||
713,
|
||||
731,
|
||||
380,
|
||||
382,
|
||||
404,
|
||||
406,
|
||||
1175,
|
||||
1180,
|
||||
1173,
|
||||
1172,
|
||||
1176,
|
||||
1183,
|
||||
1185,
|
||||
1186,
|
||||
1182,
|
||||
1188,
|
||||
1187,
|
||||
1193,
|
||||
1198,
|
||||
1191,
|
||||
1190,
|
||||
1194,
|
||||
1201,
|
||||
1203,
|
||||
1204,
|
||||
1200,
|
||||
1206,
|
||||
1205,
|
||||
};
|
||||
|
||||
/* Given the opcode enumerator OP, return the pointer to the corresponding
|
||||
|
|
|
@ -2665,6 +2665,24 @@ struct aarch64_opcode aarch64_opcode_table[] =
|
|||
CORE_INSN ("clz", 0x5ac01000, 0x7ffffc00, dp_1src, 0, OP2 (Rd, Rn), QL_I2SAME, F_SF),
|
||||
CORE_INSN ("cls", 0x5ac01400, 0x7ffffc00, dp_1src, 0, OP2 (Rd, Rn), QL_I2SAME, F_SF),
|
||||
CORE_INSN ("rev32", 0xdac00800, 0xfffffc00, dp_1src, 0, OP2 (Rd, Rn), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("pacia", 0xdac10000, 0xfffffc00, dp_1src, OP2 (Rd, Rn_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("pacib", 0xdac10400, 0xfffffc00, dp_1src, OP2 (Rd, Rn_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("pacda", 0xdac10800, 0xfffffc00, dp_1src, OP2 (Rd, Rn_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("pacdb", 0xdac10c00, 0xfffffc00, dp_1src, OP2 (Rd, Rn_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("autia", 0xdac11000, 0xfffffc00, dp_1src, OP2 (Rd, Rn_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("autib", 0xdac11400, 0xfffffc00, dp_1src, OP2 (Rd, Rn_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("autda", 0xdac11800, 0xfffffc00, dp_1src, OP2 (Rd, Rn_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("autdb", 0xdac11c00, 0xfffffc00, dp_1src, OP2 (Rd, Rn_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("paciza", 0xdac123e0, 0xffffffe0, dp_1src, OP1 (Rd), QL_I1X, 0),
|
||||
V8_3_INSN ("pacizb", 0xdac127e0, 0xffffffe0, dp_1src, OP1 (Rd), QL_I1X, 0),
|
||||
V8_3_INSN ("pacdza", 0xdac12be0, 0xffffffe0, dp_1src, OP1 (Rd), QL_I1X, 0),
|
||||
V8_3_INSN ("pacdzb", 0xdac12fe0, 0xffffffe0, dp_1src, OP1 (Rd), QL_I1X, 0),
|
||||
V8_3_INSN ("autiza", 0xdac133e0, 0xffffffe0, dp_1src, OP1 (Rd), QL_I1X, 0),
|
||||
V8_3_INSN ("autizb", 0xdac137e0, 0xffffffe0, dp_1src, OP1 (Rd), QL_I1X, 0),
|
||||
V8_3_INSN ("autdza", 0xdac13be0, 0xffffffe0, dp_1src, OP1 (Rd), QL_I1X, 0),
|
||||
V8_3_INSN ("autdzb", 0xdac13fe0, 0xffffffe0, dp_1src, OP1 (Rd), QL_I1X, 0),
|
||||
V8_3_INSN ("xpaci", 0xdac143e0, 0xffffffe0, dp_1src, OP1 (Rd), QL_I1X, 0),
|
||||
V8_3_INSN ("xpacd", 0xdac147e0, 0xffffffe0, dp_1src, OP1 (Rd), QL_I1X, 0),
|
||||
/* Data-processing (2 source). */
|
||||
CORE_INSN ("udiv", 0x1ac00800, 0x7fe0fc00, dp_2src, 0, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF),
|
||||
CORE_INSN ("sdiv", 0x1ac00c00, 0x7fe0fc00, dp_2src, 0, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF),
|
||||
|
|
Loading…
Reference in New Issue