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.
This commit is contained in:
parent
3beb70e549
commit
6c8acbf1f2
2 changed files with 5 additions and 2 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue