[AArch64][SVE] Asm: Improve diagnostics for gather loads.
authorSander de Smalen <sander.desmalen@arm.com>
Mon, 30 Apr 2018 07:24:38 +0000 (07:24 +0000)
committerSander de Smalen <sander.desmalen@arm.com>
Mon, 30 Apr 2018 07:24:38 +0000 (07:24 +0000)
commit5861c263e0c7264d891eb48c9272d906d978a417
treec4a6a98825c193c773e05b65fdfae0e97cdf8bdb
parent5a4c88005c1cafe95bbf0117f0a3900a78742080
[AArch64][SVE] Asm: Improve diagnostics for gather loads.

This patch extends the 'isSVEVectorRegWithShiftExtend' function to
improve diagnostics for SVE's gather load (scalar + vector) addressing
modes. Instead of always suggesting the 'unscaled' addressing mode,
the use of DiagnosticPredicate enables a more specific error message
in the context where the scaling is incorrect. For example:

  ld1h z0.d, p0/z, [x0, z0.d, lsl #2]
                                   ^
           shift amount should be '1'

Instead of suggesting the packed, unscaled addressing mode:
  expected 'z[0..31].d, (uxtw|sxtw)'

the assembler now suggests using the proper scaling:
  expected 'z[0..31].d, (lsl|uxtw|sxtw) #1'

Reviewers: fhahn, rengolin, samparker, SjoerdMeijer, javed.absar

Reviewed By: fhahn

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

llvm-svn: 331162
13 files changed:
llvm/lib/Target/AArch64/AArch64RegisterInfo.td
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
llvm/test/MC/AArch64/SVE/ld1d-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1h-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1sh-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1sw-diagnostics.s
llvm/test/MC/AArch64/SVE/ld1w-diagnostics.s
llvm/test/MC/AArch64/SVE/ldff1d-diagnostics.s
llvm/test/MC/AArch64/SVE/ldff1h-diagnostics.s
llvm/test/MC/AArch64/SVE/ldff1sh-diagnostics.s
llvm/test/MC/AArch64/SVE/ldff1sw-diagnostics.s
llvm/test/MC/AArch64/SVE/ldff1w-diagnostics.s