summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/SparcV8/SparcV8ISelSimple.cpp
Commit message (Collapse)AuthorAgeFilesLines
* remove the V8 simple iselChris Lattner2006-01-231-1823/+0
| | | | llvm-svn: 25534
* Add explicit #includes of <iostream>Chris Lattner2006-01-221-0/+1
| | | | llvm-svn: 25509
* Elimiante SP and FP, which weren't members of the IntRegs register classChris Lattner2005-12-191-9/+9
| | | | llvm-svn: 24844
* Add support for undefChris Lattner2005-12-181-5/+5
| | | | llvm-svn: 24839
* Implement the full V8 ABI for incoming arguments.Chris Lattner2005-12-181-1/+1
| | | | llvm-svn: 24825
* Eliminate CMPri, which is a synonym for SUBCCriChris Lattner2005-12-171-1/+1
| | | | llvm-svn: 24805
* Add patterns for multiply, simplify Y register handling stuff, add RDY ↵Chris Lattner2005-12-171-2/+2
| | | | | | instruction llvm-svn: 24796
* Rename load/store instructions to include an RI suffixChris Lattner2005-12-171-47/+47
| | | | llvm-svn: 24784
* core changes for varargsAndrew Lenharth2005-06-181-17/+20
| | | | llvm-svn: 22254
* Convert tabs to spacesMisha Brukman2005-04-221-30/+42
| | | | llvm-svn: 21457
* Remove trailing whitespaceMisha Brukman2005-04-211-32/+32
| | | | llvm-svn: 21425
* This mega patch converts us from using Function::a{iterator|begin|end} toChris Lattner2005-03-151-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 Lattner2005-01-011-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 #includeChris Lattner2004-12-171-1/+1
| | | | llvm-svn: 19021
* Get rid of shifts by zero in most cases.Brian Gaeke2004-12-141-5/+6
| | | | llvm-svn: 18931
* Finally enable the setcc-branch folding code.Brian Gaeke2004-12-121-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 canFoldSetCCBrian Gaeke2004-12-121-0/+10
| | | | llvm-svn: 18820
* Add stubs for setcc-branch folding support.Brian Gaeke2004-12-121-0/+11
| | | | llvm-svn: 18818
* Make GEPs not suck so much:Brian Gaeke2004-12-111-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 Gaeke2004-12-101-4/+23
| | | | llvm-svn: 18756
* Fix bug in emitGEPOperation with large struct-member offsets.Brian Gaeke2004-11-241-2/+12
| | | | llvm-svn: 18201
* Support shr long/ulong.Brian Gaeke2004-11-231-51/+117
| | | | llvm-svn: 18173
* pseudocode for 64-bit lshr.Brian Gaeke2004-11-231-1/+52
| | | | llvm-svn: 18154
* Add stub method for long shift codegen.Brian Gaeke2004-11-221-0/+21
| | | | llvm-svn: 18100
* Implement setcc on longs.Brian Gaeke2004-11-211-21/+36
| | | | llvm-svn: 18088
* Support add, sub, mul, div, rem on longs/ulongs (latter 3 by emitting libcalls).Brian Gaeke2004-11-211-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 Gaeke2004-11-211-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 Gaeke2004-11-201-1/+28
| | | | llvm-svn: 18055
* Implement vacopy and vanext.Brian Gaeke2004-11-201-3/+12
| | | | llvm-svn: 18031
* Revert the patch that adds Function* for each 64-bit libc div/mul/rem that weMisha Brukman2004-11-201-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 functionsMisha Brukman2004-11-191-0/+23
| | | | llvm-svn: 18019
* Add VANext and VAArg stubs.Brian Gaeke2004-11-191-1/+10
| | | | llvm-svn: 18012
* Implement va_start.Brian Gaeke2004-11-191-2/+16
| | | | llvm-svn: 18011
* First part of varargs support: getting all varargs which could possiblyBrian Gaeke2004-11-191-1/+21
| | | | | | be in registers into memory. llvm-svn: 18006
* va_end can safely be codegen'd to nothing on v8.Brian Gaeke2004-11-191-1/+2
| | | | llvm-svn: 18004
* A very sorry stub implementation of varargs intrinsics...Brian Gaeke2004-11-191-2/+11
| | | | llvm-svn: 18003
* Fix bug in casting to long/ulong.Brian Gaeke2004-11-191-11/+27
| | | | llvm-svn: 18001
* Rewrite LoadArgumentsToVirtualRegs, making it match almost exactly howBrian Gaeke2004-11-181-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 Gaeke2004-11-171-2/+2
| | | | llvm-svn: 17925
* Fix problem with insertion point for ADJCALLSTACKDOWN.Brian Gaeke2004-11-141-2/+1
| | | | llvm-svn: 17733
* Fix NotTest - round up extraStack to the nearest doubleword, if it isBrian Gaeke2004-11-141-0/+2
| | | | | | not zero. llvm-svn: 17728
* Rewrite outgoing arg handling to handle more weird corner cases.Brian Gaeke2004-11-141-40/+67
| | | | llvm-svn: 17722
* Handle "call" operands of type long/ulong passed in registers.Brian Gaeke2004-11-041-5/+11
| | | | llvm-svn: 17464
* Add support for unreachable and undefChris Lattner2004-10-171-0/+6
| | | | llvm-svn: 17074
* Rewrite emitCastOperation, refactoring parts of it into emitIntegerCast, andBrian Gaeke2004-10-141-54/+92
| | | | | | adding emitFPToIntegerCast. llvm-svn: 16995
* Fix assertion failure when calling or returning from a function whichBrian Gaeke2004-10-101-2/+2
| | | | | | returns 'bool' type. llvm-svn: 16884
* Fix whitespace and wrap some long lines.Brian Gaeke2004-10-101-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 Gaeke2004-09-301-2/+15
| | | | llvm-svn: 16618
* Simplify copyConstantToRegister() for longs, using a pair of recursive calls.Brian Gaeke2004-09-291-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.cppMisha Brukman2004-09-101-0/+1150
llvm-svn: 16267
OpenPOWER on IntegriCloud