aarch64: Add the SME2 predicate-related 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)
commit99e01a66b4c619fb8c7d6f978038eb7a3661c160
tree7493699028bd43202975111c09e89213f1dd8df7
parentb408ebbf526e7293f08825d04b34c7d2ad7fc753
aarch64: Add the SME2 predicate-related instructions

Implementation-wise, the main things to note here are:

- the WHILE* instructions have forms that return a pair of predicate
  registers.  This is the first time that we've had lists of predicate
  registers, and they wrap around after register 15 rather than after
  register 31.

- the predicate-as-counter WHILE* instructions have a fourth operand
  that specifies the vector length.  We can treat this as an enumeration,
  except that immediate values aren't allowed.

- PEXT takes an unsuffixed predicate index of the form PN<n>[<imm>].
  This is the first instance of a vector/predicate index having
  no suffix.
37 files changed:
gas/config/tc-aarch64.c
gas/testsuite/gas/aarch64/illegal-sve2.l
gas/testsuite/gas/aarch64/sme-9.d
gas/testsuite/gas/aarch64/sme2-6-invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-6-invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-6-invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-6-noarch.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-6-noarch.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-6.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-6.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-7-invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-7-invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-7-invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-7-noarch.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-7-noarch.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-7.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2-7.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sve2-sme2-1-invalid.l
gas/testsuite/gas/aarch64/sve2-sme2-1-invalid.s
gas/testsuite/gas/aarch64/sve2-sme2-2-invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sve2-sme2-2-invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sve2-sme2-2-invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sve2-sme2-2-noarch.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sve2-sme2-2-noarch.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sve2-sme2-2.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sve2-sme2-2.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