aarch64: Add the SME2 multivector LD1 and ST1 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)
commitb408ebbf526e7293f08825d04b34c7d2ad7fc753
tree3331d54d3c7cafb02746194a07d78646b65f5c73
parentd8773a8a5f5614f508d9919cb7626ae0497b8141
aarch64: Add the SME2 multivector LD1 and ST1 instructions

SME2 adds LD1 and ST1 variants for lists of 2 and 4 registers.
The registers can be consecutive or strided.  In the strided case,
2-register lists have a stride of 8, starting at register x0xxx.
4-register lists have a stride of 4, starting at register x00xx.

The instructions are predicated on a predicate-as-counter register in
the range pn8-pn15.  Although we already had register fields with upper
bounds of 7 and 15, this is the first plain register operand to have a
nonzero lower bound.  The patch uses the operand-specific data field
to record the minimum value, rather than having separate inserters
and extractors for each lower bound.  This in turn required adding
an extra bit to the field.
40 files changed:
gas/config/tc-aarch64.c
gas/testsuite/gas/aarch64/sme2-2-invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-2-invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-2-invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-2-noarch.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-2-noarch.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-2.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-2.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-3-invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-3-invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-3-invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-3-noarch.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-3-noarch.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-3.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-3.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-4-invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-4-invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-4-invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-4-noarch.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-4-noarch.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-4.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-4.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-5-invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-5-invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-5-invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-5-noarch.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-5-noarch.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-5.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-5.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