diff --git a/src/xenia/cpu/hir/value.cc b/src/xenia/cpu/hir/value.cc index 1a72ba22f..490398ff7 100644 --- a/src/xenia/cpu/hir/value.cc +++ b/src/xenia/cpu/hir/value.cc @@ -410,12 +410,14 @@ void Value::MulHi(Value* other, bool is_unsigned) { #else if (is_unsigned) { constant.i64 = static_cast( - static_cast(constant.i64) * - static_cast(other->constant.i64)); + (static_cast(constant.i64) * + static_cast(other->constant.i64)) >> + 64); } else { - constant.i64 = - static_cast(static_cast<__int128>(constant.i64) * - static_cast<__int128>(other->constant.i64)); + constant.i64 = static_cast( + (static_cast<__int128>(constant.i64) * + static_cast<__int128>(other->constant.i64)) >> + 64); } #endif // XE_COMPILER_MSVC break;