]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Windows/x86: _BitScan*64 are only available on 64 bit archs.
authorMike Pall <mike>
Sun, 5 Nov 2023 10:27:35 +0000 (11:27 +0100)
committerMike Pall <mike>
Sun, 5 Nov 2023 10:27:35 +0000 (11:27 +0100)
Reported by memcorrupt. #1109

src/lj_def.h

index 0d6c346bcc747059262af662f193a962d506e5d5..2a1d7b56bd32ab4186f6fece5dd45b04ddb6f3dd 100644 (file)
@@ -259,12 +259,8 @@ static LJ_AINLINE uint32_t lj_fls(uint32_t x)
 #else
 unsigned char _BitScanForward(unsigned long *, unsigned long);
 unsigned char _BitScanReverse(unsigned long *, unsigned long);
-unsigned char _BitScanForward64(unsigned long *, uint64_t);
-unsigned char _BitScanReverse64(unsigned long *, uint64_t);
 #pragma intrinsic(_BitScanForward)
 #pragma intrinsic(_BitScanReverse)
-#pragma intrinsic(_BitScanForward64)
-#pragma intrinsic(_BitScanReverse64)
 
 static LJ_AINLINE uint32_t lj_ffs(uint32_t x)
 {
@@ -276,6 +272,12 @@ static LJ_AINLINE uint32_t lj_fls(uint32_t x)
   unsigned long r; _BitScanReverse(&r, x); return (uint32_t)r;
 }
 
+#if defined(_M_X64) || defined(_M_ARM64)
+unsigned char _BitScanForward64(unsigned long *, uint64_t);
+unsigned char _BitScanReverse64(unsigned long *, uint64_t);
+#pragma intrinsic(_BitScanForward64)
+#pragma intrinsic(_BitScanReverse64)
+
 static LJ_AINLINE uint32_t lj_ffs64(uint64_t x)
 {
   unsigned long r; _BitScanForward64(&r, x); return (uint32_t)r;
@@ -286,6 +288,7 @@ static LJ_AINLINE uint32_t lj_fls64(uint64_t x)
   unsigned long r; _BitScanReverse64(&r, x); return (uint32_t)r;
 }
 #endif
+#endif
 
 unsigned long _byteswap_ulong(unsigned long);
 uint64_t _byteswap_uint64(uint64_t);