[BINUTILS, AARCH64, 3/8] Add Pointer Arithmetic instructions in Memory Tagging Extension
This patch is part of the patch series to add support for ARMv8.5-A Memory Tagging Extensions which is an optional extension to ARMv8.5-A and is enabled using the +memtag command line option. This patch add support to the Pointer Arithmetic instructions from MTE. These are the following instructions added in this patch: - SUBP <Xd>, <Xn|SP>, <Xm|SP> - SUBPS <Xd>, <Xn|SP>, <Xm|SP> - CMPP <Xn|SP>, <Xm|SP> where CMPP is an alias to SUBPS XZR, <Xn|SP>, <Xm|SP> where <Xd> : Is the 64-bit destination GPR. <Xn|SP> : Is the 64-bit first source GPR or Stack pointer. <Xm|SP> : Is the 64-bit second source GPR or Stack pointer. *** opcodes/ChangeLog *** 2018-11-12 Sudakshina Das <sudi.das@arm.com> * aarch64-tbl.h (aarch64_opcode_table): Add subp, subps and cmpp. * aarch64-asm-2.c: Regenerated. * aarch64-dis-2.c: Regenerated. * aarch64-opc-2.c: Regenerated. *** gas/ChangeLog *** 2018-11-12 Sudakshina Das <sudi.das@arm.com> * testsuite/gas/aarch64/armv8_5-a-memtag.s: Add tests for subp, subps and cmpp. * testsuite/gas/aarch64/armv8_5-a-memtag.d: Likewise. * testsuite/gas/aarch64/illegal-memtag.s: Likewise. * testsuite/gas/aarch64/illegal-memtag.l: Likewise.
This commit is contained in:
parent
193614f2b9
commit
b731bc3b1b
@ -1,3 +1,11 @@
|
||||
2018-11-12 Sudakshina Das <sudi.das@arm.com>
|
||||
|
||||
* testsuite/gas/aarch64/armv8_5-a-memtag.s: Add tests for subp,
|
||||
subps and cmpp.
|
||||
* testsuite/gas/aarch64/armv8_5-a-memtag.d: Likewise.
|
||||
* testsuite/gas/aarch64/illegal-memtag.s: Likewise.
|
||||
* testsuite/gas/aarch64/illegal-memtag.l: Likewise.
|
||||
|
||||
2018-11-12 Sudakshina Das <sudi.das@arm.com>
|
||||
|
||||
* config/tc-aarch64.c (parse_operands): Add switch case for
|
||||
|
@ -33,3 +33,25 @@ Disassembly of section \.text:
|
||||
.*: d180037b subg x27, x27, #0x0, #0x0
|
||||
.*: d1bf3fe0 subg x0, sp, #0x3f0, #0xf
|
||||
.*: d1bf141f subg sp, x0, #0x3f0, #0x5
|
||||
.*: 9ac00000 subp x0, x0, x0
|
||||
.*: 9ac0001b subp x27, x0, x0
|
||||
.*: 9ac00360 subp x0, x27, x0
|
||||
.*: 9adb0000 subp x0, x0, x27
|
||||
.*: 9adb037b subp x27, x27, x27
|
||||
.*: 9ac003e0 subp x0, sp, x0
|
||||
.*: 9adf0000 subp x0, x0, sp
|
||||
.*: 9ac0001f subp xzr, x0, x0
|
||||
.*: bac00000 subps x0, x0, x0
|
||||
.*: bac0001b subps x27, x0, x0
|
||||
.*: bac00360 subps x0, x27, x0
|
||||
.*: badb0000 subps x0, x0, x27
|
||||
.*: badb037b subps x27, x27, x27
|
||||
.*: bac003e0 subps x0, sp, x0
|
||||
.*: badf0000 subps x0, x0, sp
|
||||
.*: bac0001f cmpp x0, x0
|
||||
.*: bac0001f cmpp x0, x0
|
||||
.*: bac0037f cmpp x27, x0
|
||||
.*: badb001f cmpp x0, x27
|
||||
.*: badb037f cmpp x27, x27
|
||||
.*: bac003ff cmpp sp, x0
|
||||
.*: badf001f cmpp x0, sp
|
||||
|
@ -35,3 +35,23 @@ func:
|
||||
expand_2_reg subg
|
||||
subg x0, sp, #0x3f0, #0xf
|
||||
subg sp, x0, #0x3f0, #0x5
|
||||
|
||||
# SUBP
|
||||
expand_3_reg subp
|
||||
subp x0, sp, x0
|
||||
subp x0, x0, sp
|
||||
subp xzr, x0, x0
|
||||
|
||||
# SUBPS
|
||||
expand_3_reg subps
|
||||
subps x0, sp, x0
|
||||
subps x0, x0, sp
|
||||
subps xzr, x0, x0
|
||||
|
||||
# CMPP
|
||||
cmpp x0, x0
|
||||
cmpp x27, x0
|
||||
cmpp x0, x27
|
||||
cmpp x27, x27
|
||||
cmpp sp, x0
|
||||
cmpp x0, sp
|
||||
|
@ -12,3 +12,11 @@
|
||||
[^:]*:[0-9]+: Error: operand 2 must be an integer or stack pointer register -- `gmi x1,xzr,x3'
|
||||
[^:]*:[0-9]+: Error: operand 1 must be an integer or stack pointer register -- `addg xzr,x2,#0,#0'
|
||||
[^:]*:[0-9]+: Error: operand 2 must be an integer or stack pointer register -- `subg x1,xzr,#0,#0'
|
||||
[^:]*:[0-9]+: Error: operand 1 must be an integer register -- `subp sp,x1,x2'
|
||||
[^:]*:[0-9]+: Error: operand 2 must be an integer or stack pointer register -- `subp x1,xzr,x2'
|
||||
[^:]*:[0-9]+: Error: operand 3 must be an integer or stack pointer register -- `subp x1,x2,xzr'
|
||||
[^:]*:[0-9]+: Error: operand 1 must be an integer register -- `subps sp,x1,x2'
|
||||
[^:]*:[0-9]+: Error: operand 2 must be an integer or stack pointer register -- `subps x1,xzr,x2'
|
||||
[^:]*:[0-9]+: Error: operand 3 must be an integer or stack pointer register -- `subps x1,x2,xzr'
|
||||
[^:]*:[0-9]+: Error: operand 1 must be an integer or stack pointer register -- `cmpp xzr,x2'
|
||||
[^:]*:[0-9]+: Error: operand 2 must be an integer or stack pointer register -- `cmpp x2,xzr'
|
||||
|
@ -17,3 +17,11 @@ func:
|
||||
gmi x1, xzr, x3
|
||||
addg xzr, x2, #0, #0
|
||||
subg x1, xzr, #0, #0
|
||||
subp sp, x1, x2
|
||||
subp x1, xzr, x2
|
||||
subp x1, x2, xzr
|
||||
subps sp, x1, x2
|
||||
subps x1, xzr, x2
|
||||
subps x1, x2, xzr
|
||||
cmpp xzr, x2
|
||||
cmpp x2, xzr
|
||||
|
@ -1,3 +1,10 @@
|
||||
2018-11-12 Sudakshina Das <sudi.das@arm.com>
|
||||
|
||||
* aarch64-tbl.h (aarch64_opcode_table): Add subp, subps and cmpp.
|
||||
* aarch64-asm-2.c: Regenerated.
|
||||
* aarch64-dis-2.c: Regenerated.
|
||||
* aarch64-opc-2.c: Regenerated.
|
||||
|
||||
2018-11-12 Sudakshina Das <sudi.das@arm.com>
|
||||
|
||||
* aarch64-opc.h (aarch64_field_kind): New FLD_imm4_3.
|
||||
|
@ -169,418 +169,422 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
|
||||
case 719: /* rorv */
|
||||
value = 719; /* --> rorv. */
|
||||
break;
|
||||
case 733: /* mul */
|
||||
case 732: /* madd */
|
||||
value = 732; /* --> madd. */
|
||||
break;
|
||||
case 735: /* mneg */
|
||||
case 734: /* msub */
|
||||
value = 734; /* --> msub. */
|
||||
break;
|
||||
case 737: /* smull */
|
||||
case 736: /* smaddl */
|
||||
value = 736; /* --> smaddl. */
|
||||
break;
|
||||
case 739: /* smnegl */
|
||||
case 738: /* smsubl */
|
||||
value = 738; /* --> smsubl. */
|
||||
break;
|
||||
case 742: /* umull */
|
||||
case 741: /* umaddl */
|
||||
value = 741; /* --> umaddl. */
|
||||
break;
|
||||
case 744: /* umnegl */
|
||||
case 743: /* umsubl */
|
||||
value = 743; /* --> umsubl. */
|
||||
break;
|
||||
case 755: /* ror */
|
||||
case 754: /* extr */
|
||||
value = 754; /* --> extr. */
|
||||
break;
|
||||
case 974: /* bic */
|
||||
case 973: /* and */
|
||||
value = 973; /* --> and. */
|
||||
break;
|
||||
case 976: /* mov */
|
||||
case 975: /* orr */
|
||||
value = 975; /* --> orr. */
|
||||
break;
|
||||
case 979: /* tst */
|
||||
case 978: /* ands */
|
||||
value = 978; /* --> ands. */
|
||||
break;
|
||||
case 984: /* uxtw */
|
||||
case 983: /* mov */
|
||||
case 982: /* orr */
|
||||
value = 982; /* --> orr. */
|
||||
case 723: /* cmpp */
|
||||
case 722: /* subps */
|
||||
value = 722; /* --> subps. */
|
||||
break;
|
||||
case 736: /* mul */
|
||||
case 735: /* madd */
|
||||
value = 735; /* --> madd. */
|
||||
break;
|
||||
case 738: /* mneg */
|
||||
case 737: /* msub */
|
||||
value = 737; /* --> msub. */
|
||||
break;
|
||||
case 740: /* smull */
|
||||
case 739: /* smaddl */
|
||||
value = 739; /* --> smaddl. */
|
||||
break;
|
||||
case 742: /* smnegl */
|
||||
case 741: /* smsubl */
|
||||
value = 741; /* --> smsubl. */
|
||||
break;
|
||||
case 745: /* umull */
|
||||
case 744: /* umaddl */
|
||||
value = 744; /* --> umaddl. */
|
||||
break;
|
||||
case 747: /* umnegl */
|
||||
case 746: /* umsubl */
|
||||
value = 746; /* --> umsubl. */
|
||||
break;
|
||||
case 758: /* ror */
|
||||
case 757: /* extr */
|
||||
value = 757; /* --> extr. */
|
||||
break;
|
||||
case 977: /* bic */
|
||||
case 976: /* and */
|
||||
value = 976; /* --> and. */
|
||||
break;
|
||||
case 979: /* mov */
|
||||
case 978: /* orr */
|
||||
value = 978; /* --> orr. */
|
||||
break;
|
||||
case 982: /* tst */
|
||||
case 981: /* ands */
|
||||
value = 981; /* --> ands. */
|
||||
break;
|
||||
case 987: /* uxtw */
|
||||
case 986: /* mov */
|
||||
case 985: /* orr */
|
||||
value = 985; /* --> orr. */
|
||||
break;
|
||||
case 986: /* mvn */
|
||||
case 985: /* orn */
|
||||
value = 985; /* --> orn. */
|
||||
case 989: /* mvn */
|
||||
case 988: /* orn */
|
||||
value = 988; /* --> orn. */
|
||||
break;
|
||||
case 990: /* tst */
|
||||
case 989: /* ands */
|
||||
value = 989; /* --> ands. */
|
||||
case 993: /* tst */
|
||||
case 992: /* ands */
|
||||
value = 992; /* --> ands. */
|
||||
break;
|
||||
case 1116: /* staddb */
|
||||
case 1020: /* ldaddb */
|
||||
value = 1020; /* --> ldaddb. */
|
||||
case 1119: /* staddb */
|
||||
case 1023: /* ldaddb */
|
||||
value = 1023; /* --> ldaddb. */
|
||||
break;
|
||||
case 1117: /* staddh */
|
||||
case 1021: /* ldaddh */
|
||||
value = 1021; /* --> ldaddh. */
|
||||
case 1120: /* staddh */
|
||||
case 1024: /* ldaddh */
|
||||
value = 1024; /* --> ldaddh. */
|
||||
break;
|
||||
case 1118: /* stadd */
|
||||
case 1022: /* ldadd */
|
||||
value = 1022; /* --> ldadd. */
|
||||
case 1121: /* stadd */
|
||||
case 1025: /* ldadd */
|
||||
value = 1025; /* --> ldadd. */
|
||||
break;
|
||||
case 1119: /* staddlb */
|
||||
case 1024: /* ldaddlb */
|
||||
value = 1024; /* --> ldaddlb. */
|
||||
case 1122: /* staddlb */
|
||||
case 1027: /* ldaddlb */
|
||||
value = 1027; /* --> ldaddlb. */
|
||||
break;
|
||||
case 1120: /* staddlh */
|
||||
case 1027: /* ldaddlh */
|
||||
value = 1027; /* --> ldaddlh. */
|
||||
case 1123: /* staddlh */
|
||||
case 1030: /* ldaddlh */
|
||||
value = 1030; /* --> ldaddlh. */
|
||||
break;
|
||||
case 1121: /* staddl */
|
||||
case 1030: /* ldaddl */
|
||||
value = 1030; /* --> ldaddl. */
|
||||
case 1124: /* staddl */
|
||||
case 1033: /* ldaddl */
|
||||
value = 1033; /* --> ldaddl. */
|
||||
break;
|
||||
case 1122: /* stclrb */
|
||||
case 1032: /* ldclrb */
|
||||
value = 1032; /* --> ldclrb. */
|
||||
case 1125: /* stclrb */
|
||||
case 1035: /* ldclrb */
|
||||
value = 1035; /* --> ldclrb. */
|
||||
break;
|
||||
case 1123: /* stclrh */
|
||||
case 1033: /* ldclrh */
|
||||
value = 1033; /* --> ldclrh. */
|
||||
case 1126: /* stclrh */
|
||||
case 1036: /* ldclrh */
|
||||
value = 1036; /* --> ldclrh. */
|
||||
break;
|
||||
case 1124: /* stclr */
|
||||
case 1034: /* ldclr */
|
||||
value = 1034; /* --> ldclr. */
|
||||
case 1127: /* stclr */
|
||||
case 1037: /* ldclr */
|
||||
value = 1037; /* --> ldclr. */
|
||||
break;
|
||||
case 1125: /* stclrlb */
|
||||
case 1036: /* ldclrlb */
|
||||
value = 1036; /* --> ldclrlb. */
|
||||
case 1128: /* stclrlb */
|
||||
case 1039: /* ldclrlb */
|
||||
value = 1039; /* --> ldclrlb. */
|
||||
break;
|
||||
case 1126: /* stclrlh */
|
||||
case 1039: /* ldclrlh */
|
||||
value = 1039; /* --> ldclrlh. */
|
||||
case 1129: /* stclrlh */
|
||||
case 1042: /* ldclrlh */
|
||||
value = 1042; /* --> ldclrlh. */
|
||||
break;
|
||||
case 1127: /* stclrl */
|
||||
case 1042: /* ldclrl */
|
||||
value = 1042; /* --> ldclrl. */
|
||||
case 1130: /* stclrl */
|
||||
case 1045: /* ldclrl */
|
||||
value = 1045; /* --> ldclrl. */
|
||||
break;
|
||||
case 1128: /* steorb */
|
||||
case 1044: /* ldeorb */
|
||||
value = 1044; /* --> ldeorb. */
|
||||
case 1131: /* steorb */
|
||||
case 1047: /* ldeorb */
|
||||
value = 1047; /* --> ldeorb. */
|
||||
break;
|
||||
case 1129: /* steorh */
|
||||
case 1045: /* ldeorh */
|
||||
value = 1045; /* --> ldeorh. */
|
||||
case 1132: /* steorh */
|
||||
case 1048: /* ldeorh */
|
||||
value = 1048; /* --> ldeorh. */
|
||||
break;
|
||||
case 1130: /* steor */
|
||||
case 1046: /* ldeor */
|
||||
value = 1046; /* --> ldeor. */
|
||||
case 1133: /* steor */
|
||||
case 1049: /* ldeor */
|
||||
value = 1049; /* --> ldeor. */
|
||||
break;
|
||||
case 1131: /* steorlb */
|
||||
case 1048: /* ldeorlb */
|
||||
value = 1048; /* --> ldeorlb. */
|
||||
case 1134: /* steorlb */
|
||||
case 1051: /* ldeorlb */
|
||||
value = 1051; /* --> ldeorlb. */
|
||||
break;
|
||||
case 1132: /* steorlh */
|
||||
case 1051: /* ldeorlh */
|
||||
value = 1051; /* --> ldeorlh. */
|
||||
case 1135: /* steorlh */
|
||||
case 1054: /* ldeorlh */
|
||||
value = 1054; /* --> ldeorlh. */
|
||||
break;
|
||||
case 1133: /* steorl */
|
||||
case 1054: /* ldeorl */
|
||||
value = 1054; /* --> ldeorl. */
|
||||
case 1136: /* steorl */
|
||||
case 1057: /* ldeorl */
|
||||
value = 1057; /* --> ldeorl. */
|
||||
break;
|
||||
case 1134: /* stsetb */
|
||||
case 1056: /* ldsetb */
|
||||
value = 1056; /* --> ldsetb. */
|
||||
case 1137: /* stsetb */
|
||||
case 1059: /* ldsetb */
|
||||
value = 1059; /* --> ldsetb. */
|
||||
break;
|
||||
case 1135: /* stseth */
|
||||
case 1057: /* ldseth */
|
||||
value = 1057; /* --> ldseth. */
|
||||
case 1138: /* stseth */
|
||||
case 1060: /* ldseth */
|
||||
value = 1060; /* --> ldseth. */
|
||||
break;
|
||||
case 1136: /* stset */
|
||||
case 1058: /* ldset */
|
||||
value = 1058; /* --> ldset. */
|
||||
case 1139: /* stset */
|
||||
case 1061: /* ldset */
|
||||
value = 1061; /* --> ldset. */
|
||||
break;
|
||||
case 1137: /* stsetlb */
|
||||
case 1060: /* ldsetlb */
|
||||
value = 1060; /* --> ldsetlb. */
|
||||
case 1140: /* stsetlb */
|
||||
case 1063: /* ldsetlb */
|
||||
value = 1063; /* --> ldsetlb. */
|
||||
break;
|
||||
case 1138: /* stsetlh */
|
||||
case 1063: /* ldsetlh */
|
||||
value = 1063; /* --> ldsetlh. */
|
||||
case 1141: /* stsetlh */
|
||||
case 1066: /* ldsetlh */
|
||||
value = 1066; /* --> ldsetlh. */
|
||||
break;
|
||||
case 1139: /* stsetl */
|
||||
case 1066: /* ldsetl */
|
||||
value = 1066; /* --> ldsetl. */
|
||||
case 1142: /* stsetl */
|
||||
case 1069: /* ldsetl */
|
||||
value = 1069; /* --> ldsetl. */
|
||||
break;
|
||||
case 1140: /* stsmaxb */
|
||||
case 1068: /* ldsmaxb */
|
||||
value = 1068; /* --> ldsmaxb. */
|
||||
case 1143: /* stsmaxb */
|
||||
case 1071: /* ldsmaxb */
|
||||
value = 1071; /* --> ldsmaxb. */
|
||||
break;
|
||||
case 1141: /* stsmaxh */
|
||||
case 1069: /* ldsmaxh */
|
||||
value = 1069; /* --> ldsmaxh. */
|
||||
case 1144: /* stsmaxh */
|
||||
case 1072: /* ldsmaxh */
|
||||
value = 1072; /* --> ldsmaxh. */
|
||||
break;
|
||||
case 1142: /* stsmax */
|
||||
case 1070: /* ldsmax */
|
||||
value = 1070; /* --> ldsmax. */
|
||||
break;
|
||||
case 1143: /* stsmaxlb */
|
||||
case 1072: /* ldsmaxlb */
|
||||
value = 1072; /* --> ldsmaxlb. */
|
||||
break;
|
||||
case 1144: /* stsmaxlh */
|
||||
case 1075: /* ldsmaxlh */
|
||||
value = 1075; /* --> ldsmaxlh. */
|
||||
break;
|
||||
case 1145: /* stsmaxl */
|
||||
case 1078: /* ldsmaxl */
|
||||
value = 1078; /* --> ldsmaxl. */
|
||||
break;
|
||||
case 1146: /* stsminb */
|
||||
case 1080: /* ldsminb */
|
||||
value = 1080; /* --> ldsminb. */
|
||||
break;
|
||||
case 1147: /* stsminh */
|
||||
case 1081: /* ldsminh */
|
||||
value = 1081; /* --> ldsminh. */
|
||||
break;
|
||||
case 1148: /* stsmin */
|
||||
case 1082: /* ldsmin */
|
||||
value = 1082; /* --> ldsmin. */
|
||||
break;
|
||||
case 1149: /* stsminlb */
|
||||
case 1084: /* ldsminlb */
|
||||
value = 1084; /* --> ldsminlb. */
|
||||
break;
|
||||
case 1150: /* stsminlh */
|
||||
case 1087: /* ldsminlh */
|
||||
value = 1087; /* --> ldsminlh. */
|
||||
break;
|
||||
case 1151: /* stsminl */
|
||||
case 1090: /* ldsminl */
|
||||
value = 1090; /* --> ldsminl. */
|
||||
break;
|
||||
case 1152: /* stumaxb */
|
||||
case 1092: /* ldumaxb */
|
||||
value = 1092; /* --> ldumaxb. */
|
||||
break;
|
||||
case 1153: /* stumaxh */
|
||||
case 1093: /* ldumaxh */
|
||||
value = 1093; /* --> ldumaxh. */
|
||||
break;
|
||||
case 1154: /* stumax */
|
||||
case 1094: /* ldumax */
|
||||
value = 1094; /* --> ldumax. */
|
||||
break;
|
||||
case 1155: /* stumaxlb */
|
||||
case 1096: /* ldumaxlb */
|
||||
value = 1096; /* --> ldumaxlb. */
|
||||
break;
|
||||
case 1156: /* stumaxlh */
|
||||
case 1099: /* ldumaxlh */
|
||||
value = 1099; /* --> ldumaxlh. */
|
||||
break;
|
||||
case 1157: /* stumaxl */
|
||||
case 1102: /* ldumaxl */
|
||||
value = 1102; /* --> ldumaxl. */
|
||||
break;
|
||||
case 1158: /* stuminb */
|
||||
case 1104: /* lduminb */
|
||||
value = 1104; /* --> lduminb. */
|
||||
break;
|
||||
case 1159: /* stuminh */
|
||||
case 1105: /* lduminh */
|
||||
value = 1105; /* --> lduminh. */
|
||||
break;
|
||||
case 1160: /* stumin */
|
||||
case 1106: /* ldumin */
|
||||
value = 1106; /* --> ldumin. */
|
||||
break;
|
||||
case 1161: /* stuminlb */
|
||||
case 1108: /* lduminlb */
|
||||
value = 1108; /* --> lduminlb. */
|
||||
break;
|
||||
case 1162: /* stuminlh */
|
||||
case 1111: /* lduminlh */
|
||||
value = 1111; /* --> lduminlh. */
|
||||
break;
|
||||
case 1163: /* stuminl */
|
||||
case 1114: /* lduminl */
|
||||
value = 1114; /* --> lduminl. */
|
||||
break;
|
||||
case 1165: /* mov */
|
||||
case 1164: /* movn */
|
||||
value = 1164; /* --> movn. */
|
||||
break;
|
||||
case 1167: /* mov */
|
||||
case 1166: /* movz */
|
||||
value = 1166; /* --> movz. */
|
||||
break;
|
||||
case 1213: /* autibsp */
|
||||
case 1212: /* autibz */
|
||||
case 1211: /* autiasp */
|
||||
case 1210: /* autiaz */
|
||||
case 1209: /* pacibsp */
|
||||
case 1208: /* pacibz */
|
||||
case 1207: /* paciasp */
|
||||
case 1206: /* paciaz */
|
||||
case 1187: /* psb */
|
||||
case 1186: /* esb */
|
||||
case 1185: /* autib1716 */
|
||||
case 1184: /* autia1716 */
|
||||
case 1183: /* pacib1716 */
|
||||
case 1182: /* pacia1716 */
|
||||
case 1181: /* xpaclri */
|
||||
case 1180: /* sevl */
|
||||
case 1179: /* sev */
|
||||
case 1178: /* wfi */
|
||||
case 1177: /* wfe */
|
||||
case 1176: /* yield */
|
||||
case 1175: /* bti */
|
||||
case 1174: /* csdb */
|
||||
case 1173: /* nop */
|
||||
case 1172: /* hint */
|
||||
value = 1172; /* --> hint. */
|
||||
break;
|
||||
case 1191: /* pssbb */
|
||||
case 1190: /* ssbb */
|
||||
case 1189: /* dsb */
|
||||
value = 1189; /* --> dsb. */
|
||||
break;
|
||||
case 1202: /* cpp */
|
||||
case 1201: /* dvp */
|
||||
case 1200: /* cfp */
|
||||
case 1199: /* tlbi */
|
||||
case 1198: /* ic */
|
||||
case 1197: /* dc */
|
||||
case 1196: /* at */
|
||||
case 1195: /* sys */
|
||||
value = 1195; /* --> sys. */
|
||||
break;
|
||||
case 2011: /* bic */
|
||||
case 1261: /* and */
|
||||
value = 1261; /* --> and. */
|
||||
case 1145: /* stsmax */
|
||||
case 1073: /* ldsmax */
|
||||
value = 1073; /* --> ldsmax. */
|
||||
break;
|
||||
case 1146: /* stsmaxlb */
|
||||
case 1075: /* ldsmaxlb */
|
||||
value = 1075; /* --> ldsmaxlb. */
|
||||
break;
|
||||
case 1147: /* stsmaxlh */
|
||||
case 1078: /* ldsmaxlh */
|
||||
value = 1078; /* --> ldsmaxlh. */
|
||||
break;
|
||||
case 1148: /* stsmaxl */
|
||||
case 1081: /* ldsmaxl */
|
||||
value = 1081; /* --> ldsmaxl. */
|
||||
break;
|
||||
case 1149: /* stsminb */
|
||||
case 1083: /* ldsminb */
|
||||
value = 1083; /* --> ldsminb. */
|
||||
break;
|
||||
case 1150: /* stsminh */
|
||||
case 1084: /* ldsminh */
|
||||
value = 1084; /* --> ldsminh. */
|
||||
break;
|
||||
case 1151: /* stsmin */
|
||||
case 1085: /* ldsmin */
|
||||
value = 1085; /* --> ldsmin. */
|
||||
break;
|
||||
case 1152: /* stsminlb */
|
||||
case 1087: /* ldsminlb */
|
||||
value = 1087; /* --> ldsminlb. */
|
||||
break;
|
||||
case 1153: /* stsminlh */
|
||||
case 1090: /* ldsminlh */
|
||||
value = 1090; /* --> ldsminlh. */
|
||||
break;
|
||||
case 1154: /* stsminl */
|
||||
case 1093: /* ldsminl */
|
||||
value = 1093; /* --> ldsminl. */
|
||||
break;
|
||||
case 1155: /* stumaxb */
|
||||
case 1095: /* ldumaxb */
|
||||
value = 1095; /* --> ldumaxb. */
|
||||
break;
|
||||
case 1156: /* stumaxh */
|
||||
case 1096: /* ldumaxh */
|
||||
value = 1096; /* --> ldumaxh. */
|
||||
break;
|
||||
case 1157: /* stumax */
|
||||
case 1097: /* ldumax */
|
||||
value = 1097; /* --> ldumax. */
|
||||
break;
|
||||
case 1158: /* stumaxlb */
|
||||
case 1099: /* ldumaxlb */
|
||||
value = 1099; /* --> ldumaxlb. */
|
||||
break;
|
||||
case 1159: /* stumaxlh */
|
||||
case 1102: /* ldumaxlh */
|
||||
value = 1102; /* --> ldumaxlh. */
|
||||
break;
|
||||
case 1160: /* stumaxl */
|
||||
case 1105: /* ldumaxl */
|
||||
value = 1105; /* --> ldumaxl. */
|
||||
break;
|
||||
case 1161: /* stuminb */
|
||||
case 1107: /* lduminb */
|
||||
value = 1107; /* --> lduminb. */
|
||||
break;
|
||||
case 1162: /* stuminh */
|
||||
case 1108: /* lduminh */
|
||||
value = 1108; /* --> lduminh. */
|
||||
break;
|
||||
case 1163: /* stumin */
|
||||
case 1109: /* ldumin */
|
||||
value = 1109; /* --> ldumin. */
|
||||
break;
|
||||
case 1164: /* stuminlb */
|
||||
case 1111: /* lduminlb */
|
||||
value = 1111; /* --> lduminlb. */
|
||||
break;
|
||||
case 1165: /* stuminlh */
|
||||
case 1114: /* lduminlh */
|
||||
value = 1114; /* --> lduminlh. */
|
||||
break;
|
||||
case 1166: /* stuminl */
|
||||
case 1117: /* lduminl */
|
||||
value = 1117; /* --> lduminl. */
|
||||
break;
|
||||
case 1168: /* mov */
|
||||
case 1167: /* movn */
|
||||
value = 1167; /* --> movn. */
|
||||
break;
|
||||
case 1170: /* mov */
|
||||
case 1169: /* movz */
|
||||
value = 1169; /* --> movz. */
|
||||
break;
|
||||
case 1216: /* autibsp */
|
||||
case 1215: /* autibz */
|
||||
case 1214: /* autiasp */
|
||||
case 1213: /* autiaz */
|
||||
case 1212: /* pacibsp */
|
||||
case 1211: /* pacibz */
|
||||
case 1210: /* paciasp */
|
||||
case 1209: /* paciaz */
|
||||
case 1190: /* psb */
|
||||
case 1189: /* esb */
|
||||
case 1188: /* autib1716 */
|
||||
case 1187: /* autia1716 */
|
||||
case 1186: /* pacib1716 */
|
||||
case 1185: /* pacia1716 */
|
||||
case 1184: /* xpaclri */
|
||||
case 1183: /* sevl */
|
||||
case 1182: /* sev */
|
||||
case 1181: /* wfi */
|
||||
case 1180: /* wfe */
|
||||
case 1179: /* yield */
|
||||
case 1178: /* bti */
|
||||
case 1177: /* csdb */
|
||||
case 1176: /* nop */
|
||||
case 1175: /* hint */
|
||||
value = 1175; /* --> hint. */
|
||||
break;
|
||||
case 1194: /* pssbb */
|
||||
case 1193: /* ssbb */
|
||||
case 1192: /* dsb */
|
||||
value = 1192; /* --> dsb. */
|
||||
break;
|
||||
case 1205: /* cpp */
|
||||
case 1204: /* dvp */
|
||||
case 1203: /* cfp */
|
||||
case 1202: /* tlbi */
|
||||
case 1201: /* ic */
|
||||
case 1200: /* dc */
|
||||
case 1199: /* at */
|
||||
case 1198: /* sys */
|
||||
value = 1198; /* --> sys. */
|
||||
break;
|
||||
case 2014: /* bic */
|
||||
case 1264: /* and */
|
||||
value = 1264; /* --> and. */
|
||||
break;
|
||||
case 1247: /* mov */
|
||||
case 1266: /* and */
|
||||
value = 1266; /* --> and. */
|
||||
break;
|
||||
case 1251: /* movs */
|
||||
case 1267: /* ands */
|
||||
value = 1267; /* --> ands. */
|
||||
break;
|
||||
case 2015: /* cmple */
|
||||
case 1302: /* cmpge */
|
||||
value = 1302; /* --> cmpge. */
|
||||
break;
|
||||
case 2018: /* cmplt */
|
||||
case 1305: /* cmpgt */
|
||||
value = 1305; /* --> cmpgt. */
|
||||
break;
|
||||
case 2016: /* cmplo */
|
||||
case 1307: /* cmphi */
|
||||
value = 1307; /* --> cmphi. */
|
||||
break;
|
||||
case 2017: /* cmpls */
|
||||
case 1310: /* cmphs */
|
||||
value = 1310; /* --> cmphs. */
|
||||
break;
|
||||
case 1244: /* mov */
|
||||
case 1263: /* and */
|
||||
value = 1263; /* --> and. */
|
||||
case 1332: /* cpy */
|
||||
value = 1332; /* --> cpy. */
|
||||
break;
|
||||
case 1248: /* movs */
|
||||
case 1264: /* ands */
|
||||
value = 1264; /* --> ands. */
|
||||
break;
|
||||
case 2012: /* cmple */
|
||||
case 1299: /* cmpge */
|
||||
value = 1299; /* --> cmpge. */
|
||||
break;
|
||||
case 2015: /* cmplt */
|
||||
case 1302: /* cmpgt */
|
||||
value = 1302; /* --> cmpgt. */
|
||||
break;
|
||||
case 2013: /* cmplo */
|
||||
case 1304: /* cmphi */
|
||||
value = 1304; /* --> cmphi. */
|
||||
break;
|
||||
case 2014: /* cmpls */
|
||||
case 1307: /* cmphs */
|
||||
value = 1307; /* --> cmphs. */
|
||||
break;
|
||||
case 1241: /* mov */
|
||||
case 1329: /* cpy */
|
||||
value = 1329; /* --> cpy. */
|
||||
break;
|
||||
case 1243: /* mov */
|
||||
case 1330: /* cpy */
|
||||
value = 1330; /* --> cpy. */
|
||||
break;
|
||||
case 2022: /* fmov */
|
||||
case 1246: /* mov */
|
||||
case 1331: /* cpy */
|
||||
value = 1331; /* --> cpy. */
|
||||
case 1333: /* cpy */
|
||||
value = 1333; /* --> cpy. */
|
||||
break;
|
||||
case 1236: /* mov */
|
||||
case 1343: /* dup */
|
||||
value = 1343; /* --> dup. */
|
||||
break;
|
||||
case 1238: /* mov */
|
||||
case 1235: /* mov */
|
||||
case 1344: /* dup */
|
||||
value = 1344; /* --> dup. */
|
||||
break;
|
||||
case 2021: /* fmov */
|
||||
case 1240: /* mov */
|
||||
case 1345: /* dup */
|
||||
value = 1345; /* --> dup. */
|
||||
case 2025: /* fmov */
|
||||
case 1249: /* mov */
|
||||
case 1334: /* cpy */
|
||||
value = 1334; /* --> cpy. */
|
||||
break;
|
||||
case 1239: /* mov */
|
||||
case 1346: /* dupm */
|
||||
value = 1346; /* --> dupm. */
|
||||
case 1346: /* dup */
|
||||
value = 1346; /* --> dup. */
|
||||
break;
|
||||
case 2016: /* eon */
|
||||
case 1348: /* eor */
|
||||
value = 1348; /* --> eor. */
|
||||
case 1241: /* mov */
|
||||
case 1238: /* mov */
|
||||
case 1347: /* dup */
|
||||
value = 1347; /* --> dup. */
|
||||
break;
|
||||
case 1249: /* not */
|
||||
case 1350: /* eor */
|
||||
value = 1350; /* --> eor. */
|
||||
case 2024: /* fmov */
|
||||
case 1243: /* mov */
|
||||
case 1348: /* dup */
|
||||
value = 1348; /* --> dup. */
|
||||
break;
|
||||
case 1250: /* nots */
|
||||
case 1351: /* eors */
|
||||
value = 1351; /* --> eors. */
|
||||
case 1242: /* mov */
|
||||
case 1349: /* dupm */
|
||||
value = 1349; /* --> dupm. */
|
||||
break;
|
||||
case 2017: /* facle */
|
||||
case 1356: /* facge */
|
||||
value = 1356; /* --> facge. */
|
||||
case 2019: /* eon */
|
||||
case 1351: /* eor */
|
||||
value = 1351; /* --> eor. */
|
||||
break;
|
||||
case 2018: /* faclt */
|
||||
case 1357: /* facgt */
|
||||
value = 1357; /* --> facgt. */
|
||||
case 1252: /* not */
|
||||
case 1353: /* eor */
|
||||
value = 1353; /* --> eor. */
|
||||
break;
|
||||
case 2019: /* fcmle */
|
||||
case 1370: /* fcmge */
|
||||
value = 1370; /* --> fcmge. */
|
||||
case 1253: /* nots */
|
||||
case 1354: /* eors */
|
||||
value = 1354; /* --> eors. */
|
||||
break;
|
||||
case 2020: /* fcmlt */
|
||||
case 1372: /* fcmgt */
|
||||
value = 1372; /* --> fcmgt. */
|
||||
case 2020: /* facle */
|
||||
case 1359: /* facge */
|
||||
value = 1359; /* --> facge. */
|
||||
break;
|
||||
case 1233: /* fmov */
|
||||
case 1378: /* fcpy */
|
||||
value = 1378; /* --> fcpy. */
|
||||
case 2021: /* faclt */
|
||||
case 1360: /* facgt */
|
||||
value = 1360; /* --> facgt. */
|
||||
break;
|
||||
case 1232: /* fmov */
|
||||
case 1401: /* fdup */
|
||||
value = 1401; /* --> fdup. */
|
||||
case 2022: /* fcmle */
|
||||
case 1373: /* fcmge */
|
||||
value = 1373; /* --> fcmge. */
|
||||
break;
|
||||
case 1234: /* mov */
|
||||
case 1732: /* orr */
|
||||
value = 1732; /* --> orr. */
|
||||
case 2023: /* fcmlt */
|
||||
case 1375: /* fcmgt */
|
||||
value = 1375; /* --> fcmgt. */
|
||||
break;
|
||||
case 2023: /* orn */
|
||||
case 1733: /* orr */
|
||||
value = 1733; /* --> orr. */
|
||||
case 1236: /* fmov */
|
||||
case 1381: /* fcpy */
|
||||
value = 1381; /* --> fcpy. */
|
||||
break;
|
||||
case 1235: /* fmov */
|
||||
case 1404: /* fdup */
|
||||
value = 1404; /* --> fdup. */
|
||||
break;
|
||||
case 1237: /* mov */
|
||||
case 1735: /* orr */
|
||||
value = 1735; /* --> orr. */
|
||||
break;
|
||||
case 1247: /* movs */
|
||||
case 1736: /* orrs */
|
||||
value = 1736; /* --> orrs. */
|
||||
case 2026: /* orn */
|
||||
case 1736: /* orr */
|
||||
value = 1736; /* --> orr. */
|
||||
break;
|
||||
case 1242: /* mov */
|
||||
case 1798: /* sel */
|
||||
value = 1798; /* --> sel. */
|
||||
case 1240: /* mov */
|
||||
case 1738: /* orr */
|
||||
value = 1738; /* --> orr. */
|
||||
break;
|
||||
case 1250: /* movs */
|
||||
case 1739: /* orrs */
|
||||
value = 1739; /* --> orrs. */
|
||||
break;
|
||||
case 1245: /* mov */
|
||||
case 1799: /* sel */
|
||||
value = 1799; /* --> sel. */
|
||||
case 1801: /* sel */
|
||||
value = 1801; /* --> sel. */
|
||||
break;
|
||||
case 1248: /* mov */
|
||||
case 1802: /* sel */
|
||||
value = 1802; /* --> sel. */
|
||||
break;
|
||||
default: return NULL;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -230,48 +230,48 @@ const struct aarch64_operand aarch64_operands[] =
|
||||
static const unsigned op_enum_table [] =
|
||||
{
|
||||
0,
|
||||
877,
|
||||
878,
|
||||
879,
|
||||
882,
|
||||
883,
|
||||
884,
|
||||
885,
|
||||
886,
|
||||
880,
|
||||
881,
|
||||
882,
|
||||
885,
|
||||
886,
|
||||
887,
|
||||
888,
|
||||
910,
|
||||
911,
|
||||
912,
|
||||
915,
|
||||
916,
|
||||
917,
|
||||
918,
|
||||
919,
|
||||
889,
|
||||
883,
|
||||
884,
|
||||
890,
|
||||
891,
|
||||
913,
|
||||
914,
|
||||
915,
|
||||
918,
|
||||
919,
|
||||
920,
|
||||
921,
|
||||
969,
|
||||
970,
|
||||
971,
|
||||
922,
|
||||
916,
|
||||
917,
|
||||
923,
|
||||
924,
|
||||
972,
|
||||
973,
|
||||
974,
|
||||
975,
|
||||
12,
|
||||
636,
|
||||
637,
|
||||
1164,
|
||||
1166,
|
||||
1168,
|
||||
976,
|
||||
1167,
|
||||
1165,
|
||||
1169,
|
||||
1171,
|
||||
979,
|
||||
1170,
|
||||
1168,
|
||||
318,
|
||||
624,
|
||||
635,
|
||||
634,
|
||||
974,
|
||||
977,
|
||||
631,
|
||||
628,
|
||||
620,
|
||||
@ -281,34 +281,34 @@ static const unsigned op_enum_table [] =
|
||||
630,
|
||||
632,
|
||||
633,
|
||||
984,
|
||||
987,
|
||||
664,
|
||||
667,
|
||||
670,
|
||||
665,
|
||||
668,
|
||||
821,
|
||||
824,
|
||||
178,
|
||||
179,
|
||||
180,
|
||||
181,
|
||||
516,
|
||||
755,
|
||||
758,
|
||||
389,
|
||||
391,
|
||||
413,
|
||||
415,
|
||||
1237,
|
||||
1242,
|
||||
1235,
|
||||
1234,
|
||||
1238,
|
||||
1240,
|
||||
1245,
|
||||
1247,
|
||||
1238,
|
||||
1237,
|
||||
1241,
|
||||
1248,
|
||||
1244,
|
||||
1250,
|
||||
1249,
|
||||
1251,
|
||||
1247,
|
||||
1253,
|
||||
1252,
|
||||
131,
|
||||
};
|
||||
|
||||
|
@ -3044,6 +3044,9 @@ struct aarch64_opcode aarch64_opcode_table[] =
|
||||
CORE_INSN ("asr", 0x1ac02800, 0x7fe0fc00, dp_2src, 0, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_ALIAS),
|
||||
CORE_INSN ("rorv", 0x1ac02c00, 0x7fe0fc00, dp_2src, 0, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_HAS_ALIAS),
|
||||
CORE_INSN ("ror", 0x1ac02c00, 0x7fe0fc00, dp_2src, 0, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_ALIAS),
|
||||
MEMTAG_INSN ("subp", 0x9ac00000, 0xffe0fc00, dp_2src, OP3 (Rd, Rn_SP, Rm_SP), QL_I3SAMEX, 0),
|
||||
MEMTAG_INSN ("subps", 0xbac00000, 0xffe0fc00, dp_2src, OP3 (Rd, Rn_SP, Rm_SP), QL_I3SAMEX, F_HAS_ALIAS),
|
||||
MEMTAG_INSN ("cmpp", 0xbac0001f, 0xffe0fc1f, dp_2src, OP2 (Rn_SP, Rm_SP), QL_I2SAMEX, F_ALIAS),
|
||||
MEMTAG_INSN ("irg", 0x9ac01000, 0xffe0fc00, dp_2src, OP3 (Rd_SP, Rn_SP, Rm), QL_I3SAMEX, F_OPD2_OPT | F_DEFAULT (0x1f)),
|
||||
MEMTAG_INSN ("gmi", 0x9ac01400, 0xffe0fc00, dp_2src, OP3 (Rd, Rn_SP, Rm), QL_I3SAMEX, 0),
|
||||
V8_3_INSN ("pacga", 0x9ac03000, 0xffe0fc00, dp_2src, OP3 (Rd, Rn, Rm_SP), QL_I3SAMEX, 0),
|
||||
|
Loading…
Reference in New Issue
Block a user