- Jul 26, 2004
-
-
Chris Lattner authored
llvm-svn: 15227
-
- Jun 24, 2004
-
-
Chris Lattner authored
Second, disable substitution of quadratic addrec expressions to avoid putting multiplies in loops! llvm-svn: 14358
-
- Jun 20, 2004
-
-
Chris Lattner authored
llvm-svn: 14262
-
- Jun 19, 2004
-
-
Chris Lattner authored
llvm-svn: 14249
-
- Apr 23, 2004
-
-
Chris Lattner authored
still room for cleanup, but at least the code modification is out of the analysis now. llvm-svn: 13135
-
- Apr 22, 2004
-
-
Chris Lattner authored
llvm-svn: 13108
-
Chris Lattner authored
llvm-svn: 13106
-
Chris Lattner authored
loop. This eliminates the extra add from the previous case, but it's not clear that this will be a performance win overall. Tommorows test results will tell. :) llvm-svn: 13103
-
Chris Lattner authored
types in them. Instead of creating an induction variable for all types, it creates a single induction variable and casts to the other sizes. This generates this code: no_exit: ; preds = %entry, %no_exit %indvar = phi uint [ %indvar.next, %no_exit ], [ 0, %entry ] ; <uint> [#uses=4] *** %j.0.0 = cast uint %indvar to short ; <short> [#uses=1] %indvar = cast uint %indvar to int ; <int> [#uses=1] %tmp.7 = getelementptr short* %P, uint %indvar ; <short*> [#uses=1] store short %j.0.0, short* %tmp.7 %inc.0 = add int %indvar, 1 ; <int> [#uses=2] %tmp.2 = setlt int %inc.0, %N ; <bool> [#uses=1] %indvar.next = add uint %indvar, 1 ; <uint> [#uses=1] br bool %tmp.2, label %no_exit, label %loopexit instead of: no_exit: ; preds = %entry, %no_exit %indvar = phi ushort [ %indvar.next, %no_exit ], [ 0, %entry ] ; <ushort> [#uses=2] *** %indvar = phi uint [ %indvar.next, %no_exit ], [ 0, %entry ] ; <uint> [#uses=3] %indvar = cast uint %indvar to int ; <int> [#uses=1] %indvar = cast ushort %indvar to short ; <short> [#uses=1] %tmp.7 = getelementptr short* %P, uint %indvar ; <short*> [#uses=1] store short %indvar, short* %tmp.7 %inc.0 = add int %indvar, 1 ; <int> [#uses=2] %tmp.2 = setlt int %inc.0, %N ; <bool> [#uses=1] %indvar.next = add uint %indvar, 1 *** %indvar.next = add ushort %indvar, 1 br bool %tmp.2, label %no_exit, label %loopexit This is an improvement in register pressure, but probably doesn't happen that often. The more important fix will be to get rid of the redundant add. llvm-svn: 13101
-
- Apr 19, 2004
-
-
Chris Lattner authored
structure to being dynamically computed on demand. This makes updating loop information MUCH easier. llvm-svn: 13045
-
- Apr 17, 2004
-
-
Chris Lattner authored
exit values. llvm-svn: 13018
-
Chris Lattner authored
the trip count for the loop, insert one so that we can canonicalize the exit condition. llvm-svn: 13015
-
- Apr 16, 2004
-
-
Chris Lattner authored
llvm-svn: 12980
-
- Apr 15, 2004
-
-
Chris Lattner authored
the back-edge block, we must check the preincremented value. llvm-svn: 12968
-
Chris Lattner authored
Instead of producing code like this: Loop: X = phi 0, X2 ... X2 = X + 1 if (X != N-1) goto Loop We now generate code that looks like this: Loop: X = phi 0, X2 ... X2 = X + 1 if (X2 != N) goto Loop This has two big advantages: 1. The trip count of the loop is now explicit in the code, allowing the direct implementation of Loop::getTripCount() 2. This reduces register pressure in the loop, and allows X and X2 to be put into the same register. As a consequence of the second point, the code we generate for loops went from: .LBB2: # no_exit.1 ... mov %EDI, %ESI inc %EDI cmp %ESI, 2 mov %ESI, %EDI jne .LBB2 # PC rel: no_exit.1 To: .LBB2: # no_exit.1 ... inc %ESI cmp %ESI, 3 jne .LBB2 # PC rel: no_exit.1 ... which has two fewer moves, and uses one less register. llvm-svn: 12961
-
- Apr 02, 2004
-
-
Chris Lattner authored
This also implements some new features for the indvars pass, including linear function test replacement, exit value substitution, and it works with a much more general class of induction variables and loops. llvm-svn: 12620
-
- Jan 08, 2004
-
-
Chris Lattner authored
getSubLoops/getTopLevelLoops methods, replacing them with iterator-based accessors. llvm-svn: 10714
-
- Dec 23, 2003
-
-
Chris Lattner authored
it doesn't do anything with it. llvm-svn: 10590
-
- Dec 22, 2003
-
-
Chris Lattner authored
contains no functionality changes. llvm-svn: 10583
-
Chris Lattner authored
arithmetic into "array subscripts" llvm-svn: 10580
-
Chris Lattner authored
llvm-svn: 10573
-
- Dec 18, 2003
-
-
John Criswell authored
according to the CVS log messages. llvm-svn: 10517
-
John Criswell authored
llvm-svn: 10516
-
- Dec 15, 2003
-
-
Chris Lattner authored
llvm-svn: 10473
-
- Dec 10, 2003
-
-
Chris Lattner authored
llvm-svn: 10385
-
Chris Lattner authored
Reorder #includes Implement: IndVarsSimplify/2003-12-10-IndVarDeadCode.ll llvm-svn: 10376
-
- Nov 11, 2003
-
-
Brian Gaeke authored
llvm-svn: 9903
-
- Oct 20, 2003
-
-
John Criswell authored
Header files will be on the way. llvm-svn: 9298
-
- Oct 12, 2003
-
-
Chris Lattner authored
llvm-svn: 9061
-
- Oct 10, 2003
-
-
Misha Brukman authored
llvm-svn: 9027
-
- Sep 23, 2003
-
-
Chris Lattner authored
llvm-svn: 8689
-
- Sep 12, 2003
-
-
Chris Lattner authored
llvm-svn: 8502
-
- Sep 10, 2003
-
-
Chris Lattner authored
be the canonical form for the word llvm-svn: 8430
-
Chris Lattner authored
llvm-svn: 8428
-
- Aug 02, 2003
-
-
Chris Lattner authored
llvm-svn: 7492
-
- Apr 23, 2003
-
-
Chris Lattner authored
llvm-svn: 5872
-
- Oct 21, 2002
-
-
Chris Lattner authored
setPreservesCFG to be less confusing. llvm-svn: 4255
-
- Oct 02, 2002
-
-
Chris Lattner authored
* Renamed StatisticReporter.h/cpp to Statistic.h/cpp * Broke constructor to take two const char * arguments instead of one, so that indendation can be taken care of automatically. * Sort the list by pass name when printing * Make sure to print all statistics as a group, instead of randomly when the statistics dtors are called. * Updated ProgrammersManual with new semantics. llvm-svn: 4002
-
- Sep 10, 2002
-
-
Chris Lattner authored
of instruction constructors. llvm-svn: 3656
-
Chris Lattner authored
* Fix bug: test/Regression/Transforms/IndVarsSimplify/2002-09-09-PointerIndVar.ll llvm-svn: 3644
-