summaryrefslogtreecommitdiff
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
parentfa60e306d1ddb09ddca1f8b5e1c333ce18e6788c (diff)
downloadrockbox-4ba14d91135f75e98987887679b7b3d6bccb3120.tar.gz
rockbox-4ba14d91135f75e98987887679b7b3d6bccb3120.zip
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
-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 eba2251908..27b38efa8d 100644
--- a/apps/codecs/libffmpegFLAC/arm.S
+++ b/apps/codecs/libffmpegFLAC/arm.S
@@ -217,18 +217,15 @@ lpc_decode_arm:
217 /* we do the filtering in an unrolled by 4 loop as far as we can, and then 217 /* we do the filtering in an unrolled by 4 loop as far as we can, and then
218 do the rest by jump table. */ 218 do the rest by jump table. */
219 add r5, r4, r2, lsl #2 @ need to start in the other end of coefs 219 add r5, r4, r2, lsl #2 @ need to start in the other end of coefs
220 mov r6, r3 @ working copy of history pointer
221 mov r7, r2, lsr #2 @ r7 = coefs/4 220 mov r7, r2, lsr #2 @ r7 = coefs/4
222 mov r14, #0 @ init accumulator 221 mov r14, #0 @ init accumulator
223.dloop1: 222.dloop1:
224 ldmdb r5!, { r8-r11 } 223 ldmdb r5!, { r8-r11 }
225 ldr r12, [r6], #4 224 ldmia r3!, { r6, r12 }
226 mla r14, r12, r11, r14 225 mla r14, r6, r11, r14
227 ldr r12, [r6], #4
228 mla r14, r12, r10, r14 226 mla r14, r12, r10, r14
229 ldr r12, [r6], #4 227 ldmia r3!, { r6, r12 }
230 mla r14, r12, r9, r14 228 mla r14, r6, r9, r14
231 ldr r12, [r6], #4
232 mla r14, r12, r8, r14 229 mla r14, r12, r8, r14
233 subs r7, r7, #1 230 subs r7, r7, #1
234 bne .dloop1 231 bne .dloop1
@@ -242,24 +239,25 @@ lpc_decode_arm:
242 b .twoleft 239 b .twoleft
243@ implicit .threeleft 240@ implicit .threeleft
244 ldr r12, [r5, #-4]! 241 ldr r12, [r5, #-4]!
245 ldr r8, [r6], #4 242 ldr r8, [r3], #4
246 mla r14, r12, r8, r14 243 mla r14, r12, r8, r14
247.twoleft: 244.twoleft:
248 ldr r12, [r5, #-4]! 245 ldr r12, [r5, #-4]!
249 ldr r8, [r6], #4 246 ldr r8, [r3], #4
250 mla r14, r12, r8, r14 247 mla r14, r12, r8, r14
251.oneleft: 248.oneleft:
252 ldr r12, [r5, #-4]! 249 ldr r12, [r5, #-4]!
253 ldr r8, [r6], #4 250 ldr r8, [r3], #4
254 mla r14, r12, r8, r14 251 mla r14, r12, r8, r14
255 252
256.dsave: 253.dsave:
257 ldr r12, [r6] @ load residual 254 ldr r12, [r3] @ load residual
258 add r14, r12, r14, asr r1 @ shift sum by qlevel bits and add residual 255 add r14, r12, r14, asr r1 @ shift sum by qlevel bits and add residual
259 str r14, [r6] @ store result 256 str r14, [r3], #4 @ store result
260 add r3, r3, #4 @ increment history pointer 257 sub r3, r3, r2, lsl #2 @ and wrap history pointer back to next first pos
261 subs r0, r0, #1 @ are we done? 258 subs r0, r0, #1 @ are we done?
262 bne .default @ no, prepare for next sample 259 bne .default @ no, prepare for next sample
263 260
264.exit: 261.exit:
265 ldmia sp!, { r4-r11, pc } 262 ldmia sp!, { r4-r11, pc }
263