From 430b57833d86da2a85c2ed3a66c41e7723551aee Mon Sep 17 00:00:00 2001 From: Elad Ashkenazi <18193363+elad335@users.noreply.github.com> Date: Sun, 28 Apr 2024 20:01:30 +0300 Subject: [PATCH] SPU LLVM: Remove wrong zero sign fixup --- rpcs3/Emu/Cell/SPULLVMRecompiler.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp index ea69470b8f..c1764b8a77 100644 --- a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp @@ -5987,29 +5987,24 @@ public: // This is odd since SPU code could just use the FM instruction, but it seems common enough if (auto [ok, data] = get_const_vector(c.value, m_pos); ok) { - if (is_spu_float_zero(data, -1)) + if (is_spu_float_zero(data, 0)) { return eval(a * b); } - - if (!m_use_fma && is_spu_float_zero(data, +1)) - { - return eval(a * b + fsplat(0.f)); - } } if ([&]() { if (auto [ok, data] = get_const_vector(a.value, m_pos); ok) { - if (!is_spu_float_zero(data, +1)) + if (!is_spu_float_zero(data, 0)) { return false; } if (auto [ok0, data0] = get_const_vector(b.value, m_pos); ok0) { - if (is_spu_float_zero(data0, +1)) + if (is_spu_float_zero(data0, 0)) { return true; } @@ -6018,14 +6013,14 @@ public: if (auto [ok, data] = get_const_vector(a.value, m_pos); ok) { - if (!is_spu_float_zero(data, -1)) + if (!is_spu_float_zero(data, 0)) { return false; } if (auto [ok0, data0] = get_const_vector(b.value, m_pos); ok0) { - if (is_spu_float_zero(data0, -1)) + if (is_spu_float_zero(data0, 0)) { return true; }