[AArch64]SME2 Multi-vector - Index/Single/Multi Array Vectors FMA sources
authorCaroline Concatto <caroline.concatto@arm.com>
Thu, 20 Oct 2022 17:57:33 +0000 (18:57 +0100)
committerCaroline Concatto <caroline.concatto@arm.com>
Fri, 21 Oct 2022 13:20:44 +0000 (14:20 +0100)
commitfc0cde8af56dedd1ec4ed6b5a881b319af0b4218
tree1e76d1d5b2d55951aa4184a64ee5900cc2a868c4
parent3770d2b9cad91e32f33c7cd51c8517e619438218
[AArch64]SME2 Multi-vector - Index/Single/Multi Array Vectors FMA sources

This patch adds the assembly/disassembly for the following instructions:
  INT:
     SMLAL
     SMLSL
     UMLAL
     UMLSL
  FP:
    BFMLAL
    BFMLSL
    FMLAL
    FMLSL
For multiple and indexed vector, Multiple and Single vector and
Multi vectors, for 1, 2 and 4 ZA registers.

The reference can be found here:

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

It also adds a new immediate:
  uimm3s2range for off3
  uimm2s2range for off2
to represent the vector select offset.
The new operands have the range between the first and the last vector position.

Depends on: D135563

Reviewed By: aemerson, sdesmalen

Re-landing the patch as the problem with https://reviews.llvm.org/D135563
is fixed in this commit: 1e4f82c2578cf5045ffe

Differential Revision: https://reviews.llvm.org/D135785
22 files changed:
llvm/lib/Target/AArch64/AArch64InstrFormats.td
llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.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/bfmlal-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/bfmlal.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/bfmlsl-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/bfmlsl.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/fmlal-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/fmlal.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/fmlsl-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/fmlsl.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/smlal-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/smlal.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/smlsl-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/smlsl.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/umlal-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/umlal.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/umlsl-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/umlsl.s [new file with mode: 0644]