- Dec 23, 2005
-
-
Jim Laskey authored
llvm-svn: 24995
-
Chris Lattner authored
llvm-svn: 24992
-
Chris Lattner authored
llvm-svn: 24991
-
Evan Cheng authored
llvm-svn: 24990
-
Evan Cheng authored
llvm-svn: 24989
-
Evan Cheng authored
currently used. llvm-svn: 24988
-
Chris Lattner authored
llvm-svn: 24987
-
Chris Lattner authored
llvm-svn: 24986
-
Chris Lattner authored
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
-
Chris Lattner authored
llvm-svn: 24984
-
Chris Lattner authored
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
-
Chris Lattner authored
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
-
Chris Lattner authored
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
-
Chris Lattner authored
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
-
Chris Lattner authored
llvm-svn: 24979
-
Chris Lattner authored
llvm-svn: 24978
-
Chris Lattner authored
to represent the int part (because it's always 32-bits) llvm-svn: 24976
-
Chris Lattner authored
llvm-svn: 24975
-
Chris Lattner authored
llvm-svn: 24974
-
Chris Lattner authored
llvm-svn: 24973
-
Chris Lattner authored
llvm-svn: 24972
-
Chris Lattner authored
llvm-svn: 24970
-
- Dec 22, 2005
-
-
Reid Spencer authored
llvm-svn: 24968
-
Chris Lattner authored
llvm-svn: 24967
-
Chris Lattner authored
llvm-svn: 24965
-
Chris Lattner authored
llvm-svn: 24964
-
Reid Spencer authored
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
-
Reid Spencer authored
* 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
-
Chris Lattner authored
llvm-svn: 24956
-
Duraid Madina authored
whimper out of doing things the Right Way, and hack up a generic 'BRCALL' instruction, that gets generated when calls are lowered. This gets selected by hand in the DAG isel, where it gets turned into real (i.e. in tablegen) br.call instructions. BUG: this dies on void calls, but seems to work otherwise? llvm-svn: 24952
-
Duraid Madina authored
llvm-svn: 24951
-
Duraid Madina authored
llvm-svn: 24950
-
Duraid Madina authored
llvm-svn: 24948
-
Duraid Madina authored
BUG: calling printf(string, float) will load the float into the wrong register, completely forget about loading the string, etce llvm-svn: 24947
-
Duraid Madina authored
to IA64ISD llvm-svn: 24946
-
Chris Lattner authored
the rough idea sketched out in http://nondot.org/sabre/LLVMNotes/CallGraphClass.txt, allowing new spiffy implementations of the callgraph interface to be built. Many thanks to Saem Ghani for contributing this! llvm-svn: 24944
-
Chris Lattner authored
llvm-svn: 24943
-
Duraid Madina authored
i.e. r1/r12/rp are saved/restored regardless of scheduling/luck TODO: calls to external symbols, indirect (function descriptor) calls, performance (we're being paranoid right now) BUG: the code for handling calls to vararg functions breaks if FP args are passed (this will make printf() go haywire so a bunch of tests will fail) BUG: this seems to trigger some legalize nastiness llvm-svn: 24942
-
Duraid Madina authored
SPARCv8. (we copy sparcv8's workaround for tablegen not being nice about ISD::CALL/TAILCALL) llvm-svn: 24941
-
Duraid Madina authored
llvm-svn: 24939
-