diff options
Diffstat (limited to 'src')
| -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); |
