Fixed MulHi in value.cc for Linux systems

This commit is contained in:
guccigang420 2023-10-01 17:30:28 +02:00
parent f6b5424a9f
commit 41f451bf8b
1 changed files with 6 additions and 4 deletions

View File

@ -409,13 +409,15 @@ void Value::MulHi(Value* other, bool is_unsigned) {
} }
#else #else
if (is_unsigned) { if (is_unsigned) {
constant.i64 = static_cast<uint64_t>( constant.i64 = static_cast<uint64_t>((
static_cast<unsigned __int128>(constant.i64) * static_cast<unsigned __int128>(constant.i64) *
static_cast<unsigned __int128>(other->constant.i64)); static_cast<unsigned __int128>(other->constant.i64))
>> 64);
} else { } else {
constant.i64 = constant.i64 =
static_cast<uint64_t>(static_cast<__int128>(constant.i64) * static_cast<uint64_t>((static_cast<__int128>(constant.i64) *
static_cast<__int128>(other->constant.i64)); static_cast<__int128>(other->constant.i64))
>> 64);
} }
#endif // XE_COMPILER_MSVC #endif // XE_COMPILER_MSVC
break; break;