llvm-project/llvm/test/Transforms/LoopUnroll
Hongtao Yu f3731d34fa [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 [AMDGPU] Increase max iterations count to analyze complete unroll 2020-06-06 16:32:45 +03:00
ARM Follow up of 67bf9a6154, minor fix in test case, removed duplicate option 2020-01-10 09:41:41 +00:00
Hexagon
PowerPC [NFC][PowerPC] Update test 2020-03-18 16:21:37 +00:00
X86 [CostModel] Fix cast crash 2020-07-03 07:53:45 +01:00
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
FullUnroll.ll [NewPM][opt] Share -disable-loop-unrolling between pass managers 2020-07-08 08:50:56 -07:00
basic.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
callbr.ll
complete_unroll_profitability_with_assume.ll StoreInst should store Align, not MaybeAlign 2020-05-15 12:26:58 -07:00
convergent.ll
debug-info.ll
disable-full-unroll-by-opt.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
disable-loop-unrolling_forced.ll
disable_nonforced.ll
disable_nonforced_count.ll
disable_nonforced_enable.ll
disable_nonforced_full.ll
ephemeral.ll
epilog_const_phi.ll
followup.ll
full-unroll-bad-cost.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
full-unroll-crashers.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
full-unroll-heuristics-2.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
full-unroll-heuristics-cmp.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
full-unroll-heuristics-dce.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
full-unroll-heuristics-geps.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
full-unroll-heuristics-phi-prop.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
full-unroll-heuristics.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
full-unroll-keep-first-exit.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -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 [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
not-rotated.ll
opt-levels.ll [llvm] Make new pass manager's OptimizationLevel a class 2020-01-16 09:00:56 -08:00
optsize-loop-size.ll
partial-unroll-const-bounds.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
partial-unroll-dead-instructions.ll [LoopUnroll] Avoid UB when converting from WeakVH to `Value *` 2020-01-23 10:36:39 -08:00
partially-unroll-unconditional-latch.ll
peel-loop-conditions-pgo-1.ll [LoopUtils] Better accuracy for getLoopEstimatedTripCount. 2020-01-20 16:58:07 +07:00
peel-loop-conditions-pgo-2.ll
peel-loop-conditions.ll [Loop Peeling] Add possibility to enable peeling on loop nests. 2020-03-02 08:37:11 -08:00
peel-loop-inner.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
peel-loop-irreducible.ll
peel-loop-negative.ll [llvm] Fix missing FileCheck directive colons 2020-04-06 09:59:08 -06:00
peel-loop-nests.ll [Loop Peeling] Add possibility to enable peeling on loop nests. 2020-03-02 08:37:11 -08:00
peel-loop-not-forced.ll
peel-loop-pgo-deopt-idom-2.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
peel-loop-pgo-deopt-idom.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
peel-loop-pgo-deopt.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
peel-loop-pgo.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
peel-loop-scev-invalidate.ll
peel-loop.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
peel-loop2.ll
pr10813.ll
pr11361.ll
pr14167.ll
pr18861.ll
pr27157.ll
pr28132.ll
pr31718.ll
pr33437.ll [LoopUnroll] Extend test case with additional loop with larger TC. 2020-05-17 13:55:11 +01:00
pr45939-peel-count-and-complete-unroll.ll [LoopUnroll] Precommit test for PR459393. 2020-05-17 13:29:36 +01:00
rebuild_lcssa.ll
revisit.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
runtime-epilog-debuginfo.ll Migrate function attribute "no-frame-pointer-elim" to "frame-pointer"="all" as cleanups after D56351 2019-12-24 15:57:33 -08:00
runtime-li.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 [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
runtime-loop1.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
runtime-loop2.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
runtime-loop3.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
runtime-loop4.ll
runtime-loop5.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
runtime-multiexit-heuristic.ll
runtime-small-upperbound.ll
runtime-unroll-remainder.ll [InstComine] Forego of one-use check in `(X - (X & Y)) --> (X & ~Y)` if Y is a constant 2020-03-06 21:39:07 +03:00
scevunroll.ll [LoopPred] Enable new transformation by default 2019-11-06 15:41:57 -08:00
shifted-tripcount.ll
tripcount-overflow.ll
unloop.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
unroll-cleanup.ll
unroll-cleanuppad.ll
unroll-count.ll
unroll-header-exiting-with-phis.ll Infer alignment of unmarked loads in IR/bitcode parsing. 2020-05-14 13:03:50 -07:00
unroll-heuristics-pgo.ll
unroll-loop-invalidation.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
unroll-maxcount.ll
unroll-opt-attribute.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
unroll-pragmas-disabled.ll
unroll-pragmas.ll
unroll-preserve-scev-lcssa.ll
unroll-unconditional-latch.ll
update-loop-info-in-subloops.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
wrong_assert_in_peeling.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00