forked from OSchip/llvm-project
b151a641aa
This implements PGO-driven loop peeling. The basic idea is that when the average dynamic trip-count of a loop is known, based on PGO, to be low, we can expect a performance win by peeling off the first several iterations of that loop. Unlike unrolling based on a known trip count, or a trip count multiple, this doesn't save us the conditional check and branch on each iteration. However, it does allow us to simplify the straight-line code we get (constant-folding, etc.). This is important given that we know that we will usually only hit this code, and not the actual loop. This is currently disabled by default. Differential Revision: https://reviews.llvm.org/D25963 llvm-svn: 288274 |
||
---|---|---|
.. | ||
AArch64 | ||
AMDGPU | ||
PowerPC | ||
X86 | ||
2004-05-13-DontUnrollTooMuch.ll | ||
2005-03-06-BadLoopInfoUpdate.ll | ||
2006-08-24-MultiBlockLoop.ll | ||
2007-04-16-PhiUpdate.ll | ||
2007-05-05-UnrollMiscomp.ll | ||
2007-05-09-UnknownTripCount.ll | ||
2007-11-05-Crash.ll | ||
2011-08-08-PhiUpdate.ll | ||
2011-08-09-IVSimplify.ll | ||
2011-08-09-PhiUpdate.ll | ||
2011-10-01-NoopTrunc.ll | ||
2012-04-09-unroll-indirectbr.ll | ||
basic.ll | ||
convergent.ll | ||
ephemeral.ll | ||
full-unroll-bad-cost.ll | ||
full-unroll-crashers.ll | ||
full-unroll-heuristics-2.ll | ||
full-unroll-heuristics-cmp.ll | ||
full-unroll-heuristics-dce.ll | ||
full-unroll-heuristics-geps.ll | ||
full-unroll-heuristics-phi-prop.ll | ||
full-unroll-heuristics.ll | ||
full-unroll-keep-first-exit.ll | ||
high-cost-trip-count-computation.ll | ||
ignore-annotation-intrinsic-cost.ll | ||
loop-remarks-with-hotness.ll | ||
loop-remarks.ll | ||
partial-unroll-const-bounds.ll | ||
peel-loop-pgo.ll | ||
peel-loop.ll | ||
pr10813.ll | ||
pr11361.ll | ||
pr14167.ll | ||
pr18861.ll | ||
pr27157.ll | ||
pr28132.ll | ||
rebuild_lcssa.ll | ||
runtime-loop.ll | ||
runtime-loop1.ll | ||
runtime-loop2.ll | ||
runtime-loop3.ll | ||
runtime-loop4.ll | ||
runtime-loop5.ll | ||
scevunroll.ll | ||
shifted-tripcount.ll | ||
tripcount-overflow.ll | ||
unloop.ll | ||
unroll-cleanup.ll | ||
unroll-cleanuppad.ll | ||
unroll-count.ll | ||
unroll-heuristics-pgo.ll | ||
unroll-opt-attribute.ll | ||
unroll-pragmas-disabled.ll | ||
unroll-pragmas.ll | ||
update-loop-info-in-subloops.ll |