llvm-project/llvm/test/Transforms/LoopUnroll
Chen Li d715310162 [IndVarSimplify] Rewrite loop exit values with their initial values from loop preheader
Summary:
This patch adds support to check if a loop has loop invariant conditions which lead to loop exits. If so, we know that if the exit path is taken, it is at the first loop iteration. If there is an induction variable used in that exit path whose value has not been updated, it will keep its initial value passing from loop preheader. We can therefore rewrite the exit value with
its initial value. This will help remove phis created by LCSSA and enable other optimizations like loop unswitch.


Reviewers: sanjoy

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D13974

llvm-svn: 251839
2015-11-02 22:00:15 +00:00
..
AArch64 [AArch64] Enable partial & runtime unrolling on cortex-a57 2015-03-09 06:14:28 +00:00
PowerPC [PPC/LoopUnrollRuntime] Don't avoid high-cost trip count computation on the PPC/A2 2015-05-21 20:30:23 +00:00
X86 Roll forward r243250 2015-07-26 19:10:03 +00: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 [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
2007-05-09-UnknownTripCount.ll
2007-11-05-Crash.ll
2011-08-08-PhiUpdate.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2011-08-09-IVSimplify.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2011-08-09-PhiUpdate.ll
2011-10-01-NoopTrunc.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2012-04-09-unroll-indirectbr.ll
basic.ll
ephemeral.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
full-unroll-bad-cost.ll [LoopUnroll] Fix truncation bug in canUnrollCompletely. 2015-06-06 05:24:10 +00:00
full-unroll-crashers.ll [Unroll] Do not crash trying to propagate a value to vector load. 2015-09-22 22:27:12 +00:00
full-unroll-heuristics-2.ll [Unroll] Follow-up for r247769: fix a bug in UnrolledInstAnalyzer::visitLoad. 2015-09-22 21:41:29 +00:00
full-unroll-heuristics-cast.ll Tidy-up test case from r242257. 2015-07-15 01:51:51 +00:00
full-unroll-heuristics-cmp.ll Handle resolvable branches in complete loop unroll heuristic. 2015-07-24 01:53:04 +00:00
full-unroll-heuristics-phi-prop.ll [Unroll] Improve the brute force loop unroll estimate by propagating 2015-08-03 20:32:27 +00:00
full-unroll-heuristics.ll [Unroll] Rework the naming and structure of the new unroll heuristics. 2015-06-05 17:01:43 +00:00
high-cost-trip-count-computation.ll [LoopUnrollRuntime] Avoid high-cost trip count computation. 2015-04-14 03:20:38 +00:00
ignore-annotation-intrinsic-cost.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
loop-remarks.ll
nsw-tripcount.ll
partial-unroll-optsize.ll [LoopUnroll] Fix the partial unrolling threshold for small loop sizes 2015-01-10 00:30:55 +00:00
pr10813.ll
pr11361.ll
pr14167.ll
pr18861.ll [Tests] Add one more case to LoopUnroll/pr18861.ll for better coverage. 2015-10-02 19:21:52 +00:00
runtime-loop.ll [LoopUnrollRuntime] Avoid high-cost trip count computation. 2015-04-14 03:20:38 +00:00
runtime-loop1.ll DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
runtime-loop2.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
runtime-loop3.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
runtime-loop4.ll [LoopUnrollRuntime] Avoid high-cost trip count computation. 2015-04-14 03:20:38 +00:00
runtime-loop5.ll [LoopUnrollRuntime] Clean up a predicate. 2015-04-12 01:24:01 +00:00
scevunroll.ll [IndVarSimplify] Rewrite loop exit values with their initial values from loop preheader 2015-11-02 22:00:15 +00:00
shifted-tripcount.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
tripcount-overflow.ll Partial fix for bug 22589 2015-02-18 19:32:25 +00:00
unloop.ll
unroll-cleanup.ll Add another InstCombine pass after LoopUnroll. 2015-05-14 22:02:54 +00:00
unroll-pragmas-disabled.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
unroll-pragmas.ll Add new llvm.loop.unroll.enable metadata. 2015-08-10 17:28:08 +00:00
update-loop-info-in-subloops.ll