util: only allow _BitScanReverse64 on 64-bit cpus
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Wed, 14 Aug 2019 20:29:24 +0000 (22:29 +0200)
committerErik Faye-Lund <erik.faye-lund@collabora.com>
Mon, 2 Sep 2019 12:45:45 +0000 (12:45 +0000)
While the documentation for _BitScanReverse64 on MSDN says that it's
available on ARM, this isn't true. It's only available on ARM64. So
let's match reality.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Acked-by: Matt Turner <mattst88@gmail.com>
src/util/bitscan.c
src/util/bitscan.h

index 7858291bf63429682f135b9467f1041b4633b036..88d7f94e119bd58d3417a95bd5cad3ea81176b4f 100644 (file)
@@ -60,7 +60,7 @@ ffs(int i)
 #endif
 
 #ifdef HAVE___BUILTIN_FFSLL
 #endif
 
 #ifdef HAVE___BUILTIN_FFSLL
-#elif defined(_MSC_VER) && (_M_AMD64 || _M_ARM || _M_IA64)
+#elif defined(_MSC_VER) && (_M_AMD64 || _M_ARM64 || _M_IA64)
 #else
 int
 ffsll(long long int val)
 #else
 int
 ffsll(long long int val)
index 02b3afda7f92d1cbe70bc1d313eb78ed694db510..895a1e7a3721a2f90a22babbcd60eb9fabe1b034 100644 (file)
@@ -72,7 +72,7 @@ int ffs(int i);
 
 #ifdef HAVE___BUILTIN_FFSLL
 #define ffsll __builtin_ffsll
 
 #ifdef HAVE___BUILTIN_FFSLL
 #define ffsll __builtin_ffsll
-#elif defined(_MSC_VER) && (_M_AMD64 || _M_ARM || _M_IA64)
+#elif defined(_MSC_VER) && (_M_AMD64 || _M_ARM64 || _M_IA64)
 static inline int
 ffsll(long long int i)
 {
 static inline int
 ffsll(long long int i)
 {
@@ -235,7 +235,7 @@ util_last_bit64(uint64_t u)
 {
 #if defined(HAVE___BUILTIN_CLZLL)
    return u == 0 ? 0 : 64 - __builtin_clzll(u);
 {
 #if defined(HAVE___BUILTIN_CLZLL)
    return u == 0 ? 0 : 64 - __builtin_clzll(u);
-#elif defined(_MSC_VER) && (_M_AMD64 || _M_ARM || _M_IA64)
+#elif defined(_MSC_VER) && (_M_AMD64 || _M_ARM64 || _M_IA64)
    unsigned long index;
    if (_BitScanReverse64(&index, u))
       return index + 1;
    unsigned long index;
    if (_BitScanReverse64(&index, u))
       return index + 1;