diff options
author | Nils Wallménius <nils@rockbox.org> | 2010-11-05 16:21:25 +0000 |
---|---|---|
committer | Nils Wallménius <nils@rockbox.org> | 2010-11-05 16:21:25 +0000 |
commit | f174c3513b4b2a4a0583a2b72ee442bbb211d442 (patch) | |
tree | 420a9e8561ef5987f4c3ca3391a6fe5677521727 | |
parent | 34fb311638426f850e8d620cadbaba3857ae9aef (diff) | |
download | rockbox-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
-rw-r--r-- | apps/codecs/libmusepack/synth_filter_arm.S | 9 |
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 |