aboutsummaryrefslogtreecommitdiff
path: root/opcodes/aarch64-asm-2.c
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2016-11-11 10:29:07 +0000
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2016-11-11 10:29:07 +0000
commit8787d804e1cbbd1946239d6c5e560c87d38bac06 (patch)
treebf469e9f10eb08ac3bed247e17723cd347e08e91 /opcodes/aarch64-asm-2.c
parent3d731f6949e2b0099cfbe0cf608d60a52a66d354 (diff)
downloadgdb-8787d804e1cbbd1946239d6c5e560c87d38bac06.zip
gdb-8787d804e1cbbd1946239d6c5e560c87d38bac06.tar.gz
gdb-8787d804e1cbbd1946239d6c5e560c87d38bac06.tar.bz2
[AArch64] Add ARMv8.3 instructions which are in the NOP space
This patch adds support for a subset of the ARMv8.3 pointer authentication instructions: XPACLRI, PACIA1716, PACIB1716, AUTIA1716, AUTIA1716, PACIAZ, PACIASP, PACIBZ, PACISP, AUTIAZ, AUTIASP, AUTIBZ, AUTIBSP. These are aliases to HINT #0x7, HINT #0x8, HINT #0xa, HINT #0xc, HINT #0xe, HINT #0x18, HINT #0x19, ..., HINT #0x1f respectively. For more details about pointer authentication in ARMv8.3 see https://community.arm.com/groups/processors/blog/2016/10/27/armv8-a-architecture-2016-additions opcodes/ 2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com> * aarch64-tbl.h (aarch64_feature_v8_3, ARMV8_3, V8_3_INSN): New. (arch64_opcode_table): Add xpaclri, pacia1716, pacib1716, autia1716, autib1716, paciaz, paciasp, pacibz, pacibsp, autiaz, autiasp, autibz, autibsp. * aarch64-asm-2.c: Regenerate. * aarch64-dis-2.c: Regenerate. gas/ 2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com> * testsuite/gas/aarch64/system-3.s: New. * testsuite/gas/aarch64/system-3.d: New. * testsuite/gas/aarch64/system.d: Update expected output.
Diffstat (limited to 'opcodes/aarch64-asm-2.c')
-rw-r--r--opcodes/aarch64-asm-2.c267
1 files changed, 140 insertions, 127 deletions
diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c
index 5977a66..e24a267 100644
--- a/opcodes/aarch64-asm-2.c
+++ b/opcodes/aarch64-asm-2.c
@@ -422,8 +422,21 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
case 1112: /* movz */
value = 1112; /* --> movz. */
break;
- case 1126: /* psb */
- case 1125: /* esb */
+ case 1151: /* autibsp */
+ case 1150: /* autibz */
+ case 1149: /* autiasp */
+ case 1148: /* autiaz */
+ case 1147: /* pacibsp */
+ case 1146: /* pacibz */
+ case 1145: /* paciasp */
+ case 1144: /* paciaz */
+ case 1131: /* psb */
+ case 1130: /* esb */
+ case 1129: /* autib1716 */
+ case 1128: /* autia1716 */
+ case 1127: /* pacib1716 */
+ case 1126: /* pacia1716 */
+ case 1125: /* xpaclri */
case 1124: /* sevl */
case 1123: /* sev */
case 1122: /* wfi */
@@ -433,131 +446,131 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
case 1118: /* hint */
value = 1118; /* --> hint. */
break;
- case 1135: /* tlbi */
- case 1134: /* ic */
- case 1133: /* dc */
- case 1132: /* at */
- case 1131: /* sys */
- value = 1131; /* --> sys. */
- break;
- case 1881: /* bic */
- case 1186: /* and */
- value = 1186; /* --> and. */
- break;
- case 1169: /* mov */
- case 1188: /* and */
- value = 1188; /* --> and. */
- break;
- case 1173: /* movs */
- case 1189: /* ands */
- value = 1189; /* --> ands. */
- break;
- case 1882: /* cmple */
- case 1224: /* cmpge */
- value = 1224; /* --> cmpge. */
- break;
- case 1885: /* cmplt */
- case 1227: /* cmpgt */
- value = 1227; /* --> cmpgt. */
- break;
- case 1883: /* cmplo */
- case 1229: /* cmphi */
- value = 1229; /* --> cmphi. */
- break;
- case 1884: /* cmpls */
- case 1232: /* cmphs */
- value = 1232; /* --> cmphs. */
- break;
- case 1166: /* mov */
- case 1254: /* cpy */
- value = 1254; /* --> cpy. */
- break;
- case 1168: /* mov */
- case 1255: /* cpy */
- value = 1255; /* --> cpy. */
- break;
- case 1892: /* fmov */
- case 1171: /* mov */
- case 1256: /* cpy */
- value = 1256; /* --> cpy. */
- break;
- case 1161: /* mov */
- case 1268: /* dup */
- value = 1268; /* --> dup. */
- break;
- case 1163: /* mov */
- case 1160: /* mov */
- case 1269: /* dup */
- value = 1269; /* --> dup. */
- break;
- case 1891: /* fmov */
- case 1165: /* mov */
- case 1270: /* dup */
- value = 1270; /* --> dup. */
- break;
- case 1164: /* mov */
- case 1271: /* dupm */
- value = 1271; /* --> dupm. */
- break;
- case 1886: /* eon */
- case 1273: /* eor */
- value = 1273; /* --> eor. */
- break;
- case 1174: /* not */
- case 1275: /* eor */
- value = 1275; /* --> eor. */
- break;
- case 1175: /* nots */
- case 1276: /* eors */
- value = 1276; /* --> eors. */
- break;
- case 1887: /* facle */
- case 1281: /* facge */
- value = 1281; /* --> facge. */
- break;
- case 1888: /* faclt */
- case 1282: /* facgt */
- value = 1282; /* --> facgt. */
- break;
- case 1889: /* fcmle */
- case 1291: /* fcmge */
- value = 1291; /* --> fcmge. */
- break;
- case 1890: /* fcmlt */
- case 1293: /* fcmgt */
- value = 1293; /* --> fcmgt. */
- break;
- case 1158: /* fmov */
- case 1299: /* fcpy */
- value = 1299; /* --> fcpy. */
- break;
- case 1157: /* fmov */
- case 1316: /* fdup */
- value = 1316; /* --> fdup. */
- break;
- case 1159: /* mov */
- case 1614: /* orr */
- value = 1614; /* --> orr. */
- break;
- case 1893: /* orn */
- case 1615: /* orr */
- value = 1615; /* --> orr. */
- break;
- case 1162: /* mov */
- case 1617: /* orr */
- value = 1617; /* --> orr. */
- break;
- case 1172: /* movs */
- case 1618: /* orrs */
- value = 1618; /* --> orrs. */
- break;
- case 1167: /* mov */
- case 1674: /* sel */
- value = 1674; /* --> sel. */
- break;
- case 1170: /* mov */
- case 1675: /* sel */
- value = 1675; /* --> sel. */
+ case 1140: /* tlbi */
+ case 1139: /* ic */
+ case 1138: /* dc */
+ case 1137: /* at */
+ case 1136: /* sys */
+ value = 1136; /* --> sys. */
+ break;
+ case 1894: /* bic */
+ case 1199: /* and */
+ value = 1199; /* --> and. */
+ break;
+ case 1182: /* mov */
+ case 1201: /* and */
+ value = 1201; /* --> and. */
+ break;
+ case 1186: /* movs */
+ case 1202: /* ands */
+ value = 1202; /* --> ands. */
+ break;
+ case 1895: /* cmple */
+ case 1237: /* cmpge */
+ value = 1237; /* --> cmpge. */
+ break;
+ case 1898: /* cmplt */
+ case 1240: /* cmpgt */
+ value = 1240; /* --> cmpgt. */
+ break;
+ case 1896: /* cmplo */
+ case 1242: /* cmphi */
+ value = 1242; /* --> cmphi. */
+ break;
+ case 1897: /* cmpls */
+ case 1245: /* cmphs */
+ value = 1245; /* --> cmphs. */
+ break;
+ case 1179: /* mov */
+ case 1267: /* cpy */
+ value = 1267; /* --> cpy. */
+ break;
+ case 1181: /* mov */
+ case 1268: /* cpy */
+ value = 1268; /* --> cpy. */
+ break;
+ case 1905: /* fmov */
+ case 1184: /* mov */
+ case 1269: /* cpy */
+ value = 1269; /* --> cpy. */
+ break;
+ case 1174: /* mov */
+ case 1281: /* dup */
+ value = 1281; /* --> dup. */
+ break;
+ case 1176: /* mov */
+ case 1173: /* mov */
+ case 1282: /* dup */
+ value = 1282; /* --> dup. */
+ break;
+ case 1904: /* fmov */
+ case 1178: /* mov */
+ case 1283: /* dup */
+ value = 1283; /* --> dup. */
+ break;
+ case 1177: /* mov */
+ case 1284: /* dupm */
+ value = 1284; /* --> dupm. */
+ break;
+ case 1899: /* eon */
+ case 1286: /* eor */
+ value = 1286; /* --> eor. */
+ break;
+ case 1187: /* not */
+ case 1288: /* eor */
+ value = 1288; /* --> eor. */
+ break;
+ case 1188: /* nots */
+ case 1289: /* eors */
+ value = 1289; /* --> eors. */
+ break;
+ case 1900: /* facle */
+ case 1294: /* facge */
+ value = 1294; /* --> facge. */
+ break;
+ case 1901: /* faclt */
+ case 1295: /* facgt */
+ value = 1295; /* --> facgt. */
+ break;
+ case 1902: /* fcmle */
+ case 1304: /* fcmge */
+ value = 1304; /* --> fcmge. */
+ break;
+ case 1903: /* fcmlt */
+ case 1306: /* fcmgt */
+ value = 1306; /* --> fcmgt. */
+ break;
+ case 1171: /* fmov */
+ case 1312: /* fcpy */
+ value = 1312; /* --> fcpy. */
+ break;
+ case 1170: /* fmov */
+ case 1329: /* fdup */
+ value = 1329; /* --> fdup. */
+ break;
+ case 1172: /* mov */
+ case 1627: /* orr */
+ value = 1627; /* --> orr. */
+ break;
+ case 1906: /* orn */
+ case 1628: /* orr */
+ value = 1628; /* --> orr. */
+ break;
+ case 1175: /* mov */
+ case 1630: /* orr */
+ value = 1630; /* --> orr. */
+ break;
+ case 1185: /* movs */
+ case 1631: /* orrs */
+ value = 1631; /* --> orrs. */
+ break;
+ case 1180: /* mov */
+ case 1687: /* sel */
+ value = 1687; /* --> sel. */
+ break;
+ case 1183: /* mov */
+ case 1688: /* sel */
+ value = 1688; /* --> sel. */
break;
default: return NULL;
}