mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
Windows/x86: _BitScan*64 are only available on 64 bit archs.
Reported by memcorrupt. #1109
This commit is contained in:
parent
e826d0c101
commit
f2e955dae8
11
src/lj_def.h
11
src/lj_def.h
@ -259,12 +259,8 @@ static LJ_AINLINE uint32_t lj_fls(uint32_t x)
|
|||||||
#else
|
#else
|
||||||
unsigned char _BitScanForward(unsigned long *, unsigned long);
|
unsigned char _BitScanForward(unsigned long *, unsigned long);
|
||||||
unsigned char _BitScanReverse(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(_BitScanForward)
|
||||||
#pragma intrinsic(_BitScanReverse)
|
#pragma intrinsic(_BitScanReverse)
|
||||||
#pragma intrinsic(_BitScanForward64)
|
|
||||||
#pragma intrinsic(_BitScanReverse64)
|
|
||||||
|
|
||||||
static LJ_AINLINE uint32_t lj_ffs(uint32_t x)
|
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;
|
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)
|
static LJ_AINLINE uint32_t lj_ffs64(uint64_t x)
|
||||||
{
|
{
|
||||||
unsigned long r; _BitScanForward64(&r, x); return (uint32_t)r;
|
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;
|
unsigned long r; _BitScanReverse64(&r, x); return (uint32_t)r;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
unsigned long _byteswap_ulong(unsigned long);
|
unsigned long _byteswap_ulong(unsigned long);
|
||||||
uint64_t _byteswap_uint64(uint64_t);
|
uint64_t _byteswap_uint64(uint64_t);
|
||||||
|
Loading…
Reference in New Issue
Block a user