aarch64: Add the SME2 MOVA instructions
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 30 Mar 2023 10:09:12 +0000 (11:09 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 30 Mar 2023 10:09:12 +0000 (11:09 +0100)
commitd8773a8a5f5614f508d9919cb7626ae0497b8141
tree5ba56e29d3a94109568b7f1d01c7330863d007e2
parent503fae12992e5dbf48b4e30cea8d35f31d87effe
aarch64: Add the SME2 MOVA instructions

SME2 defines new MOVA instructions for moving multiple registers
to and from ZA.  As with SME, the instructions are also available
through MOV aliases.

One notable feature of these instructions (and many other SME2
instructions) is that some register lists must start at a multiple
of the list's size.  The patch uses the general error "start register
out of range" when this constraint isn't met, rather than an error
specifically about multiples.  This ensures that the error is
consistent between these simple consecutive lists and later
strided lists, for which the requirements aren't a simple multiple.
21 files changed:
gas/config/tc-aarch64.c
gas/testsuite/gas/aarch64/legacy_reg_names.l
gas/testsuite/gas/aarch64/sme-3-illegal.l
gas/testsuite/gas/aarch64/sme2-1-invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-1-invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-1-invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-1-noarch.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-1-noarch.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-1.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-1.s [new file with mode: 0644]
include/opcode/aarch64.h
opcodes/aarch64-asm-2.c
opcodes/aarch64-asm.c
opcodes/aarch64-asm.h
opcodes/aarch64-dis-2.c
opcodes/aarch64-dis.c
opcodes/aarch64-dis.h
opcodes/aarch64-opc-2.c
opcodes/aarch64-opc.c
opcodes/aarch64-opc.h
opcodes/aarch64-tbl.h