summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/SparcV8
Commit message (Collapse)AuthorAgeFilesLines
...
* Silly Sparc is big endian. If we have to load args out of incoming stack slotsChris Lattner2006-01-161-0/+4
| | | | | | | that are smaller than an int, make sure to adjust the frame pointer to take this into consideration. llvm-svn: 25351
* Make sure that bool,byte and short arguments are the right type when loadedChris Lattner2006-01-151-0/+1
| | | | | | from memory. llvm-svn: 25346
* Disable a broken optimizationChris Lattner2006-01-151-1/+2
| | | | llvm-svn: 25340
* Don't print a label for the first MBB in a function.Chris Lattner2006-01-152-5/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Compile this: %_2E_str_8 = external global [75 x sbyte] implementation ; Functions: declare int %printf(sbyte*, ...) void %test() %tmp.101 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([75 x sbyte]* %_2E_str_8, int 0, int 0) ) ; <int> [#uses=0] unreachable } to this: main_endif_2E_8: save -96, %o6, %o6 sethi %hi(_2E_str_8), %l0 add %l0, %lo(_2E_str_8), %o0 call printf nop instead of this: main_endif_2E_8: save -96, %o6, %o6 sethi %hi(_2E_str_8), %l0 or %g0, %lo(_2E_str_8), %l1 ;; extra instruction add %l1, %l0, %o0 call printf nop llvm-svn: 25335
* Have legalize take care of DYNAMIC_STACKALLOC for us, implement ↵Chris Lattner2006-01-151-18/+4
| | | | | | llvm.stacksave/stackrestore. llvm-svn: 25332
* Implement DYNAMIC_STACKALLOC for V8Chris Lattner2006-01-151-1/+18
| | | | llvm-svn: 25330
* reorder passesChris Lattner2006-01-151-4/+6
| | | | llvm-svn: 25326
* bswap implementationNate Begeman2006-01-141-0/+1
| | | | llvm-svn: 25312
* expand unsupported stacksave/stackrestore nodesChris Lattner2006-01-131-0/+4
| | | | llvm-svn: 25272
* Fix branches on FP comparesChris Lattner2006-01-122-21/+17
| | | | llvm-svn: 25249
* fix a bug in my previous checkinChris Lattner2006-01-121-2/+3
| | | | llvm-svn: 25244
* Give V8ISD nodes symbolic names in dumpsChris Lattner2006-01-121-0/+18
| | | | llvm-svn: 25243
* invert the sense of this switch and its nameChris Lattner2006-01-121-4/+4
| | | | llvm-svn: 25234
* Add bswap, rotl, and rotr nodesNate Begeman2006-01-111-0/+2
| | | | | | | | | Add dag combiner code to recognize rotl, rotr Add ppc code to match rotl Targets should add rotl/rotr patterns if they have them llvm-svn: 25222
* This is no longer neededChris Lattner2006-01-111-1/+0
| | | | llvm-svn: 25219
* Use Evan's outflag stuff to implement V8cmpicc. This allows us to write aChris Lattner2006-01-112-16/+27
| | | | | | | pattern for SUBCCrr, and makes it trivial to add support for SUBCCri, eliminating an instruction in the common "setcc X, imm" case. llvm-svn: 25212
* Fix a bug in i32->f64 conversion loweringChris Lattner2006-01-111-2/+2
| | | | llvm-svn: 25211
* Unbreak ret void :-/Chris Lattner2006-01-111-0/+1
| | | | llvm-svn: 25210
* Write this pattern in canonical form, allowing more patterns to match.Chris Lattner2006-01-111-1/+1
| | | | | | This implements Regression/CodeGen/SparcV8/xnor.ll llvm-svn: 25209
* New DAG node properties SNDPInFlag, SNDPOutFlag, and SNDPOptInFlag to replaceEvan Cheng2006-01-092-13/+7
| | | | | | hasInFlag, hasOutFlag. llvm-svn: 25155
* silence a bogus gcc warningChris Lattner2006-01-061-1/+1
| | | | llvm-svn: 25129
* Had expand logic backward.Jim Laskey2006-01-051-0/+2
| | | | llvm-svn: 25105
* Added initial support for DEBUG_LABEL allowing debug specific labels to beJim Laskey2006-01-051-1/+0
| | | | | | inserted in the code. llvm-svn: 25104
* Remove some dead code.Evan Cheng2006-01-051-4/+0
| | | | llvm-svn: 25102
* Added field noResults to Instruction.Evan Cheng2005-12-261-2/+4
| | | | | | | | | | | | Currently tblgen cannot tell which operands in the operand list are results so it assumes the first one is a result. This is bad. Ideally we would fix this by separating results from inputs, e.g. (res R32:$dst), (ops R32:$src1, R32:$src2). But that's a more distruptive change. Adding 'let noResults = 1' is the workaround to tell tblgen that the instruction does not produces a result. It works for now since tblgen does not support instructions which produce multiple results. llvm-svn: 25017
* * Removed the use of FLAG. Now use hasFlagIn and hasFlagOut instead.Evan Cheng2005-12-232-14/+23
| | | | | | | | * Added a pseudo instruction (for each target) that represent "return void". This is a workaround for lack of optional flag operand (return void is not lowered so it does not have a flag operand.) llvm-svn: 24997
* not a good ideaChris Lattner2005-12-231-1/+0
| | | | llvm-svn: 24991
* fix something-oChris Lattner2005-12-231-1/+1
| | | | llvm-svn: 24987
* implement vaarg. Varargs now should work.Chris Lattner2005-12-231-2/+13
| | | | llvm-svn: 24986
* implement vastart. The dag isel compiles this:Chris Lattner2005-12-231-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | void test3(va_list Y); void test2(int F, ...) { va_list X; va_start(X, F); test3(X); } into this: test2: save -104, %o6, %o6 st %i5, [%i6+88] st %i4, [%i6+84] st %i3, [%i6+80] st %i2, [%i6+76] st %i1, [%i6+72] add %i6, 72, %o0 st %o0, [%i6+-4] call test3 nop restore %g0, %g0, %g0 retl nop The simple isel emits: test2: save -96, %o6, %o6 st %i0, [%i6+68] st %i1, [%i6+72] st %i2, [%i6+76] st %i3, [%i6+80] st %i4, [%i6+84] st %i5, [%i6+88] or %g0, 1, %l0 or %g0, 4, %l1 umul %l0, %l1, %l0 add %l0, 7, %l0 and %l0, -8, %l0 sub %o6, %l0, %o6 add %o6, 96, %l0 add %i6, 72, %l1 st %l1, [%l0] ld [%l0], %o0 call test3 nop restore %g0, %g0, %g0 retl nop llvm-svn: 24985
* remove benchmark list, remove issues addressed by the dag-dag iselChris Lattner2005-12-231-68/+1
| | | | llvm-svn: 24984
* make sure bit_converts are expandedChris Lattner2005-12-231-0/+3
| | | | llvm-svn: 24978
* fix the int<->fp instructions, which apparently take a single float registerChris Lattner2005-12-232-26/+16
| | | | | | to represent the int part (because it's always 32-bits) llvm-svn: 24976
* Use BIT_CONVERT to simplify this codeChris Lattner2005-12-231-36/+11
| | | | llvm-svn: 24975
* clean up .td file by using evan's new FLAG thingChris Lattner2005-12-221-4/+4
| | | | llvm-svn: 24967
* Disengage DEBUG_LOC from non-PPC targets.Jim Laskey2005-12-211-0/+5
| | | | llvm-svn: 24919
* remove dead codeChris Lattner2005-12-211-4/+0
| | | | llvm-svn: 24896
* Run lower-switch after lower-invoke.Chris Lattner2005-12-201-12/+10
| | | | | | Only run lower-allocations and lower-select for the simple isel llvm-svn: 24881
* Reserve G1 for frame offset stuff and use it to handle large stack frames.Chris Lattner2005-12-202-9/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For example, instead of emitting this: test: save -40112, %o6, %o6 ;; imm too large add %i6, -40016, %o0 ;; imm too large call caller nop restore %g0, %g0, %g0 retl nop emit this: test: sethi 4194264, %g1 or %g1, 848, %g1 save %o6, %g1, %o6 sethi 4194264, %g1 add %g1, %i6, %g1 add %i1, 944, %o0 call caller nop restore %g0, %g0, %g0 retl nop which doesn't cause the assembler to barf. llvm-svn: 24880
* Fix pifft by correcting the case when a i64/f64 straddles O5 and memory:Chris Lattner2005-12-191-1/+4
| | | | | | | | we were storing into [FP+88] instead of [FP+92]. Improve codegen by emitting [FP+92], instead of emitting a copy of FP into another GPR which wouldn't be coallesced because FP isn't register allocated. llvm-svn: 24859
* don't emit 'add %o6, 0, %o6' instructionsChris Lattner2005-12-191-5/+6
| | | | llvm-svn: 24857
* Fix calls to functions returning i64Chris Lattner2005-12-191-1/+1
| | | | llvm-svn: 24856
* Correct bool truncstore operand orderChris Lattner2005-12-191-2/+2
| | | | llvm-svn: 24855
* add the other bool zextload as wellChris Lattner2005-12-191-0/+1
| | | | llvm-svn: 24854
* implement zextload boolChris Lattner2005-12-191-0/+3
| | | | llvm-svn: 24853
* mark some unsupported ops as unsupportedChris Lattner2005-12-191-0/+11
| | | | llvm-svn: 24852
* Fix syntax for indirect calls. This fixes Olden/mstChris Lattner2005-12-191-2/+2
| | | | llvm-svn: 24850
* Keep stack frames 8-byte aligned. This fixes olden/voronoiChris Lattner2005-12-191-0/+3
| | | | llvm-svn: 24849
* apparently rdy isn't actually a psuedo instruction. Use rd %yChris Lattner2005-12-191-1/+1
| | | | llvm-svn: 24848
* add fneg/fabs support for doublesChris Lattner2005-12-192-17/+37
| | | | llvm-svn: 24847
OpenPOWER on IntegriCloud