[all-commits] [llvm/llvm-project] f8f953: [AArch64][SVE] Better utilisation of unpredicated ...
Bradley Smith via All-commits
all-commits at lists.llvm.org
Mon May 10 05:06:14 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: f8f953c2a6b3ee6bd50f1bc1bc81880c0d40eb6c
https://github.com/llvm/llvm-project/commit/f8f953c2a6b3ee6bd50f1bc1bc81880c0d40eb6c
Author: Bradley Smith <bradley.smith at arm.com>
Date: 2021-05-10 (Mon, 10 May 2021)
Changed paths:
M llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
M llvm/lib/Target/AArch64/AArch64ISelLowering.h
M llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
M llvm/lib/Target/AArch64/SVEInstrFormats.td
M llvm/test/CodeGen/AArch64/sve-intrinsics-int-arith-imm.ll
A llvm/test/CodeGen/AArch64/sve-intrinsics-unpred-form.ll
Log Message:
-----------
[AArch64][SVE] Better utilisation of unpredicated forms of arithmetic intrinsics
When using predicated arithmetic intrinsics, if the predicate used is all
lanes active, use an unpredicated form of the instruction, additionally
this allows for better use of immediate forms.
This also includes a new complex isel pattern which allows matching an
all active predicate when the types are different but the predicate is a
superset of the type being used. For example, to allow a b8 ptrue for a
b32 predicate operand.
This only includes instructions where the unpredicated/predicated forms
are mismatched between variants, meaning that the removal of the
predicate is done during instruction selection in order to prevent
spurious re-introductions of ptrue instructions.
Co-authored-by: Paul Walker <paul.walker at arm.com>
Differential Revision: https://reviews.llvm.org/D101062
More information about the All-commits
mailing list