Review URL: https://codereview.chromium.org/
14418004
git-svn-id: http://skia.googlecode.com/svn/trunk@8897
2bbb7eff-a529-9590-31e7-
b0007b416f81
//! Returns the number of leading zero bits (0...32)
int SkCLZ_portable(uint32_t);
-#if defined(SK_CPU_ARM)
- #define SkCLZ(x) __builtin_clz(x)
-#endif
-
#ifndef SkCLZ
- #define SkCLZ(x) SkCLZ_portable(x)
+ #if defined(_MSC_VER) && _MSC_VER >= 1400
+ #include <intrin.h>
+
+ static inline int SkCLZ(uint32_t mask) {
+ if (mask) {
+ DWORD index;
+ _BitScanReverse(&index, mask);
+ return index ^ 0x1F;
+ } else {
+ return 32;
+ }
+ }
+ #elif defined(SK_CPU_ARM) || defined(__GNUC__)
+ #define SkCLZ(x) __builtin_clz(x)
+ #else
+ #define SkCLZ(x) SkCLZ_portable(x)
+ #endif
#endif
/**