summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2010-11-05 16:21:25 +0000
committerNils Wallménius <nils@rockbox.org>2010-11-05 16:21:25 +0000
commitf174c3513b4b2a4a0583a2b72ee442bbb211d442 (patch)
tree420a9e8561ef5987f4c3ca3391a6fe5677521727 /apps
parent34fb311638426f850e8d620cadbaba3857ae9aef (diff)
downloadrockbox-f174c3513b4b2a4a0583a2b72ee442bbb211d442.tar.gz
rockbox-f174c3513b4b2a4a0583a2b72ee442bbb211d442.zip
libmusepack: use postindexing on the pointer when storing to increment it for free, saves another instruction in the loop in mpc_decoder_windowing_D speed difference is in the noise though.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28492 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/codecs/libmusepack/synth_filter_arm.S9
1 files changed, 3 insertions, 6 deletions
diff --git a/apps/codecs/libmusepack/synth_filter_arm.S b/apps/codecs/libmusepack/synth_filter_arm.S
index 521d690e28..9bd4e04626 100644
--- a/apps/codecs/libmusepack/synth_filter_arm.S
+++ b/apps/codecs/libmusepack/synth_filter_arm.S
@@ -238,13 +238,12 @@ 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 */
242 /* store Data[31..17] */ 241 /* store Data[31..17] */
243 mov r10, r10, lsr #16 242 mov r10, r10, lsr #16
244 orr r10, r10, r11, lsl #16 /* (lo>>16) || (hi<<16) */ 243 orr r10, r10, r11, lsl #16 /* (lo>>16) || (hi<<16) */
245 rsb r10, r10, #0 /* r10 = -r10 */ 244 rsb r10, r10, #0 /* r10 = -r10 */
246 str r10, [r0, lr] /* store Data */ 245 str r10, [r0, lr] /* store Data */
247 add r0, r0, #4 /* r0++ */ 246 str r8, [r0], #4 /* store Data */
248 /* correct adresses for next loop */ 247 /* correct adresses for next loop */
249 sub r12, r12, #4 /* r12 = V-- */ 248 sub r12, r12, #4 /* r12 = V-- */
250 add r1, r1, #4 /* r1 = V++ */ 249 add r1, r1, #4 /* r1 = V++ */
@@ -441,13 +440,12 @@ mpc_decoder_windowing_D:
441 /* store Data[01..15] */ 440 /* store Data[01..15] */
442 mov r8, r8, lsr #16 441 mov r8, r8, lsr #16
443 orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */ 442 orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */
444 str r8, [r0] /* store Data */
445 /* store Data[31..17] */ 443 /* store Data[31..17] */
446 mov r10, r10, lsr #16 444 mov r10, r10, lsr #16
447 orr r10, r10, r11, lsl #16 /* (lo>>16) || (hi<<16) */ 445 orr r10, r10, r11, lsl #16 /* (lo>>16) || (hi<<16) */
448 rsb r10, r10, #0 /* r10 = -r10 */ 446 rsb r10, r10, #0 /* r10 = -r10 */
449 str r10, [r0, lr] /* store Data */ 447 str r10, [r0, lr] /* store Data */
450 add r0, r0, #4 /* r0++ */ 448 str r8, [r0], #4 /* store Data */
451 /* correct adresses for next loop */ 449 /* correct adresses for next loop */
452 sub r12, r12, #4 /* r12 = V-- */ 450 sub r12, r12, #4 /* r12 = V-- */
453 add r1, r1, #4 /* r1 = V++ */ 451 add r1, r1, #4 /* r1 = V++ */
@@ -641,11 +639,10 @@ mpc_decoder_windowing_D:
641 rsb r11, r11, #0 /* r11 = -r11 */ 639 rsb r11, r11, #0 /* r11 = -r11 */
642 /* store Data[01..15] */ 640 /* store Data[01..15] */
643 mov r9, r9, lsl #2 641 mov r9, r9, lsl #2
644 str r9, [r0] /* store Data */
645 /* store Data[31..17] */ 642 /* store Data[31..17] */
646 mov r11, r11, lsl #2 643 mov r11, r11, lsl #2
647 str r11, [r0, lr] /* store Data */ 644 str r11, [r0, lr] /* store Data */
648 add r0, r0, #4 /* r0++ */ 645 str r9, [r0], #4 /* store Data */
649 /* next loop */ 646 /* next loop */
650 subs lr, lr, #8 647 subs lr, lr, #8
651 bgt .loop15 648 bgt .loop15