[AArch64]SME2 multi-vec FP/INT down convert 2/4 registers
authorCaroline Concatto <caroline.concatto@arm.com>
Thu, 20 Oct 2022 18:11:04 +0000 (19:11 +0100)
committerCaroline Concatto <caroline.concatto@arm.com>
Fri, 21 Oct 2022 13:30:05 +0000 (14:30 +0100)
commit830b5e823af00dfca2de361019bfeb98846bca06
treee0335d4e8e0d1e6dbe90da9141322885dfedd41d
parentfc0cde8af56dedd1ec4ed6b5a881b319af0b4218
[AArch64]SME2 multi-vec FP/INT  down convert 2/4 registers

This patch implements
Int:
  SQCVT: Multi-vector signed saturating extract narrow for 2 and 4 registers.
  UQCVT: Multi-vector unsigned saturating extract narrow for 2 and 4 registers.
  SQCVTU: Multi-vector signed saturating unsigned extract narrow for 2 and 4 registers
  SQCVTN:  Multi-vector signed saturating extract narrow and interleave.
  SQCVTUN: Multi-vector signed saturating unsigned extract narrow and interleave.
  UQCVTN: Multi-vector unsigned saturating extract narrow and interleave.

FP:
  FCVT(narrowing): Multi-vector floating-point convert from single-precision to
                  packed half-precision.
  FCVTN: Multi-vector floating-point convert from single-precision to
           interleaved half-precision.
  BFCVT: Multi-vector floating-point convert from single-precision to packed
         BFloat16 format.
  BFCVTN: : Multi-vector floating-point convert from single-precision to
            interleaved BFloat16 format.

The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2022-09

Depends on: D135563

Reviewed By: sdesmalen

Differential Revision: https://reviews.llvm.org/D135588
22 files changed:
llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
llvm/lib/Target/AArch64/SMEInstrFormats.td
llvm/test/MC/AArch64/SME2/bfcvt-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/bfcvt.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/bfcvtn-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/bfcvtn.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/fcvt-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/fcvt.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/fcvtn-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/fcvtn.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/sqcvt-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/sqcvt.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/sqcvtn-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/sqcvtn.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/sqcvtu-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/sqcvtu.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/sqcvtun-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/sqcvtun.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/uqcvt-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/uqcvt.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/uqcvtn-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/uqcvtn.s [new file with mode: 0644]