[AArch64][SVE] Asm: Predicated floating point reductions.
authorSander de Smalen <sander.desmalen@arm.com>
Fri, 27 Jul 2018 13:58:48 +0000 (13:58 +0000)
committerSander de Smalen <sander.desmalen@arm.com>
Fri, 27 Jul 2018 13:58:48 +0000 (13:58 +0000)
commitfcb636d2226747656d206fac5966b4f460883fd2
tree8713e64d1a8fa5f491ea81954ff51d86b7f833f2
parentcb3eb30636c8d9136c8a01126963eded45617531
[AArch64][SVE] Asm: Predicated floating point reductions.

This patch adds support for various floating-point
reduction operations:

  FADDA    strictly-ordered add reduction, accumulating in scalar
  FADDV    recursive add reduction to scalar
  FMAXV    recursive max reduction to scalar
  FMINV    recursive min reduction to scalar
  FMAXNMV  recursive max number reduction to scalar
  FMINNMV  recursive min number reduction to scalar

The reduction is predicated, e.g.

  fadda d0, p0, d0, z1.d

performs the add-reduction in strict order on active elements
in z1, accumulating into d0.

  faddv d0, p0, z1.d

performs the add-reduction (not in strict order)
on active elements in z1, storing the result in d0.

llvm-svn: 338123
14 files changed:
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
llvm/lib/Target/AArch64/SVEInstrFormats.td
llvm/test/MC/AArch64/SVE/fadda-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/fadda.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/faddv-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/faddv.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/fmaxnmv-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/fmaxnmv.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/fmaxv-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/fmaxv.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/fminnmv-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/fminnmv.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/fminv-diagnostics.s [new file with mode: 0644]
llvm/test/MC/AArch64/SVE/fminv.s [new file with mode: 0644]