mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-02 07:32:52 +00:00
several entries got significantly better, though they still aren't done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44382 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f1b1c5ed1a
commit
a3f61df4ff
@ -186,24 +186,19 @@ double bar(double x) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_bar:
|
_bar:
|
||||||
sub sp, sp, #16
|
stmfd sp!, {r4, r5, r7, lr}
|
||||||
str r4, [sp, #+12]
|
add r7, sp, #8
|
||||||
str r5, [sp, #+8]
|
mov r4, r0
|
||||||
str lr, [sp, #+4]
|
mov r5, r1
|
||||||
mov r4, r0
|
fldd d0, LCPI1_0
|
||||||
mov r5, r1
|
fmrrd r0, r1, d0
|
||||||
ldr r0, LCPI2_0
|
bl _foo
|
||||||
bl _foo
|
fmdrr d0, r4, r5
|
||||||
fmsr f0, r0
|
fmsr s2, r0
|
||||||
fcvtsd d0, f0
|
fsitod d1, s2
|
||||||
fmdrr d1, r4, r5
|
faddd d0, d1, d0
|
||||||
faddd d0, d0, d1
|
fmrrd r0, r1, d0
|
||||||
fmrrd r0, r1, d0
|
ldmfd sp!, {r4, r5, r7, pc}
|
||||||
ldr lr, [sp, #+4]
|
|
||||||
ldr r5, [sp, #+8]
|
|
||||||
ldr r4, [sp, #+12]
|
|
||||||
add sp, sp, #16
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
Ignore the prologue and epilogue stuff for a second. Note
|
Ignore the prologue and epilogue stuff for a second. Note
|
||||||
mov r4, r0
|
mov r4, r0
|
||||||
@ -501,32 +496,15 @@ Should compile to use SMLAL (Signed Multiply Accumulate Long) which multiplies
|
|||||||
two signed 32-bit values to produce a 64-bit value, and accumulates this with
|
two signed 32-bit values to produce a 64-bit value, and accumulates this with
|
||||||
a 64-bit value.
|
a 64-bit value.
|
||||||
|
|
||||||
We currently get this with v6:
|
We currently get this with both v4 and v6:
|
||||||
|
|
||||||
_foo:
|
_foo:
|
||||||
mul r12, r1, r0
|
smull r1, r0, r1, r0
|
||||||
smmul r1, r1, r0
|
smull r3, r2, r3, r2
|
||||||
smmul r0, r3, r2
|
adds r3, r3, r1
|
||||||
mul r3, r3, r2
|
adc r0, r2, r0
|
||||||
adds r3, r3, r12
|
|
||||||
adc r0, r0, r1
|
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
and this with v4:
|
|
||||||
|
|
||||||
_foo:
|
|
||||||
stmfd sp!, {r7, lr}
|
|
||||||
mov r7, sp
|
|
||||||
mul r12, r1, r0
|
|
||||||
smull r0, r1, r1, r0
|
|
||||||
smull lr, r0, r3, r2
|
|
||||||
mul r3, r3, r2
|
|
||||||
adds r3, r3, r12
|
|
||||||
adc r0, r0, r1
|
|
||||||
ldmfd sp!, {r7, pc}
|
|
||||||
|
|
||||||
This apparently occurs in real code.
|
|
||||||
|
|
||||||
//===---------------------------------------------------------------------===//
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
||||||
This:
|
This:
|
||||||
|
Loading…
Reference in New Issue
Block a user