diff --git a/common_defs.h b/common_defs.h index a3773c4e..82b9faaa 100644 --- a/common_defs.h +++ b/common_defs.h @@ -640,6 +640,16 @@ bsr64(u64 v) _BitScanReverse64(&i, v); return i; +#elif defined(_MSC_VER) + unsigned long i; + + if ((u32)(v >> 32)) { + _BitScanReverse(&i, (u32)(v >> 32)); + return i + 32; + } else { + _BitScanReverse(&i, (u32)v); + return i; + } #else unsigned i = 0; @@ -694,6 +704,16 @@ bsf64(u64 v) _BitScanForward64(&i, v); return i; +#elif defined(_MSC_VER) && defined(_WIN64) + unsigned long i; + + if ((u32)v) { + _BitScanForward(&i, (u32)v); + return i; + } else { + _BitScanForward(&i, (u32)(v >> 32)); + return i + 32; + } #else unsigned i = 0;