llvm/test/Transforms
Matthew Simpson bdd1452784 [SLP] Vectorize the index computations of getelementptr instructions.
This patch seeds the SLP vectorizer with getelementptr indices. The primary
motivation in doing so is to vectorize gather-like idioms beginning with
consecutive loads (e.g., g[a[0] - b[0]] + g[a[1] - b[1]] + ...). While these
cases could be vectorized with a top-down phase, seeding the existing bottom-up
phase with the index computations avoids the complexity, compile-time, and
phase ordering issues associated with a full top-down pass. Only bundles of
single-index getelementptrs with non-constant differences are considered for
vectorization.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257800 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-14 20:46:27 +00:00
..
ADCE
AddDiscriminators
AlignmentFromAssumptions
ArgumentPromotion
AtomicExpand [IR] Add support for floating pointer atomic loads and stores 2015-12-16 00:49:36 +00:00
BBVectorize
BDCE
BranchFolding
CodeExtractor
CodeGenPrepare Re-Revert r257105 (Verifier debug info changes) 2016-01-13 02:31:14 +00:00
ConstantHoisting
ConstantMerge
ConstProp
CorrelatedValuePropagation
CrossDSOCFI Cross-DSO control flow integrity (LLVM part). 2015-12-15 23:00:08 +00:00
DeadArgElim [OperandBundles] Have DeadArgElim play nice with operand bundles 2015-12-23 09:58:36 +00:00
DeadStoreElimination Re-Revert r257105 (Verifier debug info changes) 2016-01-13 02:31:14 +00:00
EarlyCSE Fix several accidental DOS line endings in source files 2016-01-03 17:22:03 +00:00
EliminateAvailableExternally
Float2Int
ForcedFunctionAttrs [attrs] Split off the forced attributes utility into its own pass that 2015-12-27 08:13:45 +00:00
FunctionAttrs [attrs] Split the late-revisit pattern for deducing norecurse in 2016-01-08 10:55:52 +00:00
FunctionImport Fix bot failure from r257493: remove extraneous temp file read 2016-01-12 17:53:59 +00:00
GCOVProfiling
GlobalDCE
GlobalOpt Also add unnamed_addr to functions. 2015-12-22 20:43:30 +00:00
GVN [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
IndVarSimplify
InferFunctionAttrs [BasicAA] Remove special casing of memset_pattern16 in favor of generic attribute inference 2016-01-06 04:53:16 +00:00
Inline [Inliner] Merge the attributes of the caller and callee functions 2016-01-13 06:02:45 +00:00
InstCombine [LibCallSimplifier] use instruction-level fast-math-flags to transform pow(x, 0.5) calls 2016-01-12 19:06:35 +00:00
InstMerge
InstSimplify CannotBeOrderedLessThanZero: add some missing cases 2016-01-12 23:37:30 +00:00
Internalize
IPConstantProp [SCCP] Don't violate the lattice invariants 2016-01-07 21:36:16 +00:00
IRCE
JumpThreading Add test for r257279. 2016-01-10 07:13:33 +00:00
LCSSA [WinEH] Update LCSSA to handle catchswitch with handlers inside and outside a loop 2015-12-18 18:12:35 +00:00
LICM [LICM] Fix a small oversight introduced in r256763 2016-01-04 23:16:22 +00:00
LoadCombine
LoopDeletion
LoopDistribute
LoopIdiom
LoopInterchange
LoopLoadElim
LoopReroll
LoopRotate
LoopSimplify
LoopStrengthReduce [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
LoopUnroll LoopUnroll: Use the optsize threshold for minsize as well 2016-01-11 22:39:43 +00:00
LoopUnswitch [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
LoopVectorize [LoopVectorizer] Refine loop vectorizer's register usage calculator by ignoring specific instructions. 2015-12-15 22:45:09 +00:00
LowerAtomic
LowerBitSets [cfi] Fix LowerBitSets on 32-bit targets. 2015-12-21 22:14:04 +00:00
LowerExpectIntrinsic
LowerInvoke
LowerSwitch
Mem2Reg [Mem2Reg] Respect optnone 2015-12-11 13:36:59 +00:00
MemCpyOpt Fix PR26051: Memcpy optimization should introduce a call to memcpy before the store destination position 2016-01-06 23:50:22 +00:00
MergeFunc [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
MetaRenamer
NaryReassociate [NaryReassociate] allow candidate to have a different type 2015-12-18 21:36:30 +00:00
ObjCARC
PartiallyInlineLibCalls
PGOProfile [PGO] make profile prefix even shorter and more readable 2015-12-15 00:32:56 +00:00
PhaseOrdering
PlaceSafepoints [Statepoints] Check for the "gc-leaf-function" attribute on call sites as well. 2016-01-05 23:59:08 +00:00
PruneEH
Reassociate Instructions to be redone only if from the same BB 2016-01-07 23:22:55 +00:00
Reg2Mem
RewriteStatepointsForGC [RS4GC] Update and simplify handling of Constants in findBaseDefiningValueOfVector(). 2016-01-09 04:02:16 +00:00
SafeStack [safestack] Add option for non-TLS unsafe stack pointer. 2015-12-22 00:13:11 +00:00
SampleProfile
Scalarizer
ScalarRepl
SCCP
SeparateConstOffsetFromGEP
SimplifyCFG [SimplifyCFG] Extend SimplifyResume to handle phi of trivial landing pad. 2016-01-10 05:48:01 +00:00
Sink [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
SLPVectorizer [SLP] Vectorize the index computations of getelementptr instructions. 2016-01-14 20:46:27 +00:00
SpeculativeExecution
SROA [SROA] Also insert a bit piece expression if only one piece is needed 2016-01-14 20:06:34 +00:00
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols
StructurizeCFG
TailCallElim [OperandBundles] Have TailCallElim play nice with operand bundles 2015-12-23 09:58:43 +00:00
TailDup
Util [Utils] Fix incorrect dbg.declare store conversion 2016-01-14 19:12:27 +00:00