mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-16 23:06:48 +08:00
[AArch64] Add ARMv8.3 combined pointer authentication branch instructions
Add support for ARMv8.3 pointer authentication instructions that are encoded as unconditional branch instructions. opcodes/ 2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com> * aarch64-tbl.h (arch64_opcode_table): Add braa, brab, blraa, blrab, braaz, brabz, blraaz, blrabz, retaa, retab, eretaa, eretab. * aarch64-asm-2.c: Regenerate. * aarch64-dis-2.c: Regenerate. * aarch64-opc-2.c: Regenerate. gas/ 2016-11-08 Szabolcs Nagy <szabolcs.nagy@arm.com> * testsuite/gas/aarch64/pac.s: Add ARMv8.3 branch instruction tests. * testsuite/gas/aarch64/pac.d: Likewise.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
* testsuite/gas/aarch64/pac.s: Add ARMv8.3 branch instruction tests.
|
||||
* testsuite/gas/aarch64/pac.d: Likewise.
|
||||
|
||||
2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
* config/tc-aarch64.c (process_omitted_operand): Handle AARCH64_OPND_Rm_SP.
|
||||
|
@ -34,3 +34,19 @@ Disassembly of section \.text:
|
||||
64: dac147e5 xpacd x5
|
||||
68: 9ac33041 pacga x1, x2, x3
|
||||
6c: 9adf3041 pacga x1, x2, sp
|
||||
70: d71f0822 braa x1, x2
|
||||
74: d71f087f braa x3, sp
|
||||
78: d71f0c22 brab x1, x2
|
||||
7c: d71f0c7f brab x3, sp
|
||||
80: d73f0822 blraa x1, x2
|
||||
84: d73f087f blraa x3, sp
|
||||
88: d73f0c22 blrab x1, x2
|
||||
8c: d73f0c7f blrab x3, sp
|
||||
90: d61f08bf braaz x5
|
||||
94: d61f0cbf brabz x5
|
||||
98: d63f08bf blraaz x5
|
||||
9c: d63f0cbf blrabz x5
|
||||
a0: d65f0bff retaa
|
||||
a4: d65f0fff retab
|
||||
a8: d69f0bff eretaa
|
||||
ac: d69f0fff eretab
|
||||
|
@ -35,3 +35,22 @@
|
||||
|
||||
pacga x1, x2, x3
|
||||
pacga x1, x2, sp
|
||||
|
||||
/* Combined instructions. */
|
||||
braa x1, x2
|
||||
braa x3, sp
|
||||
brab x1, x2
|
||||
brab x3, sp
|
||||
blraa x1, x2
|
||||
blraa x3, sp
|
||||
blrab x1, x2
|
||||
blrab x3, sp
|
||||
braaz x5
|
||||
brabz x5
|
||||
blraaz x5
|
||||
blrabz x5
|
||||
|
||||
retaa
|
||||
retab
|
||||
eretaa
|
||||
eretab
|
||||
|
@ -1,3 +1,11 @@
|
||||
2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
* aarch64-tbl.h (arch64_opcode_table): Add braa, brab, blraa, blrab, braaz,
|
||||
brabz, blraaz, blrabz, retaa, retab, eretaa, eretab.
|
||||
* 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-tbl.h (arch64_opcode_table): Add pacga.
|
||||
|
@ -135,442 +135,442 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
|
||||
case 620: /* ubfm */
|
||||
value = 620; /* --> ubfm. */
|
||||
break;
|
||||
case 644: /* cset */
|
||||
case 643: /* cinc */
|
||||
case 642: /* csinc */
|
||||
value = 642; /* --> csinc. */
|
||||
break;
|
||||
case 647: /* csetm */
|
||||
case 646: /* cinv */
|
||||
case 645: /* csinv */
|
||||
value = 645; /* --> csinv. */
|
||||
break;
|
||||
case 649: /* cneg */
|
||||
case 648: /* csneg */
|
||||
value = 648; /* --> csneg. */
|
||||
break;
|
||||
case 667: /* rev */
|
||||
case 668: /* rev64 */
|
||||
value = 667; /* --> rev. */
|
||||
break;
|
||||
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 710: /* mul */
|
||||
case 709: /* madd */
|
||||
value = 709; /* --> madd. */
|
||||
break;
|
||||
case 712: /* mneg */
|
||||
case 711: /* msub */
|
||||
value = 711; /* --> msub. */
|
||||
break;
|
||||
case 714: /* smull */
|
||||
case 713: /* smaddl */
|
||||
value = 713; /* --> smaddl. */
|
||||
break;
|
||||
case 716: /* smnegl */
|
||||
case 715: /* smsubl */
|
||||
value = 715; /* --> smsubl. */
|
||||
break;
|
||||
case 719: /* umull */
|
||||
case 718: /* umaddl */
|
||||
value = 718; /* --> umaddl. */
|
||||
break;
|
||||
case 721: /* umnegl */
|
||||
case 720: /* umsubl */
|
||||
value = 720; /* --> umsubl. */
|
||||
break;
|
||||
case 732: /* ror */
|
||||
case 731: /* extr */
|
||||
value = 731; /* --> extr. */
|
||||
break;
|
||||
case 939: /* bic */
|
||||
case 938: /* and */
|
||||
value = 938; /* --> and. */
|
||||
break;
|
||||
case 941: /* mov */
|
||||
case 940: /* orr */
|
||||
value = 940; /* --> orr. */
|
||||
break;
|
||||
case 944: /* tst */
|
||||
case 943: /* ands */
|
||||
value = 943; /* --> ands. */
|
||||
break;
|
||||
case 949: /* uxtw */
|
||||
case 948: /* mov */
|
||||
case 947: /* orr */
|
||||
value = 947; /* --> orr. */
|
||||
case 656: /* cset */
|
||||
case 655: /* cinc */
|
||||
case 654: /* csinc */
|
||||
value = 654; /* --> csinc. */
|
||||
break;
|
||||
case 659: /* csetm */
|
||||
case 658: /* cinv */
|
||||
case 657: /* csinv */
|
||||
value = 657; /* --> csinv. */
|
||||
break;
|
||||
case 661: /* cneg */
|
||||
case 660: /* csneg */
|
||||
value = 660; /* --> csneg. */
|
||||
break;
|
||||
case 679: /* rev */
|
||||
case 680: /* rev64 */
|
||||
value = 679; /* --> rev. */
|
||||
break;
|
||||
case 705: /* lsl */
|
||||
case 704: /* lslv */
|
||||
value = 704; /* --> lslv. */
|
||||
break;
|
||||
case 707: /* lsr */
|
||||
case 706: /* lsrv */
|
||||
value = 706; /* --> lsrv. */
|
||||
break;
|
||||
case 709: /* asr */
|
||||
case 708: /* asrv */
|
||||
value = 708; /* --> asrv. */
|
||||
break;
|
||||
case 711: /* ror */
|
||||
case 710: /* rorv */
|
||||
value = 710; /* --> rorv. */
|
||||
break;
|
||||
case 722: /* mul */
|
||||
case 721: /* madd */
|
||||
value = 721; /* --> madd. */
|
||||
break;
|
||||
case 724: /* mneg */
|
||||
case 723: /* msub */
|
||||
value = 723; /* --> msub. */
|
||||
break;
|
||||
case 726: /* smull */
|
||||
case 725: /* smaddl */
|
||||
value = 725; /* --> smaddl. */
|
||||
break;
|
||||
case 728: /* smnegl */
|
||||
case 727: /* smsubl */
|
||||
value = 727; /* --> smsubl. */
|
||||
break;
|
||||
case 731: /* umull */
|
||||
case 730: /* umaddl */
|
||||
value = 730; /* --> umaddl. */
|
||||
break;
|
||||
case 733: /* umnegl */
|
||||
case 732: /* umsubl */
|
||||
value = 732; /* --> umsubl. */
|
||||
break;
|
||||
case 744: /* ror */
|
||||
case 743: /* extr */
|
||||
value = 743; /* --> extr. */
|
||||
break;
|
||||
case 951: /* bic */
|
||||
case 950: /* and */
|
||||
value = 950; /* --> and. */
|
||||
break;
|
||||
case 953: /* mov */
|
||||
case 952: /* orr */
|
||||
value = 952; /* --> orr. */
|
||||
break;
|
||||
case 956: /* tst */
|
||||
case 955: /* ands */
|
||||
value = 955; /* --> ands. */
|
||||
break;
|
||||
case 961: /* uxtw */
|
||||
case 960: /* mov */
|
||||
case 959: /* orr */
|
||||
value = 959; /* --> orr. */
|
||||
break;
|
||||
case 951: /* mvn */
|
||||
case 950: /* orn */
|
||||
value = 950; /* --> orn. */
|
||||
case 963: /* mvn */
|
||||
case 962: /* orn */
|
||||
value = 962; /* --> orn. */
|
||||
break;
|
||||
case 955: /* tst */
|
||||
case 954: /* ands */
|
||||
value = 954; /* --> ands. */
|
||||
case 967: /* tst */
|
||||
case 966: /* ands */
|
||||
value = 966; /* --> ands. */
|
||||
break;
|
||||
case 1081: /* staddb */
|
||||
case 985: /* ldaddb */
|
||||
value = 985; /* --> ldaddb. */
|
||||
case 1093: /* staddb */
|
||||
case 997: /* ldaddb */
|
||||
value = 997; /* --> ldaddb. */
|
||||
break;
|
||||
case 1082: /* staddh */
|
||||
case 986: /* ldaddh */
|
||||
value = 986; /* --> ldaddh. */
|
||||
case 1094: /* staddh */
|
||||
case 998: /* ldaddh */
|
||||
value = 998; /* --> ldaddh. */
|
||||
break;
|
||||
case 1083: /* stadd */
|
||||
case 987: /* ldadd */
|
||||
value = 987; /* --> ldadd. */
|
||||
case 1095: /* stadd */
|
||||
case 999: /* ldadd */
|
||||
value = 999; /* --> ldadd. */
|
||||
break;
|
||||
case 1084: /* staddlb */
|
||||
case 989: /* ldaddlb */
|
||||
value = 989; /* --> ldaddlb. */
|
||||
case 1096: /* staddlb */
|
||||
case 1001: /* ldaddlb */
|
||||
value = 1001; /* --> ldaddlb. */
|
||||
break;
|
||||
case 1085: /* staddlh */
|
||||
case 992: /* ldaddlh */
|
||||
value = 992; /* --> ldaddlh. */
|
||||
case 1097: /* staddlh */
|
||||
case 1004: /* ldaddlh */
|
||||
value = 1004; /* --> ldaddlh. */
|
||||
break;
|
||||
case 1086: /* staddl */
|
||||
case 995: /* ldaddl */
|
||||
value = 995; /* --> ldaddl. */
|
||||
case 1098: /* staddl */
|
||||
case 1007: /* ldaddl */
|
||||
value = 1007; /* --> ldaddl. */
|
||||
break;
|
||||
case 1087: /* stclrb */
|
||||
case 997: /* ldclrb */
|
||||
value = 997; /* --> ldclrb. */
|
||||
case 1099: /* stclrb */
|
||||
case 1009: /* ldclrb */
|
||||
value = 1009; /* --> ldclrb. */
|
||||
break;
|
||||
case 1088: /* stclrh */
|
||||
case 998: /* ldclrh */
|
||||
value = 998; /* --> ldclrh. */
|
||||
case 1100: /* stclrh */
|
||||
case 1010: /* ldclrh */
|
||||
value = 1010; /* --> ldclrh. */
|
||||
break;
|
||||
case 1089: /* stclr */
|
||||
case 999: /* ldclr */
|
||||
value = 999; /* --> ldclr. */
|
||||
case 1101: /* stclr */
|
||||
case 1011: /* ldclr */
|
||||
value = 1011; /* --> ldclr. */
|
||||
break;
|
||||
case 1090: /* stclrlb */
|
||||
case 1001: /* ldclrlb */
|
||||
value = 1001; /* --> ldclrlb. */
|
||||
case 1102: /* stclrlb */
|
||||
case 1013: /* ldclrlb */
|
||||
value = 1013; /* --> ldclrlb. */
|
||||
break;
|
||||
case 1091: /* stclrlh */
|
||||
case 1004: /* ldclrlh */
|
||||
value = 1004; /* --> ldclrlh. */
|
||||
case 1103: /* stclrlh */
|
||||
case 1016: /* ldclrlh */
|
||||
value = 1016; /* --> ldclrlh. */
|
||||
break;
|
||||
case 1092: /* stclrl */
|
||||
case 1007: /* ldclrl */
|
||||
value = 1007; /* --> ldclrl. */
|
||||
case 1104: /* stclrl */
|
||||
case 1019: /* ldclrl */
|
||||
value = 1019; /* --> ldclrl. */
|
||||
break;
|
||||
case 1093: /* steorb */
|
||||
case 1009: /* ldeorb */
|
||||
value = 1009; /* --> ldeorb. */
|
||||
case 1105: /* steorb */
|
||||
case 1021: /* ldeorb */
|
||||
value = 1021; /* --> ldeorb. */
|
||||
break;
|
||||
case 1094: /* steorh */
|
||||
case 1010: /* ldeorh */
|
||||
value = 1010; /* --> ldeorh. */
|
||||
case 1106: /* steorh */
|
||||
case 1022: /* ldeorh */
|
||||
value = 1022; /* --> ldeorh. */
|
||||
break;
|
||||
case 1095: /* steor */
|
||||
case 1011: /* ldeor */
|
||||
value = 1011; /* --> ldeor. */
|
||||
case 1107: /* steor */
|
||||
case 1023: /* ldeor */
|
||||
value = 1023; /* --> ldeor. */
|
||||
break;
|
||||
case 1096: /* steorlb */
|
||||
case 1013: /* ldeorlb */
|
||||
value = 1013; /* --> ldeorlb. */
|
||||
case 1108: /* steorlb */
|
||||
case 1025: /* ldeorlb */
|
||||
value = 1025; /* --> ldeorlb. */
|
||||
break;
|
||||
case 1097: /* steorlh */
|
||||
case 1016: /* ldeorlh */
|
||||
value = 1016; /* --> ldeorlh. */
|
||||
case 1109: /* steorlh */
|
||||
case 1028: /* ldeorlh */
|
||||
value = 1028; /* --> ldeorlh. */
|
||||
break;
|
||||
case 1098: /* steorl */
|
||||
case 1019: /* ldeorl */
|
||||
value = 1019; /* --> ldeorl. */
|
||||
case 1110: /* steorl */
|
||||
case 1031: /* ldeorl */
|
||||
value = 1031; /* --> ldeorl. */
|
||||
break;
|
||||
case 1099: /* stsetb */
|
||||
case 1021: /* ldsetb */
|
||||
value = 1021; /* --> ldsetb. */
|
||||
case 1111: /* stsetb */
|
||||
case 1033: /* ldsetb */
|
||||
value = 1033; /* --> ldsetb. */
|
||||
break;
|
||||
case 1100: /* stseth */
|
||||
case 1022: /* ldseth */
|
||||
value = 1022; /* --> ldseth. */
|
||||
case 1112: /* stseth */
|
||||
case 1034: /* ldseth */
|
||||
value = 1034; /* --> ldseth. */
|
||||
break;
|
||||
case 1101: /* stset */
|
||||
case 1023: /* ldset */
|
||||
value = 1023; /* --> ldset. */
|
||||
case 1113: /* stset */
|
||||
case 1035: /* ldset */
|
||||
value = 1035; /* --> ldset. */
|
||||
break;
|
||||
case 1102: /* stsetlb */
|
||||
case 1025: /* ldsetlb */
|
||||
value = 1025; /* --> ldsetlb. */
|
||||
case 1114: /* stsetlb */
|
||||
case 1037: /* ldsetlb */
|
||||
value = 1037; /* --> ldsetlb. */
|
||||
break;
|
||||
case 1103: /* stsetlh */
|
||||
case 1028: /* ldsetlh */
|
||||
value = 1028; /* --> ldsetlh. */
|
||||
case 1115: /* stsetlh */
|
||||
case 1040: /* ldsetlh */
|
||||
value = 1040; /* --> ldsetlh. */
|
||||
break;
|
||||
case 1104: /* stsetl */
|
||||
case 1031: /* ldsetl */
|
||||
value = 1031; /* --> ldsetl. */
|
||||
case 1116: /* stsetl */
|
||||
case 1043: /* ldsetl */
|
||||
value = 1043; /* --> ldsetl. */
|
||||
break;
|
||||
case 1105: /* stsmaxb */
|
||||
case 1033: /* ldsmaxb */
|
||||
value = 1033; /* --> ldsmaxb. */
|
||||
case 1117: /* stsmaxb */
|
||||
case 1045: /* ldsmaxb */
|
||||
value = 1045; /* --> ldsmaxb. */
|
||||
break;
|
||||
case 1106: /* stsmaxh */
|
||||
case 1034: /* ldsmaxh */
|
||||
value = 1034; /* --> ldsmaxh. */
|
||||
case 1118: /* stsmaxh */
|
||||
case 1046: /* ldsmaxh */
|
||||
value = 1046; /* --> ldsmaxh. */
|
||||
break;
|
||||
case 1119: /* stsmax */
|
||||
case 1047: /* ldsmax */
|
||||
value = 1047; /* --> ldsmax. */
|
||||
break;
|
||||
case 1120: /* stsmaxlb */
|
||||
case 1049: /* ldsmaxlb */
|
||||
value = 1049; /* --> ldsmaxlb. */
|
||||
break;
|
||||
case 1121: /* stsmaxlh */
|
||||
case 1052: /* ldsmaxlh */
|
||||
value = 1052; /* --> ldsmaxlh. */
|
||||
break;
|
||||
case 1122: /* stsmaxl */
|
||||
case 1055: /* ldsmaxl */
|
||||
value = 1055; /* --> ldsmaxl. */
|
||||
break;
|
||||
case 1123: /* stsminb */
|
||||
case 1057: /* ldsminb */
|
||||
value = 1057; /* --> ldsminb. */
|
||||
break;
|
||||
case 1124: /* stsminh */
|
||||
case 1058: /* ldsminh */
|
||||
value = 1058; /* --> ldsminh. */
|
||||
break;
|
||||
case 1125: /* stsmin */
|
||||
case 1059: /* ldsmin */
|
||||
value = 1059; /* --> ldsmin. */
|
||||
break;
|
||||
case 1126: /* stsminlb */
|
||||
case 1061: /* ldsminlb */
|
||||
value = 1061; /* --> ldsminlb. */
|
||||
break;
|
||||
case 1127: /* stsminlh */
|
||||
case 1064: /* ldsminlh */
|
||||
value = 1064; /* --> ldsminlh. */
|
||||
break;
|
||||
case 1128: /* stsminl */
|
||||
case 1067: /* ldsminl */
|
||||
value = 1067; /* --> ldsminl. */
|
||||
break;
|
||||
case 1129: /* stumaxb */
|
||||
case 1069: /* ldumaxb */
|
||||
value = 1069; /* --> ldumaxb. */
|
||||
break;
|
||||
case 1130: /* stumaxh */
|
||||
case 1070: /* ldumaxh */
|
||||
value = 1070; /* --> ldumaxh. */
|
||||
break;
|
||||
case 1131: /* stumax */
|
||||
case 1071: /* ldumax */
|
||||
value = 1071; /* --> ldumax. */
|
||||
break;
|
||||
case 1132: /* stumaxlb */
|
||||
case 1073: /* ldumaxlb */
|
||||
value = 1073; /* --> ldumaxlb. */
|
||||
break;
|
||||
case 1133: /* stumaxlh */
|
||||
case 1076: /* ldumaxlh */
|
||||
value = 1076; /* --> ldumaxlh. */
|
||||
break;
|
||||
case 1134: /* stumaxl */
|
||||
case 1079: /* ldumaxl */
|
||||
value = 1079; /* --> ldumaxl. */
|
||||
break;
|
||||
case 1135: /* stuminb */
|
||||
case 1081: /* lduminb */
|
||||
value = 1081; /* --> lduminb. */
|
||||
break;
|
||||
case 1136: /* stuminh */
|
||||
case 1082: /* lduminh */
|
||||
value = 1082; /* --> lduminh. */
|
||||
break;
|
||||
case 1137: /* stumin */
|
||||
case 1083: /* ldumin */
|
||||
value = 1083; /* --> ldumin. */
|
||||
break;
|
||||
case 1138: /* stuminlb */
|
||||
case 1085: /* lduminlb */
|
||||
value = 1085; /* --> lduminlb. */
|
||||
break;
|
||||
case 1139: /* stuminlh */
|
||||
case 1088: /* lduminlh */
|
||||
value = 1088; /* --> lduminlh. */
|
||||
break;
|
||||
case 1140: /* stuminl */
|
||||
case 1091: /* lduminl */
|
||||
value = 1091; /* --> lduminl. */
|
||||
break;
|
||||
case 1142: /* mov */
|
||||
case 1141: /* movn */
|
||||
value = 1141; /* --> movn. */
|
||||
break;
|
||||
case 1144: /* mov */
|
||||
case 1143: /* movz */
|
||||
value = 1143; /* --> movz. */
|
||||
break;
|
||||
case 1182: /* autibsp */
|
||||
case 1181: /* autibz */
|
||||
case 1180: /* autiasp */
|
||||
case 1179: /* autiaz */
|
||||
case 1178: /* pacibsp */
|
||||
case 1177: /* pacibz */
|
||||
case 1176: /* paciasp */
|
||||
case 1175: /* paciaz */
|
||||
case 1162: /* psb */
|
||||
case 1161: /* esb */
|
||||
case 1160: /* autib1716 */
|
||||
case 1159: /* autia1716 */
|
||||
case 1158: /* pacib1716 */
|
||||
case 1157: /* pacia1716 */
|
||||
case 1156: /* xpaclri */
|
||||
case 1155: /* sevl */
|
||||
case 1154: /* sev */
|
||||
case 1153: /* wfi */
|
||||
case 1152: /* wfe */
|
||||
case 1151: /* yield */
|
||||
case 1150: /* nop */
|
||||
case 1149: /* hint */
|
||||
value = 1149; /* --> hint. */
|
||||
break;
|
||||
case 1171: /* tlbi */
|
||||
case 1170: /* ic */
|
||||
case 1169: /* dc */
|
||||
case 1168: /* at */
|
||||
case 1167: /* sys */
|
||||
value = 1167; /* --> sys. */
|
||||
break;
|
||||
case 1925: /* bic */
|
||||
case 1230: /* and */
|
||||
value = 1230; /* --> and. */
|
||||
break;
|
||||
case 1213: /* mov */
|
||||
case 1232: /* and */
|
||||
value = 1232; /* --> and. */
|
||||
break;
|
||||
case 1217: /* movs */
|
||||
case 1233: /* ands */
|
||||
value = 1233; /* --> ands. */
|
||||
break;
|
||||
case 1926: /* cmple */
|
||||
case 1268: /* cmpge */
|
||||
value = 1268; /* --> cmpge. */
|
||||
break;
|
||||
case 1929: /* cmplt */
|
||||
case 1271: /* cmpgt */
|
||||
value = 1271; /* --> cmpgt. */
|
||||
break;
|
||||
case 1927: /* cmplo */
|
||||
case 1273: /* cmphi */
|
||||
value = 1273; /* --> cmphi. */
|
||||
break;
|
||||
case 1928: /* cmpls */
|
||||
case 1276: /* cmphs */
|
||||
value = 1276; /* --> cmphs. */
|
||||
break;
|
||||
case 1210: /* mov */
|
||||
case 1298: /* cpy */
|
||||
value = 1298; /* --> cpy. */
|
||||
break;
|
||||
case 1212: /* mov */
|
||||
case 1299: /* cpy */
|
||||
value = 1299; /* --> cpy. */
|
||||
break;
|
||||
case 1936: /* fmov */
|
||||
case 1215: /* mov */
|
||||
case 1300: /* cpy */
|
||||
value = 1300; /* --> cpy. */
|
||||
break;
|
||||
case 1205: /* mov */
|
||||
case 1312: /* dup */
|
||||
value = 1312; /* --> dup. */
|
||||
break;
|
||||
case 1207: /* mov */
|
||||
case 1204: /* mov */
|
||||
case 1313: /* dup */
|
||||
value = 1313; /* --> dup. */
|
||||
break;
|
||||
case 1935: /* fmov */
|
||||
case 1209: /* mov */
|
||||
case 1314: /* dup */
|
||||
value = 1314; /* --> dup. */
|
||||
break;
|
||||
case 1208: /* mov */
|
||||
case 1315: /* dupm */
|
||||
value = 1315; /* --> dupm. */
|
||||
break;
|
||||
case 1930: /* eon */
|
||||
case 1317: /* eor */
|
||||
value = 1317; /* --> eor. */
|
||||
break;
|
||||
case 1218: /* not */
|
||||
case 1319: /* eor */
|
||||
value = 1319; /* --> eor. */
|
||||
break;
|
||||
case 1219: /* nots */
|
||||
case 1320: /* eors */
|
||||
value = 1320; /* --> eors. */
|
||||
break;
|
||||
case 1931: /* facle */
|
||||
case 1325: /* facge */
|
||||
value = 1325; /* --> facge. */
|
||||
break;
|
||||
case 1932: /* faclt */
|
||||
case 1326: /* facgt */
|
||||
value = 1326; /* --> facgt. */
|
||||
break;
|
||||
case 1933: /* fcmle */
|
||||
case 1335: /* fcmge */
|
||||
value = 1335; /* --> fcmge. */
|
||||
break;
|
||||
case 1934: /* fcmlt */
|
||||
case 1337: /* fcmgt */
|
||||
value = 1337; /* --> fcmgt. */
|
||||
break;
|
||||
case 1202: /* fmov */
|
||||
case 1343: /* fcpy */
|
||||
value = 1343; /* --> fcpy. */
|
||||
break;
|
||||
case 1201: /* fmov */
|
||||
case 1360: /* fdup */
|
||||
value = 1360; /* --> fdup. */
|
||||
break;
|
||||
case 1107: /* stsmax */
|
||||
case 1035: /* ldsmax */
|
||||
value = 1035; /* --> ldsmax. */
|
||||
break;
|
||||
case 1108: /* stsmaxlb */
|
||||
case 1037: /* ldsmaxlb */
|
||||
value = 1037; /* --> ldsmaxlb. */
|
||||
break;
|
||||
case 1109: /* stsmaxlh */
|
||||
case 1040: /* ldsmaxlh */
|
||||
value = 1040; /* --> ldsmaxlh. */
|
||||
break;
|
||||
case 1110: /* stsmaxl */
|
||||
case 1043: /* ldsmaxl */
|
||||
value = 1043; /* --> ldsmaxl. */
|
||||
break;
|
||||
case 1111: /* stsminb */
|
||||
case 1045: /* ldsminb */
|
||||
value = 1045; /* --> ldsminb. */
|
||||
break;
|
||||
case 1112: /* stsminh */
|
||||
case 1046: /* ldsminh */
|
||||
value = 1046; /* --> ldsminh. */
|
||||
break;
|
||||
case 1113: /* stsmin */
|
||||
case 1047: /* ldsmin */
|
||||
value = 1047; /* --> ldsmin. */
|
||||
break;
|
||||
case 1114: /* stsminlb */
|
||||
case 1049: /* ldsminlb */
|
||||
value = 1049; /* --> ldsminlb. */
|
||||
break;
|
||||
case 1115: /* stsminlh */
|
||||
case 1052: /* ldsminlh */
|
||||
value = 1052; /* --> ldsminlh. */
|
||||
break;
|
||||
case 1116: /* stsminl */
|
||||
case 1055: /* ldsminl */
|
||||
value = 1055; /* --> ldsminl. */
|
||||
break;
|
||||
case 1117: /* stumaxb */
|
||||
case 1057: /* ldumaxb */
|
||||
value = 1057; /* --> ldumaxb. */
|
||||
break;
|
||||
case 1118: /* stumaxh */
|
||||
case 1058: /* ldumaxh */
|
||||
value = 1058; /* --> ldumaxh. */
|
||||
break;
|
||||
case 1119: /* stumax */
|
||||
case 1059: /* ldumax */
|
||||
value = 1059; /* --> ldumax. */
|
||||
break;
|
||||
case 1120: /* stumaxlb */
|
||||
case 1061: /* ldumaxlb */
|
||||
value = 1061; /* --> ldumaxlb. */
|
||||
break;
|
||||
case 1121: /* stumaxlh */
|
||||
case 1064: /* ldumaxlh */
|
||||
value = 1064; /* --> ldumaxlh. */
|
||||
break;
|
||||
case 1122: /* stumaxl */
|
||||
case 1067: /* ldumaxl */
|
||||
value = 1067; /* --> ldumaxl. */
|
||||
break;
|
||||
case 1123: /* stuminb */
|
||||
case 1069: /* lduminb */
|
||||
value = 1069; /* --> lduminb. */
|
||||
break;
|
||||
case 1124: /* stuminh */
|
||||
case 1070: /* lduminh */
|
||||
value = 1070; /* --> lduminh. */
|
||||
break;
|
||||
case 1125: /* stumin */
|
||||
case 1071: /* ldumin */
|
||||
value = 1071; /* --> ldumin. */
|
||||
break;
|
||||
case 1126: /* stuminlb */
|
||||
case 1073: /* lduminlb */
|
||||
value = 1073; /* --> lduminlb. */
|
||||
break;
|
||||
case 1127: /* stuminlh */
|
||||
case 1076: /* lduminlh */
|
||||
value = 1076; /* --> lduminlh. */
|
||||
break;
|
||||
case 1128: /* stuminl */
|
||||
case 1079: /* lduminl */
|
||||
value = 1079; /* --> lduminl. */
|
||||
break;
|
||||
case 1130: /* mov */
|
||||
case 1129: /* movn */
|
||||
value = 1129; /* --> movn. */
|
||||
break;
|
||||
case 1132: /* mov */
|
||||
case 1131: /* movz */
|
||||
value = 1131; /* --> movz. */
|
||||
break;
|
||||
case 1170: /* autibsp */
|
||||
case 1169: /* autibz */
|
||||
case 1168: /* autiasp */
|
||||
case 1167: /* autiaz */
|
||||
case 1166: /* pacibsp */
|
||||
case 1165: /* pacibz */
|
||||
case 1164: /* paciasp */
|
||||
case 1163: /* paciaz */
|
||||
case 1150: /* psb */
|
||||
case 1149: /* esb */
|
||||
case 1148: /* autib1716 */
|
||||
case 1147: /* autia1716 */
|
||||
case 1146: /* pacib1716 */
|
||||
case 1145: /* pacia1716 */
|
||||
case 1144: /* xpaclri */
|
||||
case 1143: /* sevl */
|
||||
case 1142: /* sev */
|
||||
case 1141: /* wfi */
|
||||
case 1140: /* wfe */
|
||||
case 1139: /* yield */
|
||||
case 1138: /* nop */
|
||||
case 1137: /* hint */
|
||||
value = 1137; /* --> hint. */
|
||||
break;
|
||||
case 1159: /* tlbi */
|
||||
case 1158: /* ic */
|
||||
case 1157: /* dc */
|
||||
case 1156: /* at */
|
||||
case 1155: /* sys */
|
||||
value = 1155; /* --> sys. */
|
||||
break;
|
||||
case 1913: /* bic */
|
||||
case 1218: /* and */
|
||||
value = 1218; /* --> and. */
|
||||
break;
|
||||
case 1201: /* mov */
|
||||
case 1220: /* and */
|
||||
value = 1220; /* --> and. */
|
||||
break;
|
||||
case 1205: /* movs */
|
||||
case 1221: /* ands */
|
||||
value = 1221; /* --> ands. */
|
||||
break;
|
||||
case 1914: /* cmple */
|
||||
case 1256: /* cmpge */
|
||||
value = 1256; /* --> cmpge. */
|
||||
break;
|
||||
case 1917: /* cmplt */
|
||||
case 1259: /* cmpgt */
|
||||
value = 1259; /* --> cmpgt. */
|
||||
break;
|
||||
case 1915: /* cmplo */
|
||||
case 1261: /* cmphi */
|
||||
value = 1261; /* --> cmphi. */
|
||||
break;
|
||||
case 1916: /* cmpls */
|
||||
case 1264: /* cmphs */
|
||||
value = 1264; /* --> cmphs. */
|
||||
break;
|
||||
case 1198: /* mov */
|
||||
case 1286: /* cpy */
|
||||
value = 1286; /* --> cpy. */
|
||||
break;
|
||||
case 1200: /* mov */
|
||||
case 1287: /* cpy */
|
||||
value = 1287; /* --> cpy. */
|
||||
break;
|
||||
case 1924: /* fmov */
|
||||
case 1203: /* mov */
|
||||
case 1288: /* cpy */
|
||||
value = 1288; /* --> cpy. */
|
||||
case 1658: /* orr */
|
||||
value = 1658; /* --> orr. */
|
||||
break;
|
||||
case 1193: /* mov */
|
||||
case 1300: /* dup */
|
||||
value = 1300; /* --> dup. */
|
||||
case 1937: /* orn */
|
||||
case 1659: /* orr */
|
||||
value = 1659; /* --> orr. */
|
||||
break;
|
||||
case 1195: /* mov */
|
||||
case 1192: /* mov */
|
||||
case 1301: /* dup */
|
||||
value = 1301; /* --> dup. */
|
||||
case 1206: /* mov */
|
||||
case 1661: /* orr */
|
||||
value = 1661; /* --> orr. */
|
||||
break;
|
||||
case 1923: /* fmov */
|
||||
case 1197: /* mov */
|
||||
case 1302: /* dup */
|
||||
value = 1302; /* --> dup. */
|
||||
case 1216: /* movs */
|
||||
case 1662: /* orrs */
|
||||
value = 1662; /* --> orrs. */
|
||||
break;
|
||||
case 1196: /* mov */
|
||||
case 1303: /* dupm */
|
||||
value = 1303; /* --> dupm. */
|
||||
case 1211: /* mov */
|
||||
case 1718: /* sel */
|
||||
value = 1718; /* --> sel. */
|
||||
break;
|
||||
case 1918: /* eon */
|
||||
case 1305: /* eor */
|
||||
value = 1305; /* --> eor. */
|
||||
break;
|
||||
case 1206: /* not */
|
||||
case 1307: /* eor */
|
||||
value = 1307; /* --> eor. */
|
||||
break;
|
||||
case 1207: /* nots */
|
||||
case 1308: /* eors */
|
||||
value = 1308; /* --> eors. */
|
||||
break;
|
||||
case 1919: /* facle */
|
||||
case 1313: /* facge */
|
||||
value = 1313; /* --> facge. */
|
||||
break;
|
||||
case 1920: /* faclt */
|
||||
case 1314: /* facgt */
|
||||
value = 1314; /* --> facgt. */
|
||||
break;
|
||||
case 1921: /* fcmle */
|
||||
case 1323: /* fcmge */
|
||||
value = 1323; /* --> fcmge. */
|
||||
break;
|
||||
case 1922: /* fcmlt */
|
||||
case 1325: /* fcmgt */
|
||||
value = 1325; /* --> fcmgt. */
|
||||
break;
|
||||
case 1190: /* fmov */
|
||||
case 1331: /* fcpy */
|
||||
value = 1331; /* --> fcpy. */
|
||||
break;
|
||||
case 1189: /* fmov */
|
||||
case 1348: /* fdup */
|
||||
value = 1348; /* --> fdup. */
|
||||
break;
|
||||
case 1191: /* mov */
|
||||
case 1646: /* orr */
|
||||
value = 1646; /* --> orr. */
|
||||
break;
|
||||
case 1925: /* orn */
|
||||
case 1647: /* orr */
|
||||
value = 1647; /* --> orr. */
|
||||
break;
|
||||
case 1194: /* mov */
|
||||
case 1649: /* orr */
|
||||
value = 1649; /* --> orr. */
|
||||
break;
|
||||
case 1204: /* movs */
|
||||
case 1650: /* orrs */
|
||||
value = 1650; /* --> orrs. */
|
||||
break;
|
||||
case 1199: /* mov */
|
||||
case 1706: /* sel */
|
||||
value = 1706; /* --> sel. */
|
||||
break;
|
||||
case 1202: /* mov */
|
||||
case 1707: /* sel */
|
||||
value = 1707; /* --> sel. */
|
||||
case 1214: /* mov */
|
||||
case 1719: /* sel */
|
||||
value = 1719; /* --> sel. */
|
||||
break;
|
||||
default: return NULL;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -209,48 +209,48 @@ const struct aarch64_operand aarch64_operands[] =
|
||||
static const unsigned op_enum_table [] =
|
||||
{
|
||||
0,
|
||||
847,
|
||||
848,
|
||||
849,
|
||||
852,
|
||||
853,
|
||||
854,
|
||||
855,
|
||||
856,
|
||||
850,
|
||||
851,
|
||||
857,
|
||||
858,
|
||||
880,
|
||||
881,
|
||||
882,
|
||||
885,
|
||||
886,
|
||||
887,
|
||||
888,
|
||||
889,
|
||||
883,
|
||||
884,
|
||||
890,
|
||||
891,
|
||||
934,
|
||||
935,
|
||||
936,
|
||||
937,
|
||||
859,
|
||||
860,
|
||||
861,
|
||||
864,
|
||||
865,
|
||||
866,
|
||||
867,
|
||||
868,
|
||||
862,
|
||||
863,
|
||||
869,
|
||||
870,
|
||||
892,
|
||||
893,
|
||||
894,
|
||||
897,
|
||||
898,
|
||||
899,
|
||||
900,
|
||||
901,
|
||||
895,
|
||||
896,
|
||||
902,
|
||||
903,
|
||||
946,
|
||||
947,
|
||||
948,
|
||||
949,
|
||||
12,
|
||||
627,
|
||||
628,
|
||||
1129,
|
||||
1131,
|
||||
1133,
|
||||
941,
|
||||
1132,
|
||||
1130,
|
||||
1141,
|
||||
1143,
|
||||
1145,
|
||||
953,
|
||||
1144,
|
||||
1142,
|
||||
311,
|
||||
615,
|
||||
626,
|
||||
625,
|
||||
939,
|
||||
951,
|
||||
622,
|
||||
619,
|
||||
611,
|
||||
@ -260,34 +260,34 @@ static const unsigned op_enum_table [] =
|
||||
621,
|
||||
623,
|
||||
624,
|
||||
949,
|
||||
643,
|
||||
646,
|
||||
649,
|
||||
644,
|
||||
647,
|
||||
791,
|
||||
961,
|
||||
655,
|
||||
658,
|
||||
661,
|
||||
656,
|
||||
659,
|
||||
803,
|
||||
171,
|
||||
172,
|
||||
173,
|
||||
174,
|
||||
507,
|
||||
732,
|
||||
744,
|
||||
380,
|
||||
382,
|
||||
404,
|
||||
406,
|
||||
1194,
|
||||
1199,
|
||||
1192,
|
||||
1191,
|
||||
1195,
|
||||
1202,
|
||||
1204,
|
||||
1205,
|
||||
1201,
|
||||
1207,
|
||||
1206,
|
||||
1211,
|
||||
1204,
|
||||
1203,
|
||||
1207,
|
||||
1214,
|
||||
1216,
|
||||
1217,
|
||||
1213,
|
||||
1219,
|
||||
1218,
|
||||
};
|
||||
|
||||
/* Given the opcode enumerator OP, return the pointer to the corresponding
|
||||
|
@ -2618,6 +2618,18 @@ struct aarch64_opcode aarch64_opcode_table[] =
|
||||
CORE_INSN ("ret", 0xd65f0000, 0xfffffc1f, branch_reg, 0, OP1 (Rn), QL_I1X, F_OPD0_OPT | F_DEFAULT (30)),
|
||||
CORE_INSN ("eret", 0xd69f03e0, 0xffffffff, branch_reg, 0, OP0 (), {}, 0),
|
||||
CORE_INSN ("drps", 0xd6bf03e0, 0xffffffff, branch_reg, 0, OP0 (), {}, 0),
|
||||
V8_3_INSN ("braa", 0xd71f0800, 0xfffffc00, branch_reg, OP2 (Rn, Rd_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("brab", 0xd71f0c00, 0xfffffc00, branch_reg, OP2 (Rn, Rd_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("blraa", 0xd73f0800, 0xfffffc00, branch_reg, OP2 (Rn, Rd_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("blrab", 0xd73f0c00, 0xfffffc00, branch_reg, OP2 (Rn, Rd_SP), QL_I2SAMEX, 0),
|
||||
V8_3_INSN ("braaz", 0xd61f081f, 0xfffffc1f, branch_reg, OP1 (Rn), QL_I1X, 0),
|
||||
V8_3_INSN ("brabz", 0xd61f0c1f, 0xfffffc1f, branch_reg, OP1 (Rn), QL_I1X, 0),
|
||||
V8_3_INSN ("blraaz", 0xd63f081f, 0xfffffc1f, branch_reg, OP1 (Rn), QL_I1X, 0),
|
||||
V8_3_INSN ("blrabz", 0xd63f0c1f, 0xfffffc1f, branch_reg, OP1 (Rn), QL_I1X, 0),
|
||||
V8_3_INSN ("retaa", 0xd65f0bff, 0xffffffff, branch_reg, OP0 (), {}, 0),
|
||||
V8_3_INSN ("retab", 0xd65f0fff, 0xffffffff, branch_reg, OP0 (), {}, 0),
|
||||
V8_3_INSN ("eretaa", 0xd69f0bff, 0xffffffff, branch_reg, OP0 (), {}, 0),
|
||||
V8_3_INSN ("eretab", 0xd69f0fff, 0xffffffff, branch_reg, OP0 (), {}, 0),
|
||||
/* Compare & branch (immediate). */
|
||||
CORE_INSN ("cbz", 0x34000000, 0x7f000000, compbranch, 0, OP2 (Rt, ADDR_PCREL19), QL_R_PCREL, F_SF),
|
||||
CORE_INSN ("cbnz", 0x35000000, 0x7f000000, compbranch, 0, OP2 (Rt, ADDR_PCREL19), QL_R_PCREL, F_SF),
|
||||
|
Reference in New Issue
Block a user