From d451a0b7b76ef2ee001dd62bed847ee6f33ac9ff Mon Sep 17 00:00:00 2001 From: Eladash Date: Fri, 3 Apr 2020 16:27:08 +0300 Subject: [PATCH] SPU LLVM: Improve FNMS Should be more accurate with postive/negative zero inputs according to docs while being more optimized. TODO: Check SPU precise interptreter. --- rpcs3/Emu/Cell/SPURecompiler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp index 6ff5e6bcfa..58dee0d012 100644 --- a/rpcs3/Emu/Cell/SPURecompiler.cpp +++ b/rpcs3/Emu/Cell/SPURecompiler.cpp @@ -7465,9 +7465,9 @@ public: { // See FMA. if (g_cfg.core.spu_accurate_xfloat) - set_vr(op.rt4, -fmuladd(get_vr(op.ra), get_vr(op.rb), eval(-get_vr(op.rc)))); + set_vr(op.rt4, fmuladd(eval(-get_vr(op.ra)), get_vr(op.rb), get_vr(op.rc))); else if (g_cfg.core.spu_approx_xfloat) - set_vr(op.rt4, -fma32x4(get_vr(op.ra), get_vr(op.rb), eval(-get_vr(op.rc)))); + set_vr(op.rt4, fma32x4(eval(-get_vr(op.ra)), get_vr(op.rb), get_vr(op.rc))); else set_vr(op.rt4, get_vr(op.rc) - get_vr(op.ra) * get_vr(op.rb)); }