[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>
Thu, 20 Oct 2022 18:09:48 +0000 (19:09 +0100)
commit3fee9358baab54e4ed646a106297e7fb6f1b4cff
treeb321556bb0d6e8aa0a77837b7dfad2fcf96a66d1
parentd12d4857c5fded57f6333b60cfebb1196b3ac0d3
[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

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]