From 155bcb1649e35ec277babe5c864f2fe8f706ba2c Mon Sep 17 00:00:00 2001 From: Lioncash Date: Thu, 24 May 2018 14:37:05 -0400 Subject: [PATCH] Interpreter_FloatingPoint: Set FPSCR.VXSNAN if the input to frsqrte is a signaling NaN If the input is a signaling NaN, then we need to signal that via setting the FPSCR.VXSNAN bit. We also shouldn't update the FPRF flags if FPSCR.VE is set. --- .../Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp index f6d63087d7..e88d97b3cf 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp @@ -427,6 +427,13 @@ void Interpreter::frsqrtex(UGeckoInstruction inst) if (FPSCR.ZE == 0) PowerPC::UpdateFPRF(result); } + else if (Common::IsSNAN(b)) + { + SetFPException(FPSCR_VXSNAN); + + if (FPSCR.VE == 0) + PowerPC::UpdateFPRF(result); + } else { PowerPC::UpdateFPRF(result);