llvm-6502/test/Transforms/LoopStrengthReduce
Andrew Trick 64925c55c6 Enable LSR IV Chains with sufficient heuristics.
These heuristics are sufficient for enabling IV chains by
default. Performance analysis has been done for i386, x86_64, and
thumbv7. The optimization is rarely important, but can significantly
speed up certain cases by eliminating spill code within the
loop. Unrolled loops are prime candidates for IV chains. In many
cases, the final code could still be improved with more target
specific optimization following LSR. The goal of this feature is for
LSR to make the best choice of induction variables.

Instruction selection may not completely take advantage of this
feature yet. As a result, there could be cases of slight code size
increase.

Code size can be worse on x86 because it doesn't support postincrement
addressing. In fact, when chains are formed, you may see redundant
address plus stride addition in the addressing mode. GenerateIVChains
tries to compensate for the common cases.

On ARM, code size increase can be mitigated by using postincrement
addressing, but downstream codegen currently misses some opportunities.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147826 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-10 01:45:08 +00:00
..
ARM Enable LSR IV Chains with sufficient heuristics. 2012-01-10 01:45:08 +00:00
X86 Enable LSR IV Chains with sufficient heuristics. 2012-01-10 01:45:08 +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
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
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
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
pr2570.ll
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
quadradic-exit-value.ll
related_indvars.ll
remove_indvar.ll
share_code_in_preheader.ll
share_ivs.ll
uglygep.ll
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