llvm-6502/test/Analysis/ScalarEvolution
Benjamin Kramer c1c74fb2b4 ScalarEvolution: Compute exit counts for loops with a power-of-2 step.
If we have a loop of the form
for (unsigned n = 0; n != (k & -32); n += 32) {}
then we know that n is always divisible by 32 and the loop must
terminate. Even if we have a condition where the loop counter will
overflow it'll always hold this invariant.

PR19183. Our loop vectorizer creates this pattern and it's also
occasionally formed by loop counters derived from pointers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204728 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-25 16:25:12 +00:00
..
2007-07-15-NegativeStride.ll FileCheckize some of the testcases. 2013-08-05 23:43:18 +00:00
2007-08-06-MisinterpretBranch.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2007-08-06-Unsigned.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2007-09-27-LargeStepping.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2007-11-14-SignedAddRec.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2007-11-18-OrInstruction.ll
2008-02-11-ReversedCondition.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2008-02-12-SMAXTripCount.ll
2008-02-15-UMax.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2008-05-25-NegativeStepToZero.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2008-06-12-BinomialInt64.ll
2008-07-12-UnneededSelect1.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2008-07-12-UnneededSelect2.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2008-07-19-InfiniteLoop.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2008-07-19-WrappingIV.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2008-07-29-SGTTripCount.ll
2008-07-29-SMinExpr.ll
2008-08-04-IVOverflow.ll
2008-08-04-LongAddRec.ll
2008-11-02-QuadraticCrash.ll
2008-11-15-CubicOOM.ll
2008-11-18-LessThanOrEqual.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2008-11-18-Stride1.ll Rewrite SCEV's backedge taken count computation. 2013-11-06 02:08:26 +00:00
2008-11-18-Stride2.ll Rewrite SCEV's backedge taken count computation. 2013-11-06 02:08:26 +00:00
2008-12-08-FiniteSGE.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2008-12-11-SMaxOverflow.ll
2008-12-14-StrideAndSigned.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2008-12-15-DontUseSDiv.ll Rewrite SCEV's backedge taken count computation. 2013-11-06 02:08:26 +00:00
2009-01-02-SignedNegativeStride.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2009-04-22-TruncCast.ll Actually call FileCheck in tests 2014-02-16 13:27:39 +00:00
2009-05-09-PointerEdgeCount.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
2009-07-04-GroupConstantsWidthMismatch.ll
2010-09-03-RequiredTransitive.ll
2011-03-09-ExactNoMaxBECount.ll
2011-04-26-FoldAddRec.ll
2011-10-04-ConstEvolve.ll
2012-03-26-LoadConstant.ll Actually call FileCheck in tests 2014-02-16 13:27:39 +00:00
2012-05-18-LoopPredRecurse.ll Fix known typos 2014-01-24 17:20:08 +00:00
2012-05-29-MulAddRec.ll
and-xor.ll Teach SCEV to handle more cases of 'and X, CST', specifically where CST is any number of contiguous 1 bits in a row, with any number of leading and trailing 0 bits. 2014-01-27 10:04:03 +00:00
avoid-infinite-recursion-0.ll
avoid-infinite-recursion-1.ll
avoid-smax-0.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
avoid-smax-1.ll
div-overflow.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
do-loop.ll FileCheck-ize tests. 2013-08-22 00:51:19 +00:00
fold.ll Fix crasher introduced in r200203 and caught by a libc++ buildbot. Don't assume that getMulExpr returns a SCEVMulExpr, it may have simplified it to something else! 2014-01-27 10:47:44 +00:00
how-far-to-zero.ll
load.ll
max-trip-count-address-space.ll Teach ScalarEvolution about pointer address spaces 2013-09-10 19:55:24 +00:00
max-trip-count.ll
nsw-offset.ll Teach SCEV to handle more cases of 'and X, CST', specifically where CST is any number of contiguous 1 bits in a row, with any number of leading and trailing 0 bits. 2014-01-27 10:04:03 +00:00
nsw.ll SCEV: Make the final add of an inbounds GEP nuw if we know that the index is positive. 2013-10-28 07:30:06 +00:00
pointer-sign-bits.ll
pr3909.ll
scev-aa.ll
scev-invalid.ll
sext-inreg.ll
sext-iv-0.ll
sext-iv-1.ll
sext-iv-2.ll
sle.ll
smax.ll FileCheckize some of the testcases. 2013-08-05 23:43:18 +00:00
SolveQuadraticEquation.ll FileCheckize some of the testcases. 2013-08-05 23:43:18 +00:00
trip-count2.ll FileCheckize some of the testcases. 2013-08-05 23:43:18 +00:00
trip-count3.ll Rewrite SCEV's backedge taken count computation. 2013-11-06 02:08:26 +00:00
trip-count4.ll FileCheckize some of the testcases. 2013-08-05 23:43:18 +00:00
trip-count5.ll
trip-count6.ll FileCheckize some of the testcases. 2013-08-05 23:43:18 +00:00
trip-count7.ll FileCheckize some of the testcases. 2013-08-05 23:43:18 +00:00
trip-count8.ll FileCheckize some of the testcases. 2013-08-05 23:43:18 +00:00
trip-count9.ll Rewrite SCEV's backedge taken count computation. 2013-11-06 02:08:26 +00:00
trip-count10.ll
trip-count11.ll Fix creating bitcasts between address spaces in SCEV. 2013-10-21 18:41:10 +00:00
trip-count12.ll
trip-count-pow2.ll ScalarEvolution: Compute exit counts for loops with a power-of-2 step. 2014-03-25 16:25:12 +00:00
trip-count-switch.ll ScalarEvolution: Analyze trip count of loops with a switch guarding the exit. 2014-02-11 15:44:32 +00:00
trip-count.ll FileCheckize some of the testcases. 2013-08-05 23:43:18 +00:00
undefined.ll
unreachable-code.ll
unsimplified-loop.ll
zext-signed-addrec.ll Fixed old typo in ScalarEvolution, that caused wrong SCEVs zext operation. 2014-01-09 12:26:12 +00:00
zext-wrap.ll FileCheckize some of the testcases. 2013-08-05 23:43:18 +00:00