[SLP] Treat SelectInsts as reduction values.
authorCharlie Turner <charlie.turner@arm.com>
Tue, 27 Oct 2015 17:49:11 +0000 (17:49 +0000)
committerCharlie Turner <charlie.turner@arm.com>
Tue, 27 Oct 2015 17:49:11 +0000 (17:49 +0000)
commitb13834ec71c909cd403aa153ad5d4d04c13b0f04
tree2a46cabfdfbfa43a9abb85901f59aeedc592a498
parent2d323d4ed212c93fba316c1d633ed627a6343398
[SLP] Treat SelectInsts as reduction values.

Summary:
Certain workloads, in particular sum-of-absdiff loops, can be vectorized using SLP if it can treat select instructions as reduction values.

The test case is a bit awkward. The AArch64 cost model needs some tuning to not be so pessimistic about selects. I've had to tweak the SLP threshold here.

Reviewers: jmolloy, mzolotukhin, spatel, nadav

Subscribers: nadav, mssimpso, aemerson, llvm-commits

Differential Revision: http://reviews.llvm.org/D13949

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251424 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Vectorize/SLPVectorizer.cpp
test/Transforms/SLPVectorizer/AArch64/horizontal.ll [new file with mode: 0644]