summaryrefslogtreecommitdiff
path: root/apps/codecs/libffmpegFLAC
diff options
context:
space:
mode:
authorThom Johansen <thomj@rockbox.org>2006-03-17 00:31:15 +0000
committerThom Johansen <thomj@rockbox.org>2006-03-17 00:31:15 +0000
commit4ba14d91135f75e98987887679b7b3d6bccb3120 (patch)
tree46f42025c8fb81feef1a429271697cce743f3e1d /apps/codecs/libffmpegFLAC
parentfa60e306d1ddb09ddca1f8b5e1c333ce18e6788c (diff)
downloadrockbox-4ba14d91135f75e98987887679b7b3d6bccb3120.zip
rockbox-4ba14d91135f75e98987887679b7b3d6bccb3120.tar.gz
rockbox-4ba14d91135f75e98987887679b7b3d6bccb3120.tar.bz2
rockbox-4ba14d91135f75e98987887679b7b3d6bccb3120.tar.xz
Free one register extra so we can block load a bit more.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9069 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libffmpegFLAC')
-rw-r--r--apps/codecs/libffmpegFLAC/arm.S26
1 files changed, 12 insertions, 14 deletions
diff --git a/apps/codecs/libffmpegFLAC/arm.S b/apps/codecs/libffmpegFLAC/arm.S
index eba2251..27b38ef 100644
--- a/apps/codecs/libffmpegFLAC/arm.S
+++ b/apps/codecs/libffmpegFLAC/arm.S
@@ -217,18 +217,15 @@ lpc_decode_arm:
/* we do the filtering in an unrolled by 4 loop as far as we can, and then
do the rest by jump table. */
add r5, r4, r2, lsl #2 @ need to start in the other end of coefs
- mov r6, r3 @ working copy of history pointer
mov r7, r2, lsr #2 @ r7 = coefs/4
- mov r14, #0 @ init accumulator
+ mov r14, #0 @ init accumulator
.dloop1:
ldmdb r5!, { r8-r11 }
- ldr r12, [r6], #4
- mla r14, r12, r11, r14
- ldr r12, [r6], #4
+ ldmia r3!, { r6, r12 }
+ mla r14, r6, r11, r14
mla r14, r12, r10, r14
- ldr r12, [r6], #4
- mla r14, r12, r9, r14
- ldr r12, [r6], #4
+ ldmia r3!, { r6, r12 }
+ mla r14, r6, r9, r14
mla r14, r12, r8, r14
subs r7, r7, #1
bne .dloop1
@@ -242,24 +239,25 @@ lpc_decode_arm:
b .twoleft
@ implicit .threeleft
ldr r12, [r5, #-4]!
- ldr r8, [r6], #4
+ ldr r8, [r3], #4
mla r14, r12, r8, r14
.twoleft:
ldr r12, [r5, #-4]!
- ldr r8, [r6], #4
+ ldr r8, [r3], #4
mla r14, r12, r8, r14
.oneleft:
ldr r12, [r5, #-4]!
- ldr r8, [r6], #4
+ ldr r8, [r3], #4
mla r14, r12, r8, r14
.dsave:
- ldr r12, [r6] @ load residual
+ ldr r12, [r3] @ load residual
add r14, r12, r14, asr r1 @ shift sum by qlevel bits and add residual
- str r14, [r6] @ store result
- add r3, r3, #4 @ increment history pointer
+ str r14, [r3], #4 @ store result
+ sub r3, r3, r2, lsl #2 @ and wrap history pointer back to next first pos
subs r0, r0, #1 @ are we done?
bne .default @ no, prepare for next sample
.exit:
ldmia sp!, { r4-r11, pc }
+