diff --git a/stl/inc/__msvc_int128.hpp b/stl/inc/__msvc_int128.hpp index e7d9650ff8..99c78af752 100644 --- a/stl/inc/__msvc_int128.hpp +++ b/stl/inc/__msvc_int128.hpp @@ -158,7 +158,12 @@ struct alignas(16) _Base128 { if (!_Is_constant_evaluated()) { return _umul128(_Left, _Right, &_High_result); } -#endif // _STL_128_INTRINSICS +#elif (defined(_M_ARM64) || defined(_M_ARM64EC)) && !defined(_M_CEE_PURE) + if (!_Is_constant_evaluated()) { + _High_result = __umulh(_Left, _Right); + return _Left * _Right; + } +#endif // ^^^ (defined(_M_ARM64) || defined(_M_ARM64EC)) && !defined(_M_CEE_PURE) ^^^ const uint32_t __u[2] = { static_cast(_Left),