]> gitweb.factorcode.org Git - factor.git/commitdiff
vm: fix log2 for arm64.
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 2 Dec 2020 21:16:45 +0000 (13:16 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 2 Dec 2020 21:16:45 +0000 (13:16 -0800)
vm/bitwise_hacks.hpp

index 5332b8c7b291f48e78da6b79b8b2e66a6e7a7a83..ed338dd3039794708a4a9b8ebb1f1f3c1759dbe0 100644 (file)
@@ -17,24 +17,31 @@ inline cell log2(cell x) {
   asm("bsr %1, %0;" : "=r"(n) : "r"(x));
 #endif
 
+#elif defined(FACTOR_ARM)
+#if defined(_MSC_VER)
+  _BitScanReverse((unsigned long*)&n, x);
+#else
+  n = (31 - __builtin_clz(x));
+#endif
+
 #elif defined(FACTOR_ARM64)
 #if defined(_MSC_VER)
   n = 0;
   _BitScanReverse64((unsigned long*)&n, x);
 #else
-  asm("bsr %1, %0;" : "=r"(n) : "r"(x));
+  n = (63 - __builtin_clzll(x));
 #endif
 
-#elif defined(FACTOR_PPC64)
+#elif defined(FACTOR_PPC32)
 #if defined(__GNUC__)
-  n = (63 - __builtin_clzll(x));
+  n = (31 - __builtin_clz(x));
 #else
 #error Unsupported compiler
 #endif
 
-#elif defined(FACTOR_PPC32)
+#elif defined(FACTOR_PPC64)
 #if defined(__GNUC__)
-  n = (31 - __builtin_clz(x));
+  n = (63 - __builtin_clzll(x));
 #else
 #error Unsupported compiler
 #endif