aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2004-09-30Use TargetMachine::hasDelaySlot() instead of our old switch statementBrian Gaeke
to find instrs that have delay slots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16610 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-30Simplify the logic in the simple spiller and capitalize some variablesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16609 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-30Switch from defaulting to the 'local' spiller to the 'simple' spiller. TheChris Lattner
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). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16608 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-30Don't use a densemap for keeping track of which vregs are already loaded, justChris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16607 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-30Use longer and more explicit names for instance vars (particularly importantChris Lattner
data structures). Fix the print method to send to the right ostream, not always cerr. Delete typedefs that are only used once. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16606 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-30Free the VirtRegMap at the end of MachineFunction processing instead of atChris Lattner
the beginning of processing the next one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16605 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-30Reindent code, improve comments, move huge nested methods out of classes,Chris Lattner
prune #includes, add print/dump methods, etc. No functionality changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16604 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-30Disable the 'WARNING: Found global types that are not compatible' warningChris Lattner
that always prints when linking programs to libstdc++ :( git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16603 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Change the #ifdefs to allow compilation with a V8 compiler, but the JIT stillMisha Brukman
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16602 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Hrm, debugging printouts do not need to be in hereChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16598 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Make sure to check select instructions for generic instruction propertiesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16597 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Update list of shootout programs that should be working.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16595 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Tell the target description that calls clobber registers O0...O5.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16594 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Don't use DominatorSet::dominates for intra-block instruction dom checks.Chris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16593 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29The verifier takes 50s on this testcase, that is not good n stuffChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16592 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29FITOD is spelled "fitod", not "fitos". Ouch.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16591 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Don't use .quad to output double constants. The assembler must have a bug orBrian Gaeke
something, because the wrong bit patterns get output. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16590 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29* Pull range optimization code out into new InsertRangeTest function.Chris Lattner
* 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16588 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29New testcasses for divides that can be eliminated.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16587 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Recognize FpMOVD as a move.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16586 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Do not insert trivially dead select instructions, which allows us toChris Lattner
potentially fold more in one pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16583 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Fold binary expressions and casts into PHI nodes that have all constant inputs.Chris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16582 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29New testcasesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16581 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Generate better code by being far less clever when it comes to the select ↵Nate Begeman
instruction. Don't create overlapping register lifetimes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16580 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29add resultsBrian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16579 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29improve Type::BoolTy codegen by eliminating unnecessary clears and sign extendsNate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16578 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Simplify copyConstantToRegister() for longs, using a pair of recursive calls.Brian Gaeke
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'. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16577 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Fix bug recognizing moves: isMoveInstr should only treat ORs with %g0 asBrian Gaeke
moves, not all ORs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16576 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Use FpMOVD pseudo-instruction to move doubles around.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16575 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Add new FpMOVD pseudo-instruction, used to move doubles around.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16574 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Fix double and long alignment.Brian Gaeke
Call the FPMover pass after register allocation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16573 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Put quotes around argument to .section directive.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16572 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Add createSparcV8FPMoverPass().Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16571 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Pass which converts FpMOVD (double move pseudoinstructions) to pairsBrian Gaeke
of FMOVS instrs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16570 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29More testcases for recent instcombine patchesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16569 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Hrm, really, all tests passed without this, but it is scary to think how...Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16568 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Remove debugging printoutChris Lattner
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). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16567 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29To go along with sabre's improved InstCombining, improve recognition ofNate Begeman
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16566 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29Improve validity checking of windows path names and fix file creationReid Spencer
problems. Patch contributed by Jeff Cohen. Thanks Jeff! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16565 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28Use llvm::sys::Path to destroy the file.Reid Spencer
Patch contributed by Jeff Cohen. Thanks Jeff! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16564 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28Win32 implementation of TimeValue::now().Reid Spencer
Patch contributed by Jeff Cohen. Thanks Jeff! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16563 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28FreeBSD implementation of the TimeValue::now() method.Reid Spencer
Patch kindly contributed by Jeff Cohen. Thanks Jeff! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16562 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28Fold (X setcc C1) | (X setcc C2)Chris Lattner
This implements or.ll:test1[89] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16561 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28New testcaseChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16560 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28Fold (and (setcc X, C1), (setcc X, C2))Chris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16559 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28* Add `deplibs' keyword for specifying a list of dependent librariesMisha Brukman
* Convert tabs to spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16558 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28Add `deplibs' keyword for specifying a list of dependent librariesMisha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16557 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28New testcasesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16556 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28Add support for the isLoad and isStore flags, needed by the instruction ↵Nate Begeman
scheduler git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16555 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28Add support for the isLoad and isStore flags, needed by the instruction ↵Nate Begeman
scheduler git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16554 91177308-0d34-0410-b5e6-96231b3b80d8