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
2007-08-06-MisinterpretBranch.ll
2007-08-06-Unsigned.ll
2007-09-27-LargeStepping.ll
2007-11-14-SignedAddRec.ll
2007-11-18-OrInstruction.ll
2008-02-11-ReversedCondition.ll
2008-02-12-SMAXTripCount.ll
2008-02-15-UMax.ll
2008-05-25-NegativeStepToZero.ll
2008-06-12-BinomialInt64.ll
2008-07-12-UnneededSelect1.ll
2008-07-12-UnneededSelect2.ll
2008-07-19-InfiniteLoop.ll
2008-07-19-WrappingIV.ll
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
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
2008-12-11-SMaxOverflow.ll
2008-12-14-StrideAndSigned.ll
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
2009-04-22-TruncCast.ll Actually call FileCheck in tests 2014-02-16 13:27:39 +00:00
2009-05-09-PointerEdgeCount.ll
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
avoid-smax-1.ll
div-overflow.ll
do-loop.ll
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
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
SolveQuadraticEquation.ll
trip-count2.ll
trip-count3.ll Rewrite SCEV's backedge taken count computation. 2013-11-06 02:08:26 +00:00
trip-count4.ll
trip-count5.ll
trip-count6.ll
trip-count7.ll
trip-count8.ll
trip-count9.ll Rewrite SCEV's backedge taken count computation. 2013-11-06 02:08:26 +00:00
trip-count10.ll
trip-count11.ll
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
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