Modify the ARNM assembler to accept the omission of the immediate argument for the...
authorDelia Burduv <Delia.Burduv@arm.com>
Wed, 30 Oct 2019 13:23:35 +0000 (13:23 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 30 Oct 2019 13:23:35 +0000 (13:23 +0000)
commit1820262bc909121a408e030195789a70513b9139
tree8e02ca27c07cf6fb65fc65c240bdef1d555449c4
parent864619bb2e68e4ec8fa5bcfc87b00bf6667601e3
Modify the ARNM assembler to accept the omission of the immediate argument for the writeback form of the LDRAA and LDRAB mnemonics

This is a shorthand for the immediate argument being 0, as described here:
  https://developer.arm.com/docs/ddi0596/latest/base-instructions-alphabetic-order/ldraa-ldrab-load-register-with-pointer-authentication

This is because the instructions still have a use with an immediate
argument of 0, unlike loads without the PAC functionality. Currently,
the mnemonics are

  LDRAA Xt, [Xn, #<simm10>]!
  LDRAB Xt, [Xn, #<simm10>]!

After this patch they become

  LDRAA Xt, [Xn {, #<simm10>}]!
  LDRAB Xt, [Xn {, #<simm10>}]!

gas * config/tc-aarch64.c (parse_address_main): Accept the omission of
the immediate argument for ldraa and ldrab as a shorthand for the
immediate being 0.
* testsuite/gas/aarch64/ldraa-ldrab-no-offset.d: New test.
* testsuite/gas/aarch64/ldraa-ldrab-no-offset.s: New test.
* testsuite/gas/aarch64/illegal-ldraa.s: Modified to accept the
writeback form with no offset.
* testsuite/gas/aarch64/illegal-ldraa.s: Removed missing offset
error.

opcodes * aarch64-opc.c (print_immediate_offset_address): Don't print the
immediate for the writeback form of ldraa/ldrab if it is 0.
* aarch64-tbl.h: Updated the documentation for ADDR_SIMM10.
* aarch64-opc-2.c: Regenerated.
gas/ChangeLog
gas/config/tc-aarch64.c
gas/testsuite/gas/aarch64/illegal-ldraa.l
gas/testsuite/gas/aarch64/illegal-ldraa.s
gas/testsuite/gas/aarch64/ldraa-ldrab-no-offset.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/ldraa-ldrab-no-offset.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/aarch64-opc-2.c
opcodes/aarch64-opc.c
opcodes/aarch64-tbl.h