- Apr 22, 2004
-
-
Chris Lattner authored
over its USES. If it's dead it doesn't have any uses! :) Thanks to the fabulous and mysterious Bill Wendling for pointing this out. :) llvm-svn: 13102
-
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 21, 2004
-
-
Chris Lattner authored
Eventually it would be nice if CallGraph maintained an ilist of CallGraphNode's instead of a vector of pointers to them, but today is not that day. llvm-svn: 13100
-
Misha Brukman authored
llvm-svn: 13096
-
Brian Gaeke authored
of IntCC, FloatCC, and Special types. Make SparcV9RegInfo::getRegClassIDOfRegType() return the right answer if you ask for the class corresponding to SpecialRegType. llvm-svn: 13095
-
Alkis Evlogimenos authored
llvm-svn: 13091
-
Chris Lattner authored
llvm-svn: 13089
-
Chris Lattner authored
is done, which avoids invalidating iterators in the SCC traversal routines llvm-svn: 13088
-
- Apr 20, 2004
-
-
Chris Lattner authored
llvm-svn: 13087
-
Chris Lattner authored
llvm-svn: 13084
-
Chris Lattner authored
llvm-svn: 13081
-
Chris Lattner authored
llvm-svn: 13080
-
Brian Gaeke authored
llvm-svn: 13078
-
Chris Lattner authored
llvm-svn: 13076
-
- Apr 19, 2004
-
-
Brian Gaeke authored
llvm-svn: 13073
-
Brian Gaeke authored
llvm-svn: 13071
-
Brian Gaeke authored
the name of %fsr (as the comment in SparcV9RegClassInfo.h used to suggest) you would walk off the end of the FloatCCRegName array. llvm-svn: 13070
-
Brian Gaeke authored
Remove the extra %fsr register from SparcV9FloatCCRegClass. llvm-svn: 13069
-
Chris Lattner authored
but it's a start, and seems to do it's basic job. llvm-svn: 13068
-
Chris Lattner authored
llvm-svn: 13064
-
Chris Lattner authored
llvm-svn: 13058
-
Chris Lattner authored
llvm-svn: 13057
-
Chris Lattner authored
llvm-svn: 13051
-
Chris Lattner authored
llvm-svn: 13050
-
Chris Lattner authored
llvm-svn: 13048
-
Chris Lattner authored
llvm-svn: 13047
-
Chris Lattner authored
llvm-svn: 13046
-
Chris Lattner authored
structure to being dynamically computed on demand. This makes updating loop information MUCH easier. llvm-svn: 13045
-
- Apr 18, 2004
-
-
Chris Lattner authored
llvm-svn: 13040
-
Chris Lattner authored
that the exit block of the loop becomes the new entry block of the function. This was causing a verifier assertion on 252.eon. llvm-svn: 13039
-
Chris Lattner authored
using instructions inside of the loop. This should fix the MishaTest failure from last night. llvm-svn: 13038
-
Chris Lattner authored
llvm-svn: 13036
-
Chris Lattner authored
block. The primary motivation for doing this is that we can now unroll nested loops. This makes a pretty big difference in some cases. For example, in 183.equake, we are now beating the native compiler with the CBE, and we are a lot closer with LLC. I'm now going to play around a bit with the unroll factor and see what effect it really has. llvm-svn: 13034
-
Chris Lattner authored
While we're at it, add support for updating loop information correctly. llvm-svn: 13033
-
Chris Lattner authored
have a canonical indvar llvm-svn: 13032
-
Chris Lattner authored
limited. Even in it's extremely simple state (it can only *fully* unroll single basic block loops that execute a constant number of times), it already helps improve performance a LOT on some benchmarks, particularly with the native code generators. llvm-svn: 13028
-
Chris Lattner authored
llvm-svn: 13025
-
Chris Lattner authored
llvm-svn: 13023
-
Chris Lattner authored
operations. This allows us to compile this testcase: int main() { int h = 1; do h = 3 * h + 1; while (h <= 256); printf("%d\n", h); return 0; } into this: int %main() { entry: call void %__main( ) %tmp.6 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([4 x sbyte]* %.str_1, long 0, long 0), int 364 ) ; <int> [#uses=0] ret int 0 } This testcase was taken directly from 256.bzip2, believe it or not. This code is not as general as I would like. Next up is to refactor it a bit to handle more cases. llvm-svn: 13019
-
- Apr 17, 2004
-
-
Chris Lattner authored
exit values. llvm-svn: 13018
-