Skip to content
Snippets Groups Projects
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
No related branches found
No related tags found
No related merge requests found
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment