Do schur_div with a direct 64 bit division instead of a loop on x86

This speeds up HE-AACv2 encoding from 3.85 s to 3.42 s on a Core i7.
This commit is contained in:
Jakub Stachowski 2012-08-14 21:59:32 +02:00 committed by Martin Storsjo
parent 50b1de17ac
commit 923f3e95f3

View File

@ -443,6 +443,15 @@ FIXP_DBL sqrtFixp(FIXP_DBL op)
*****************************************************************************/
#if defined(__x86__)
FIXP_DBL schur_div(FIXP_DBL num, FIXP_DBL denum, INT count)
{
INT64 tmp=(INT64)num<<31;
LONG div=(tmp/denum)>>(DFRACT_BITS-count);
return (FIXP_DBL)(div) << (DFRACT_BITS-count);
}
#else
FIXP_DBL schur_div(FIXP_DBL num, FIXP_DBL denum, INT count)
{
@ -469,6 +478,7 @@ FIXP_DBL schur_div(FIXP_DBL num, FIXP_DBL denum, INT count)
return (FIXP_DBL)(div << (DFRACT_BITS - count));
}
#endif
#endif /* !defined(FUNCTION_schur_div) */