llvm-6502/test/Transforms
Arnold Schwaighofer 074e489dbc SLPVectorizer: Handle more horizontal reductions (disabled)
Match reductions starting at binary operation feeding into a phi. The code
handles trees like

 r += v1 + v2 + v3 ...

and

 r += v1
 r += v2
 ...

and

 r *= v1 + v2 + ...

We currently only handle associative operations (add, fadd fast).

The code can now also handle reductions feeding into stores.

 a[i] = v1 + v2 + v3 + ...

The code is currently disabled behind the flag "-slp-vectorize-hor".  The cost
model for most architectures is not there yet.

I found one opportunity of a horizontal reduction feeding a phi in TSVC
(LoopRerolling-flt) and there are several opportunities where reductions feed
into stores.

radar://14607682

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191108 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-20 21:18:20 +00:00
..
ADCE
ArgumentPromotion
BBVectorize Prevent LoopVectorizer and SLPVectorizer running if the target has no vector registers. 2013-09-18 12:43:35 +00:00
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantMerge
ConstProp
CorrelatedValuePropagation
DeadArgElim
DeadStoreElimination
DebugIR
EarlyCSE
FunctionAttrs
GCOVProfiling
GlobalDCE
GlobalOpt Don't shrink atomic ops to bool in GlobalOpt. 2013-09-09 22:00:13 +00:00
GVN Delete empty files. 2013-09-20 20:40:22 +00:00
IndVarSimplify Teach loop-idiom about address space pointer sizes 2013-09-11 05:09:42 +00:00
Inline
InstCombine InstCombine: Canonicalize (gep i8* X, -(ptrtoint Y)) to (sub (ptrtoint X), (ptrtoint Y)) 2013-09-20 14:38:44 +00:00
InstSimplify
Internalize
IPConstantProp
JumpThreading
LCSSA
LICM Add testcase for r190631 2013-09-16 21:24:30 +00:00
LoopDeletion
LoopIdiom Teach loop-idiom about address space pointer sizes 2013-09-11 05:09:42 +00:00
LoopRotate
LoopSimplify
LoopStrengthReduce Teach loop-idiom about address space pointer sizes 2013-09-11 05:09:42 +00:00
LoopUnroll Implement TTI getUnrollingPreferences for PowerPC 2013-09-11 21:20:40 +00:00
LoopUnswitch
LoopVectorize Name the XCore target-specific subdirectories canonically. 2013-09-18 14:08:30 +00:00
LowerAtomic
LowerExpectIntrinsic
LowerInvoke
LowerSwitch Revert patches to add case-range support for PR1255. 2013-09-09 19:14:35 +00:00
Mem2Reg
MemCpyOpt
MergeFunc Bugfix for PR17099: 2013-09-17 09:36:11 +00:00
MetaRenamer
ObjCARC
PhaseOrdering
PruneEH
Reassociate
Reg2Mem
ScalarRepl
SCCP
SimplifyCFG Add test for untested path in SimplifyCFG 2013-09-14 02:44:02 +00:00
Sink
SLPVectorizer SLPVectorizer: Handle more horizontal reductions (disabled) 2013-09-20 21:18:20 +00:00
SROA
StripSymbols
StructurizeCFG
TailCallElim
TailDup