llvm-6502/test/Transforms/LoopStrengthReduce
Andrew Trick 22d20c218a Adding IV chain generation to LSR.
After collecting chains, check if any should be materialized. If so,
hide the chained IV users from the LSR solver. LSR will only solve for
the head of the chain. GenerateIVChains will then materialize the
chained IV users by computing the IV relative to its previous value in
the chain.

In theory, chained IV users could be exposed to LSR's solver. This
would be considerably complicated to implement and I'm not aware of a
case where we need it. In practice it's more important to
intelligently prune the search space of nontrivial loops before
running the solver, otherwise the solver is often forced to prune the
most optimal solutions. Hiding the chained users does this well, so
that LSR is more likely to find the best IV for the chain as a whole.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147801 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-09 21:18:52 +00:00
..
X86 Adding IV chain generation to LSR. 2012-01-09 21:18:52 +00:00
2005-08-15-AddRecIV.ll
2005-08-17-OutOfLoopVariant.ll
2005-09-12-UsesOutOutsideOfLoop.ll
2007-04-23-UseIterator.ll
2008-08-13-CmpStride.ll Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
2008-08-14-ShadowIV.ll
2008-09-09-Overflow.ll
2009-01-13-nonconstant-stride-outside-loop.ll
2009-04-28-no-reduce-mul.ll
2011-07-19-CritEdgeBreakCrash.ll PR10386: Don't try to split an edge from an indirectbr. 2011-07-19 22:59:41 +00:00
2011-07-20-DoubleIV.ll LSR, correct fix for rdar://9786536. Silly casting bug. 2011-07-21 01:45:54 +00:00
2011-10-03-CritEdgeMerge.ll LSR should avoid redundant edge splitting. 2011-10-04 03:50:44 +00:00
2011-10-06-ReusePhi.ll Unit test for LSR phi reuse in r141442. 2011-10-08 02:34:51 +00:00
2011-10-13-SCEVChain.ll Reapply r141870, SCEV expansion of post-inc. 2011-10-13 21:55:29 +00:00
2011-10-14-IntPtr.ll Fix SCEVExpander assert during LSR: "argument of incompatible type". 2011-10-15 06:19:55 +00:00
2011-11-29-postincphi.ll Better test case found in duplicate PR10570. 2011-11-30 06:26:42 +00:00
2011-12-04-loserreg.ll LSR: prune undesirable formulae early. 2011-12-06 03:13:31 +00:00
2011-12-19-PostincQuadratic.ll Unit test for r146950: LSR postinc expansion, PR11571. 2011-12-20 01:43:20 +00:00
2012-02-nopreheader.ll LSR: Don't optimize loops if an outer loop has no preheader. 2012-01-07 03:16:50 +00:00
count-to-zero.ll
dead-phi.ll
dg.exp
different-type-ivs.ll
dont_insert_redundant_ops.ll
dont_reduce_bytes.ll
dont_reverse.ll
dont-hoist-simple-loop-constants.ll
exit_compare_live_range.ll Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
hoist-parent-preheader.ll Add a test for the LSR issue exposed by r125254. 2011-02-11 00:49:27 +00:00
invariant_value_first_arg.ll Removed colons from some target datalayout strings in test, since they don't match the required format. 2011-10-12 22:24:17 +00:00
invariant_value_first.ll Removed colons from some target datalayout strings in test, since they don't match the required format. 2011-10-12 22:24:17 +00:00
nested-reduce.ll
nonlinear-postinc.ll Non-affine post-inc SCEV expansions have more code which must be 2010-03-02 01:59:21 +00:00
ops_after_indvar.ll Removed colons from some target datalayout strings in test, since they don't match the required format. 2011-10-12 22:24:17 +00:00
phi_node_update_multiple_preds.ll
post-inc-icmpzero.ll comment typo 2012-01-07 00:29:20 +00:00
pr2537.ll add newlines at the end of files. 2010-04-07 22:53:17 +00:00
pr2570.ll Teach RecursivelyDeleteDeadPHINodes to handle multiple self-references. Patch 2011-02-20 08:38:20 +00:00
pr3086.ll
pr3399.ll Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
pr3571.ll Correct bogus module triple specifications. 2010-08-30 10:48:29 +00:00
quadradic-exit-value.ll Generalize IVUsers to track arbitrary expressions rather than expressions 2010-04-07 22:27:08 +00:00
related_indvars.ll
remove_indvar.ll
share_code_in_preheader.ll
share_ivs.ll
uglygep.ll Move x86-specific tests out of test/Transforms/LoopStrengthReduce and 2010-08-05 17:04:15 +00:00
use_postinc_value_outside_loop.ll
var_stride_used_by_compare.ll Removed colons from some target datalayout strings in test, since they don't match the required format. 2011-10-12 22:24:17 +00:00
variable_stride.ll