llvm/test/Transforms
Anna Thomas 3c71a6c431 [RuntimeUnroll] Add heuristic for unrolling multi-exit loop
Add a profitability heuristic to enable runtime unrolling of multi-exit
loop: There can be atmost two unique exit blocks for the loop and the
second exit block should be a deoptimizing block. Also, there can be one
other exiting block other than the latch exiting block. The reason for
the latter is so that we limit the number of branches in the unrolled
code to being at most the unroll factor.  Deoptimizing blocks are rarely
taken so these additional number of branches created due to the
unrolling are predictable, since one of their target is the deopt block.

Reviewers: apilipenko, reames, evstupac, mkuper

Subscribers: llvm-commits

Reviewed by: reames

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313363 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-15 15:56:05 +00:00
..
ADCE [ADCE][Dominators] Reapply: Teach ADCE to preserve dominators 2017-08-22 16:30:21 +00:00
AddDiscriminators
AlignmentFromAssumptions
ArgumentPromotion [ArgPromotion] Preserve alignment of byval argument in new alloca 2017-08-04 17:09:11 +00:00
AtomicExpand
BDCE [BDCE] Don't check demanded bits on unsized types 2017-08-16 16:09:22 +00:00
BranchFolding
CodeExtractor
CodeGenPrepare Unmerge GEPs to reduce register pressure on IndirectBr edges. 2017-09-11 17:52:08 +00:00
ConstantHoisting [ConstantHoisting] Remove dupliate logic in constant hoisting 2017-07-10 20:45:34 +00:00
ConstantMerge Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
ConstProp
Coroutines [coroutines] Add support for symmetric control transfer (musttail on coro.resumes followed by a suspend) 2017-08-25 02:25:10 +00:00
CorrelatedValuePropagation [LVI] Constant-propagate a zero extension of the switch condition value through case edges 2017-08-03 21:11:30 +00:00
CountingFunctionInserter
CrossDSOCFI [cfi] Build __cfi_check as Thumb when applicable. 2017-08-29 22:29:15 +00:00
DCE Add strictfp attribute to prevent unwanted optimizations of libm calls 2017-08-14 21:15:13 +00:00
DeadArgElim Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
DeadStoreElimination Revert r310055, it caused PR34074. 2017-08-04 20:40:38 +00:00
DivRemPairs [DivRemPairs] split tests per target to account for bots that don't build for all targets 2017-09-09 14:10:59 +00:00
EarlyCSE [EarlyCSE] Handle calls with no MemorySSA info. 2017-07-14 20:13:21 +00:00
EliminateAvailableExternally
Float2Int
ForcedFunctionAttrs
FunctionAttrs Merge isKnownNonNull into isKnownNonZero 2017-09-09 18:23:11 +00:00
FunctionImport Fix bot failures by requiring x86 target 2017-08-19 19:15:04 +00:00
GCOVProfiling Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
GlobalDCE
GlobalMerge Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
GlobalOpt Revert r312318, r312325, r312424, r312489 2017-09-07 23:20:35 +00:00
GlobalSplit
GuardWidening
GVN Split opt-remark YAML and opt output testing on this test 2017-09-05 18:03:39 +00:00
GVNHoist [GVNHoist] Factor out reachability to search for anticipable instructions quickly 2017-09-13 05:28:03 +00:00
GVNSink
IndVarSimplify [SCEV/IndVars] Always compute loop exiting values if the backedge count is 0 2017-08-01 22:37:58 +00:00
InferAddressSpaces [InferAddressSpaces] Fix assertion about null pointer 2017-07-07 02:40:13 +00:00
InferFunctionAttrs
Inline Add llvm.codeview.annotation to implement MSVC __annotation 2017-09-05 20:14:58 +00:00
InstCombine [InstSimplify] fold sdiv/srem based on compare of dividend and divisor 2017-09-14 14:59:07 +00:00
InstMerge
InstNamer
InstSimplify [InstSimplify] fold sdiv/srem based on compare of dividend and divisor 2017-09-14 14:59:07 +00:00
InterleavedAccess [Interleved][Stride 3]Adding test for case the VF=64 target with AVX512. 2017-09-11 10:57:15 +00:00
Internalize
IPConstantProp
IRCE Re-enable "[IRCE] Identify loops with latch comparison against current IV value" 2017-09-08 10:15:05 +00:00
JumpThreading Disable jump threading into loop headers 2017-09-06 19:36:58 +00:00
LCSSA
LICM Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
LoadStoreVectorizer
LoopDataPrefetch
LoopDeletion [Dominators] Teach LoopDeletion to use the new incremental API 2017-08-02 18:17:52 +00:00
LoopDistribute
LoopIdiom Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
LoopInterchange [LoopInterchange] Skip zext instructions when looking for induction var. 2017-08-25 16:52:29 +00:00
LoopLoadElim
LoopPredication
LoopReroll Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
LoopRotate Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
LoopSimplify Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
LoopSimplifyCFG
LoopStrengthReduce [X86] PR32755 : Improvement in CodeGen instruction selection for LEAs. 2017-09-15 05:29:51 +00:00
LoopUnroll [RuntimeUnroll] Add heuristic for unrolling multi-exit loop 2017-09-15 15:56:05 +00:00
LoopUnswitch [LoopUnswitch] Fix a simple bug which disables loop unswitch for select statement 2017-08-29 21:45:11 +00:00
LoopVectorize [LV] Fix maximum legal VF calculation 2017-09-14 07:40:02 +00:00
LoopVersioning
LoopVersioningLICM
LowerAtomic LowerAtomic: Don't skip optnone functions; atomic still need lowering (PR34020) 2017-08-23 15:43:28 +00:00
LowerExpectIntrinsic
LowerGuardIntrinsic
LowerInvoke
LowerSwitch
LowerTypeTests LowerTypeTests: Add import/export support for targets without absolute symbol constants. 2017-09-11 22:49:10 +00:00
Mem2Reg Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
MemCpyOpt
MergeFunc Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
MergeICmps Reland rL312315: [MergeICmps] MergeICmps is a new optimization pass that turns chains of integer 2017-09-01 10:56:34 +00:00
MetaRenamer [MetaRenamer] Leave @main alone. 2017-08-01 05:14:45 +00:00
NameAnonGlobals
NaryReassociate
NewGVN NewGVN: Fix PR 34430 - we need to look through predicateinfo copies to detect self-cycles of phi nodes. We also need to not ignore certain types of arguments when testing whether the phi has a backedge or was originally constant. 2017-09-05 02:17:43 +00:00
ObjCARC [ObjCARC] Pass the correct BasicBlock to fix assertion failure. 2017-08-31 18:27:47 +00:00
PartiallyInlineLibCalls
PGOProfile Fix bot failures by requiring x86 target in new test 2017-09-13 15:35:35 +00:00
PhaseOrdering
PlaceSafepoints All libcalls should be considered to be GC-leaf functions. 2017-07-27 16:49:39 +00:00
PreISelIntrinsicLowering
PruneEH
Reassociate [Reassociate] Do not drop debug location if replacement is missing 2017-08-24 09:05:00 +00:00
Reg2Mem
RewriteStatepointsForGC All libcalls should be considered to be GC-leaf functions. 2017-07-27 16:49:39 +00:00
SafeStack Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
SampleProfile Invoke GetInlineCost for legality check before inline functions in SampleProfileLoader. 2017-09-14 17:29:56 +00:00
Scalarizer Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
SCCP [IPSCCP] Guard a user of getInitializer with hasDefinitiveInitializer 2017-07-31 17:47:07 +00:00
SeparateConstOffsetFromGEP
SimpleLoopUnswitch
SimplifyCFG [SimplifyCFG] update test comments; NFC 2017-09-12 23:28:11 +00:00
Sink Enhance synchscope representation 2017-07-11 22:23:00 +00:00
SLPVectorizer Revert "[SLPVectorizer] Failure to beneficially vectorize 'copyable' elements in integer binary ops." 2017-09-15 10:15:00 +00:00
SpeculativeExecution
SROA Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
StructurizeCFG [Dominators] Include infinite loops in PostDominatorTree 2017-08-15 18:14:57 +00:00
TailCallElim [TRE] Add another test for OptRemark. 2017-07-19 21:39:51 +00:00
ThinLTOBitcodeWriter ThinLTO Minimized Bitcode File Size Reduction 2017-07-21 17:25:20 +00:00
Util [InstCombine] Add a flag to disable LowerDbgDeclare 2017-09-13 01:43:25 +00:00
WholeProgramDevirt LowerTypeTests: Add import/export support for targets without absolute symbol constants. 2017-09-11 22:49:10 +00:00