1. [SLP] allow forming 2-way reduction patterns (details)
Commit 7ff57705ba196ce649d6034614b3b9df57e1f84f by spatel
[SLP] allow forming 2-way reduction patterns
We have a vector compare reduction problem seen in PR39665 comment 2:
Or slightly reduced here:
define i1 @cmp2(<2 x double> %a0) {
%a = fcmp ogt <2 x double> %a0, <double 1.0, double 1.0>
%b = extractelement <2 x i1> %a, i32 0
%c = extractelement <2 x i1> %a, i32 1
%d = and i1 %b, %c
ret i1 %d
SLP would not attempt to turn this into a vector reduction because there
is an artificial lower limit on that transform. We can not completely
remove that limit without inducing regressions though, so this patch
just hacks an extra attempt at creating a 2-way reduction to the end of
the analysis.
As shown in the test file, we are still not getting some of the
motivating cases, so follow-on patches will be needed to solve those
Differential Revision:
The file was modifiedllvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h
The file was modifiedllvm/test/Feature/weak_constant.ll
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/reduction2.ll