]> granicus.if.org Git - llvm/commit
[AArch64] Enable use of reduction intrinsics.
authorAmara Emerson <amara.emerson@arm.com>
Wed, 10 May 2017 15:15:38 +0000 (15:15 +0000)
committerAmara Emerson <amara.emerson@arm.com>
Wed, 10 May 2017 15:15:38 +0000 (15:15 +0000)
commit7c631c8afc5aed35e9ae9f62ea1499f866b0ef34
tree80606c0868811fec4a3ccc6affbb02c78fcaaec5
parent2b63eecefe6c2e9975e4b1fb88fe576a42f899f3
[AArch64] Enable use of reduction intrinsics.

The new experimental reduction intrinsics can now be used, so I'm enabling this
for AArch64. We will need this for SVE anyway, so it makes sense to do this for
NEON reductions as well.

The existing code to match shufflevector patterns are replaced with a direct
lowering of the reductions to AArch64-specific nodes. Tests updated with the
new, simpler, representation.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302678 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64ISelLowering.cpp
lib/Target/AArch64/AArch64ISelLowering.h
lib/Target/AArch64/AArch64TargetTransformInfo.cpp
lib/Target/AArch64/AArch64TargetTransformInfo.h
test/CodeGen/AArch64/aarch64-addv.ll
test/CodeGen/AArch64/aarch64-minmaxv.ll
test/CodeGen/AArch64/arm64-vabs.ll
test/Transforms/LoopVectorize/AArch64/reduction-small-size.ll
test/Transforms/SLPVectorizer/AArch64/gather-root.ll