- Apr 15, 2009
-
-
Dale Johannesen authored
if a longer iv is available. These subscript forms are not common; they're a bottleneck in OpenSSL. llvm-svn: 69215
-
Dale Johannesen authored
sext around sext(shorter IV + constant), using a longer IV instead, when it can figure out the add can't overflow. This comes up a lot in subscripting; mainly affects 64 bit. llvm-svn: 69123
-
- Feb 24, 2009
-
-
Dan Gohman authored
to more accurately describe what it does. Expand its doxygen comment to describe what the backedge-taken count is and how it differs from the actual iteration count of the loop. Adjust names and comments in associated code accordingly. llvm-svn: 65382
-
Dan Gohman authored
trip counts that use signed comparisons. It's not obviously the best approach for preserving trip count information, and at any rate there isn't anything in the tree right now that makes use of that, so for now always using zero-extensions is preferable. llvm-svn: 65347
-
- Feb 23, 2009
-
-
Dan Gohman authored
-std-compile-opts sequence, this avoids the need for ScalarEvolution to be rerun before LoopDeletion. llvm-svn: 65318
-
- Feb 18, 2009
-
-
Dan Gohman authored
trip count value when the original loop iteration condition is signed and the canonical induction variable won't undergo signed overflow. This isn't required for correctness; it just preserves more information about original loop iteration values. Add a getTruncateOrSignExtend method to ScalarEvolution, following getTruncateOrZeroExtend. llvm-svn: 64918
-
Dan Gohman authored
llvm-svn: 64917
-
Dan Gohman authored
are multiple IV's in a loop, some of them may under go signed or unsigned wrapping even if the IV that's used in the loop exit condition doesn't. Restrict sign-extension-elimination and zero-extension-elimination to only those that operate on the original loop-controlling IV. llvm-svn: 64866
-
- Feb 17, 2009
-
-
Dan Gohman authored
modified in a way that may effect the trip count calculation. Change IndVars to use this method when it rewrites pointer or floating-point induction variables instead of using a doInitialization method to sneak these changes in before ScalarEvolution has a chance to see the loop. This eliminates the need for LoopPass to depend on ScalarEvolution. llvm-svn: 64810
-
Dan Gohman authored
llvm-svn: 64784
-
Dan Gohman authored
llvm-svn: 64766
-
Dan Gohman authored
llvm-svn: 64702
-
- Feb 16, 2009
-
-
Dan Gohman authored
been written for is no longer relevant with the elimination of signed and unsigned types. llvm-svn: 64625
-
- Feb 14, 2009
-
-
Dan Gohman authored
- Test for signed and unsigned wrapping conditions, instead of just testing for non-negative induction ranges. - Handle loops with GT comparisons, in addition to LT comparisons. - Support more cases of induction variables that don't start at 0. llvm-svn: 64532
-
Dan Gohman authored
llvm-svn: 64531
-
Dan Gohman authored
No functionality change. llvm-svn: 64530
-
- Feb 12, 2009
-
-
Dan Gohman authored
loop induction on LP64 targets. When the induction variable is used in addressing, IndVars now is usually able to inserst a 64-bit induction variable and eliminates the sign-extending cast. This is also useful for code using C "short" types for induction variables on targets with 32-bit addressing. Inserting a wider induction variable is easy; the tricky part is determining when trunc(sext(i)) expressions are no-ops. This requires range analysis of the loop trip count. A common case is when the original loop iteration starts at 0 and exits when the induction variable is signed-less-than a fixed value; this case is now handled. This replaces IndVarSimplify's OptimizeCanonicalIVType. It was doing the same optimization, but it was limited to loops with constant trip counts, because it was running after the loop rewrite, and the information about the original induction variable is lost by that point. Rename ScalarEvolution's executesAtLeastOnce to isLoopGuardedByCond, generalize it to be able to test for ICMP_NE conditions, and move it to be a public function so that IndVars can use it. llvm-svn: 64407
-
- Nov 26, 2008
-
-
Evan Cheng authored
Revert r60042. IndVarSimplify should check if APFloat is PPCDoubleDouble first before trying to convert it to an integer. llvm-svn: 60072
-
- Nov 18, 2008
-
-
Bill Wendling authored
llvm-svn: 59518
-
Devang Patel authored
Give SIToFPInst preference over UIToFPInst because it is faster on platforms that are widely used. llvm-svn: 59476
-
Devang Patel authored
llvm-svn: 59471
-
- Nov 17, 2008
-
-
Devang Patel authored
llvm-svn: 59466
-
- Nov 16, 2008
-
-
Chris Lattner authored
llvm-svn: 59409
-
- Nov 03, 2008
-
-
Devang Patel authored
This allows SCEV users to effectively calculate trip count. LSR later on transforms back integer IVs to floating point IVs later on to avoid int-to-float casts inside the loop. llvm-svn: 58625
-
- Oct 23, 2008
-
-
Daniel Dunbar authored
LoopPass*. - Although less precise, this means they can be used in clients without RTTI (who would otherwise need to include LoopPass.h, which eventually includes things using dynamic_cast). This was the simplest solution that presented itself, but I am happy to use a better one if available. llvm-svn: 58010
-
- Sep 10, 2008
-
-
Devang Patel authored
llvm-svn: 56056
-
- Sep 09, 2008
-
-
Devang Patel authored
extend the type of induction variable. llvm-svn: 56017
-
- Sep 05, 2008
-
-
Devang Patel authored
llvm-svn: 55861
-
- Sep 04, 2008
-
-
Dan Gohman authored
llvm-svn: 55779
-
- Aug 06, 2008
-
-
Dan Gohman authored
instead of having it call getIterationCount again. llvm-svn: 54380
-
- Jun 22, 2008
-
-
Dan Gohman authored
llvm-svn: 52616
-
- Jun 13, 2008
-
-
Wojciech Matyjewicz authored
llvm-svn: 52251
-
- May 23, 2008
-
-
Dan Gohman authored
use it instead of duplicating its functionality. llvm-svn: 51499
-
- May 16, 2008
-
-
Gabor Greif authored
API change for {BinaryOperator|CmpInst|CastInst}::create*() --> Create. Legacy interfaces will be in place for some time. (Merge from use-diet branch.) llvm-svn: 51200
-
- May 13, 2008
-
-
Dan Gohman authored
several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017
-
- Apr 06, 2008
-
-
Gabor Greif authored
Specifically, introduction of XXX::Create methods for Users that have a potentially variable number of Uses. llvm-svn: 49277
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45418
-
- Oct 22, 2007
-
-
Dan Gohman authored
SCEV subclasses to being non-static member functions of the ScalarEvolution class. llvm-svn: 43224
-
- Sep 10, 2007
-
-
Devang Patel authored
llvm-svn: 41798
-
- Sep 04, 2007
-
-
David Greene authored
Update GEP constructors to use an iterator interface to fix GLIBCXX_DEBUG issues. llvm-svn: 41697
-