diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp index 4caefaf716..6bb852740f 100644 --- a/rpcs3/Emu/Cell/SPURecompiler.cpp +++ b/rpcs3/Emu/Cell/SPURecompiler.cpp @@ -7478,6 +7478,13 @@ public: { const auto a = get_vr(op.ra); const auto b = get_vr(op.rb); + + if (op.ra == op.rb && !m_interp_magn) + { + set_vr(op.rt, a * b); + return; + } + const auto ma = eval(sext(fcmp_uno(a != fsplat(0.)))); const auto mb = eval(sext(fcmp_uno(b != fsplat(0.)))); const auto ca = eval(bitcast(bitcast(a) & mb));