1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/Transforms/LoopUnroll
Hongtao Yu cc553c933f [LoopUnroll] Update branch weight for remainder loop
Unrolling a loop with compile-time unknown trip count results in a remainder loop. The remainder loop executes the remaining iterations of the original loop when the original trip count is not a multiple of the unroll factor. For better profile counts maintenance throughout the optimization pipeline, I'm assigning an artificial weight to the latch branch of the remainder loop.

A remainder loop runs up to as many times as the unroll factor subtracted by 1. Therefore I'm assigning the maximum possible trip count as the back edge weight. This should be more accurate than the default non-profile weight, which assumes the back edge runs much more frequently than the exit edge.

Differential Revision: https://reviews.llvm.org/D83187
2020-07-15 12:33:29 -07:00
..
AArch64
AMDGPU
ARM
Hexagon
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
callbr.ll
complete_unroll_profitability_with_assume.ll
convergent.ll
debug-info.ll
disable_nonforced_count.ll
disable_nonforced_enable.ll
disable_nonforced_full.ll
disable_nonforced.ll
disable-full-unroll-by-opt.ll
disable-loop-unrolling_forced.ll
ephemeral.ll
epilog_const_phi.ll
followup.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
FullUnroll.ll [NewPM][opt] Share -disable-loop-unrolling between pass managers 2020-07-08 08:50:56 -07:00
high-cost-trip-count-computation.ll
ignore-annotation-intrinsic-cost.ll
invalidate_right_loop.ll
loop-remarks-with-hotness.ll
loop-remarks.ll
nonlatchcondbr.ll
not-rotated.ll
opt-levels.ll
optsize-loop-size.ll
partial-unroll-const-bounds.ll
partial-unroll-dead-instructions.ll
partially-unroll-unconditional-latch.ll
peel-loop2.ll
peel-loop-conditions-pgo-1.ll
peel-loop-conditions-pgo-2.ll
peel-loop-conditions.ll
peel-loop-inner.ll
peel-loop-irreducible.ll
peel-loop-negative.ll
peel-loop-nests.ll
peel-loop-not-forced.ll
peel-loop-pgo-deopt-idom-2.ll
peel-loop-pgo-deopt-idom.ll
peel-loop-pgo-deopt.ll
peel-loop-pgo.ll
peel-loop-scev-invalidate.ll
peel-loop.ll
pr10813.ll
pr11361.ll
pr14167.ll
pr18861.ll
pr27157.ll
pr28132.ll
pr31718.ll
pr33437.ll
pr45939-peel-count-and-complete-unroll.ll
rebuild_lcssa.ll
revisit.ll
runtime-epilog-debuginfo.ll
runtime-li.ll
runtime-loop1.ll
runtime-loop2.ll
runtime-loop3.ll
runtime-loop4.ll
runtime-loop5.ll
runtime-loop-branchweight.ll [LoopUnroll] Update branch weight for remainder loop 2020-07-15 12:33:29 -07:00
runtime-loop-multiexit-dom-verify.ll
runtime-loop-multiple-exits.ll [InstCombine] Always try to invert non-canonical predicate of an icmp 2020-07-04 18:12:04 +03:00
runtime-loop-non-exiting-latch.ll
runtime-loop.ll
runtime-multiexit-heuristic.ll
runtime-small-upperbound.ll
runtime-unroll-remainder.ll
scevunroll.ll
shifted-tripcount.ll
tripcount-overflow.ll
unloop.ll
unroll-cleanup.ll
unroll-cleanuppad.ll
unroll-count.ll
unroll-header-exiting-with-phis.ll
unroll-heuristics-pgo.ll
unroll-loop-invalidation.ll
unroll-maxcount.ll
unroll-opt-attribute.ll
unroll-pragmas-disabled.ll
unroll-pragmas.ll
unroll-preserve-scev-lcssa.ll
unroll-unconditional-latch.ll
update-loop-info-in-subloops.ll
wrong_assert_in_peeling.ll