diff options
author | Przemyslaw Wirkus <przemyslaw.wirkus@arm.com> | 2021-11-17 20:02:06 +0000 |
---|---|---|
committer | Przemyslaw Wirkus <przemyslaw.wirkus@arm.com> | 2021-11-17 20:02:24 +0000 |
commit | 01a4d0822025084609380fb989d43bda0667db72 (patch) | |
tree | 5c1888e350164f67afae5b11ab70b82fa4a353bf /opcodes/aarch64-asm-2.c | |
parent | 1cad938de57a1577e5fe4b4afcabe889a8b9b9d7 (diff) | |
download | gdb-01a4d0822025084609380fb989d43bda0667db72.zip gdb-01a4d0822025084609380fb989d43bda0667db72.tar.gz gdb-01a4d0822025084609380fb989d43bda0667db72.tar.bz2 |
aarch64: [SME] Add LD1x, ST1x, LDR and STR instructions
This patch is adding new loads and stores defined by SME instructions.
gas/ChangeLog:
* config/tc-aarch64.c (parse_sme_address): New parser.
(parse_sme_za_hv_tiles_operand_with_braces): New parser.
(parse_sme_za_array): New parser.
(output_operand_error_record): Print error details if
present.
(parse_operands): Support new operands.
* testsuite/gas/aarch64/sme-5-illegal.d: New test.
* testsuite/gas/aarch64/sme-5-illegal.l: New test.
* testsuite/gas/aarch64/sme-5-illegal.s: New test.
* testsuite/gas/aarch64/sme-5.d: New test.
* testsuite/gas/aarch64/sme-5.s: New test.
* testsuite/gas/aarch64/sme-6-illegal.d: New test.
* testsuite/gas/aarch64/sme-6-illegal.l: New test.
* testsuite/gas/aarch64/sme-6-illegal.s: New test.
* testsuite/gas/aarch64/sme-6.d: New test.
* testsuite/gas/aarch64/sme-6.s: New test.
* testsuite/gas/aarch64/sme-7-illegal.d: New test.
* testsuite/gas/aarch64/sme-7-illegal.l: New test.
* testsuite/gas/aarch64/sme-7-illegal.s: New test.
* testsuite/gas/aarch64/sme-7.d: New test.
* testsuite/gas/aarch64/sme-7.s: New test.
include/ChangeLog:
* opcode/aarch64.h (enum aarch64_opnd): New operands.
(enum aarch64_insn_class): Added sme_ldr and sme_str.
(AARCH64_OPDE_UNTIED_IMMS): New operand error kind.
opcodes/ChangeLog:
* aarch64-asm.c (aarch64_ins_sme_za_hv_tiles): New inserter.
(aarch64_ins_sme_za_list): New inserter.
(aarch64_ins_sme_za_array): New inserter.
(aarch64_ins_sme_addr_ri_u4xvl): New inserter.
* aarch64-asm.h (AARCH64_DECL_OPD_INSERTER): Added
ins_sme_za_list, ins_sme_za_array and ins_sme_addr_ri_u4xvl.
* aarch64-dis.c (aarch64_ext_sme_za_hv_tiles): New extractor.
(aarch64_ext_sme_za_list): New extractor.
(aarch64_ext_sme_za_array): New extractor.
(aarch64_ext_sme_addr_ri_u4xvl): New extractor.
* aarch64-dis.h (AARCH64_DECL_OPD_EXTRACTOR): Added
ext_sme_za_list, ext_sme_za_array and ext_sme_addr_ri_u4xvl.
* aarch64-opc.c (operand_general_constraint_met_p):
(aarch64_match_operands_constraint): Handle sme_ldr, sme_str
and sme_misc.
(aarch64_print_operand): New operands supported.
* aarch64-tbl.h (OP_SVE_QUU): New qualifier.
(OP_SVE_QZU): New qualifier.
aarch64-asm-2.c: Regenerate.
aarch64-dis-2.c: Regenerate.
aarch64-opc-2.c: Regenerate.
Diffstat (limited to 'opcodes/aarch64-asm-2.c')
-rw-r--r-- | opcodes/aarch64-asm-2.c | 78 |
1 files changed, 42 insertions, 36 deletions
diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c index 0e04842..54ec35a 100644 --- a/opcodes/aarch64-asm-2.c +++ b/opcodes/aarch64-asm-2.c @@ -640,7 +640,6 @@ aarch64_insert_operand (const aarch64_operand *self, case 29: case 30: case 31: - case 166: case 167: case 168: case 169: @@ -650,7 +649,7 @@ aarch64_insert_operand (const aarch64_operand *self, case 173: case 174: case 175: - case 190: + case 176: case 191: case 192: case 193: @@ -659,11 +658,12 @@ aarch64_insert_operand (const aarch64_operand *self, case 196: case 197: case 198: - case 204: - case 207: - case 209: + case 199: + case 205: + case 208: case 210: - case 213: + case 211: + case 214: return aarch64_ins_regno (self, info, code, inst, errors); case 15: return aarch64_ins_reg_extended (self, info, code, inst, errors); @@ -675,7 +675,7 @@ aarch64_insert_operand (const aarch64_operand *self, case 33: case 34: case 35: - case 216: + case 220: return aarch64_ins_reglane (self, info, code, inst, errors); case 36: return aarch64_ins_reglist (self, info, code, inst, errors); @@ -710,9 +710,8 @@ aarch64_insert_operand (const aarch64_operand *self, case 82: case 83: case 84: - case 163: - case 165: - case 182: + case 164: + case 166: case 183: case 184: case 185: @@ -720,8 +719,9 @@ aarch64_insert_operand (const aarch64_operand *self, case 187: case 188: case 189: - case 214: + case 190: case 215: + case 219: return aarch64_ins_imm (self, info, code, inst, errors); case 44: case 45: @@ -731,10 +731,10 @@ aarch64_insert_operand (const aarch64_operand *self, case 48: return aarch64_ins_advsimd_imm_modified (self, info, code, inst, errors); case 52: - case 153: + case 154: return aarch64_ins_fpimm (self, info, code, inst, errors); case 70: - case 161: + case 162: return aarch64_ins_limm (self, info, code, inst, errors); case 71: return aarch64_ins_aimm (self, info, code, inst, errors); @@ -744,11 +744,11 @@ aarch64_insert_operand (const aarch64_operand *self, return aarch64_ins_fbits (self, info, code, inst, errors); case 75: case 76: - case 158: + case 159: return aarch64_ins_imm_rotate2 (self, info, code, inst, errors); case 77: - case 157: - case 159: + case 158: + case 160: return aarch64_ins_imm_rotate1 (self, info, code, inst, errors); case 78: case 79: @@ -824,8 +824,8 @@ aarch64_insert_operand (const aarch64_operand *self, case 133: case 134: case 135: - return aarch64_ins_sve_addr_rr_lsl (self, info, code, inst, errors); case 136: + return aarch64_ins_sve_addr_rr_lsl (self, info, code, inst, errors); case 137: case 138: case 139: @@ -833,56 +833,62 @@ aarch64_insert_operand (const aarch64_operand *self, case 141: case 142: case 143: - return aarch64_ins_sve_addr_rz_xtw (self, info, code, inst, errors); case 144: + return aarch64_ins_sve_addr_rz_xtw (self, info, code, inst, errors); case 145: case 146: case 147: - return aarch64_ins_sve_addr_zi_u5 (self, info, code, inst, errors); case 148: - return aarch64_ins_sve_addr_zz_lsl (self, info, code, inst, errors); + return aarch64_ins_sve_addr_zi_u5 (self, info, code, inst, errors); case 149: - return aarch64_ins_sve_addr_zz_sxtw (self, info, code, inst, errors); + return aarch64_ins_sve_addr_zz_lsl (self, info, code, inst, errors); case 150: - return aarch64_ins_sve_addr_zz_uxtw (self, info, code, inst, errors); + return aarch64_ins_sve_addr_zz_sxtw (self, info, code, inst, errors); case 151: - return aarch64_ins_sve_aimm (self, info, code, inst, errors); + return aarch64_ins_sve_addr_zz_uxtw (self, info, code, inst, errors); case 152: + return aarch64_ins_sve_aimm (self, info, code, inst, errors); + case 153: return aarch64_ins_sve_asimm (self, info, code, inst, errors); - case 154: - return aarch64_ins_sve_float_half_one (self, info, code, inst, errors); case 155: - return aarch64_ins_sve_float_half_two (self, info, code, inst, errors); + return aarch64_ins_sve_float_half_one (self, info, code, inst, errors); case 156: + return aarch64_ins_sve_float_half_two (self, info, code, inst, errors); + case 157: return aarch64_ins_sve_float_zero_one (self, info, code, inst, errors); - case 160: + case 161: return aarch64_ins_inv_limm (self, info, code, inst, errors); - case 162: + case 163: return aarch64_ins_sve_limm_mov (self, info, code, inst, errors); - case 164: + case 165: return aarch64_ins_sve_scale (self, info, code, inst, errors); - case 176: case 177: case 178: - return aarch64_ins_sve_shlimm (self, info, code, inst, errors); case 179: + return aarch64_ins_sve_shlimm (self, info, code, inst, errors); case 180: case 181: + case 182: return aarch64_ins_sve_shrimm (self, info, code, inst, errors); - case 199: case 200: case 201: case 202: case 203: + case 204: return aarch64_ins_sve_quad_index (self, info, code, inst, errors); - case 205: - return aarch64_ins_sve_index (self, info, code, inst, errors); case 206: - case 208: + return aarch64_ins_sve_index (self, info, code, inst, errors); + case 207: + case 209: return aarch64_ins_sve_reglist (self, info, code, inst, errors); - case 211: case 212: + case 213: + case 216: return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors); + case 217: + return aarch64_ins_sme_za_array (self, info, code, inst, errors); + case 218: + return aarch64_ins_sme_addr_ri_u4xvl (self, info, code, inst, errors); default: assert (0); abort (); } } |