| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 25007
|
| |
|
|
|
|
| |
Alpha needs to custom lower *DIV and *REM
llvm-svn: 25006
|
| |
|
|
| |
llvm-svn: 25005
|
| |
|
|
| |
llvm-svn: 25004
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
supported. This almost completes memory operations.
llvm-svn: 25002
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 25000
|
| |
|
|
|
|
| |
constant offsets from statics into the address arithmetic.
llvm-svn: 24999
|
| |
|
|
|
|
|
| |
Don't install contents of CVS directories and don't double install when
srcdir == objdir.
llvm-svn: 24998
|
| |
|
|
|
|
|
|
| |
* 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 which is fragile.
* Fixed a number of bugs.
llvm-svn: 24996
|
| |
|
|
| |
llvm-svn: 24995
|
| |
|
|
| |
llvm-svn: 24994
|
| |
|
|
| |
llvm-svn: 24993
|
| |
|
|
| |
llvm-svn: 24992
|
| |
|
|
| |
llvm-svn: 24991
|
| |
|
|
| |
llvm-svn: 24990
|
| |
|
|
| |
llvm-svn: 24989
|
| |
|
|
|
|
| |
currently used.
llvm-svn: 24988
|
| |
|
|
| |
llvm-svn: 24987
|
| |
|
|
| |
llvm-svn: 24986
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 24984
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 24979
|
| |
|
|
| |
llvm-svn: 24978
|
| |
|
|
| |
llvm-svn: 24977
|
| |
|
|
|
|
| |
to represent the int part (because it's always 32-bits)
llvm-svn: 24976
|
| |
|
|
| |
llvm-svn: 24975
|
| |
|
|
| |
llvm-svn: 24974
|
| |
|
|
| |
llvm-svn: 24973
|
| |
|
|
| |
llvm-svn: 24972
|
| |
|
|
| |
llvm-svn: 24971
|
| |
|
|
| |
llvm-svn: 24970
|
| |
|
|
| |
llvm-svn: 24969
|
| |
|
|
| |
llvm-svn: 24968
|
| |
|
|
| |
llvm-svn: 24967
|
| |
|
|
| |
llvm-svn: 24966
|
| |
|
|
| |
llvm-svn: 24965
|
| |
|
|
| |
llvm-svn: 24964
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 24962
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
| |
rework.
llvm-svn: 24959
|
| |
|
|
| |
llvm-svn: 24956
|