[AArch64]SME2 Multi-single vector SVE Destructive 2 and 4 Registers
authorCaroline Concatto <caroline.concatto@arm.com>
Mon, 17 Oct 2022 10:46:32 +0000 (11:46 +0100)
committerCaroline Concatto <caroline.concatto@arm.com>
Fri, 21 Oct 2022 13:01:29 +0000 (14:01 +0100)
commit1e4f82c2578cf5045ffeda6c425d6d262a401e29
tree706647c18d33dfd4ef5d9bca57824e62b8f3c9a2
parent3cc9884500ad53e878045bc1d119d8a6b326f274
[AArch64]SME2 Multi-single vector SVE Destructive 2 and 4 Registers

This patch adds the assembly/disassembly for the following instructions:
  ADD (to vector): Add replicated single vector to multi-vector with multi-vector result.
  SQDMULH (multiple and single vector): Multi-vector signed saturating doubling multiply high by vector.
for 2 and 4 ZA SVE registers.

The reference can be found here:

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

It also adds more size for the multiple register tuple:
  ZZ_b_mul_r,  ZZ_h_mul_r,
  ZZZZ_b_mul_r,  ZZZZ_h_mul_r,
for 8 bits and 16 bits with 2 and 4 ZA registers.

Depends on: D135468

With a fix for Mips for this test:
llvm/test/MC/Mips/mips64r6/valid.s

Differential Revision: https://reviews.llvm.org/D135563
llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
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/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
llvm/test/MC/AArch64/SME2/add-diagnostics.s
llvm/test/MC/AArch64/SME2/add.s
llvm/test/MC/AArch64/SME2/sqdmulh-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SME2/sqdmulh.s [new file with mode: 0644]
llvm/utils/TableGen/AsmMatcherEmitter.cpp