FS #8179. Small Musepack speedup for ARM.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15692 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
0fc7fb3686
commit
3947b0c632
1 changed files with 37 additions and 42 deletions
|
@ -448,50 +448,45 @@ mpc_decoder_windowing_D(MPC_SAMPLE_FORMAT * Data, const MPC_SAMPLE_FORMAT * V)
|
||||||
// 32=32x32-multiply assembler for ARM
|
// 32=32x32-multiply assembler for ARM
|
||||||
for ( k = 0; k < 32; k++, V++ )
|
for ( k = 0; k < 32; k++, V++ )
|
||||||
{
|
{
|
||||||
asm volatile (
|
asm volatile (
|
||||||
"ldmia %[D]!, { r0-r3 } \n\t"
|
"ldmia %[D]!, { r0-r7 } \n\t"
|
||||||
"ldr r4, [%[V]] \n\t"
|
"ldr r8, [%[V]] \n\t"
|
||||||
"mul r5, r0, r4 \n\t"
|
"mul r9, r0, r8 \n\t"
|
||||||
"ldr r4, [%[V], #96*4] \n\t"
|
"ldr r8, [%[V], #96*4] \n\t"
|
||||||
"mla r5, r1, r4, r5 \n\t"
|
"mla r9, r1, r8, r9 \n\t"
|
||||||
"ldr r4, [%[V], #128*4] \n\t"
|
"ldr r8, [%[V], #128*4] \n\t"
|
||||||
"mla r5, r2, r4, r5 \n\t"
|
"mla r9, r2, r8, r9 \n\t"
|
||||||
"ldr r4, [%[V], #224*4] \n\t"
|
"ldr r8, [%[V], #224*4] \n\t"
|
||||||
"mla r5, r3, r4, r5 \n\t"
|
"mla r9, r3, r8, r9 \n\t"
|
||||||
|
"ldr r8, [%[V], #256*4] \n\t"
|
||||||
"ldmia %[D]!, { r0-r3 } \n\t"
|
"mla r9, r4, r8, r9 \n\t"
|
||||||
"ldr r4, [%[V], #256*4] \n\t"
|
"ldr r8, [%[V], #352*4] \n\t"
|
||||||
"mla r5, r0, r4, r5 \n\t"
|
"mla r9, r5, r8, r9 \n\t"
|
||||||
"ldr r4, [%[V], #352*4] \n\t"
|
"ldr r8, [%[V], #384*4] \n\t"
|
||||||
"mla r5, r1, r4, r5 \n\t"
|
"mla r9, r6, r8, r9 \n\t"
|
||||||
"ldr r4, [%[V], #384*4] \n\t"
|
"ldr r8, [%[V], #480*4] \n\t"
|
||||||
"mla r5, r2, r4, r5 \n\t"
|
"mla r9, r7, r8, r9 \n\t"
|
||||||
"ldr r4, [%[V], #480*4] \n\t"
|
"ldmia %[D]!, { r0-r7 } \n\t"
|
||||||
"mla r5, r3, r4, r5 \n\t"
|
"ldr r8, [%[V], #512*4] \n\t"
|
||||||
|
"mla r9, r0, r8, r9 \n\t"
|
||||||
"ldmia %[D]!, { r0-r3 } \n\t"
|
"ldr r8, [%[V], #608*4] \n\t"
|
||||||
"ldr r4, [%[V], #512*4] \n\t"
|
"mla r9, r1, r8, r9 \n\t"
|
||||||
"mla r5, r0, r4, r5 \n\t"
|
"ldr r8, [%[V], #640*4] \n\t"
|
||||||
"ldr r4, [%[V], #608*4] \n\t"
|
"mla r9, r2, r8, r9 \n\t"
|
||||||
"mla r5, r1, r4, r5 \n\t"
|
"ldr r8, [%[V], #736*4] \n\t"
|
||||||
"ldr r4, [%[V], #640*4] \n\t"
|
"mla r9, r3, r8, r9 \n\t"
|
||||||
"mla r5, r2, r4, r5 \n\t"
|
"ldr r8, [%[V], #768*4] \n\t"
|
||||||
"ldr r4, [%[V], #736*4] \n\t"
|
"mla r9, r4, r8, r9 \n\t"
|
||||||
"mla r5, r3, r4, r5 \n\t"
|
"ldr r8, [%[V], #864*4] \n\t"
|
||||||
|
"mla r9, r5, r8, r9 \n\t"
|
||||||
"ldmia %[D]!, { r0-r3 } \n\t"
|
"ldr r8, [%[V], #896*4] \n\t"
|
||||||
"ldr r4, [%[V], #768*4] \n\t"
|
"mla r9, r6, r8, r9 \n\t"
|
||||||
"mla r5, r0, r4, r5 \n\t"
|
"ldr r8, [%[V], #992*4] \n\t"
|
||||||
"ldr r4, [%[V], #864*4] \n\t"
|
"mla r9, r7, r8, r9 \n\t"
|
||||||
"mla r5, r1, r4, r5 \n\t"
|
"str r9, [%[Data]], #4 \n"
|
||||||
"ldr r4, [%[V], #896*4] \n\t"
|
|
||||||
"mla r5, r2, r4, r5 \n\t"
|
|
||||||
"ldr r4, [%[V], #992*4] \n\t"
|
|
||||||
"mla r5, r3, r4, r5 \n\t"
|
|
||||||
"str r5, [%[Data]], #4 \n"
|
|
||||||
: [Data] "+r" (Data), [D] "+r" (D)
|
: [Data] "+r" (Data), [D] "+r" (D)
|
||||||
: [V] "r" (V)
|
: [V] "r" (V)
|
||||||
: "r0", "r1", "r2", "r3", "r4", "r5");
|
: "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9");
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
// 32=32x32-multiply (FIXED_POINT)
|
// 32=32x32-multiply (FIXED_POINT)
|
||||||
|
|
Loading…
Reference in a new issue