Change msvc version of clz & clzll to match __builtin_clz & _builtin_clzll
This commit is contained in:
parent
66ab67f57d
commit
b3c0d56e76
@ -193,7 +193,7 @@ namespace detail {
|
||||
# ifndef __clang__
|
||||
# pragma intrinsic(_BitScanReverse)
|
||||
# endif
|
||||
inline uint32_t clz(uint32_t x) {
|
||||
inline int clz(uint32_t x) {
|
||||
unsigned long r = 0;
|
||||
_BitScanReverse(&r, x);
|
||||
|
||||
@ -202,7 +202,7 @@ inline uint32_t clz(uint32_t x) {
|
||||
// "r", but the only way that can happen is if "x" is 0,
|
||||
// which the callers guarantee to not happen.
|
||||
FMT_SUPPRESS_MSC_WARNING(6102)
|
||||
return 31 - r;
|
||||
return 31 - static_cast<int>(r);
|
||||
}
|
||||
# define FMT_BUILTIN_CLZ(n) detail::clz(n)
|
||||
|
||||
@ -210,7 +210,7 @@ inline uint32_t clz(uint32_t x) {
|
||||
# pragma intrinsic(_BitScanReverse64)
|
||||
# endif
|
||||
|
||||
inline uint32_t clzll(uint64_t x) {
|
||||
inline int clzll(uint64_t x) {
|
||||
unsigned long r = 0;
|
||||
# ifdef _WIN64
|
||||
_BitScanReverse64(&r, x);
|
||||
@ -227,7 +227,7 @@ inline uint32_t clzll(uint64_t x) {
|
||||
// "r", but the only way that can happen is if "x" is 0,
|
||||
// which the callers guarantee to not happen.
|
||||
FMT_SUPPRESS_MSC_WARNING(6102)
|
||||
return 63 - r;
|
||||
return 63 - static_cast<int>(r);
|
||||
}
|
||||
# define FMT_BUILTIN_CLZLL(n) detail::clzll(n)
|
||||
} // namespace detail
|
||||
|
||||
Loading…
Reference in New Issue
Block a user