forked from len0rd/rockbox
libopus: asm C_MUL for coldfire
The recent merge of upstream changed the fft to use C_MUL which wasn't implemented in asm for coldfire. Speeds up decoding 64 kbps test file by 2.68 MHz and 128 kbps test file by 2.80 MHz on H300. Change-Id: I8b61fc0f9568d6350431e311a12e44fe4f60f72e
This commit is contained in:
parent
9b7ec42403
commit
888e05ec12
1 changed files with 21 additions and 0 deletions
|
@ -32,6 +32,27 @@
|
||||||
|
|
||||||
#ifdef FIXED_POINT
|
#ifdef FIXED_POINT
|
||||||
|
|
||||||
|
#undef C_MUL
|
||||||
|
#define C_MUL(m,a,b) \
|
||||||
|
{ \
|
||||||
|
asm volatile("move.l (%[bp]), %%d2;" \
|
||||||
|
"clr.l %%d3;" \
|
||||||
|
"move.w %%d2, %%d3;" \
|
||||||
|
"swap %%d3;" \
|
||||||
|
"clr.w %%d2;" \
|
||||||
|
"movem.l (%[ap]), %%d0-%%d1;" \
|
||||||
|
"mac.l %%d0, %%d2, %%acc0;" \
|
||||||
|
"msac.l %%d1, %%d3, %%acc0;" \
|
||||||
|
"mac.l %%d1, %%d2, %%acc1;" \
|
||||||
|
"mac.l %%d0, %%d3, %%acc1;" \
|
||||||
|
"movclr.l %%acc0, %[mr];" \
|
||||||
|
"movclr.l %%acc1, %[mi];" \
|
||||||
|
: [mr] "=r" ((m).r), [mi] "=r" ((m).i) \
|
||||||
|
: [ap] "a" (&(a)), [bp] "a" (&(b)) \
|
||||||
|
: "d0", "d1", "d2", "d3", "cc"); \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#undef C_MULC
|
#undef C_MULC
|
||||||
#define C_MULC(m,a,b) \
|
#define C_MULC(m,a,b) \
|
||||||
{ \
|
{ \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue