From 4ba14d91135f75e98987887679b7b3d6bccb3120 Mon Sep 17 00:00:00 2001 From: Thom Johansen Date: Fri, 17 Mar 2006 00:31:15 +0000 Subject: 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 --- apps/codecs/libffmpegFLAC/arm.S | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/apps/codecs/libffmpegFLAC/arm.S b/apps/codecs/libffmpegFLAC/arm.S index eba2251908..27b38efa8d 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 } + -- cgit v1.2.3