aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarat Dukhan <maratek@gmail.com>2020-04-12 14:47:22 -0700
committerMarat Dukhan <maratek@gmail.com>2020-04-12 14:47:22 -0700
commit0bc00d197a714492cd000b7a71aa01176e579155 (patch)
tree3afc9791d10d1fa17ae7f1223371c5e77842bb10
parent9ec04fcd9732ea90385dfd6f73661fb274dcb96e (diff)
downloadFXdiv-0bc00d197a714492cd000b7a71aa01176e579155.tar.gz
Enable _BitScanReverse/_BitScanReverse64 in ARM/ARM64 builds
-rw-r--r--include/fxdiv.h6
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;