[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)
commit816542ceb39ed51c942fa94b5c27041b82fb4d1c
tree3b34faee402ffd5d71accb479ae5ff4c8df9f54f
parent0381cc74c773fe3e73475b982375fb66cb7ef9f9
[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

llvm-svn: 302678
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.h
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
llvm/test/CodeGen/AArch64/aarch64-addv.ll
llvm/test/CodeGen/AArch64/aarch64-minmaxv.ll
llvm/test/CodeGen/AArch64/arm64-vabs.ll
llvm/test/Transforms/LoopVectorize/AArch64/reduction-small-size.ll
llvm/test/Transforms/SLPVectorizer/AArch64/gather-root.ll