mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 02:24:17 +08:00
[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:
@ -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>
|
2018-11-12 Sudakshina Das <sudi.das@arm.com>
|
||||||
|
|
||||||
* config/tc-aarch64.c (parse_operands): Add switch case for
|
* config/tc-aarch64.c (parse_operands): Add switch case for
|
||||||
|
@ -33,3 +33,25 @@ Disassembly of section \.text:
|
|||||||
.*: d180037b subg x27, x27, #0x0, #0x0
|
.*: d180037b subg x27, x27, #0x0, #0x0
|
||||||
.*: d1bf3fe0 subg x0, sp, #0x3f0, #0xf
|
.*: d1bf3fe0 subg x0, sp, #0x3f0, #0xf
|
||||||
.*: d1bf141f subg sp, x0, #0x3f0, #0x5
|
.*: 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
|
expand_2_reg subg
|
||||||
subg x0, sp, #0x3f0, #0xf
|
subg x0, sp, #0x3f0, #0xf
|
||||||
subg sp, x0, #0x3f0, #0x5
|
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 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 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 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
|
gmi x1, xzr, x3
|
||||||
addg xzr, x2, #0, #0
|
addg xzr, x2, #0, #0
|
||||||
subg x1, xzr, #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>
|
2018-11-12 Sudakshina Das <sudi.das@arm.com>
|
||||||
|
|
||||||
* aarch64-opc.h (aarch64_field_kind): New FLD_imm4_3.
|
* 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 */
|
case 719: /* rorv */
|
||||||
value = 719; /* --> rorv. */
|
value = 719; /* --> rorv. */
|
||||||
break;
|
break;
|
||||||
case 733: /* mul */
|
case 723: /* cmpp */
|
||||||
case 732: /* madd */
|
case 722: /* subps */
|
||||||
value = 732; /* --> madd. */
|
value = 722; /* --> subps. */
|
||||||
break;
|
break;
|
||||||
case 735: /* mneg */
|
case 736: /* mul */
|
||||||
case 734: /* msub */
|
case 735: /* madd */
|
||||||
value = 734; /* --> msub. */
|
value = 735; /* --> madd. */
|
||||||
break;
|
break;
|
||||||
case 737: /* smull */
|
case 738: /* mneg */
|
||||||
case 736: /* smaddl */
|
case 737: /* msub */
|
||||||
value = 736; /* --> smaddl. */
|
value = 737; /* --> msub. */
|
||||||
break;
|
break;
|
||||||
case 739: /* smnegl */
|
case 740: /* smull */
|
||||||
case 738: /* smsubl */
|
case 739: /* smaddl */
|
||||||
value = 738; /* --> smsubl. */
|
value = 739; /* --> smaddl. */
|
||||||
break;
|
break;
|
||||||
case 742: /* umull */
|
case 742: /* smnegl */
|
||||||
case 741: /* umaddl */
|
case 741: /* smsubl */
|
||||||
value = 741; /* --> umaddl. */
|
value = 741; /* --> smsubl. */
|
||||||
break;
|
break;
|
||||||
case 744: /* umnegl */
|
case 745: /* umull */
|
||||||
case 743: /* umsubl */
|
case 744: /* umaddl */
|
||||||
value = 743; /* --> umsubl. */
|
value = 744; /* --> umaddl. */
|
||||||
break;
|
break;
|
||||||
case 755: /* ror */
|
case 747: /* umnegl */
|
||||||
case 754: /* extr */
|
case 746: /* umsubl */
|
||||||
value = 754; /* --> extr. */
|
value = 746; /* --> umsubl. */
|
||||||
break;
|
break;
|
||||||
case 974: /* bic */
|
case 758: /* ror */
|
||||||
case 973: /* and */
|
case 757: /* extr */
|
||||||
value = 973; /* --> and. */
|
value = 757; /* --> extr. */
|
||||||
break;
|
break;
|
||||||
case 976: /* mov */
|
case 977: /* bic */
|
||||||
case 975: /* orr */
|
case 976: /* and */
|
||||||
value = 975; /* --> orr. */
|
value = 976; /* --> and. */
|
||||||
break;
|
break;
|
||||||
case 979: /* tst */
|
case 979: /* mov */
|
||||||
case 978: /* ands */
|
case 978: /* orr */
|
||||||
value = 978; /* --> ands. */
|
value = 978; /* --> orr. */
|
||||||
break;
|
break;
|
||||||
case 984: /* uxtw */
|
case 982: /* tst */
|
||||||
case 983: /* mov */
|
case 981: /* ands */
|
||||||
case 982: /* orr */
|
value = 981; /* --> ands. */
|
||||||
value = 982; /* --> orr. */
|
break;
|
||||||
|
case 987: /* uxtw */
|
||||||
|
case 986: /* mov */
|
||||||
|
case 985: /* orr */
|
||||||
|
value = 985; /* --> orr. */
|
||||||
break;
|
break;
|
||||||
case 986: /* mvn */
|
case 989: /* mvn */
|
||||||
case 985: /* orn */
|
case 988: /* orn */
|
||||||
value = 985; /* --> orn. */
|
value = 988; /* --> orn. */
|
||||||
break;
|
break;
|
||||||
case 990: /* tst */
|
case 993: /* tst */
|
||||||
case 989: /* ands */
|
case 992: /* ands */
|
||||||
value = 989; /* --> ands. */
|
value = 992; /* --> ands. */
|
||||||
break;
|
break;
|
||||||
case 1116: /* staddb */
|
case 1119: /* staddb */
|
||||||
case 1020: /* ldaddb */
|
case 1023: /* ldaddb */
|
||||||
value = 1020; /* --> ldaddb. */
|
value = 1023; /* --> ldaddb. */
|
||||||
break;
|
break;
|
||||||
case 1117: /* staddh */
|
case 1120: /* staddh */
|
||||||
case 1021: /* ldaddh */
|
case 1024: /* ldaddh */
|
||||||
value = 1021; /* --> ldaddh. */
|
value = 1024; /* --> ldaddh. */
|
||||||
break;
|
break;
|
||||||
case 1118: /* stadd */
|
case 1121: /* stadd */
|
||||||
case 1022: /* ldadd */
|
case 1025: /* ldadd */
|
||||||
value = 1022; /* --> ldadd. */
|
value = 1025; /* --> ldadd. */
|
||||||
break;
|
break;
|
||||||
case 1119: /* staddlb */
|
case 1122: /* staddlb */
|
||||||
case 1024: /* ldaddlb */
|
case 1027: /* ldaddlb */
|
||||||
value = 1024; /* --> ldaddlb. */
|
value = 1027; /* --> ldaddlb. */
|
||||||
break;
|
break;
|
||||||
case 1120: /* staddlh */
|
case 1123: /* staddlh */
|
||||||
case 1027: /* ldaddlh */
|
case 1030: /* ldaddlh */
|
||||||
value = 1027; /* --> ldaddlh. */
|
value = 1030; /* --> ldaddlh. */
|
||||||
break;
|
break;
|
||||||
case 1121: /* staddl */
|
case 1124: /* staddl */
|
||||||
case 1030: /* ldaddl */
|
case 1033: /* ldaddl */
|
||||||
value = 1030; /* --> ldaddl. */
|
value = 1033; /* --> ldaddl. */
|
||||||
break;
|
break;
|
||||||
case 1122: /* stclrb */
|
case 1125: /* stclrb */
|
||||||
case 1032: /* ldclrb */
|
case 1035: /* ldclrb */
|
||||||
value = 1032; /* --> ldclrb. */
|
value = 1035; /* --> ldclrb. */
|
||||||
break;
|
break;
|
||||||
case 1123: /* stclrh */
|
case 1126: /* stclrh */
|
||||||
case 1033: /* ldclrh */
|
case 1036: /* ldclrh */
|
||||||
value = 1033; /* --> ldclrh. */
|
value = 1036; /* --> ldclrh. */
|
||||||
break;
|
break;
|
||||||
case 1124: /* stclr */
|
case 1127: /* stclr */
|
||||||
case 1034: /* ldclr */
|
case 1037: /* ldclr */
|
||||||
value = 1034; /* --> ldclr. */
|
value = 1037; /* --> ldclr. */
|
||||||
break;
|
break;
|
||||||
case 1125: /* stclrlb */
|
case 1128: /* stclrlb */
|
||||||
case 1036: /* ldclrlb */
|
case 1039: /* ldclrlb */
|
||||||
value = 1036; /* --> ldclrlb. */
|
value = 1039; /* --> ldclrlb. */
|
||||||
break;
|
break;
|
||||||
case 1126: /* stclrlh */
|
case 1129: /* stclrlh */
|
||||||
case 1039: /* ldclrlh */
|
case 1042: /* ldclrlh */
|
||||||
value = 1039; /* --> ldclrlh. */
|
value = 1042; /* --> ldclrlh. */
|
||||||
break;
|
break;
|
||||||
case 1127: /* stclrl */
|
case 1130: /* stclrl */
|
||||||
case 1042: /* ldclrl */
|
case 1045: /* ldclrl */
|
||||||
value = 1042; /* --> ldclrl. */
|
value = 1045; /* --> ldclrl. */
|
||||||
break;
|
break;
|
||||||
case 1128: /* steorb */
|
case 1131: /* steorb */
|
||||||
case 1044: /* ldeorb */
|
case 1047: /* ldeorb */
|
||||||
value = 1044; /* --> ldeorb. */
|
value = 1047; /* --> ldeorb. */
|
||||||
break;
|
break;
|
||||||
case 1129: /* steorh */
|
case 1132: /* steorh */
|
||||||
case 1045: /* ldeorh */
|
case 1048: /* ldeorh */
|
||||||
value = 1045; /* --> ldeorh. */
|
value = 1048; /* --> ldeorh. */
|
||||||
break;
|
break;
|
||||||
case 1130: /* steor */
|
case 1133: /* steor */
|
||||||
case 1046: /* ldeor */
|
case 1049: /* ldeor */
|
||||||
value = 1046; /* --> ldeor. */
|
value = 1049; /* --> ldeor. */
|
||||||
break;
|
break;
|
||||||
case 1131: /* steorlb */
|
case 1134: /* steorlb */
|
||||||
case 1048: /* ldeorlb */
|
case 1051: /* ldeorlb */
|
||||||
value = 1048; /* --> ldeorlb. */
|
value = 1051; /* --> ldeorlb. */
|
||||||
break;
|
break;
|
||||||
case 1132: /* steorlh */
|
case 1135: /* steorlh */
|
||||||
case 1051: /* ldeorlh */
|
case 1054: /* ldeorlh */
|
||||||
value = 1051; /* --> ldeorlh. */
|
value = 1054; /* --> ldeorlh. */
|
||||||
break;
|
break;
|
||||||
case 1133: /* steorl */
|
case 1136: /* steorl */
|
||||||
case 1054: /* ldeorl */
|
case 1057: /* ldeorl */
|
||||||
value = 1054; /* --> ldeorl. */
|
value = 1057; /* --> ldeorl. */
|
||||||
break;
|
break;
|
||||||
case 1134: /* stsetb */
|
case 1137: /* stsetb */
|
||||||
case 1056: /* ldsetb */
|
case 1059: /* ldsetb */
|
||||||
value = 1056; /* --> ldsetb. */
|
value = 1059; /* --> ldsetb. */
|
||||||
break;
|
break;
|
||||||
case 1135: /* stseth */
|
case 1138: /* stseth */
|
||||||
case 1057: /* ldseth */
|
case 1060: /* ldseth */
|
||||||
value = 1057; /* --> ldseth. */
|
value = 1060; /* --> ldseth. */
|
||||||
break;
|
break;
|
||||||
case 1136: /* stset */
|
case 1139: /* stset */
|
||||||
case 1058: /* ldset */
|
case 1061: /* ldset */
|
||||||
value = 1058; /* --> ldset. */
|
value = 1061; /* --> ldset. */
|
||||||
break;
|
break;
|
||||||
case 1137: /* stsetlb */
|
case 1140: /* stsetlb */
|
||||||
case 1060: /* ldsetlb */
|
case 1063: /* ldsetlb */
|
||||||
value = 1060; /* --> ldsetlb. */
|
value = 1063; /* --> ldsetlb. */
|
||||||
break;
|
break;
|
||||||
case 1138: /* stsetlh */
|
case 1141: /* stsetlh */
|
||||||
case 1063: /* ldsetlh */
|
case 1066: /* ldsetlh */
|
||||||
value = 1063; /* --> ldsetlh. */
|
value = 1066; /* --> ldsetlh. */
|
||||||
break;
|
break;
|
||||||
case 1139: /* stsetl */
|
case 1142: /* stsetl */
|
||||||
case 1066: /* ldsetl */
|
case 1069: /* ldsetl */
|
||||||
value = 1066; /* --> ldsetl. */
|
value = 1069; /* --> ldsetl. */
|
||||||
break;
|
break;
|
||||||
case 1140: /* stsmaxb */
|
case 1143: /* stsmaxb */
|
||||||
case 1068: /* ldsmaxb */
|
case 1071: /* ldsmaxb */
|
||||||
value = 1068; /* --> ldsmaxb. */
|
value = 1071; /* --> ldsmaxb. */
|
||||||
break;
|
break;
|
||||||
case 1141: /* stsmaxh */
|
case 1144: /* stsmaxh */
|
||||||
case 1069: /* ldsmaxh */
|
case 1072: /* ldsmaxh */
|
||||||
value = 1069; /* --> ldsmaxh. */
|
value = 1072; /* --> ldsmaxh. */
|
||||||
break;
|
break;
|
||||||
case 1142: /* stsmax */
|
case 1145: /* stsmax */
|
||||||
case 1070: /* ldsmax */
|
case 1073: /* ldsmax */
|
||||||
value = 1070; /* --> ldsmax. */
|
value = 1073; /* --> ldsmax. */
|
||||||
break;
|
break;
|
||||||
case 1143: /* stsmaxlb */
|
case 1146: /* stsmaxlb */
|
||||||
case 1072: /* ldsmaxlb */
|
case 1075: /* ldsmaxlb */
|
||||||
value = 1072; /* --> ldsmaxlb. */
|
value = 1075; /* --> ldsmaxlb. */
|
||||||
break;
|
break;
|
||||||
case 1144: /* stsmaxlh */
|
case 1147: /* stsmaxlh */
|
||||||
case 1075: /* ldsmaxlh */
|
case 1078: /* ldsmaxlh */
|
||||||
value = 1075; /* --> ldsmaxlh. */
|
value = 1078; /* --> ldsmaxlh. */
|
||||||
break;
|
break;
|
||||||
case 1145: /* stsmaxl */
|
case 1148: /* stsmaxl */
|
||||||
case 1078: /* ldsmaxl */
|
case 1081: /* ldsmaxl */
|
||||||
value = 1078; /* --> ldsmaxl. */
|
value = 1081; /* --> ldsmaxl. */
|
||||||
break;
|
break;
|
||||||
case 1146: /* stsminb */
|
case 1149: /* stsminb */
|
||||||
case 1080: /* ldsminb */
|
case 1083: /* ldsminb */
|
||||||
value = 1080; /* --> ldsminb. */
|
value = 1083; /* --> ldsminb. */
|
||||||
break;
|
break;
|
||||||
case 1147: /* stsminh */
|
case 1150: /* stsminh */
|
||||||
case 1081: /* ldsminh */
|
case 1084: /* ldsminh */
|
||||||
value = 1081; /* --> ldsminh. */
|
value = 1084; /* --> ldsminh. */
|
||||||
break;
|
break;
|
||||||
case 1148: /* stsmin */
|
case 1151: /* stsmin */
|
||||||
case 1082: /* ldsmin */
|
case 1085: /* ldsmin */
|
||||||
value = 1082; /* --> ldsmin. */
|
value = 1085; /* --> ldsmin. */
|
||||||
break;
|
break;
|
||||||
case 1149: /* stsminlb */
|
case 1152: /* stsminlb */
|
||||||
case 1084: /* ldsminlb */
|
case 1087: /* ldsminlb */
|
||||||
value = 1084; /* --> ldsminlb. */
|
value = 1087; /* --> ldsminlb. */
|
||||||
break;
|
break;
|
||||||
case 1150: /* stsminlh */
|
case 1153: /* stsminlh */
|
||||||
case 1087: /* ldsminlh */
|
case 1090: /* ldsminlh */
|
||||||
value = 1087; /* --> ldsminlh. */
|
value = 1090; /* --> ldsminlh. */
|
||||||
break;
|
break;
|
||||||
case 1151: /* stsminl */
|
case 1154: /* stsminl */
|
||||||
case 1090: /* ldsminl */
|
case 1093: /* ldsminl */
|
||||||
value = 1090; /* --> ldsminl. */
|
value = 1093; /* --> ldsminl. */
|
||||||
break;
|
break;
|
||||||
case 1152: /* stumaxb */
|
case 1155: /* stumaxb */
|
||||||
case 1092: /* ldumaxb */
|
case 1095: /* ldumaxb */
|
||||||
value = 1092; /* --> ldumaxb. */
|
value = 1095; /* --> ldumaxb. */
|
||||||
break;
|
break;
|
||||||
case 1153: /* stumaxh */
|
case 1156: /* stumaxh */
|
||||||
case 1093: /* ldumaxh */
|
case 1096: /* ldumaxh */
|
||||||
value = 1093; /* --> ldumaxh. */
|
value = 1096; /* --> ldumaxh. */
|
||||||
break;
|
break;
|
||||||
case 1154: /* stumax */
|
case 1157: /* stumax */
|
||||||
case 1094: /* ldumax */
|
case 1097: /* ldumax */
|
||||||
value = 1094; /* --> ldumax. */
|
value = 1097; /* --> ldumax. */
|
||||||
break;
|
break;
|
||||||
case 1155: /* stumaxlb */
|
case 1158: /* stumaxlb */
|
||||||
case 1096: /* ldumaxlb */
|
case 1099: /* ldumaxlb */
|
||||||
value = 1096; /* --> ldumaxlb. */
|
value = 1099; /* --> ldumaxlb. */
|
||||||
break;
|
break;
|
||||||
case 1156: /* stumaxlh */
|
case 1159: /* stumaxlh */
|
||||||
case 1099: /* ldumaxlh */
|
case 1102: /* ldumaxlh */
|
||||||
value = 1099; /* --> ldumaxlh. */
|
value = 1102; /* --> ldumaxlh. */
|
||||||
break;
|
break;
|
||||||
case 1157: /* stumaxl */
|
case 1160: /* stumaxl */
|
||||||
case 1102: /* ldumaxl */
|
case 1105: /* ldumaxl */
|
||||||
value = 1102; /* --> ldumaxl. */
|
value = 1105; /* --> ldumaxl. */
|
||||||
break;
|
break;
|
||||||
case 1158: /* stuminb */
|
case 1161: /* stuminb */
|
||||||
case 1104: /* lduminb */
|
case 1107: /* lduminb */
|
||||||
value = 1104; /* --> lduminb. */
|
value = 1107; /* --> lduminb. */
|
||||||
break;
|
break;
|
||||||
case 1159: /* stuminh */
|
case 1162: /* stuminh */
|
||||||
case 1105: /* lduminh */
|
case 1108: /* lduminh */
|
||||||
value = 1105; /* --> lduminh. */
|
value = 1108; /* --> lduminh. */
|
||||||
break;
|
break;
|
||||||
case 1160: /* stumin */
|
case 1163: /* stumin */
|
||||||
case 1106: /* ldumin */
|
case 1109: /* ldumin */
|
||||||
value = 1106; /* --> ldumin. */
|
value = 1109; /* --> ldumin. */
|
||||||
break;
|
break;
|
||||||
case 1161: /* stuminlb */
|
case 1164: /* stuminlb */
|
||||||
case 1108: /* lduminlb */
|
case 1111: /* lduminlb */
|
||||||
value = 1108; /* --> lduminlb. */
|
value = 1111; /* --> lduminlb. */
|
||||||
break;
|
break;
|
||||||
case 1162: /* stuminlh */
|
case 1165: /* stuminlh */
|
||||||
case 1111: /* lduminlh */
|
case 1114: /* lduminlh */
|
||||||
value = 1111; /* --> lduminlh. */
|
value = 1114; /* --> lduminlh. */
|
||||||
break;
|
break;
|
||||||
case 1163: /* stuminl */
|
case 1166: /* stuminl */
|
||||||
case 1114: /* lduminl */
|
case 1117: /* lduminl */
|
||||||
value = 1114; /* --> lduminl. */
|
value = 1117; /* --> lduminl. */
|
||||||
break;
|
break;
|
||||||
case 1165: /* mov */
|
case 1168: /* mov */
|
||||||
case 1164: /* movn */
|
case 1167: /* movn */
|
||||||
value = 1164; /* --> movn. */
|
value = 1167; /* --> movn. */
|
||||||
break;
|
break;
|
||||||
case 1167: /* mov */
|
case 1170: /* mov */
|
||||||
case 1166: /* movz */
|
case 1169: /* movz */
|
||||||
value = 1166; /* --> movz. */
|
value = 1169; /* --> movz. */
|
||||||
break;
|
break;
|
||||||
case 1213: /* autibsp */
|
case 1216: /* autibsp */
|
||||||
case 1212: /* autibz */
|
case 1215: /* autibz */
|
||||||
case 1211: /* autiasp */
|
case 1214: /* autiasp */
|
||||||
case 1210: /* autiaz */
|
case 1213: /* autiaz */
|
||||||
case 1209: /* pacibsp */
|
case 1212: /* pacibsp */
|
||||||
case 1208: /* pacibz */
|
case 1211: /* pacibz */
|
||||||
case 1207: /* paciasp */
|
case 1210: /* paciasp */
|
||||||
case 1206: /* paciaz */
|
case 1209: /* paciaz */
|
||||||
case 1187: /* psb */
|
case 1190: /* psb */
|
||||||
case 1186: /* esb */
|
case 1189: /* esb */
|
||||||
case 1185: /* autib1716 */
|
case 1188: /* autib1716 */
|
||||||
case 1184: /* autia1716 */
|
case 1187: /* autia1716 */
|
||||||
case 1183: /* pacib1716 */
|
case 1186: /* pacib1716 */
|
||||||
case 1182: /* pacia1716 */
|
case 1185: /* pacia1716 */
|
||||||
case 1181: /* xpaclri */
|
case 1184: /* xpaclri */
|
||||||
case 1180: /* sevl */
|
case 1183: /* sevl */
|
||||||
case 1179: /* sev */
|
case 1182: /* sev */
|
||||||
case 1178: /* wfi */
|
case 1181: /* wfi */
|
||||||
case 1177: /* wfe */
|
case 1180: /* wfe */
|
||||||
case 1176: /* yield */
|
case 1179: /* yield */
|
||||||
case 1175: /* bti */
|
case 1178: /* bti */
|
||||||
case 1174: /* csdb */
|
case 1177: /* csdb */
|
||||||
case 1173: /* nop */
|
case 1176: /* nop */
|
||||||
case 1172: /* hint */
|
case 1175: /* hint */
|
||||||
value = 1172; /* --> hint. */
|
value = 1175; /* --> hint. */
|
||||||
break;
|
break;
|
||||||
case 1191: /* pssbb */
|
case 1194: /* pssbb */
|
||||||
case 1190: /* ssbb */
|
case 1193: /* ssbb */
|
||||||
case 1189: /* dsb */
|
case 1192: /* dsb */
|
||||||
value = 1189; /* --> dsb. */
|
value = 1192; /* --> dsb. */
|
||||||
break;
|
break;
|
||||||
case 1202: /* cpp */
|
case 1205: /* cpp */
|
||||||
case 1201: /* dvp */
|
case 1204: /* dvp */
|
||||||
case 1200: /* cfp */
|
case 1203: /* cfp */
|
||||||
case 1199: /* tlbi */
|
case 1202: /* tlbi */
|
||||||
case 1198: /* ic */
|
case 1201: /* ic */
|
||||||
case 1197: /* dc */
|
case 1200: /* dc */
|
||||||
case 1196: /* at */
|
case 1199: /* at */
|
||||||
case 1195: /* sys */
|
case 1198: /* sys */
|
||||||
value = 1195; /* --> sys. */
|
value = 1198; /* --> sys. */
|
||||||
break;
|
break;
|
||||||
case 2011: /* bic */
|
case 2014: /* bic */
|
||||||
case 1261: /* and */
|
case 1264: /* and */
|
||||||
value = 1261; /* --> 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;
|
break;
|
||||||
case 1244: /* mov */
|
case 1244: /* mov */
|
||||||
case 1263: /* and */
|
case 1332: /* cpy */
|
||||||
value = 1263; /* --> and. */
|
value = 1332; /* --> cpy. */
|
||||||
break;
|
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 1246: /* mov */
|
||||||
case 1331: /* cpy */
|
case 1333: /* cpy */
|
||||||
value = 1331; /* --> cpy. */
|
value = 1333; /* --> cpy. */
|
||||||
break;
|
break;
|
||||||
case 1236: /* mov */
|
case 2025: /* fmov */
|
||||||
case 1343: /* dup */
|
case 1249: /* mov */
|
||||||
value = 1343; /* --> dup. */
|
case 1334: /* cpy */
|
||||||
break;
|
value = 1334; /* --> cpy. */
|
||||||
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. */
|
|
||||||
break;
|
break;
|
||||||
case 1239: /* mov */
|
case 1239: /* mov */
|
||||||
case 1346: /* dupm */
|
case 1346: /* dup */
|
||||||
value = 1346; /* --> dupm. */
|
value = 1346; /* --> dup. */
|
||||||
break;
|
break;
|
||||||
case 2016: /* eon */
|
case 1241: /* mov */
|
||||||
case 1348: /* eor */
|
case 1238: /* mov */
|
||||||
value = 1348; /* --> eor. */
|
case 1347: /* dup */
|
||||||
|
value = 1347; /* --> dup. */
|
||||||
break;
|
break;
|
||||||
case 1249: /* not */
|
case 2024: /* fmov */
|
||||||
case 1350: /* eor */
|
case 1243: /* mov */
|
||||||
value = 1350; /* --> eor. */
|
case 1348: /* dup */
|
||||||
|
value = 1348; /* --> dup. */
|
||||||
break;
|
break;
|
||||||
case 1250: /* nots */
|
case 1242: /* mov */
|
||||||
case 1351: /* eors */
|
case 1349: /* dupm */
|
||||||
value = 1351; /* --> eors. */
|
value = 1349; /* --> dupm. */
|
||||||
break;
|
break;
|
||||||
case 2017: /* facle */
|
case 2019: /* eon */
|
||||||
case 1356: /* facge */
|
case 1351: /* eor */
|
||||||
value = 1356; /* --> facge. */
|
value = 1351; /* --> eor. */
|
||||||
break;
|
break;
|
||||||
case 2018: /* faclt */
|
case 1252: /* not */
|
||||||
case 1357: /* facgt */
|
case 1353: /* eor */
|
||||||
value = 1357; /* --> facgt. */
|
value = 1353; /* --> eor. */
|
||||||
break;
|
break;
|
||||||
case 2019: /* fcmle */
|
case 1253: /* nots */
|
||||||
case 1370: /* fcmge */
|
case 1354: /* eors */
|
||||||
value = 1370; /* --> fcmge. */
|
value = 1354; /* --> eors. */
|
||||||
break;
|
break;
|
||||||
case 2020: /* fcmlt */
|
case 2020: /* facle */
|
||||||
case 1372: /* fcmgt */
|
case 1359: /* facge */
|
||||||
value = 1372; /* --> fcmgt. */
|
value = 1359; /* --> facge. */
|
||||||
break;
|
break;
|
||||||
case 1233: /* fmov */
|
case 2021: /* faclt */
|
||||||
case 1378: /* fcpy */
|
case 1360: /* facgt */
|
||||||
value = 1378; /* --> fcpy. */
|
value = 1360; /* --> facgt. */
|
||||||
break;
|
break;
|
||||||
case 1232: /* fmov */
|
case 2022: /* fcmle */
|
||||||
case 1401: /* fdup */
|
case 1373: /* fcmge */
|
||||||
value = 1401; /* --> fdup. */
|
value = 1373; /* --> fcmge. */
|
||||||
break;
|
break;
|
||||||
case 1234: /* mov */
|
case 2023: /* fcmlt */
|
||||||
case 1732: /* orr */
|
case 1375: /* fcmgt */
|
||||||
value = 1732; /* --> orr. */
|
value = 1375; /* --> fcmgt. */
|
||||||
break;
|
break;
|
||||||
case 2023: /* orn */
|
case 1236: /* fmov */
|
||||||
case 1733: /* orr */
|
case 1381: /* fcpy */
|
||||||
value = 1733; /* --> orr. */
|
value = 1381; /* --> fcpy. */
|
||||||
|
break;
|
||||||
|
case 1235: /* fmov */
|
||||||
|
case 1404: /* fdup */
|
||||||
|
value = 1404; /* --> fdup. */
|
||||||
break;
|
break;
|
||||||
case 1237: /* mov */
|
case 1237: /* mov */
|
||||||
case 1735: /* orr */
|
case 1735: /* orr */
|
||||||
value = 1735; /* --> orr. */
|
value = 1735; /* --> orr. */
|
||||||
break;
|
break;
|
||||||
case 1247: /* movs */
|
case 2026: /* orn */
|
||||||
case 1736: /* orrs */
|
case 1736: /* orr */
|
||||||
value = 1736; /* --> orrs. */
|
value = 1736; /* --> orr. */
|
||||||
break;
|
break;
|
||||||
case 1242: /* mov */
|
case 1240: /* mov */
|
||||||
case 1798: /* sel */
|
case 1738: /* orr */
|
||||||
value = 1798; /* --> sel. */
|
value = 1738; /* --> orr. */
|
||||||
|
break;
|
||||||
|
case 1250: /* movs */
|
||||||
|
case 1739: /* orrs */
|
||||||
|
value = 1739; /* --> orrs. */
|
||||||
break;
|
break;
|
||||||
case 1245: /* mov */
|
case 1245: /* mov */
|
||||||
case 1799: /* sel */
|
case 1801: /* sel */
|
||||||
value = 1799; /* --> sel. */
|
value = 1801; /* --> sel. */
|
||||||
|
break;
|
||||||
|
case 1248: /* mov */
|
||||||
|
case 1802: /* sel */
|
||||||
|
value = 1802; /* --> sel. */
|
||||||
break;
|
break;
|
||||||
default: return NULL;
|
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 [] =
|
static const unsigned op_enum_table [] =
|
||||||
{
|
{
|
||||||
0,
|
0,
|
||||||
877,
|
|
||||||
878,
|
|
||||||
879,
|
|
||||||
882,
|
|
||||||
883,
|
|
||||||
884,
|
|
||||||
885,
|
|
||||||
886,
|
|
||||||
880,
|
880,
|
||||||
881,
|
881,
|
||||||
|
882,
|
||||||
|
885,
|
||||||
|
886,
|
||||||
887,
|
887,
|
||||||
888,
|
888,
|
||||||
910,
|
889,
|
||||||
911,
|
883,
|
||||||
912,
|
884,
|
||||||
915,
|
890,
|
||||||
916,
|
891,
|
||||||
917,
|
|
||||||
918,
|
|
||||||
919,
|
|
||||||
913,
|
913,
|
||||||
914,
|
914,
|
||||||
|
915,
|
||||||
|
918,
|
||||||
|
919,
|
||||||
920,
|
920,
|
||||||
921,
|
921,
|
||||||
969,
|
922,
|
||||||
970,
|
916,
|
||||||
971,
|
917,
|
||||||
|
923,
|
||||||
|
924,
|
||||||
972,
|
972,
|
||||||
|
973,
|
||||||
|
974,
|
||||||
|
975,
|
||||||
12,
|
12,
|
||||||
636,
|
636,
|
||||||
637,
|
637,
|
||||||
1164,
|
|
||||||
1166,
|
|
||||||
1168,
|
|
||||||
976,
|
|
||||||
1167,
|
1167,
|
||||||
1165,
|
1169,
|
||||||
|
1171,
|
||||||
|
979,
|
||||||
|
1170,
|
||||||
|
1168,
|
||||||
318,
|
318,
|
||||||
624,
|
624,
|
||||||
635,
|
635,
|
||||||
634,
|
634,
|
||||||
974,
|
977,
|
||||||
631,
|
631,
|
||||||
628,
|
628,
|
||||||
620,
|
620,
|
||||||
@ -281,34 +281,34 @@ static const unsigned op_enum_table [] =
|
|||||||
630,
|
630,
|
||||||
632,
|
632,
|
||||||
633,
|
633,
|
||||||
984,
|
987,
|
||||||
664,
|
664,
|
||||||
667,
|
667,
|
||||||
670,
|
670,
|
||||||
665,
|
665,
|
||||||
668,
|
668,
|
||||||
821,
|
824,
|
||||||
178,
|
178,
|
||||||
179,
|
179,
|
||||||
180,
|
180,
|
||||||
181,
|
181,
|
||||||
516,
|
516,
|
||||||
755,
|
758,
|
||||||
389,
|
389,
|
||||||
391,
|
391,
|
||||||
413,
|
413,
|
||||||
415,
|
415,
|
||||||
1237,
|
1240,
|
||||||
1242,
|
|
||||||
1235,
|
|
||||||
1234,
|
|
||||||
1238,
|
|
||||||
1245,
|
1245,
|
||||||
1247,
|
1238,
|
||||||
|
1237,
|
||||||
|
1241,
|
||||||
1248,
|
1248,
|
||||||
1244,
|
|
||||||
1250,
|
1250,
|
||||||
1249,
|
1251,
|
||||||
|
1247,
|
||||||
|
1253,
|
||||||
|
1252,
|
||||||
131,
|
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 ("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 ("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),
|
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 ("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),
|
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),
|
V8_3_INSN ("pacga", 0x9ac03000, 0xffe0fc00, dp_2src, OP3 (Rd, Rn, Rm_SP), QL_I3SAMEX, 0),
|
||||||
|
Reference in New Issue
Block a user