[AArch64]SME2 MOV Instructions
authorCaroline Concatto <caroline.concatto@arm.com>
Wed, 2 Nov 2022 09:36:50 +0000 (09:36 +0000)
committerCaroline Concatto <caroline.concatto@arm.com>
Tue, 8 Nov 2022 09:51:56 +0000 (09:51 +0000)
commit1a917568e7321b4cc36313895cc98408ffa861ec
tree436f77aaf7cfdc3e69c6956effb7908c590525f0
parent17813095de1769abb3ab6196115556fce6d81496
[AArch64]SME2 MOV Instructions

This patch adds the assembly/disassembly for the following instructions:

MOVA (array to vector, four registers): Move four ZA single-vector groups to four vector registers.
     (array to vector, two registers): Move two ZA single-vector groups to two vector registers.
     (tile to vector, four registers): Move four ZA tile slices to four vector registers.
     (tile to vector, single): Move ZA tile slice to vector register.
     (tile to vector, two registers): Move two ZA tile slices to two vector registers.
     (vector to array, four registers): Move four vector registers to four ZA single-vector groups.
     (vector to array, two registers): Move two vector registers to two ZA single-vector groups.
     (vector to tile, four registers): Move four vector registers to four ZA tile slices.
     (vector to tile, single): Move vector register to ZA tile slice.
     (vector to tile, two registers): Move two vector registers to two ZA tile slices.

The reference can be found here:

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

It add more sizes for Matrix Operand:
MatrixOp8 and MatrixOp16
two implicit operands uimm0s2range and uimm0s4range.
and  uimm1s2range that are immediates

Differential Revision: https://reviews.llvm.org/D136142
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/SMEInstrFormats.td
llvm/test/MC/AArch64/SME2/mova-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/mova.s [new file with mode: 0644]