- Sep 30, 2004
-
-
Chris Lattner authored
two spillers produce perfectly identical code (at least on povray and eon), but the simple spiller is substantially faster than the local spiller. Once the local spiller is improved, we can switch back. Switching cuts 5.2% off of the llc time for povray (about 1.3s). llvm-svn: 16608
-
Chris Lattner authored
use a simple vector. This speeds up -spiller=simple from taking 22s to taking .1s on povray (debug build). This change does not modify the generated code. llvm-svn: 16607
-
Chris Lattner authored
data structures). Fix the print method to send to the right ostream, not always cerr. Delete typedefs that are only used once. llvm-svn: 16606
-
Chris Lattner authored
the beginning of processing the next one. llvm-svn: 16605
-
Chris Lattner authored
prune #includes, add print/dump methods, etc. No functionality changes. llvm-svn: 16604
-
Chris Lattner authored
that always prints when linking programs to libstdc++ :( llvm-svn: 16603
-
Misha Brukman authored
won't work if not compiled in V9 mode, currently by GCC only, because Sun's system compiler does not tell us if it's a V8 or V9 system. llvm-svn: 16602
-
- Sep 29, 2004
-
-
Chris Lattner authored
llvm-svn: 16598
-
Chris Lattner authored
llvm-svn: 16597
-
Brian Gaeke authored
llvm-svn: 16595
-
Brian Gaeke authored
llvm-svn: 16594
-
Chris Lattner authored
This method is linear time in the size of the basic block, which is very bad for large basic blocks. On the Assembler/2004-09-29-VerifierIsReallySlow.llx testcase, the verifier changes from taking 50s to 0.23s with this patch. llvm-svn: 16593
-
Brian Gaeke authored
llvm-svn: 16591
-
Brian Gaeke authored
something, because the wrong bit patterns get output. llvm-svn: 16590
-
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
-
Brian Gaeke authored
llvm-svn: 16586
-
Chris Lattner authored
potentially fold more in one pass. llvm-svn: 16583
-
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
-
Nate Begeman authored
Generate better code by being far less clever when it comes to the select instruction. Don't create overlapping register lifetimes llvm-svn: 16580
-
Brian Gaeke authored
llvm-svn: 16579
-
Nate Begeman authored
llvm-svn: 16578
-
Brian Gaeke authored
Copy constant-pool entries' addresses into registers before loading out of them, to avoid errors from the assembler. Handle loading call args past the 6th one off the stack. Add IMPLICIT_DEF pseudo-instrs for double and long arguments passed in register pairs. Use FpMOVD to copy doubles around instead of the horrible store-load thing we were doing before. Handle 'ret double' and 'ret long'. Fix a bug in handling 'and/or/xor long'. llvm-svn: 16577
-
Brian Gaeke authored
moves, not all ORs. llvm-svn: 16576
-
Brian Gaeke authored
llvm-svn: 16575
-
Brian Gaeke authored
llvm-svn: 16574
-
Brian Gaeke authored
Call the FPMover pass after register allocation. llvm-svn: 16573
-
Brian Gaeke authored
llvm-svn: 16572
-
Brian Gaeke authored
llvm-svn: 16571
-
Brian Gaeke authored
of FMOVS instrs. llvm-svn: 16570
-
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
-
Nate Begeman authored
integers that we can use as immediate values in instructions. Example from yacr2: - lis r10, -1 - ori r10, r10, 65535 - add r28, r28, r10 + addi r28, r28, -1 addi r7, r7, 1 addi r9, r9, 1 b .LBB_main_9 ; loopentry.1.i214 llvm-svn: 16566
-
Reid Spencer authored
problems. Patch contributed by Jeff Cohen. Thanks Jeff! llvm-svn: 16565
-
Reid Spencer authored
Patch contributed by Jeff Cohen. Thanks Jeff! llvm-svn: 16564
-
Reid Spencer authored
Patch contributed by Jeff Cohen. Thanks Jeff! llvm-svn: 16563
-
Reid Spencer authored
Patch kindly contributed by Jeff Cohen. Thanks Jeff! llvm-svn: 16562
-
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
-
Nate Begeman authored
llvm-svn: 16555
-
Chris Lattner authored
llvm-svn: 16551
-