- Oct 09, 2004
-
-
Chris Lattner authored
-debug-only! llvm-svn: 16868
-
Chris Lattner authored
llvm-svn: 16863
-
- Oct 08, 2004
-
-
Chris Lattner authored
254.gap. llvm-svn: 16853
-
Chris Lattner authored
This comes up when doing adds to bitfield elements. llvm-svn: 16836
-
Chris Lattner authored
This triggers in cases of bitfield additions, opening opportunities for future improvements. llvm-svn: 16834
-
- Oct 06, 2004
-
-
Chris Lattner authored
llvm-svn: 16769
-
Chris Lattner authored
an instruction if it can be hoisted to a common dominator of the block. This implements: test/Regression/Transforms/TailDup/MergeTest.ll llvm-svn: 16758
-
- Sep 29, 2004
-
-
Chris Lattner authored
llvm-svn: 16598
-
Chris Lattner authored
* SubOne/AddOne functions always return ConstantInt, declare them as such * Pull code for handling setcc X, cst, where cst is at the end of the range, or cc is LE or GE up earlier in visitSetCondInst. This reduces #iterations in some cases. * Fold: (div X, C1) op C2 -> range check, implementing div.ll:test6 - test9. llvm-svn: 16588
-
Chris Lattner authored
This takes something like this: %A = phi int [ 3, %cond_false.0 ], [ 2, %endif.0.i ], [ 2, %endif.1.i ] %B = div int %tmp.243, 4 and turns it into: %A = phi int [ 3/4, %cond_false.0 ], [ 2/4, %endif.0.i ], [ 2/4, %endif.1.i ] which is later simplified (in this case) into %A = 0. This triggers thousands of times in spec, for example, 269 times in 176.gcc. This is tested by InstCombine/add.ll:test23 and set.ll:test18. llvm-svn: 16582
-
Chris Lattner authored
llvm-svn: 16568
-
Chris Lattner authored
Instcombine (setcc (truncate X), C1). This occurs THOUSANDS of times in many benchmarks. Particularlly common seem to be things like (seteq (cast bool X to int), int 0) This turns it into (seteq bool %X, false), which then becomes (not %X). llvm-svn: 16567
-
Chris Lattner authored
This implements or.ll:test1[89] llvm-svn: 16561
-
- Sep 28, 2004
-
-
Chris Lattner authored
This is important for several reasons: 1. Benchmarks have lots of code that looks like this (perlbmk in particular): %tmp.2.i = setne int %tmp.0.i, 128 ; <bool> [#uses=1] %tmp.6343 = seteq int %tmp.0.i, 1 ; <bool> [#uses=1] %tmp.63 = and bool %tmp.2.i, %tmp.6343 ; <bool> [#uses=1] we now fold away the setne, a clear improvement. 2. In the more important cases, such as (X >= 10) & (X < 20), we now produce smaller code: (X-10) < 10. 3. Perhaps the nicest effect of this patch is that it really helps out the code generators. In particular, for a 'range test' like the above, instead of generating this on X86 (the difference on PPC is even more pronounced): cmp %EAX, 50 setge %CL cmp %EAX, 100 setl %AL and %CL, %AL cmp %CL, 0 we now generate this: add %EAX, -50 cmp %EAX, 50 Furthermore, this causes setcc's to be folded into branches more often. These combinations trigger dozens of times in the spec benchmarks, particularly in 176.gcc, 186.crafty, 253.perlbmk, 254.gap, & 099.go. llvm-svn: 16559
-
Chris Lattner authored
Implement (setcc (shl X, C1), C2) folding. The second one occurs several dozen times in spec. The first was added just in case. :) These are tested by shift.ll:test2[12], and div.ll:test5 llvm-svn: 16549
-
Chris Lattner authored
This latent bug was exposed by recent changes, and is tested as: llvm/test/Regression/Transforms/InstCombine/2004-09-28-BadShiftAndSetCC.llx llvm-svn: 16546
-
Alkis Evlogimenos authored
compile under windows. Patch contributed by Paolo Invernizzi! llvm-svn: 16534
-
- Sep 27, 2004
-
-
Chris Lattner authored
where we folded (X & 254) -> X < 1 instead of X < 2. These problems were latent problems exposed by the latest patch. llvm-svn: 16528
-
Chris Lattner authored
triggers often, for example: 6x in povray, 1x in gzip, 279x in gcc, 1x in crafty, 8x in eon, 11x in perlbmk, 362x in gap, 4x in vortex, 14 in m88ksim, 211x in 126.gcc, 1x in compress, 11x in ijpeg, and 4x in 147.vortex. llvm-svn: 16521
-
- Sep 24, 2004
-
-
Chris Lattner authored
These combinations trigger 4 times in povray, 7x in gcc, 4x in gap, and 2x in bzip2. llvm-svn: 16508
-
- Sep 23, 2004
-
-
Chris Lattner authored
No functionality changes here. llvm-svn: 16505
-
Chris Lattner authored
in perlbmk llvm-svn: 16504
-
Chris Lattner authored
llvm-svn: 16499
-
- Sep 21, 2004
-
-
Chris Lattner authored
this transformation used to take a loop like this: int Array[1000]; void test(int X) { int i; for (i = 0; i < 1000; ++i) Array[i] += X; } Compiled to LLVM is: no_exit: ; preds = %entry, %no_exit %indvar = phi uint [ 0, %entry ], [ %indvar.next, %no_exit ] ; <uint> [#uses=2] %tmp.4 = getelementptr [1000 x int]* %Array, int 0, uint %indvar ; <int*> [#uses=2] %tmp.7 = load int* %tmp.4 ; <int> [#uses=1] %tmp.9 = add int %tmp.7, %X ; <int> [#uses=1] store int %tmp.9, int* %tmp.4 *** %indvar.next = add uint %indvar, 1 ; <uint> [#uses=2] *** %exitcond = seteq uint %indvar.next, 1000 ; <bool> [#uses=1] br bool %exitcond, label %return, label %no_exit and turn it into a loop like this: no_exit: ; preds = %entry, %no_exit %indvar = phi uint [ 0, %entry ], [ %indvar.next, %no_exit ] ; <uint> [#uses=3] %tmp.4 = getelementptr [1000 x int]* %Array, int 0, uint %indvar ; <int*> [#uses=2] %tmp.7 = load int* %tmp.4 ; <int> [#uses=1] %tmp.9 = add int %tmp.7, %X ; <int> [#uses=1] store int %tmp.9, int* %tmp.4 *** %indvar.next = add uint %indvar, 1 ; <uint> [#uses=1] *** %exitcond = seteq uint %indvar, 999 ; <bool> [#uses=1] br bool %exitcond, label %return, label %no_exit Note that indvar.next and indvar can no longer be coallesced. In machine code terms, this patch changes this code: .LBBtest_1: # no_exit mov %EDX, OFFSET Array mov %ESI, %EAX add %ESI, DWORD PTR [%EDX + 4*%ECX] mov %EDX, OFFSET Array mov DWORD PTR [%EDX + 4*%ECX], %ESI mov %EDX, %ECX inc %EDX cmp %ECX, 999 mov %ECX, %EDX jne .LBBtest_1 # no_exit into this: .LBBtest_1: # no_exit mov %EDX, OFFSET Array mov %ESI, %EAX add %ESI, DWORD PTR [%EDX + 4*%ECX] mov %EDX, OFFSET Array mov DWORD PTR [%EDX + 4*%ECX], %ESI inc %ECX cmp %ECX, 1000 jne .LBBtest_1 # no_exit We need better instruction selection to get this: .LBBtest_1: # no_exit add DWORD PTR [Array + 4*%ECX], EAX inc %ECX cmp %ECX, 1000 jne .LBBtest_1 # no_exit ... but at least there is less register juggling llvm-svn: 16473
-
- Sep 20, 2004
-
-
Chris Lattner authored
llvm-svn: 16447
-
Alkis Evlogimenos authored
list. llvm-svn: 16440
-
Chris Lattner authored
llvm-svn: 16432
-
- Sep 19, 2004
-
-
Chris Lattner authored
Regression/Transforms/InstCombine/CPP_min_max.llx llvm-svn: 16409
-
Chris Lattner authored
loads, and implement two new transforms: InstCombine/load.ll:test[56]. llvm-svn: 16404
-
- Sep 15, 2004
-
-
Reid Spencer authored
Patch contributed by Paolo Invernizzi. Thanks Paolo! llvm-svn: 16368
-
Chris Lattner authored
llvm-svn: 16355
-
Chris Lattner authored
This fixes PR420 and Regression/Transforms/LICM/2004-09-14-AliasAnalysisInvalidate.llx llvm-svn: 16348
-
- Sep 14, 2004
-
-
Chris Lattner authored
llvm-svn: 16337
-
- Sep 03, 2004
-
-
Alkis Evlogimenos authored
Patch contributed by Paolo Invernizzi! llvm-svn: 16152
-
- Sep 02, 2004
-
-
Reid Spencer authored
Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. llvm-svn: 16137
-
- Aug 21, 2004
-
-
Reid Spencer authored
This also registers the pass with opt with a -lower-packed command line option. Patch contributed by Brad Jones. llvm-svn: 15987
-
- Aug 11, 2004
-
-
Chris Lattner authored
176.gcc. Note that this is apparently not the only bug miscompiling gcc though. :( llvm-svn: 15639
-
- Aug 09, 2004
-
-
Chris Lattner authored
This should go into the 1.3 branch llvm-svn: 15593
-
- Aug 04, 2004
-
-
Alkis Evlogimenos authored
llvm-svn: 15487
-
- Aug 01, 2004
-
-
Chris Lattner authored
llvm-svn: 15410
-