summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* 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-242-13/+20
| | | | 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
* For PR625:Reid Spencer2005-12-231-1/+3
| | | | | | | Don't install contents of CVS directories and don't double install when srcdir == objdir. llvm-svn: 24998
* * 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
* * Support for hasInFlag and hasOutFlag (on instructions). Remove nameless FLAGEvan Cheng2005-12-234-109/+122
| | | | | | | support which is fragile. * Fixed a number of bugs. llvm-svn: 24996
* Remove redundant debug locations.Jim Laskey2005-12-231-0/+34
| | | | llvm-svn: 24995
* this test failsChris Lattner2005-12-231-0/+1
| | | | llvm-svn: 24994
* this test is malformedChris Lattner2005-12-231-1/+1
| | | | llvm-svn: 24993
* 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
* Get bugpoint building with VC++ again.Jeff Cohen2005-12-231-0/+1
| | | | llvm-svn: 24977
* 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
* improve comment: mention vectorsChris Lattner2005-12-231-3/+4
| | | | llvm-svn: 24971
* add very simple support for the BIT_CONVERT nodeChris Lattner2005-12-232-2/+57
| | | | llvm-svn: 24970
* add a new nodeChris Lattner2005-12-231-0/+7
| | | | llvm-svn: 24969
* 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 a dead nodeChris Lattner2005-12-222-10/+0
| | | | llvm-svn: 24966
* remove dead codeChris Lattner2005-12-225-37/+0
| | | | llvm-svn: 24965
* fix handling of weak linkageChris Lattner2005-12-221-3/+2
| | | | llvm-svn: 24964
* Fix PR409:Reid Spencer2005-12-224-6/+9
| | | | | | | | Implement the suggested check to ensure that out-of-range float constants don't get accepted by LLVM accidentally. Adjust the supporting test cases as well. llvm-svn: 24963
* silence some bogus gcc warningsChris Lattner2005-12-221-2/+2
| | | | llvm-svn: 24962
* For PR351:Reid Spencer2005-12-224-65/+97
| | | | | | | | | | | | Generally, remove use of fork/exec from bugpoint in favor of the portable sys::Program::ExecuteAndWait method. This change requires two new options to bugpoint to tell it that it is running in "child" mode. In this mode, it reads its input and runs the passes. The result code signals to the parent instance of bugpoint what happened (success, fail, crash). This change should make bugpoint usable on Win32 systems. llvm-svn: 24961
* For PR351:Reid Spencer2005-12-221-7/+12
| | | | | | | | * Allow the ExecuteAndWait to return negative values if a signal is detected as the reason for the child termination. This is needed to support bugpoint detecting bad things in its child processes. llvm-svn: 24960
* Fix test/Regression/Other/2002-01-31-CallGraph.ll after the recent callgraphChris Lattner2005-12-221-3/+17
| | | | | | rework. llvm-svn: 24959
* move some random notes out of my email into someplace usefulChris Lattner2005-12-221-0/+32
| | | | llvm-svn: 24956
OpenPOWER on IntegriCloud