diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/libmusepack/synth_filter_arm.S | 27 |
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 |