Fixed __umul128 for MSVC ARM64.

This commit is contained in:
XMRig 2025-06-15 04:58:03 +07:00
parent 9c7468df64
commit 3b863cf88f
No known key found for this signature in database
GPG key ID: 446A53638BE94409

View file

@ -23,15 +23,22 @@
#pragma once
#include <cstdint>
#ifdef XMRIG_64_BIT
# ifdef _MSC_VER
#if defined(XMRIG_64_BIT)
# if defined(_MSC_VER)
# include <intrin.h>
# if defined(XMRIG_ARM)
#pragma intrinsic(__umulh)
static inline uint64_t __umul128(uint64_t a, uint64_t b, uint64_t *high) {
*high = __umulh(a, b);
return a * b;
}
# else
# pragma intrinsic(_umul128)
# define __umul128 _umul128
# elif defined __GNUC__
# endif
# elif defined(__GNUC__)
static inline uint64_t _umul128(uint64_t a, uint64_t b, uint64_t* hi)
{
unsigned __int128 r = (unsigned __int128) a * (unsigned __int128) b;