llvm-project/llvm/test/Transforms/LICM
Dehao Chen b94c09baa0 Add Loop Sink pass to reverse the LICM based of basic block frequency.
Summary: LICM may hoist instructions to preheader speculatively. Before code generation, we need to sink down the hoisted instructions inside to loop if it's beneficial. This pass is a reverse of LICM: looking at instructions in preheader and sinks the instruction to basic blocks inside the loop body if basic block frequency is smaller than the preheader frequency.

Reviewers: hfinkel, davidxl, chandlerc

Subscribers: anna, modocache, mgorny, beanz, reames, dberlin, chandlerc, mcrosier, junbuml, sanjoy, mzolotukhin, llvm-commits

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

llvm-svn: 285308
2016-10-27 16:30:08 +00:00
..
2003-02-26-LoopExitNotDominated.ll
2003-02-27-NestedLoopExitBlocks.ll
2003-02-27-PreheaderExitNodeUpdate.ll
2003-02-27-PreheaderProblem.ll
2003-02-27-StoreSinkPHIs.ll
2003-02-28-PromoteDifferentType.ll
2003-05-02-LoadHoist.ll
2003-12-11-SinkingToPHI.ll
2004-09-14-AliasAnalysisInvalidate.ll
2004-11-17-UndefIndexCrash.ll
2006-09-12-DeadUserOfSunkInstr.ll
2007-05-22-VolatileSink.ll
2007-07-30-AliasSet.ll
2007-09-17-PromoteValue.ll
2007-09-24-PromoteNullValue.ll
2007-10-01-PromoteSafeValue.ll
2008-05-20-AliasSetVAArg.ll
2008-07-22-LoadGlobalConstant.ll
2009-12-10-LICM-Indbr-Crash.ll
2011-04-06-HoistMissedASTUpdate.ll
2011-04-06-PromoteResultOfPromotion.ll
2011-04-09-RAUW-AST.ll
2011-07-06-Alignment.ll
2014-09-10-doFinalizationAssert.ll
AliasSetMemSet.ll
PR19798.ll
PR21582.ll
PR24013.ll
Preserve-LCSSA.ll
alias-set-tracker-loss.ll
argmemonly-call.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
assume.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
atomics.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
basictest.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
constexpr.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
crash.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
debug-value.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
extra-copies.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
funclet.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
hoist-bitcast-load.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
hoist-deref-load.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
hoist-invariant-load.ll
hoist-nounwind.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
hoist-round.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
hoisting.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
lcssa-ssa-promoter.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
loopsink.ll Add Loop Sink pass to reverse the LICM based of basic block frequency. 2016-10-27 16:30:08 +00:00
no-preheader-test.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
pr23608.ll
pr26843.ll [AliasSetTracker] Do not strip pointer casts when processing MemSetInst 2016-03-14 18:34:29 +00:00
pr27262.ll [AliasSetTracker] Correctly handle changing the size of an entry 2016-04-14 22:00:11 +00:00
preheader-safe.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
promote-order.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
promote-tls.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
scalar-promote-memmodel.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
scalar_promote-unwind.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
scalar_promote.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
sink.ll Add Loop Sink pass to reverse the LICM based of basic block frequency. 2016-10-27 16:30:08 +00:00
sinking.ll
speculate.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00
update-scev.ll [LICM] Kill SCEV loop dispositions if needed 2016-05-03 17:50:11 +00:00
volatile-alias.ll New pass manager for LICM. 2016-07-12 22:37:48 +00:00