llvm-project/llvm/test/Transforms/IndVarSimplify
Andrew Trick 6d45a01b67 Made SCEV's UDiv expressions more canonical. When dividing a
recurrence, the initial values low bits can sometimes be ignored.

To take advantage of this, added FoldIVUser to IndVarSimplify to fold
an IV operand into a udiv/lshr if the operator doesn't affect the
result.

-indvars -disable-iv-rewrite now transforms

i = phi i4
i1 = i0 + 1
idx = i1 >> (2 or more)
i4 = i + 4

into

i = phi i4
idx = i0 >> ...
i4 = i + 4

llvm-svn: 137013
2011-08-06 07:00:37 +00:00
..
2002-09-09-PointerIndVar.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2003-04-16-ExprAnalysis.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2003-09-12-MultiplePred.ll Make LoopSimplify change conditional branches in loop exiting blocks 2010-02-25 06:57:05 +00:00
2003-09-23-NotAtTop.ll Eliminate uses of %prcontext. 2009-09-05 11:35:16 +00:00
2003-12-10-RemoveInstrCrash.ll Teach ScalarEvolution how to compute a tripcount for a loop with 2010-02-19 18:12:07 +00:00
2003-12-15-Crash.ll Teach ScalarEvolution how to compute a tripcount for a loop with 2010-02-19 18:12:07 +00:00
2003-12-21-IndVarSize.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2004-03-10-PHIInsertionBug.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2004-04-05-InvokeCastCrash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2004-04-07-ScalarEvolutionCrash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2005-02-11-InvokeCrash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2005-02-17-TruncateExprCrash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2005-02-26-ExitValueCompute.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2005-06-15-InstMoveCrash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2005-11-18-Crash.ll Teach ScalarEvolution how to compute a tripcount for a loop with 2010-02-19 18:12:07 +00:00
2006-03-31-NegativeStride.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2006-06-16-Indvar-LCSSA-Crash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2006-09-20-LFTR-Crash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2006-12-10-BitCast.ll Teach ScalarEvolution how to compute a tripcount for a loop with 2010-02-19 18:12:07 +00:00
2007-01-06-TripCount.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-06-06-DeleteDanglesPtr.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-11-23-BitcastCrash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-06-15-SCEVExpanderBug.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-09-02-IVType.ll manually upgrade a bunch of tests to modern syntax, and remove some that 2011-06-17 03:14:27 +00:00
2008-10-03-CouldNotCompute.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-11-25-APFloatAssert.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2009-04-14-shorten_iv_vars.ll Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
2009-04-15-shorten-iv-vars-2.ll Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
2009-04-22-IndvarCrash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2009-04-27-Floating.ll Fixes PR9730: indvars: An asserting value handle still pointed to this value 2011-04-27 23:00:03 +00:00
2009-05-24-useafterfree.ll Correct bogus module triple specifications. 2010-08-30 10:48:29 +00:00
ada-loops.ll indvars: LinearFunctionTestReplace for non-canonical IVs. 2011-07-18 20:32:31 +00:00
addrec-gep.ll Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
ashr-tripcount.ll Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
avoid-i0.ll Teach ScalarEvolution how to compute a tripcount for a loop with 2010-02-19 18:12:07 +00:00
casted-argument.ll Fix declarations in a few more tests. 2010-04-17 21:29:25 +00:00
complex-scev.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
crash.ll Fix SCEVExpander::visitAddRecExpr so that it remembers the induction variable 2010-07-26 18:28:14 +00:00
dangling-use.ll Manually notify ScalarEvolution before making an operand replacement, since 2010-04-02 14:48:31 +00:00
dg.exp
divide-pointer.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
elim-extend.ll Test case pasto (failed when run with IR verifier). 2011-06-02 23:57:27 +00:00
eliminate-comparison.ll Remove the Expr member from IVUsers. Instead of remembering the expression, 2010-04-19 21:48:58 +00:00
eliminate-max.ll Teach ScalarEvolution to simplify smax and umax when it can prove 2010-04-13 16:51:03 +00:00
eliminate-rem.ll Teach IndVarSimplify how to eliminate remainder operators where the 2010-04-13 01:46:36 +00:00
exit_value_tests.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
floating-point-iv.ll add integer overflow check for the fp induction variable 2010-04-03 07:18:48 +00:00
gep-with-mul-base.ll Re-implement the main strength-reduction portion of LoopStrengthReduction. 2010-01-21 02:09:26 +00:00
indirectbr.ll Disable indvars on loops when LoopSimplify form is not available. 2010-06-18 01:35:11 +00:00
interesting-invoke-use.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
iterationCount_zext_or_trunc.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
iv-fold.ll Made SCEV's UDiv expressions more canonical. When dividing a 2011-08-06 07:00:37 +00:00
iv-sext.ll FileCheck-ize a couple of IV unit tests. 2011-05-24 01:02:49 +00:00
iv-zext.ll indvars -disable-iv-rewrite: Adds support for eliminating identity 2011-06-21 03:22:38 +00:00
lftr-other-uses.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
lftr-promote.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
lftr-reuse.ll indvars: LinearFunctionTestReplace for non-canonical IVs. 2011-07-18 20:32:31 +00:00
lftr_simple.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
loop_evaluate7.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
loop_evaluate8.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
loop_evaluate9.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
loop_evaluate10.ll Correct bogus module triple specifications. 2010-08-30 10:48:29 +00:00
loop_evaluate11.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
loop_evaluate_1.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
loop_evaluate_2.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
loop_evaluate_3.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
loop_evaluate_4.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
loop_evaluate_5.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
loop_evaluate_6.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
masked-iv.ll Use "opt < %s" instead of "opt %s" so that opt doesn't print the test 2009-09-08 22:57:49 +00:00
max-pointer.ll Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
no-iv-rewrite.ll indvars: Added getInsertPointForUses to find a valid place to truncate the IV. 2011-07-20 05:32:06 +00:00
phi-uses-value-multiple-times.ll Test case for r130799 - indvars: Added canExpandBackEdgeTakenCount. 2011-05-24 00:17:53 +00:00
pointer-indvars.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
pointer.ll Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
polynomial-expand.ll Add a testcase for r83011. 2009-09-28 21:03:02 +00:00
preserve-gep-loop-variant.ll Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
preserve-gep-nested.ll Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
preserve-gep-remainder.ll Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
preserve-gep.ll Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
preserve-signed-wrap.ll indvars -disable-iv-rewrite: bug fix involving weird geps and related cleanup. 2011-07-02 02:34:25 +00:00
promote-iv-to-eliminate-casts.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
shrunk-constant.ll -disable-output is no longer needed with -analyze. 2010-01-26 19:25:59 +00:00
signed-trip-count.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
single-element-range.ll Remove arm_apcscc from the test files. It is the default and doing this 2010-06-17 15:18:27 +00:00
sink-alloca.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
sink-trapping.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
subtract.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
tripcount_compute.ll Fix ScalarEvolution's tripcount computation for chains of loops 2010-06-29 23:43:06 +00:00
tripcount_infinite.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
udiv.ll Suppress LinearFunctionTestReplace when the computed backedge-taken 2010-04-12 21:13:43 +00:00
uglygep.ll Fix this test. 2010-07-16 01:28:45 +00:00
variable-stride-ivs-0.ll indvars -disable-iv-rewrite: Added SimplifyCongruentIVs. 2011-07-06 20:50:43 +00:00
variable-stride-ivs-1.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00