1
0
mirror of https://github.com/XProger/OpenLara.git synced 2025-08-16 10:04:28 +02:00

#368 GBA more conditional muls, matrixSetIdentity_asm optimization

This commit is contained in:
XProger
2022-12-04 05:33:50 +03:00
parent 5c135242f5
commit 17d13c4ae0
3 changed files with 20 additions and 15 deletions

View File

@@ -110,13 +110,14 @@
ldrsh vx2, [vp2, #VERTEX_X]
ldrsh vy1, [vp1, #VERTEX_Y]
rsb vx2, vx2, vx0, asr #16 // reverse order for mla
sub vy1, vy1, vy0, asr #16
mul vy1, vx2, vy1
subs vy1, vy1, vy0, asr #16
mulne vy1, vx2, vy1
ldrsh vx1, [vp1, #VERTEX_X]
sub vx0, vx1, vx0, asr #16
ldrsh vy2, [vp2, #VERTEX_Y]
sub vy0, vy2, vy0, asr #16
mlas vy1, vx0, vy0, vy1
subs vy0, vy2, vy0, asr #16
mulne vy0, vx0, vy0
adds vy1, vy0
ble \skip
.endm

View File

@@ -4,12 +4,15 @@ e0 .req r0
e1 .req r1
e2 .req r2
e3 .req r3
e4 .req r12
m .req lr
// FIQ regs
e4 .req r8
e5 .req r9
e6 .req r10
m .req r11
.global matrixSetIdentity_asm
matrixSetIdentity_asm:
stmfd sp!, {lr}
fiq_on
ldr m, =gMatrixPtr
ldr m, [m]
mov e0, #0x4000
@@ -17,15 +20,16 @@ matrixSetIdentity_asm:
mov e2, #0
mov e3, #0
mov e4, #0
mov e5, #0x4000
mov e6, #0
// row-major
// e0 e1 e2 e3
// e4 e0 e1 e2
// e3 e4 e0 e1
// e4 e5 e6 e2
// e3 e4 e5 e6
stmia m!, {e0, e1, e2, e3, e4}
stmia m!, {e0, e1, e2, e3, e4}
stmia m!, {e0, e1}
stmia m!, {e0, e1, e2, e3, e4, e5, e6}
stmia m!, {e2, e3, e4, e5, e6}
ldmfd sp!, {lr}
fiq_off
bx lr

View File

@@ -29,8 +29,8 @@ out .req size
.macro pcm_sample_fetch
ldrb out, [data, pos, lsr #SND_FIXED_SHIFT]
add pos, inc
sub out, #128
mul out, volume
subs out, #128
mulne out, volume
.endm
.macro pcm_sample_fill