Index: lib/builtins/fp_lib.h =================================================================== --- lib/builtins/fp_lib.h +++ lib/builtins/fp_lib.h @@ -38,6 +38,41 @@ # endif #endif +#ifdef _MSC_VER +#include + +uint32_t __inline __builtin_ctz(uint32_t value) { + uint32_t trailing_zero = 0; + if (_BitScanForward(&trailing_zero, value)) { + return trailing_zero; + } else { + return 32; + } +} + +uint32_t __inline __builtin_clz(uint32_t value) { + uint32_t leading_zero = 0; + if (_BitScanReverse(&leading_zero, value)) { + return 31 - leading_zero; + } else { + return 32; + } +} + +uint32_t __inline __builtin_clzll(uint64_t value) { + uint32_t leading_zero = 0; + if (_BitScanReverse64(&leading_zero, value)) { + return 63 - leading_zero; + } else { + return 64; + } +} + +uint32_t __inline __builtin_clzl(uint64_t value) { + return __builtin_clzll(value); +} +#endif + #if defined SINGLE_PRECISION typedef uint32_t rep_t;