summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2010-11-09 22:19:07 +0000
committerAndree Buschmann <AndreeBuschmann@t-online.de>2010-11-09 22:19:07 +0000
commit92c38a728e93bf36a4dc5313d634d0627a84dc9e (patch)
tree732dc4eb2ebc5cba8b0e52f46de4c33644a7c1b2
parenta434a0de5cb7dfc9d8a96bd282142c5b65e329f6 (diff)
downloadrockbox-92c38a728e93bf36a4dc5313d634d0627a84dc9e.tar.gz
rockbox-92c38a728e93bf36a4dc5313d634d0627a84dc9e.zip
Roll back r28488 as it slows down mpc by 2% on S5L8701.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28545 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/codecs/libmusepack/synth_filter_arm.S27
1 files changed, 17 insertions, 10 deletions
diff --git a/apps/codecs/libmusepack/synth_filter_arm.S b/apps/codecs/libmusepack/synth_filter_arm.S
index 9bd4e04626..598f218e45 100644
--- a/apps/codecs/libmusepack/synth_filter_arm.S
+++ b/apps/codecs/libmusepack/synth_filter_arm.S
@@ -164,7 +164,7 @@ mpc_decoder_windowing_D:
164 * r10 = lo, r11 = hi of 31..17 164 * r10 = lo, r11 = hi of 31..17
165 * r12 = V[31..16] 165 * r12 = V[31..16]
166 *****************************************/ 166 *****************************************/
167 mov lr, #15*8 167 mov lr, #15
168 add r12, r1, #30*4 /* r12 = V[31] */ 168 add r12, r1, #30*4 /* r12 = V[31] */
169.loop15: 169.loop15:
170 ldmia r2!, { r3-r6 } /* load D[00..03] */ 170 ldmia r2!, { r3-r6 } /* load D[00..03] */
@@ -238,19 +238,21 @@ mpc_decoder_windowing_D:
238 /* store Data[01..15] */ 238 /* store Data[01..15] */
239 mov r8, r8, lsr #16 239 mov r8, r8, lsr #16
240 orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */ 240 orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */
241 str r8, [r0] /* store Data */
241 /* store Data[31..17] */ 242 /* store Data[31..17] */
243 add r0, r0, lr, asl #3 /* r0 = r0 + 2*lr [words] */
242 mov r10, r10, lsr #16 244 mov r10, r10, lsr #16
243 orr r10, r10, r11, lsl #16 /* (lo>>16) || (hi<<16) */ 245 orr r10, r10, r11, lsl #16 /* (lo>>16) || (hi<<16) */
244 rsb r10, r10, #0 /* r10 = -r10 */ 246 rsb r10, r10, #0 /* r10 = -r10 */
245 str r10, [r0, lr] /* store Data */ 247 str r10, [r0], #4 /* store Data */
246 str r8, [r0], #4 /* store Data */ 248 sub r0, r0, lr, asl #3 /* r0 = r0 - 2*lr [words] */
247 /* correct adresses for next loop */ 249 /* correct adresses for next loop */
248 sub r12, r12, #4 /* r12 = V-- */ 250 sub r12, r12, #4 /* r12 = V-- */
249 add r1, r1, #4 /* r1 = V++ */ 251 add r1, r1, #4 /* r1 = V++ */
250 /* next loop */ 252 /* next loop */
251 subs lr, lr, #8 253 subs lr, lr, #1
252 bgt .loop15 254 bgt .loop15
253 255
254 /****************************************** 256 /******************************************
255 * V[16] with internal symmetry 257 * V[16] with internal symmetry
256 *****************************************/ 258 *****************************************/
@@ -291,6 +293,7 @@ mpc_decoder_windowing_D:
291 mov r8, r8, lsr #16 293 mov r8, r8, lsr #16
292 orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */ 294 orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */
293 str r8, [r0], #4 /* store Data */ 295 str r8, [r0], #4 /* store Data */
296 add r1, r1, #4 /* V++ */
294 297
295 ldmpc regs=r4-r11 298 ldmpc regs=r4-r11
296#elif ARM_ARCH < 6 /* arm9 and above */ 299#elif ARM_ARCH < 6 /* arm9 and above */
@@ -362,7 +365,7 @@ mpc_decoder_windowing_D:
362 * r10 = lo, r11 = hi of 31..17 365 * r10 = lo, r11 = hi of 31..17
363 * r12 = V[31..16] 366 * r12 = V[31..16]
364 *****************************************/ 367 *****************************************/
365 mov lr, #15*8 368 mov lr, #15
366 add r12, r1, #30*4 /* r12 = V[31] */ 369 add r12, r1, #30*4 /* r12 = V[31] */
367.loop15: 370.loop15:
368 ldmia r2!, { r3-r4 } /* load D[00..01] */ 371 ldmia r2!, { r3-r4 } /* load D[00..01] */
@@ -440,17 +443,19 @@ mpc_decoder_windowing_D:
440 /* store Data[01..15] */ 443 /* store Data[01..15] */
441 mov r8, r8, lsr #16 444 mov r8, r8, lsr #16
442 orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */ 445 orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */
446 str r8, [r0] /* store Data */
443 /* store Data[31..17] */ 447 /* store Data[31..17] */
448 add r0, r0, lr, asl #3 /* r0 = r0 + 2*lr [words] */
444 mov r10, r10, lsr #16 449 mov r10, r10, lsr #16
445 orr r10, r10, r11, lsl #16 /* (lo>>16) || (hi<<16) */ 450 orr r10, r10, r11, lsl #16 /* (lo>>16) || (hi<<16) */
446 rsb r10, r10, #0 /* r10 = -r10 */ 451 rsb r10, r10, #0 /* r10 = -r10 */
447 str r10, [r0, lr] /* store Data */ 452 str r10, [r0], #4 /* store Data */
448 str r8, [r0], #4 /* store Data */ 453 sub r0, r0, lr, asl #3 /* r0 = r0 - 2*lr [words] */
449 /* correct adresses for next loop */ 454 /* correct adresses for next loop */
450 sub r12, r12, #4 /* r12 = V-- */ 455 sub r12, r12, #4 /* r12 = V-- */
451 add r1, r1, #4 /* r1 = V++ */ 456 add r1, r1, #4 /* r1 = V++ */
452 /* next loop */ 457 /* next loop */
453 subs lr, lr, #8 458 subs lr, lr, #1
454 bgt .loop15 459 bgt .loop15
455 460
456 /****************************************** 461 /******************************************
@@ -493,6 +498,7 @@ mpc_decoder_windowing_D:
493 mov r8, r8, lsr #16 498 mov r8, r8, lsr #16
494 orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */ 499 orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */
495 str r8, [r0], #4 /* store Data */ 500 str r8, [r0], #4 /* store Data */
501 add r1, r1, #4 /* V++ */
496 502
497 ldmpc regs=r4-r11 503 ldmpc regs=r4-r11
498#else 504#else
@@ -639,10 +645,11 @@ mpc_decoder_windowing_D:
639 rsb r11, r11, #0 /* r11 = -r11 */ 645 rsb r11, r11, #0 /* r11 = -r11 */
640 /* store Data[01..15] */ 646 /* store Data[01..15] */
641 mov r9, r9, lsl #2 647 mov r9, r9, lsl #2
648 str r9, [r0] /* store Data */
642 /* store Data[31..17] */ 649 /* store Data[31..17] */
643 mov r11, r11, lsl #2 650 mov r11, r11, lsl #2
644 str r11, [r0, lr] /* store Data */ 651 str r11, [r0, lr] /* store Data */
645 str r9, [r0], #4 /* store Data */ 652 add r0, r0, #4 /* r0++ */
646 /* next loop */ 653 /* next loop */
647 subs lr, lr, #8 654 subs lr, lr, #8
648 bgt .loop15 655 bgt .loop15