From 60aaffe05a3f7704d1cf769c8ea7a88e0d3fb2c3 Mon Sep 17 00:00:00 2001 From: Mirek Fidler Date: Sun, 20 Mar 2022 09:33:29 +0100 Subject: [PATCH] Core: Now using _addcarry_u64 only for x86 --- uppsrc/Core/Ops.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/uppsrc/Core/Ops.h b/uppsrc/Core/Ops.h index 1697d3716..d622a0a0b 100644 --- a/uppsrc/Core/Ops.h +++ b/uppsrc/Core/Ops.h @@ -218,11 +218,25 @@ inline bool FitsInInt64(double x) #if defined(__SIZEOF_INT128__) && (__GNUC__ > 5 || __clang_major__ >= 5) +#ifdef CPU_X86 + inline byte addc64(uint64& result, const uint64& value, byte carry) { return _addcarry_u64(carry, result, value, &result); } +#else + +force_inline +byte addc64(uint64& r, uint64 a, byte carry) +{ + uint64_t r1 = r; + r += a + carry; + return carry ? r <= a : r < a; +} + +#endif + inline uint64 mul64(uint64 a, uint64 b, uint64& hi) {