aboutsummaryrefslogtreecommitdiff
path: root/src/lj_def.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_def.h')
-rw-r--r--src/lj_def.h11
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
260unsigned char _BitScanForward(unsigned long *, unsigned long); 260unsigned char _BitScanForward(unsigned long *, unsigned long);
261unsigned char _BitScanReverse(unsigned long *, unsigned long); 261unsigned char _BitScanReverse(unsigned long *, unsigned long);
262unsigned char _BitScanForward64(unsigned long *, uint64_t);
263unsigned 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
269static LJ_AINLINE uint32_t lj_ffs(uint32_t x) 265static 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)
276unsigned char _BitScanForward64(unsigned long *, uint64_t);
277unsigned char _BitScanReverse64(unsigned long *, uint64_t);
278#pragma intrinsic(_BitScanForward64)
279#pragma intrinsic(_BitScanReverse64)
280
279static LJ_AINLINE uint32_t lj_ffs64(uint64_t x) 281static 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
290unsigned long _byteswap_ulong(unsigned long); 293unsigned long _byteswap_ulong(unsigned long);
291uint64_t _byteswap_uint64(uint64_t); 294uint64_t _byteswap_uint64(uint64_t);