1
0
Fork 0
forked from len0rd/rockbox

Fix previous

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13814 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Michael Giacomelli 2007-07-08 05:57:14 +00:00
parent f5114daa73
commit 030dce6f88
3 changed files with 19 additions and 4 deletions

View file

@ -696,14 +696,14 @@ void ff_mdct_end(MDCTContext *s)
static void vector_fmul_add_add(fixed32 *dst, const fixed32 *src0, const fixed32 *src1, const fixed32 *src2, int src3, int len, int step){
int i;
for(i=0; i<len; i++)
dst[i*step] = fixmul32(src0[i], src1[i]) + src2[i] + src3;
dst[i*step] = fixmul32b(src0[i], src1[i]) + src2[i] + src3;
}
static void vector_fmul_reverse(fixed32 *dst, const fixed32 *src0, const fixed32 *src1, int len){
int i;
src1 += len-1;
for(i=0; i<len; i++)
dst[i] = fixmul32(src0[i], src1[-i]);
dst[i] = fixmul32b(src0[i], src1[-i]);
}
/**

View file

@ -275,7 +275,7 @@ long fsincos(unsigned long phase, fixed32 *cos)
*/
#if 0
fixed32 fixsin32(fixed32 x)
{
@ -326,4 +326,4 @@ fixed32 fixcos32(fixed32 x)
{
return fixsin32(x - (M_PI_F>>1))*-1;
}
#endif

View file

@ -61,6 +61,21 @@ long fsincos(unsigned long phase, fixed32 *cos);
__result; \
})
#define fixmul32b(x, y) \
({ int32_t __hi; \
uint32_t __lo; \
int32_t __result; \
asm ("smull %0, %1, %3, %4\n\t" \
"movs %0, %0, lsr %5\n\t" \
"adc %2, %0, %1, lsl %6" \
: "=&r" (__lo), "=&r" (__hi), "=r" (__result) \
: "%r" (x), "r" (y), \
"M" (31), "M" (32 - 31) \
: "cc"); \
__result; \
})
#elif defined(CPU_COLDFIRE)
static inline int32_t fixmul32(int32_t x, int32_t y)
{