diff options
Diffstat (limited to 'src/lj_def.h')
-rw-r--r-- | src/lj_def.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/lj_def.h b/src/lj_def.h index 0d6c346b..2a1d7b56 100644 --- a/src/lj_def.h +++ b/src/lj_def.h | |||
@@ -259,12 +259,8 @@ static LJ_AINLINE uint32_t lj_fls(uint32_t x) | |||
259 | #else | 259 | #else |
260 | unsigned char _BitScanForward(unsigned long *, unsigned long); | 260 | unsigned char _BitScanForward(unsigned long *, unsigned long); |
261 | unsigned char _BitScanReverse(unsigned long *, unsigned long); | 261 | unsigned char _BitScanReverse(unsigned long *, unsigned long); |
262 | unsigned char _BitScanForward64(unsigned long *, uint64_t); | ||
263 | unsigned char _BitScanReverse64(unsigned long *, uint64_t); | ||
264 | #pragma intrinsic(_BitScanForward) | 262 | #pragma intrinsic(_BitScanForward) |
265 | #pragma intrinsic(_BitScanReverse) | 263 | #pragma intrinsic(_BitScanReverse) |
266 | #pragma intrinsic(_BitScanForward64) | ||
267 | #pragma intrinsic(_BitScanReverse64) | ||
268 | 264 | ||
269 | static LJ_AINLINE uint32_t lj_ffs(uint32_t x) | 265 | static LJ_AINLINE uint32_t lj_ffs(uint32_t x) |
270 | { | 266 | { |
@@ -276,6 +272,12 @@ static LJ_AINLINE uint32_t lj_fls(uint32_t x) | |||
276 | unsigned long r; _BitScanReverse(&r, x); return (uint32_t)r; | 272 | unsigned long r; _BitScanReverse(&r, x); return (uint32_t)r; |
277 | } | 273 | } |
278 | 274 | ||
275 | #if defined(_M_X64) || defined(_M_ARM64) | ||
276 | unsigned char _BitScanForward64(unsigned long *, uint64_t); | ||
277 | unsigned char _BitScanReverse64(unsigned long *, uint64_t); | ||
278 | #pragma intrinsic(_BitScanForward64) | ||
279 | #pragma intrinsic(_BitScanReverse64) | ||
280 | |||
279 | static LJ_AINLINE uint32_t lj_ffs64(uint64_t x) | 281 | static LJ_AINLINE uint32_t lj_ffs64(uint64_t x) |
280 | { | 282 | { |
281 | unsigned long r; _BitScanForward64(&r, x); return (uint32_t)r; | 283 | unsigned long r; _BitScanForward64(&r, x); return (uint32_t)r; |
@@ -286,6 +288,7 @@ static LJ_AINLINE uint32_t lj_fls64(uint64_t x) | |||
286 | unsigned long r; _BitScanReverse64(&r, x); return (uint32_t)r; | 288 | unsigned long r; _BitScanReverse64(&r, x); return (uint32_t)r; |
287 | } | 289 | } |
288 | #endif | 290 | #endif |
291 | #endif | ||
289 | 292 | ||
290 | unsigned long _byteswap_ulong(unsigned long); | 293 | unsigned long _byteswap_ulong(unsigned long); |
291 | uint64_t _byteswap_uint64(uint64_t); | 294 | uint64_t _byteswap_uint64(uint64_t); |