diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp index 6be29bc75d..1042ab5552 100644 --- a/rpcs3/Emu/Cell/SPURecompiler.cpp +++ b/rpcs3/Emu/Cell/SPURecompiler.cpp @@ -9147,7 +9147,7 @@ public: if (g_cfg.core.spu_approx_xfloat) { - if (op.ra == op.rb && !m_interp_magn) + if (a.value == b.value) { return eval(a * b); } @@ -9162,7 +9162,15 @@ public: } }); - set_vr(op.rt, fm(get_vr(op.ra), get_vr(op.rb))); + const auto [a, b] = get_vrs(op.ra, op.rb); + + if (op.ra == op.rb && !m_interp_magn) + { + set_vr(op.rt, fm(a, a)); + return; + } + + set_vr(op.rt, fm(a, b)); } template