From b408327ac2a15ec3e43352421954f5b1967701d1 Mon Sep 17 00:00:00 2001 From: Marat Dukhan Date: Fri, 17 Apr 2020 00:06:18 -0700 Subject: Disable _udiv64 and _udiv128 intrinsics on clang-cl and icpc --- include/fxdiv.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/fxdiv.h b/include/fxdiv.h index f5a09d0..2c35038 100644 --- a/include/fxdiv.h +++ b/include/fxdiv.h @@ -173,7 +173,7 @@ static inline struct fxdiv_divisor_uint32_t fxdiv_init_uint32_t(uint32_t d) { : "=a" (q), "+d" (u_hi) : [d] "r" (d), "a" (0) : "cc"); - #elif (defined(_MSC_VER) && _MSC_VER >= 1920) && (defined(_M_IX86) || defined(_M_X64)) + #elif (defined(_MSC_VER) && _MSC_VER >= 1920) && !defined(__clang__) && !defined(__INTEL_COMPILER) && (defined(_M_IX86) || defined(_M_X64)) unsigned int remainder; const uint32_t q = (uint32_t) _udiv64((unsigned __int64) ((uint64_t) u_hi << 32), (unsigned int) d, &remainder); #else @@ -274,7 +274,7 @@ static inline struct fxdiv_divisor_uint64_t fxdiv_init_uint64_t(uint64_t d) { #elif 0 && defined(__GNUC__) && defined(__SIZEOF_INT128__) /* GCC, Clang, and Intel Compiler fail to inline optimized implementation and call into support library for 128-bit division */ const uint64_t q = (uint64_t) (((unsigned __int128) u_hi << 64) / ((unsigned __int128) d)); - #elif (defined(_MSC_VER) && _MSC_VER >= 1920) && defined(_M_X64) + #elif (defined(_MSC_VER) && _MSC_VER >= 1920) && !defined(__clang__) && !defined(__INTEL_COMPILER) && defined(_M_X64) unsigned __int64 remainder; const uint64_t q = (uint64_t) _udiv128((unsigned __int64) u_hi, 0, (unsigned __int64) d, &remainder); #else -- cgit v1.2.3