summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Fix alpha regressions.Andrew Lenharth2005-12-271-1/+1
| | | | llvm-svn: 25025
* Fix a problem duraid pointed out to me compiling kc++ with -enable-x86-fastccChris Lattner2005-12-271-0/+5
| | | | llvm-svn: 25024
* more C++ daintinessDuraid Madina2005-12-261-0/+1
| | | | llvm-svn: 25023
* I bet pinski knows why g++ accepts this stuffDuraid Madina2005-12-262-0/+3
| | | | llvm-svn: 25022
* getting there...Duraid Madina2005-12-261-0/+1
| | | | llvm-svn: 25021
* dum de dumDuraid Madina2005-12-261-0/+1
| | | | llvm-svn: 25018
* Added field noResults to Instruction.Evan Cheng2005-12-266-41/+41
| | | | | | | | | | | | 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
* more HP-UX cleanlinessDuraid Madina2005-12-261-0/+1
| | | | llvm-svn: 25015
* HP aCC chokes on this, but it's not required anyway: according toDuraid Madina2005-12-261-2/+0
| | | | | | | | the bzip2 homepage, only ancient (gcc 2.7.x ?) versions of GCC require this? It certainly isn't needed for the current bzip2 sources. llvm-svn: 25013
* MERRY CHRISTMAS EVERYONE!!! (what better way to spend christmas thanDuraid Madina2005-12-261-0/+1
| | | | | | | to try building LLVM on HP-UX! (the Right Way seems to be to tear out the ancient STL that HP ship and use http://incubator.apache.org/stdcxx/ ) llvm-svn: 25012
* add br pattern, unify JSR and BSR ISel instrs, and add BSR support for DAGAndrew Lenharth2005-12-255-32/+38
| | | | llvm-svn: 25011
* unbreak calls, a few more tests should run. Tomorrow: bugpoint!Duraid Madina2005-12-251-2/+1
| | | | llvm-svn: 25010
* we don't feed our call instructions extra operandsDuraid Madina2005-12-251-3/+3
| | | | llvm-svn: 25009
* All that just to lower div and remAndrew Lenharth2005-12-255-131/+78
| | | | llvm-svn: 25008
* allow custom lowering to return null for legal resultsAndrew Lenharth2005-12-251-17/+15
| | | | llvm-svn: 25007
* Support Custom lowering of a few more operations.Andrew Lenharth2005-12-241-5/+31
| | | | | | Alpha needs to custom lower *DIV and *REM llvm-svn: 25006
* support targetexternalsymAndrew Lenharth2005-12-241-13/+16
| | | | llvm-svn: 25005
* Let the helper functions know about X86::FR32RegClass and X86::FR64RegClass.Evan Cheng2005-12-241-6/+6
| | | | llvm-svn: 25004
* All addressing modes are now exposed. The only remaining relocated formsAndrew Lenharth2005-12-245-27/+48
| | | | | | | | | are for function prologue. TODO: move external symbols over to using RelLit. : have a pattern that matches constpool|globaladdr : have a pattern that matches (add x imm) -> x, imm or (...) -> ..., 0 llvm-svn: 25003
* Unify the patterns for loads and stores. Now offset addressing should beAndrew Lenharth2005-12-242-169/+96
| | | | | | supported. This almost completes memory operations. llvm-svn: 25002
* Let's see if we can break things.Andrew Lenharth2005-12-245-51/+172
| | | | | | | | Lower GOT relative addresses to Lo and HI. Update both ISels to select them when they can. Saves instructions here and there. llvm-svn: 25001
* move loads and stores over. Smart addr selection commingAndrew Lenharth2005-12-243-58/+53
| | | | llvm-svn: 25000
* Fix one of the things in the todo file, and get a bit closer to foldingNate Begeman2005-12-244-39/+25
| | | | | | constant offsets from statics into the address arithmetic. llvm-svn: 24999
* * Removed the use of FLAG. Now use hasFlagIn and hasFlagOut instead.Evan Cheng2005-12-238-37/+52
| | | | | | | | * 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
* Remove redundant debug locations.Jim Laskey2005-12-231-0/+34
| | | | llvm-svn: 24995
* unbreak the build :-/Chris Lattner2005-12-231-3/+3
| | | | llvm-svn: 24992
* not a good ideaChris Lattner2005-12-231-1/+0
| | | | llvm-svn: 24991
* More X86 floating point patterns.Evan Cheng2005-12-233-182/+275
| | | | llvm-svn: 24990
* Operand 1 of TRUNCSTORE can be any of integer and floating point types.Evan Cheng2005-12-231-1/+1
| | | | llvm-svn: 24989
* Allow custom lowering of LOAD, EXTLOAD, ZEXTLOAD, STORE, and TRUNCSTORE. NotEvan Cheng2005-12-231-15/+84
| | | | | | currently used. llvm-svn: 24988
* 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
* Simplify store(bitconv(x)) to store(x). This allows us to compile this:Chris Lattner2005-12-231-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | void bar(double Y, double *X) { *X = Y; } to this: bar: save -96, %o6, %o6 st %i1, [%i2+4] st %i0, [%i2] restore %g0, %g0, %g0 retl nop instead of this: bar: save -104, %o6, %o6 st %i1, [%i6+-4] st %i0, [%i6+-8] ldd [%i6+-8], %f0 std %f0, [%i2] restore %g0, %g0, %g0 retl nop on sparcv8. llvm-svn: 24983
* fold (conv (load x)) -> (load (conv*)x).Chris Lattner2005-12-231-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to compile this: void foo(double); void bar(double *X) { foo(*X); } To this: bar: save -96, %o6, %o6 ld [%i0+4], %o1 ld [%i0], %o0 call foo nop restore %g0, %g0, %g0 retl nop instead of this: bar: save -104, %o6, %o6 ldd [%i0], %f0 std %f0, [%i6+-8] ld [%i6+-4], %o1 ld [%i6+-8], %o0 call foo nop restore %g0, %g0, %g0 retl nop on SparcV8. llvm-svn: 24982
* Fold bitconv(bitconv(x)) -> x. We now compile this:Chris Lattner2005-12-232-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | void foo(double); void bar(double X) { foo(X); } to this: bar: save -96, %o6, %o6 or %g0, %i0, %o0 or %g0, %i1, %o1 call foo nop restore %g0, %g0, %g0 retl nop instead of this: bar: save -112, %o6, %o6 st %i1, [%i6+-4] st %i0, [%i6+-8] ldd [%i6+-8], %f0 std %f0, [%i6+-16] ld [%i6+-12], %o1 ld [%i6+-16], %o0 call foo nop restore %g0, %g0, %g0 retl nop on V8. llvm-svn: 24981
* constant fold bits_convert in getNode and in the dag combiner for fp<->intChris Lattner2005-12-232-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | conversions. This allows V8 to compiles this: void %test() { call float %test2( float 1.000000e+00, float 2.000000e+00, double 3.000000e+00, double* null ) ret void } into: test: save -96, %o6, %o6 sethi 0, %o3 sethi 1049088, %o2 sethi 1048576, %o1 sethi 1040384, %o0 or %g0, %o3, %o4 call test2 nop restore %g0, %g0, %g0 retl nop instead of: test: save -112, %o6, %o6 sethi 0, %o4 sethi 1049088, %l0 st %o4, [%i6+-12] st %l0, [%i6+-16] ld [%i6+-12], %o3 ld [%i6+-16], %o2 sethi 1048576, %o1 sethi 1040384, %o0 call test2 nop restore %g0, %g0, %g0 retl nop llvm-svn: 24980
* make sure bit_convert's are expandedChris Lattner2005-12-231-0/+3
| | | | llvm-svn: 24979
* make sure bit_converts are expandedChris Lattner2005-12-232-0/+6
| | | | 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
* Simplify some code by using BIT_CONVERTChris Lattner2005-12-231-21/+10
| | | | llvm-svn: 24974
* Fix a pastoChris Lattner2005-12-231-2/+3
| | | | llvm-svn: 24973
* fix a thinko in the bit_convert handling codeChris Lattner2005-12-231-2/+1
| | | | llvm-svn: 24972
* add very simple support for the BIT_CONVERT nodeChris Lattner2005-12-232-2/+57
| | | | llvm-svn: 24970
* Revert previous patch. Additional tests fail.Reid Spencer2005-12-221-3/+0
| | | | llvm-svn: 24968
* clean up .td file by using evan's new FLAG thingChris Lattner2005-12-221-4/+4
| | | | llvm-svn: 24967
* remove dead codeChris Lattner2005-12-225-37/+0
| | | | llvm-svn: 24965
* fix handling of weak linkageChris Lattner2005-12-221-3/+2
| | | | llvm-svn: 24964
OpenPOWER on IntegriCloud