diff options
author | Sudi Das <sudi.das@arm.com> | 2019-01-25 13:57:14 +0000 |
---|---|---|
committer | Tamar Christina <tamar.christina@arm.com> | 2019-01-25 14:49:51 +0000 |
commit | 550fd7bf6858cd708c54ec90412ffb653a932c3d (patch) | |
tree | f840ab8ecfb8f9464264e25430d43551a9101b77 /gas/config/tc-aarch64.c | |
parent | 183445093ebd6be285e29f75b877e62a723918c6 (diff) | |
download | gdb-550fd7bf6858cd708c54ec90412ffb653a932c3d.zip gdb-550fd7bf6858cd708c54ec90412ffb653a932c3d.tar.gz gdb-550fd7bf6858cd708c54ec90412ffb653a932c3d.tar.bz2 |
AArch64: Remove ldgv and stgv instructions from Armv8.5-A Memory Tagging Extension.
This patch is part of a series of patches to introduce a few changes to the
Armv8.5-A Memory Tagging Extension. This patch removes the LDGV and STGV
instructions. These instructions needed special infrastructure to support
[base]! style for addressing mode. That is also removed now.
Committed on behalf of Sudakshina Das.
*** gas/ChangeLog ***
* config/tc-aarch64.c (parse_address_main): Remove support for
[base]! address expression.
(parse_operands): Remove support for AARCH64_OPND_ADDR_SIMPLE_2.
(warn_unpredictable_ldst): Remove support for ldstgv_indexed.
* testsuite/gas/aarch64/armv8_5-a-memtag.d: Remove tests for ldgv
and stgv.
* testsuite/gas/aarch64/armv8_5-a-memtag.s: Likewise.
* testsuite/gas/aarch64/illegal-memtag.l: Likewise.
* testsuite/gas/aarch64/illegal-memtag.s: Likewise.
*** include/ChangeLog ***
* opcode/aarch64.h (enum aarch64_opnd): Remove
AARCH64_OPND_ADDR_SIMPLE_2.
(enum aarch64_insn_class): Remove ldstgv_indexed.
*** opcodes/ChangeLog ***
* aarch64-asm.c (aarch64_ins_addr_simple_2): Remove.
* aarch64-asm.h (ins_addr_simple_2): Likeiwse.
* aarch64-dis.c (aarch64_ext_addr_simple_2): Likewise.
* aarch64-dis.h (ext_addr_simple_2): Likewise.
* aarch64-opc.c (operand_general_constraint_met_p): Remove
case for ldstgv_indexed.
(aarch64_print_operand): Remove case for AARCH64_OPND_ADDR_SIMPLE_2.
* aarch64-tbl.h (struct aarch64_opcode): Remove ldgv and stgv.
(AARCH64_OPERANDS): Remove ADDR_SIMPLE_2.
* aarch64-asm-2.c: Regenerated.
* aarch64-dis-2.c: Regenerated.
* aarch64-opc-2.c: Regenerated.
Diffstat (limited to 'gas/config/tc-aarch64.c')
-rw-r--r-- | gas/config/tc-aarch64.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 461c39b..537f00c 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -3381,7 +3381,6 @@ parse_shifter_operand_reloc (char **str, aarch64_opnd_info *operand, [base,Wm,(S|U)XTW {#imm}] Pre-indexed [base,#imm]! - [base]! // in ld/stgv Post-indexed [base],#imm [base],Xm // in SIMD ld/st structure @@ -3690,11 +3689,10 @@ parse_address_main (char **str, aarch64_opnd_info *operand, } /* If at this point neither .preind nor .postind is set, we have a - bare [Rn]{!}; reject [Rn]! except for ld/stgv but accept [Rn] - as a shorthand for [Rn,#0]. */ + bare [Rn]{!}; reject [Rn]! accept [Rn] as a shorthand for [Rn,#0]. */ if (operand->addr.preind == 0 && operand->addr.postind == 0) { - if (operand->type != AARCH64_OPND_ADDR_SIMPLE_2 && operand->addr.writeback) + if (operand->addr.writeback) { /* Reject [Rn]! */ set_syntax_error (_("missing offset in the pre-indexed address")); @@ -6148,7 +6146,6 @@ parse_operands (char *str, const aarch64_opcode *opcode) break; case AARCH64_OPND_ADDR_SIMPLE: - case AARCH64_OPND_ADDR_SIMPLE_2: case AARCH64_OPND_SIMD_ADDR_SIMPLE: { /* [<Xn|SP>{, #<simm>}] */ @@ -6158,8 +6155,7 @@ parse_operands (char *str, const aarch64_opcode *opcode) po_misc_or_fail (parse_address (&str, info)); if (info->addr.pcrel || info->addr.offset.is_reg || !info->addr.preind || info->addr.postind - || (info->addr.writeback - && operands[i] != AARCH64_OPND_ADDR_SIMPLE_2)) + || info->addr.writeback) { set_syntax_error (_("invalid addressing mode")); goto failure; @@ -6182,8 +6178,6 @@ parse_operands (char *str, const aarch64_opcode *opcode) } } po_char_or_fail (']'); - if (operands[i] == AARCH64_OPND_ADDR_SIMPLE_2) - po_char_or_fail ('!'); break; } @@ -6782,13 +6776,6 @@ warn_unpredictable_ldst (aarch64_instruction *instr, char *str) as_warn (_("unpredictable transfer with writeback -- `%s'"), str); break; - case ldstgv_indexed: - /* Load operations must load different registers. */ - if ((opcode->opcode & (1 << 22)) - && opnds[0].reg.regno == opnds[1].addr.base_regno) - as_warn (_("unpredictable load of register -- `%s'"), str); - break; - case ldstpair_off: case ldstnapair_offs: case ldstpair_indexed: |