Commit 6c8acbf1 authored by Timothy B. Terriberry's avatar Timothy B. Terriberry Committed by Jean-Marc Valin
Browse files

EC_ILOG cleanups.

Mark _BitScanReverse as an intrinsic, as this is not done by default
 in _DEBUG mode (thanks to Bjoern D. Rasmussen for the suggestion).
Move the declaration of ec_ilog() to where the macro using it is
 defined, to ensure it is available when the macro is used.
Thanks to John Ridges for the report.
parent 3beb70e5
......@@ -81,6 +81,9 @@
All other code should use EC_ILOG() instead.*/
#if defined(_MSC_VER)
# include <intrin.h>
/*In _DEBUG mode this is not an intrinsic by default.*/
# pragma intrinsic(_BitScanReverse)
static __inline int ec_bsr(unsigned long _x){
unsigned long ret;
_BitScanReverse(&ret,_x);
......@@ -111,6 +114,8 @@ static __inline int ec_bsr(unsigned long _x){
When we need to, it can be special cased.*/
# define EC_ILOG(_x) (EC_CLZ0-EC_CLZ(_x))
#else
int ec_ilog(ec_uint32 _v);
# define EC_ILOG(_x) (ec_ilog(_x))
#endif
......
......@@ -127,6 +127,4 @@ static inline int ec_tell(ec_ctx *_this){
rounding error is in the positive direction).*/
ec_uint32 ec_tell_frac(ec_ctx *_this);
int ec_ilog(ec_uint32 _v);
#endif
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