[AArch64]SME2 instructions that use ZTO operand
authorCaroline Concatto <caroline.concatto@arm.com>
Fri, 28 Oct 2022 14:51:20 +0000 (15:51 +0100)
committerCaroline Concatto <caroline.concatto@arm.com>
Thu, 3 Nov 2022 07:35:21 +0000 (07:35 +0000)
commita20112a74cb34fa967d10e07185167cbc2906c0d
tree351e2bd6595cba899e2e46760990923b73b1f5bc
parent0041b92cefbb550dd4e754a1ff44337fc32698a2
[AArch64]SME2 instructions that use ZTO operand

This patch adds the assembly/disassembly for the following instructions:
  ZERO (ZT0): Zero ZT0.
  LDR (ZT0): Load ZT0 register.
  STR (ZT0): Store ZT0 register.
  MOVT (scalar to ZT0): Move 8 bytes from general-purpose register to ZT0.
       (ZT0 to scalar): Move 8 bytes from ZT0 to general-purpose register.
 Consecutive:
   LUTI2 (single): Lookup table read with 2-bit indexes.
         (two registers): Lookup table read with 2-bit indexes.
         (four registers): Lookup table read with 2-bit indexes.
   LUTI4 (single): Lookup table read with 4-bit indexes.
         (two registers): Lookup table read with 4-bit indexes.
         (four registers): Lookup table read with 4-bit indexes.

The reference can be found here:

https://developer.arm.com/documentation/ddi0602/2022-09

This patch also adds a new register class and operand for zt0
and a another index operand uimm3s8

Differential Revision: https://reviews.llvm.org/D136088
19 files changed:
llvm/lib/Target/AArch64/AArch64InstrFormats.td
llvm/lib/Target/AArch64/AArch64RegisterInfo.td
llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp
llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.h
llvm/lib/Target/AArch64/SMEInstrFormats.td
llvm/test/MC/AArch64/SME2/ldr-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/ldr.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/luti2-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/luti2.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/luti4-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/luti4.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/movt-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/movt.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/str-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/str.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/zero.s [new file with mode: 0644]