Commit 923f3e95 authored by Jakub Stachowski's avatar Jakub Stachowski Committed by Martin Storsjo

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.
parent 50b1de17
...@@ -443,6 +443,15 @@ FIXP_DBL sqrtFixp(FIXP_DBL op) ...@@ -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) 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) ...@@ -469,6 +478,7 @@ FIXP_DBL schur_div(FIXP_DBL num, FIXP_DBL denum, INT count)
return (FIXP_DBL)(div << (DFRACT_BITS - count)); return (FIXP_DBL)(div << (DFRACT_BITS - count));
} }
#endif
#endif /* !defined(FUNCTION_schur_div) */ #endif /* !defined(FUNCTION_schur_div) */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment