From 94f0f79ecd2d9e5271a21bc4ededea9b58c60674 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Tue, 6 Mar 2018 12:30:19 -0800 Subject: Changes imported from Abseil "staging" branch: - aba727a5943a014392e3873349cee9dd5efc634e Avoid using 128-bit intrinsics for Clang on Windows. by Abseil Team - cdd19f1eda562af8906bff8feff827eb8e8e9797 Utilize the rtems TID infrastructure on myriad2 platforms. by Abseil Team - 52f7f55daa84ea25fa210d1b9d2bd64d128e1d81 Use intrinsic 128 bit integer when available for division... by Alex Strelnikov - 51f881b1152c0c861cf7fcac53f30d3c7ce12902 Merge GitHub #95: Fix compiler version check for clang-cl... by Derek Mauro GitOrigin-RevId: aba727a5943a014392e3873349cee9dd5efc634e Change-Id: I9b52d84095537acbbc96d3f74917f78da9a51156 --- absl/numeric/int128.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'absl/numeric') diff --git a/absl/numeric/int128.cc b/absl/numeric/int128.cc index f24b785..3688e5e 100644 --- a/absl/numeric/int128.cc +++ b/absl/numeric/int128.cc @@ -130,16 +130,26 @@ uint128::uint128(double v) : uint128(MakeUint128FromFloat(v)) {} uint128::uint128(long double v) : uint128(MakeUint128FromFloat(v)) {} uint128 operator/(uint128 lhs, uint128 rhs) { +#if defined(ABSL_HAVE_INTRINSIC_INT128) + return static_cast(lhs) / + static_cast(rhs); +#else // ABSL_HAVE_INTRINSIC_INT128 uint128 quotient = 0; uint128 remainder = 0; DivModImpl(lhs, rhs, "ient, &remainder); return quotient; +#endif // ABSL_HAVE_INTRINSIC_INT128 } uint128 operator%(uint128 lhs, uint128 rhs) { +#if defined(ABSL_HAVE_INTRINSIC_INT128) + return static_cast(lhs) % + static_cast(rhs); +#else // ABSL_HAVE_INTRINSIC_INT128 uint128 quotient = 0; uint128 remainder = 0; DivModImpl(lhs, rhs, "ient, &remainder); return remainder; +#endif // ABSL_HAVE_INTRINSIC_INT128 } namespace { -- cgit v1.2.3