mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-17 18:36:43 +02:00
#368 GBA more conditional muls, matrixSetIdentity_asm optimization
This commit is contained in:
@@ -110,13 +110,14 @@
|
|||||||
ldrsh vx2, [vp2, #VERTEX_X]
|
ldrsh vx2, [vp2, #VERTEX_X]
|
||||||
ldrsh vy1, [vp1, #VERTEX_Y]
|
ldrsh vy1, [vp1, #VERTEX_Y]
|
||||||
rsb vx2, vx2, vx0, asr #16 // reverse order for mla
|
rsb vx2, vx2, vx0, asr #16 // reverse order for mla
|
||||||
sub vy1, vy1, vy0, asr #16
|
subs vy1, vy1, vy0, asr #16
|
||||||
mul vy1, vx2, vy1
|
mulne vy1, vx2, vy1
|
||||||
ldrsh vx1, [vp1, #VERTEX_X]
|
ldrsh vx1, [vp1, #VERTEX_X]
|
||||||
sub vx0, vx1, vx0, asr #16
|
sub vx0, vx1, vx0, asr #16
|
||||||
ldrsh vy2, [vp2, #VERTEX_Y]
|
ldrsh vy2, [vp2, #VERTEX_Y]
|
||||||
sub vy0, vy2, vy0, asr #16
|
subs vy0, vy2, vy0, asr #16
|
||||||
mlas vy1, vx0, vy0, vy1
|
mulne vy0, vx0, vy0
|
||||||
|
adds vy1, vy0
|
||||||
ble \skip
|
ble \skip
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
@@ -4,12 +4,15 @@ e0 .req r0
|
|||||||
e1 .req r1
|
e1 .req r1
|
||||||
e2 .req r2
|
e2 .req r2
|
||||||
e3 .req r3
|
e3 .req r3
|
||||||
e4 .req r12
|
// FIQ regs
|
||||||
m .req lr
|
e4 .req r8
|
||||||
|
e5 .req r9
|
||||||
|
e6 .req r10
|
||||||
|
m .req r11
|
||||||
|
|
||||||
.global matrixSetIdentity_asm
|
.global matrixSetIdentity_asm
|
||||||
matrixSetIdentity_asm:
|
matrixSetIdentity_asm:
|
||||||
stmfd sp!, {lr}
|
fiq_on
|
||||||
ldr m, =gMatrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
mov e0, #0x4000
|
mov e0, #0x4000
|
||||||
@@ -17,15 +20,16 @@ matrixSetIdentity_asm:
|
|||||||
mov e2, #0
|
mov e2, #0
|
||||||
mov e3, #0
|
mov e3, #0
|
||||||
mov e4, #0
|
mov e4, #0
|
||||||
|
mov e5, #0x4000
|
||||||
|
mov e6, #0
|
||||||
|
|
||||||
// row-major
|
// row-major
|
||||||
// e0 e1 e2 e3
|
// e0 e1 e2 e3
|
||||||
// e4 e0 e1 e2
|
// e4 e5 e6 e2
|
||||||
// e3 e4 e0 e1
|
// e3 e4 e5 e6
|
||||||
|
|
||||||
stmia m!, {e0, e1, e2, e3, e4}
|
stmia m!, {e0, e1, e2, e3, e4, e5, e6}
|
||||||
stmia m!, {e0, e1, e2, e3, e4}
|
stmia m!, {e2, e3, e4, e5, e6}
|
||||||
stmia m!, {e0, e1}
|
|
||||||
|
|
||||||
ldmfd sp!, {lr}
|
fiq_off
|
||||||
bx lr
|
bx lr
|
||||||
|
@@ -29,8 +29,8 @@ out .req size
|
|||||||
.macro pcm_sample_fetch
|
.macro pcm_sample_fetch
|
||||||
ldrb out, [data, pos, lsr #SND_FIXED_SHIFT]
|
ldrb out, [data, pos, lsr #SND_FIXED_SHIFT]
|
||||||
add pos, inc
|
add pos, inc
|
||||||
sub out, #128
|
subs out, #128
|
||||||
mul out, volume
|
mulne out, volume
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro pcm_sample_fill
|
.macro pcm_sample_fill
|
||||||
|
Reference in New Issue
Block a user