[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:
Szabolcs Nagy 2016-11-11 10:36:32 +00:00
parent b0bfa7b5b8
commit a2cfc830e7
8 changed files with 2190 additions and 1892 deletions

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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

View File

@ -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),