summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alex Strelnikov <strel@google.com>2019-01-09 12:55:48 -0500
committerGravatar GitHub <noreply@github.com>2019-01-09 12:55:48 -0500
commit9449ae94397f2fd683851348e25ed8c93f75b3b9 (patch)
tree739406067548a65b45a85f9dc23dfac4acc762a3
parentb16aeb6756bdab08cdf12d40baab5b51f7d15b16 (diff)
parentaca0473d962693c42885aeb09f382fe5f37138de (diff)
Merge pull request #243 from ThomsonTan/FixIntrinsic
_umul128 intrinsic is x64 only and not available on Windows ARM64
-rw-r--r--absl/numeric/int128.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/absl/numeric/int128.h b/absl/numeric/int128.h
index 9c36c571..3e7d2d9f 100644
--- a/absl/numeric/int128.h
+++ b/absl/numeric/int128.h
@@ -43,10 +43,10 @@
// builtin type. We need to make sure not to define operator wchar_t()
// alongside operator unsigned short() in these instances.
#define ABSL_INTERNAL_WCHAR_T __wchar_t
-#if defined(_WIN64)
+#if defined(_M_X64)
#include <intrin.h>
#pragma intrinsic(_umul128)
-#endif // defined(_WIN64)
+#endif // defined(_M_X64)
#else // defined(_MSC_VER)
#define ABSL_INTERNAL_WCHAR_T wchar_t
#endif // defined(_MSC_VER)
@@ -675,7 +675,7 @@ inline uint128 operator*(uint128 lhs, uint128 rhs) {
// can be used for uint128 storage.
return static_cast<unsigned __int128>(lhs) *
static_cast<unsigned __int128>(rhs);
-#elif defined(_MSC_VER) && defined(_WIN64)
+#elif defined(_MSC_VER) && defined(_M_X64)
uint64_t carry;
uint64_t low = _umul128(Uint128Low64(lhs), Uint128Low64(rhs), &carry);
return MakeUint128(Uint128Low64(lhs) * Uint128High64(rhs) +