1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
llvm-mirror/test/Transforms
Michael Kuperstein cf125cd0ce [SLPVectorizer] Vectorize reverse-order loads in horizontal reductions
When vectorizing a tree rooted at a store bundle, we currently try to sort the
stores before building the tree, so that the stores can be vectorized. For other
trees, the order of the root bundle - which determines the order of all other
bundles - is arbitrary. That is bad, since if a leaf bundle of consecutive loads
happens to appear in the wrong order, we will not vectorize it.

This is partially mitigated when the root is a binary operator, by trying to
build a "reversed" tree when that's considered profitable. This patch extends the
workaround we have for binops to trees rooted in a horizontal reduction.

This fixes PR28474.

Differential Revision: https://reviews.llvm.org/D22554

llvm-svn: 276477
2016-07-22 21:28:48 +00:00
..
ADCE [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
AddDiscriminators [PM] Port Add discriminator pass to new PM 2016-06-15 21:51:30 +00:00
AlignmentFromAssumptions [PM] Port AlignmentFromAssumptions to the new PM. 2016-06-15 06:18:01 +00:00
ArgumentPromotion Remove the ScalarReplAggregates pass 2016-06-15 00:19:09 +00:00
AtomicExpand Support expanding partial-word cmpxchg to full-word cmpxchg in AtomicExpandPass. 2016-06-17 18:11:48 +00:00
BBVectorize Revert "[ValueTracking] Teach computeKnownBits for PHI nodes to compute sign bit for a recurrence with a NSW addition." 2016-06-29 04:57:00 +00:00
BDCE [PM] Port BDCE to the new pass manager. 2016-05-25 01:57:04 +00:00
BranchFolding
CodeExtractor
CodeGenPrepare [CodeGenPrepare] Don't sink a cast past its user 2016-04-27 19:36:38 +00:00
ConstantHoisting This implements a more optimal algorithm for selecting a base constant in 2016-07-14 07:44:20 +00:00
ConstantMerge [PM] Port ConstantMerge to the new pass manager. 2016-05-05 00:51:09 +00:00
ConstProp Don't remove side effecting instructions due to ConstantFoldInstruction 2016-07-22 04:54:44 +00:00
CorrelatedValuePropagation This converts a signed remainder instruction to unsigned remainder, which 2016-07-14 12:23:48 +00:00
CrossDSOCFI [PM] Port CrossDSOCFI to the new pass manager. 2016-07-09 03:25:35 +00:00
DCE Mark guards on true as "trivially dead" 2016-04-29 22:23:16 +00:00
DeadArgElim [PM] Port DeadArgumentElimination to the new PM 2016-06-12 09:16:39 +00:00
DeadStoreElimination Recommit - [DSE]Enhance shorthening MemIntrinsic based on OverlapIntervals 2016-07-22 18:27:24 +00:00
EarlyCSE [EarlyCSE] Fold invariant loads 2016-06-16 20:47:57 +00:00
EliminateAvailableExternally [PM] Port EliminateAvailableExternally pass to the new pass manager. 2016-05-05 02:37:32 +00:00
Float2Int [PM] Port float2int to the new pass manager 2016-06-24 23:32:02 +00:00
ForcedFunctionAttrs
FunctionAttrs Forgot to add a test for r276008. 2016-07-20 04:13:05 +00:00
FunctionImport [PM] Port FunctionImport Pass to new PM 2016-07-18 21:22:24 +00:00
GCOVProfiling [PM] Port GCOVProfiler pass to the new pass manager 2016-06-05 05:12:23 +00:00
GlobalDCE [GlobalDCE, Misc] Don't remove functions referenced by ifuncs 2016-05-04 00:20:48 +00:00
GlobalMerge CodeGen: Make the global-merge pass independently testable, and add a test. 2016-05-19 04:38:56 +00:00
GlobalOpt Invariant start/end intrinsics overloaded for address space 2016-07-22 17:49:40 +00:00
GuardWidening [GuardWidening] Fix incorrect use of remove_if 2016-05-21 02:24:44 +00:00
GVN GVH-hoist: only clone GEPs (PR28606) 2016-07-21 23:22:10 +00:00
IndVarSimplify Upgrade other old memset/memcpy signatures in tests causing buildbot failures with rL273568. 2016-06-23 16:34:52 +00:00
InferFunctionAttrs Reverting r275284 due to platform-specific test failures 2016-07-13 19:09:16 +00:00
Inline Implement callsite-hotness based inline cost for Sample-based PGO 2016-07-11 16:48:54 +00:00
InstCombine add tests for icmp vector folds 2016-07-22 21:28:20 +00:00
InstMerge [PM] Port MergedLoadStoreMotion to the new pass manager, take two. 2016-06-17 19:10:09 +00:00
InstSimplify [InstSimplify] don't crash handling a pointer or aggregate type 2016-07-21 21:56:00 +00:00
Internalize [Internalize] Test that __stack_chk_{guard, fail} are not internalized. 2016-06-05 19:08:54 +00:00
IPConstantProp [PM] Port Interprocedural SCCP to the new pass manager. 2016-05-05 21:05:36 +00:00
IRCE [IRCE] Don't misuse CHECK-LABEL; NFC 2016-07-22 00:41:02 +00:00
JumpThreading [JumpThreading] PRE unordered loads 2016-07-14 19:21:15 +00:00
LCSSA Revert "Revert r275883 and r275891. They seem to cause PR28608." 2016-07-20 01:55:27 +00:00
LICM New pass manager for LICM. 2016-07-12 22:37:48 +00:00
LoadCombine [LoadCombine] Combine Loads formed from GEPS with negative indexes 2016-06-19 06:14:56 +00:00
LoadStoreVectorizer [LSV] Don't move stores across may-load instrs, and loosen restrictions on moving loads. 2016-07-20 20:07:37 +00:00
LoopDataPrefetch [Kryo] Enable loop prefetcher. 2016-06-21 22:47:56 +00:00
LoopDeletion [PM] Port Dead Loop Deletion Pass to the new PM 2016-07-14 18:28:29 +00:00
LoopDistribute [OptDiag,LDist] Convert remaining opt remarks to use the new API 2016-07-21 21:21:34 +00:00
LoopIdiom [PM] Port LoopIdiomRecognize Pass to new PM 2016-07-12 18:45:51 +00:00
LoopInterchange
LoopLoadElim [LLE] Don't hoist conditionally executed loads 2016-06-28 04:02:47 +00:00
LoopReroll [LoopReroll] Reroll loops with unordered atomic memory accesses 2016-07-19 00:23:54 +00:00
LoopRotate LPM: Drop require<loops> from these tests, it's redundant. NFC 2016-05-10 18:28:10 +00:00
LoopSimplify Revert "Revert r275883 and r275891. They seem to cause PR28608." 2016-07-20 01:55:27 +00:00
LoopSimplifyCFG LPM: Drop require<loops> from these tests, it's redundant. NFC 2016-05-10 18:28:10 +00:00
LoopStrengthReduce [PM] Convert Loop Strength Reduce pass to new PM 2016-07-18 21:41:50 +00:00
LoopUnroll [PM] Port LoopUnroll. 2016-07-19 23:54:23 +00:00
LoopUnswitch [LoopUnswitch] Unswitch on conditions feeding into guards 2016-06-26 05:10:45 +00:00
LoopVectorize [LV] Move vector int induction update to end of latch 2016-07-21 21:20:15 +00:00
LoopVersioning [LoopVer] Update all existing PHIs in the exit block 2016-06-14 09:38:54 +00:00
LoopVersioningLICM [LoopVersioningLICM] Add test coverage for llvm.loop.licm_versioning.disable 2016-04-22 18:34:50 +00:00
LowerAtomic [PM] Port LowerAtomic to the new pass manager. 2016-05-13 22:52:35 +00:00
LowerExpectIntrinsic [LowerExpectIntrinsic] make default likely/unlikely ratio bigger 2016-04-26 22:23:38 +00:00
LowerGuardIntrinsic [Guards] Add branch metadata when lowering 2016-05-17 17:51:19 +00:00
LowerInvoke
LowerSwitch
LowerTypeTests [PM/IPO] Port LowerTypeTests to the new PassManager. 2016-07-11 18:10:06 +00:00
Mem2Reg [PM] Port Mem2Reg to the new pass manager. 2016-06-14 03:22:22 +00:00
MemCpyOpt [PM] Port MemCpyOpt to the new PM. 2016-06-14 02:44:55 +00:00
MergeFunc Fix a crash in MergeFunctions related to ordering of weak/strong functions 2016-05-31 17:20:23 +00:00
MetaRenamer
NameAnonFunctions Add a pass to name anonymous/nameless function 2016-04-12 21:35:28 +00:00
NaryReassociate [PM] Port NaryReassociate to the new PM 2016-07-21 22:28:52 +00:00
ObjCARC Form objc_storeStrong in the presence of bitcasts. 2016-05-27 02:13:53 +00:00
PartiallyInlineLibCalls [PM] Port PartiallyInlineLibCalls to the new pass manager. 2016-05-25 23:38:53 +00:00
PGOProfile [ThinLTO] Perform profile-guided indirect call promotion 2016-07-17 14:47:01 +00:00
PhaseOrdering Mark that SpeculativeExecution preserves Globals Alias Analysis. 2016-05-03 08:33:26 +00:00
PlaceSafepoints [PlaceSafepoints] Don't call undef in test case; NFC 2016-06-25 01:40:54 +00:00
PreISelIntrinsicLowering [PM] Port PreISelIntrinsicLowering to the new PM 2016-06-24 20:13:42 +00:00
PruneEH
Reassociate PM: Port Reassociate to the new pass manager 2016-04-26 23:39:29 +00:00
Reg2Mem
RewriteStatepointsForGC [RewriteStatepointsForGC] All constant should have null base pointer 2016-05-27 13:13:59 +00:00
SafeStack StackColoring for SafeStack. 2016-06-29 20:37:43 +00:00
SampleProfile Tune the weight propagation algorithm for sample profile. 2016-07-11 16:40:17 +00:00
Scalarizer [Scalarizer] PR28108: Skip over nullptr rather than crashing on it. 2016-07-14 01:31:25 +00:00
SCCP [SCCP] Zap multiple return values. 2016-07-20 20:17:13 +00:00
SeparateConstOffsetFromGEP [NVPTX] Enable the load-store vectorizer on nvptx. 2016-07-20 22:11:36 +00:00
SimplifyCFG Revert "[SimplifyCFG] Stop inserting calls to llvm.trap for UB" 2016-06-25 08:19:55 +00:00
Sink Add a testcase for r275581 2016-07-19 17:52:41 +00:00
SLPVectorizer [SLPVectorizer] Vectorize reverse-order loads in horizontal reductions 2016-07-22 21:28:48 +00:00
SpeculativeExecution Move divergent-target test into CodeGen/NVPTX because it requires an NVPTX target. 2016-04-15 01:20:52 +00:00
SROA [SROA] Function canConvertValue needs to check whether both NewTy and OldTy pointers are 2016-05-03 19:30:48 +00:00
StraightLineStrengthReduce [SLSR] Call getPointerSizeInBits with the correct address space. 2016-07-11 18:13:28 +00:00
StripDeadPrototypes
StripSymbols Fix strip-dead-debug-info test if path contains "bar". 2016-06-16 19:39:55 +00:00
StructurizeCFG StructurizeCFG: Fix inverting constantexpr conditions 2016-07-15 22:13:16 +00:00
TailCallElim [PM] Port TailCallElim 2016-07-06 23:48:41 +00:00
Util [MemorySSA] Update to the new shiny walker. 2016-07-19 01:29:15 +00:00
WholeProgramDevirt Print remarks from WholeProgramDevirt pass for each call site. 2016-07-12 02:38:37 +00:00