Use MSVC intrinsics for lg_floor
When using MSVC make use of its intrinsic functions (supported on x86, amd64 & ARM) for lg_floor.
This commit is contained in:
parent
eb5376ab9e
commit
112704cfbf
@ -176,6 +176,21 @@ lg_floor(size_t x)
|
|||||||
);
|
);
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
#elif (defined(_MSC_VER))
|
||||||
|
JEMALLOC_INLINE size_t
|
||||||
|
lg_floor(size_t x)
|
||||||
|
{
|
||||||
|
unsigned long ret;
|
||||||
|
|
||||||
|
#if (LG_SIZEOF_PTR == 3)
|
||||||
|
_BitScanReverse64(&ret, x);
|
||||||
|
#elif (LG_SIZEOF_PTR == 2)
|
||||||
|
_BitScanReverse(&ret, x);
|
||||||
|
#else
|
||||||
|
# error "Unsupported type sizes for lg_floor()"
|
||||||
|
#endif
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
#elif (defined(JEMALLOC_HAVE_BUILTIN_CLZ))
|
#elif (defined(JEMALLOC_HAVE_BUILTIN_CLZ))
|
||||||
JEMALLOC_INLINE size_t
|
JEMALLOC_INLINE size_t
|
||||||
lg_floor(size_t x)
|
lg_floor(size_t x)
|
||||||
|
Loading…
Reference in New Issue
Block a user