1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 13:33:37 +02:00
llvm-mirror/test/Analysis/ScalarEvolution
Benjamin Kramer 79c500fdd4 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.

llvm-svn: 204728
2014-03-25 16:25:12 +00:00
..
2007-07-15-NegativeStride.ll
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
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 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
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