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:
parent
f5114daa73
commit
030dce6f88
3 changed files with 19 additions and 4 deletions
|
|
@ -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]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue