- Sep 30, 2004
-
-
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
-
Chris Lattner authored
llvm-svn: 16592
-
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
-
Chris Lattner authored
llvm-svn: 16587
-
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
-
Chris Lattner authored
llvm-svn: 16581
-
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: 16569
-
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
-
Chris Lattner authored
llvm-svn: 16560
-
- 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
-
Misha Brukman authored
* Convert tabs to spaces llvm-svn: 16558
-
Misha Brukman authored
llvm-svn: 16557
-