[AArch64][SVE2] Asm: add various bitwise shift instructions
authorCullen Rhodes <cullen.rhodes@arm.com>
Fri, 24 May 2019 09:17:23 +0000 (09:17 +0000)
committerCullen Rhodes <cullen.rhodes@arm.com>
Fri, 24 May 2019 09:17:23 +0000 (09:17 +0000)
commit968cb0e0499436cdbe4dd97e61b1ffb8abd5817c
tree36d1b64133dfb26288fa26e8e442c5379352be6c
parent6bca64fe5e9cf04cd39217e5ae2e148dc96b7dae
[AArch64][SVE2] Asm: add various bitwise shift instructions

Summary:
This patch adds support for the SVE2 saturating/rounding bitwise shift
left (predicated) group of instructions:

    * SRSHL, URSHL, SRSHLR, URSHLR, SQSHL, UQSHL, SQRSHL, UQRSHL,
      SQSHLR, UQSHLR, SQRSHLR, UQRSHLR

Immediate forms of the SQSHL and UQSHL instructions are also added to
the existing SVE bitwise shift by immediate (predicated) group, as well
as three new instructions SRSHR/URSHR/SQSHLU. The new instructions in
this group are encoded similarly and are implemented using the same
TableGen class with a minimal change (1 bit in encoding).

The specification can be found here:
https://developer.arm.com/docs/ddi0602/latest

Reviewed By: SjoerdMeijer

Differential Revision: https://reviews.llvm.org/D62140

llvm-svn: 361612
32 files changed:
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
llvm/lib/Target/AArch64/SVEInstrFormats.td
llvm/test/MC/AArch64/SVE2/sqrshl-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/sqrshl.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/sqrshlr-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/sqrshlr.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/sqshl-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/sqshl.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/sqshlr-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/sqshlr.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/sqshlu-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/sqshlu.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/srshl-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/srshl.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/srshlr-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/srshlr.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/srshr-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/srshr.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/uqrshl-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/uqrshl.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/uqrshlr-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/uqrshlr.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/uqshl-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/uqshl.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/uqshlr-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/uqshlr.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/urshl-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/urshl.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/urshlr-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/urshlr.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/urshr-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE2/urshr.s [new file with mode: 0644]