Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | remove the V8 simple isel | Chris Lattner | 2006-01-23 | 1 | -1823/+0 |
| | | | | llvm-svn: 25534 | ||||
* | Add explicit #includes of <iostream> | Chris Lattner | 2006-01-22 | 1 | -0/+1 |
| | | | | llvm-svn: 25509 | ||||
* | Elimiante SP and FP, which weren't members of the IntRegs register class | Chris Lattner | 2005-12-19 | 1 | -9/+9 |
| | | | | llvm-svn: 24844 | ||||
* | Add support for undef | Chris Lattner | 2005-12-18 | 1 | -5/+5 |
| | | | | llvm-svn: 24839 | ||||
* | Implement the full V8 ABI for incoming arguments. | Chris Lattner | 2005-12-18 | 1 | -1/+1 |
| | | | | llvm-svn: 24825 | ||||
* | Eliminate CMPri, which is a synonym for SUBCCri | Chris Lattner | 2005-12-17 | 1 | -1/+1 |
| | | | | llvm-svn: 24805 | ||||
* | Add patterns for multiply, simplify Y register handling stuff, add RDY ↵ | Chris Lattner | 2005-12-17 | 1 | -2/+2 |
| | | | | | | instruction llvm-svn: 24796 | ||||
* | Rename load/store instructions to include an RI suffix | Chris Lattner | 2005-12-17 | 1 | -47/+47 |
| | | | | llvm-svn: 24784 | ||||
* | core changes for varargs | Andrew Lenharth | 2005-06-18 | 1 | -17/+20 |
| | | | | llvm-svn: 22254 | ||||
* | Convert tabs to spaces | Misha Brukman | 2005-04-22 | 1 | -30/+42 |
| | | | | llvm-svn: 21457 | ||||
* | Remove trailing whitespace | Misha Brukman | 2005-04-21 | 1 | -32/+32 |
| | | | | llvm-svn: 21425 | ||||
* | This mega patch converts us from using Function::a{iterator|begin|end} to | Chris Lattner | 2005-03-15 | 1 | -2/+2 |
| | | | | | | | | using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*. This patch is contributed by Gabor Greif, thanks! llvm-svn: 20597 | ||||
* | Substantially improve the code generated by non-folded setcc instructions. | Chris Lattner | 2005-01-01 | 1 | -33/+20 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In particular, instead of compiling this: bool %test(int %A, int %B) { %C = setlt int %A, %B ret bool %C } to this: test: save %sp, -96, %sp subcc %i0, %i1, %g0 bl .LBBtest_1 ! nop ba .LBBtest_2 ! nop .LBBtest_1: ! or %g0, 1, %i0 ba .LBBtest_3 ! nop .LBBtest_2: ! or %g0, 0, %i0 ba .LBBtest_3 ! nop .LBBtest_3: ! restore %g0, %g0, %g0 retl nop We now compile it to this: test: save %sp, -96, %sp subcc %i0, %i1, %g0 or %g0, 1, %i0 bl .LBBtest_2 ! nop .LBBtest_1: ! or %g0, %g0, %i0 .LBBtest_2: ! restore %g0, %g0, %g0 retl nop llvm-svn: 19213 | ||||
* | Remove unused #include | Chris Lattner | 2004-12-17 | 1 | -1/+1 |
| | | | | llvm-svn: 19021 | ||||
* | Get rid of shifts by zero in most cases. | Brian Gaeke | 2004-12-14 | 1 | -5/+6 |
| | | | | llvm-svn: 18931 | ||||
* | Finally enable the setcc-branch folding code. | Brian Gaeke | 2004-12-12 | 1 | -17/+73 |
| | | | | | | | Also, fix a bug where ubyte 255 would sometimes be output as -1. This was afflicting hbd. llvm-svn: 18823 | ||||
* | Add (currently disabled) code for canFoldSetCC | Brian Gaeke | 2004-12-12 | 1 | -0/+10 |
| | | | | llvm-svn: 18820 | ||||
* | Add stubs for setcc-branch folding support. | Brian Gaeke | 2004-12-12 | 1 | -0/+11 |
| | | | | llvm-svn: 18818 | ||||
* | Make GEPs not suck so much: | Brian Gaeke | 2004-12-11 | 1 | -15/+67 |
| | | | | | | | | | | | * Don't emit the Index * ElementSize multiply if Index is a constant. * Use a shift, not a multiply, if ElementSize is 1/2/4/8. * If ElementSize fits in the immediate field of SMUL, then put it there. Fix a bug where struct offsets might be truncated (ConstantSInt::get is now used instead of ConstantInt::get). llvm-svn: 18792 | ||||
* | Support binary operations with immediates for <= cInt. | Brian Gaeke | 2004-12-10 | 1 | -4/+23 |
| | | | | llvm-svn: 18756 | ||||
* | Fix bug in emitGEPOperation with large struct-member offsets. | Brian Gaeke | 2004-11-24 | 1 | -2/+12 |
| | | | | llvm-svn: 18201 | ||||
* | Support shr long/ulong. | Brian Gaeke | 2004-11-23 | 1 | -51/+117 |
| | | | | llvm-svn: 18173 | ||||
* | pseudocode for 64-bit lshr. | Brian Gaeke | 2004-11-23 | 1 | -1/+52 |
| | | | | llvm-svn: 18154 | ||||
* | Add stub method for long shift codegen. | Brian Gaeke | 2004-11-22 | 1 | -0/+21 |
| | | | | llvm-svn: 18100 | ||||
* | Implement setcc on longs. | Brian Gaeke | 2004-11-21 | 1 | -21/+36 |
| | | | | llvm-svn: 18088 | ||||
* | Support add, sub, mul, div, rem on longs/ulongs (latter 3 by emitting libcalls). | Brian Gaeke | 2004-11-21 | 1 | -2/+65 |
| | | | | | | Add a big comment containing my notes on how to do setcc for longs/ulongs. llvm-svn: 18086 | ||||
* | Fix extraStack calculation -- I think in fact it might be getting a bit *too* | Brian Gaeke | 2004-11-21 | 1 | -9/+22 |
| | | | | | | | | much stack, but that's better than not enough, which leads to miscompilations. Fix FP vaarg. llvm-svn: 18079 | ||||
* | Support most cases of vaarg (except double). | Brian Gaeke | 2004-11-20 | 1 | -1/+28 |
| | | | | llvm-svn: 18055 | ||||
* | Implement vacopy and vanext. | Brian Gaeke | 2004-11-20 | 1 | -3/+12 |
| | | | | llvm-svn: 18031 | ||||
* | Revert the patch that adds Function* for each 64-bit libc div/mul/rem that we | Misha Brukman | 2004-11-20 | 1 | -23/+0 |
| | | | | | | | want to do; instead, we can use MachineInstr::addExternalSymbol(char*, bool) and thus we don't have to modify the Module as we are code generating for it llvm-svn: 18025 | ||||
* | Add protoypes for 64-bit long/ulong div, mul, and rem functions | Misha Brukman | 2004-11-19 | 1 | -0/+23 |
| | | | | llvm-svn: 18019 | ||||
* | Add VANext and VAArg stubs. | Brian Gaeke | 2004-11-19 | 1 | -1/+10 |
| | | | | llvm-svn: 18012 | ||||
* | Implement va_start. | Brian Gaeke | 2004-11-19 | 1 | -2/+16 |
| | | | | llvm-svn: 18011 | ||||
* | First part of varargs support: getting all varargs which could possibly | Brian Gaeke | 2004-11-19 | 1 | -1/+21 |
| | | | | | | be in registers into memory. llvm-svn: 18006 | ||||
* | va_end can safely be codegen'd to nothing on v8. | Brian Gaeke | 2004-11-19 | 1 | -1/+2 |
| | | | | llvm-svn: 18004 | ||||
* | A very sorry stub implementation of varargs intrinsics... | Brian Gaeke | 2004-11-19 | 1 | -2/+11 |
| | | | | llvm-svn: 18003 | ||||
* | Fix bug in casting to long/ulong. | Brian Gaeke | 2004-11-19 | 1 | -11/+27 |
| | | | | llvm-svn: 18001 | ||||
* | Rewrite LoadArgumentsToVirtualRegs, making it match almost exactly how | Brian Gaeke | 2004-11-18 | 1 | -70/+90 |
| | | | | | | visitCallInst works. Support cast of byte/short/int to long. llvm-svn: 17949 | ||||
* | We were (somehow) getting the wrong branch opcode for setcc float instrs. | Brian Gaeke | 2004-11-17 | 1 | -2/+2 |
| | | | | llvm-svn: 17925 | ||||
* | Fix problem with insertion point for ADJCALLSTACKDOWN. | Brian Gaeke | 2004-11-14 | 1 | -2/+1 |
| | | | | llvm-svn: 17733 | ||||
* | Fix NotTest - round up extraStack to the nearest doubleword, if it is | Brian Gaeke | 2004-11-14 | 1 | -0/+2 |
| | | | | | | not zero. llvm-svn: 17728 | ||||
* | Rewrite outgoing arg handling to handle more weird corner cases. | Brian Gaeke | 2004-11-14 | 1 | -40/+67 |
| | | | | llvm-svn: 17722 | ||||
* | Handle "call" operands of type long/ulong passed in registers. | Brian Gaeke | 2004-11-04 | 1 | -5/+11 |
| | | | | llvm-svn: 17464 | ||||
* | Add support for unreachable and undef | Chris Lattner | 2004-10-17 | 1 | -0/+6 |
| | | | | llvm-svn: 17074 | ||||
* | Rewrite emitCastOperation, refactoring parts of it into emitIntegerCast, and | Brian Gaeke | 2004-10-14 | 1 | -54/+92 |
| | | | | | | adding emitFPToIntegerCast. llvm-svn: 16995 | ||||
* | Fix assertion failure when calling or returning from a function which | Brian Gaeke | 2004-10-10 | 1 | -2/+2 |
| | | | | | | returns 'bool' type. llvm-svn: 16884 | ||||
* | Fix whitespace and wrap some long lines. | Brian Gaeke | 2004-10-10 | 1 | -8/+30 |
| | | | | | | | | Deal with allocating stack space for outgoing args and copying them into the correct stack slots (at least, we can copy <=32-bit int args). We now correctly generate ADJCALLSTACK* instructions. llvm-svn: 16881 | ||||
* | I think this will handle double args. | Brian Gaeke | 2004-09-30 | 1 | -2/+15 |
| | | | | llvm-svn: 16618 | ||||
* | Simplify copyConstantToRegister() for longs, using a pair of recursive calls. | Brian Gaeke | 2004-09-29 | 1 | -62/+106 |
| | | | | | | | | | | | | | | 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 | ||||
* | Renamed file to SparcV8ISelSimple.cpp | Misha Brukman | 2004-09-10 | 1 | -0/+1150 |
llvm-svn: 16267 |