diff options
author | Marat Dukhan <maratek@gmail.com> | 2020-04-12 14:47:22 -0700 |
---|---|---|
committer | Marat Dukhan <maratek@gmail.com> | 2020-04-12 14:47:22 -0700 |
commit | 0bc00d197a714492cd000b7a71aa01176e579155 (patch) | |
tree | 3afc9791d10d1fa17ae7f1223371c5e77842bb10 | |
parent | 9ec04fcd9732ea90385dfd6f73661fb274dcb96e (diff) | |
download | FXdiv-0bc00d197a714492cd000b7a71aa01176e579155.tar.gz |
Enable _BitScanReverse/_BitScanReverse64 in ARM/ARM64 builds
-rw-r--r-- | include/fxdiv.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/include/fxdiv.h b/include/fxdiv.h index e5f5c09..2c275e1 100644 --- a/include/fxdiv.h +++ b/include/fxdiv.h @@ -121,7 +121,7 @@ static inline struct fxdiv_divisor_uint32_t fxdiv_init_uint32_t(uint32_t d) { const uint32_t l_minus_1 = 31 - clz(d - 1); #elif defined(__CUDA_ARCH__) const uint32_t l_minus_1 = 31 - __clz((int) (d - 1)); - #elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) + #elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM) || defined(_M_ARM64)) unsigned long l_minus_1; _BitScanReverse(&l_minus_1, (unsigned long) (d - 1)); #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && FXDIV_USE_INLINE_ASSEMBLY @@ -192,13 +192,13 @@ static inline struct fxdiv_divisor_uint64_t fxdiv_init_uint64_t(uint64_t d) { #elif defined(__CUDA_ARCH__) const uint32_t nlz_d = __clzll((long long) d); const uint32_t l_minus_1 = 63 - __clzll((long long) (d - 1)); - #elif defined(_MSC_VER) && defined(_M_X64) + #elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64)) unsigned long l_minus_1; _BitScanReverse64(&l_minus_1, (unsigned __int64) (d - 1)); unsigned long bsr_d; _BitScanReverse64(&bsr_d, (unsigned __int64) d); const uint32_t nlz_d = bsr_d ^ 0x3F; - #elif defined(_MSC_VER) && defined(_M_IX86) + #elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_ARM)) const uint64_t d_minus_1 = d - 1; const uint8_t d_is_power_of_2 = (d & d_minus_1) == 0; unsigned long l_minus_1; |