summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorguccigang420 <>2023-10-01 17:30:28 +0200
committerTriang3l <triang3l@yandex.ru>2025-07-30 23:47:17 +0300
commit9ae3a7250040dd9abf7313534cd56e10e44b8640 (patch)
tree5add04a90d20cfec77c7fabf2cb6a38544898e1b
parent3d30b2eec3ab1f83140b09745bee881fb5d5dde2 (diff)
[CPU/HIR] Fixed MulHi in value.cc for Linux systems
-rw-r--r--src/xenia/cpu/hir/value.cc12
1 files changed, 7 insertions, 5 deletions
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<uint64_t>(
- static_cast<unsigned __int128>(constant.i64) *
- static_cast<unsigned __int128>(other->constant.i64));
+ (static_cast<unsigned __int128>(constant.i64) *
+ static_cast<unsigned __int128>(other->constant.i64)) >>
+ 64);
} else {
- constant.i64 =
- static_cast<uint64_t>(static_cast<__int128>(constant.i64) *
- static_cast<__int128>(other->constant.i64));
+ constant.i64 = static_cast<uint64_t>(
+ (static_cast<__int128>(constant.i64) *
+ static_cast<__int128>(other->constant.i64)) >>
+ 64);
}
#endif // XE_COMPILER_MSVC
break;