From bd1f5ff194de08a37292b356288d21a5cac7f3e1 Mon Sep 17 00:00:00 2001 From: elad335 <18193363+elad335@users.noreply.github.com> Date: Thu, 3 Apr 2025 14:54:56 +0300 Subject: [PATCH] PPU LLVM: Fix VMAXFP, VMINFP --- rpcs3/Emu/Cell/PPUTranslator.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUTranslator.cpp b/rpcs3/Emu/Cell/PPUTranslator.cpp index 8962cc284d..ac630f7582 100644 --- a/rpcs3/Emu/Cell/PPUTranslator.cpp +++ b/rpcs3/Emu/Cell/PPUTranslator.cpp @@ -1290,7 +1290,7 @@ void PPUTranslator::VMADDFP(ppu_opcode_t op) void PPUTranslator::VMAXFP(ppu_opcode_t op) { const auto [a, b] = get_vrs(op.va, op.vb); - set_vr(op.vd, vec_handle_result(bitcast(bitcast(fmax(a, b)) & bitcast(fmax(b, a))))); + set_vr(op.vd, vec_handle_result(select(fcmp_ord(a < b) | fcmp_uno(b != b), b, a))); } void PPUTranslator::VMAXSB(ppu_opcode_t op) @@ -1352,7 +1352,7 @@ void PPUTranslator::VMHRADDSHS(ppu_opcode_t op) void PPUTranslator::VMINFP(ppu_opcode_t op) { const auto [a, b] = get_vrs(op.va, op.vb); - set_vr(op.vd, vec_handle_result(bitcast(bitcast(fmin(a, b)) | bitcast(fmin(b, a))))); + set_vr(op.vd, vec_handle_result(select(fcmp_ord(a > b) | fcmp_uno(b != b), b, a))); } void PPUTranslator::VMINSB(ppu_opcode_t op)