diff options
author | notaz | 2015-01-10 01:55:24 +0200 |
---|---|---|
committer | notaz | 2015-01-10 01:57:55 +0200 |
commit | 3bd31caf9e9f5ddab2bf4fbdb5a129f4972c45f3 (patch) | |
tree | 3035dee6dad211c86861f2b827ff3130b8361220 /plugins/dfsound/arm_utils.S | |
parent | de4a0279efefdd2e4595c8fc27f1564f4bff9341 (diff) | |
download | pcsx_rearmed-3bd31caf9e9f5ddab2bf4fbdb5a129f4972c45f3.tar.gz pcsx_rearmed-3bd31caf9e9f5ddab2bf4fbdb5a129f4972c45f3.tar.bz2 pcsx_rearmed-3bd31caf9e9f5ddab2bf4fbdb5a129f4972c45f3.zip |
spu: support multiple pending buffers
for threaded implementation
Diffstat (limited to 'plugins/dfsound/arm_utils.S')
-rw-r--r-- | plugins/dfsound/arm_utils.S | 38 |
1 files changed, 10 insertions, 28 deletions
diff --git a/plugins/dfsound/arm_utils.S b/plugins/dfsound/arm_utils.S index 2511bb3..9652313 100644 --- a/plugins/dfsound/arm_utils.S +++ b/plugins/dfsound/arm_utils.S @@ -14,7 +14,6 @@ .data .align 2 ptr_ChanBuf: .word ESYM(ChanBuf) -ptr_SSumLR: .word ESYM(SSumLR) #endif .text @@ -36,15 +35,11 @@ ptr_SSumLR: .word ESYM(SSumLR) #ifdef __ARM_NEON__ -FUNCTION(mix_chan): @ (int start, int count, int lv, int rv) +FUNCTION(mix_chan): @ (int *SSumLR, int count, int lv, int rv) vmov.32 d14[0], r2 vmov.32 d14[1], r3 @ multipliers - load_varadr r2, SSumLR - mov r12, r0 + mov r2, r0 load_varadr r0, ChanBuf - ldr r2, [r2] - add r0, r12, lsl #2 - add r2, r12, lsl #3 0: vldmia r0!, {d0-d1} vldmia r2, {d2-d5} @@ -70,17 +65,12 @@ mc_finish: bx lr -FUNCTION(mix_chan_rvb): @ (int start, int count, int lv, int rv, int *rvb) +FUNCTION(mix_chan_rvb): @ (int *SSumLR, int count, int lv, int rv, int *rvb) vmov.32 d14[0], r2 vmov.32 d14[1], r3 @ multipliers - load_varadr r2, SSumLR - mov r12, r0 + mov r2, r0 load_varadr r0, ChanBuf ldr r3, [sp] @ rvb - ldr r2, [r2] - add r0, r12, lsl #2 - add r2, r12, lsl #3 - add r3, r12, lsl #3 0: vldmia r0!, {d0-d1} vldmia r2, {d2-d5} @@ -114,16 +104,12 @@ mcr_finish: #elif defined(HAVE_ARMV5) -FUNCTION(mix_chan): @ (int start, int count, int lv, int rv) +FUNCTION(mix_chan): @ (int *SSumLR, int count, int lv, int rv) stmfd sp!, {r4-r8,lr} orr r3, r2, r3, lsl #16 lsl r3, #1 @ packed multipliers << 1 - load_varadr r2, SSumLR - mov r12, r0 + mov r2, r0 load_varadr r0, ChanBuf - ldr r2, [r2] - add r0, r12, lsl #2 - add r2, r12, lsl #3 0: ldmia r0!, {r4,r5} ldmia r2, {r6-r8,lr} @@ -144,17 +130,13 @@ mc_finish: ldmfd sp!, {r4-r8,pc} -FUNCTION(mix_chan_rvb): @ (int start, int count, int lv, int rv, int *rvb) +FUNCTION(mix_chan_rvb): @ (int *SSumLR, int count, int lv, int rv, int *rvb) stmfd sp!, {r4-r8,lr} orr lr, r2, r3, lsl #16 lsl lr, #1 - load_varadr r2, SSumLR - ldr r3, [sp] @ rvb - ldr r2, [r2] - load_varadr r4, ChanBuf - add r2, r2, r0, lsl #3 - add r3, r3, r0, lsl #3 - add r0, r4, r0, lsl #2 + mov r2, r0 + load_varadr r0, ChanBuf + ldr r3, [sp, #6*4] @ rvb 0: ldr r4, [r0], #4 ldmia r2, {r6,r7} |