Update umul128_upper64 to use optimised x64 version of umul128
This commit is contained in:
parent
eb6085d99a
commit
1436fc76e9
@ -1535,7 +1535,9 @@ inline int floor_log2_pow10(int e) noexcept {
|
|||||||
|
|
||||||
// Computes upper 64 bits of multiplication of two 64-bit unsigned integers.
|
// Computes upper 64 bits of multiplication of two 64-bit unsigned integers.
|
||||||
inline uint64_t umul128_upper64(uint64_t x, uint64_t y) noexcept {
|
inline uint64_t umul128_upper64(uint64_t x, uint64_t y) noexcept {
|
||||||
#if FMT_USE_INT128
|
#if __x86_64__ && (__GNUC__ || __clang__)
|
||||||
|
return umul128(x, y).high();
|
||||||
|
#elif FMT_USE_INT128
|
||||||
auto p = static_cast<uint128_opt>(x) * static_cast<uint128_opt>(y);
|
auto p = static_cast<uint128_opt>(x) * static_cast<uint128_opt>(y);
|
||||||
return static_cast<uint64_t>(p >> 64);
|
return static_cast<uint64_t>(p >> 64);
|
||||||
#elif defined(_MSC_VER) && defined(_M_X64)
|
#elif defined(_MSC_VER) && defined(_M_X64)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user