diff options
| author | Lioncash <mathew1800@gmail.com> | 2018-05-24 14:37:05 -0400 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2018-05-24 14:37:09 -0400 |
| commit | 155bcb1649e35ec277babe5c864f2fe8f706ba2c (patch) | |
| tree | da53be4d1c8a63ba23076e1c897c882567cd9813 /Source/Core | |
| parent | 31504f85a7998db647d03241289300c8206c9081 (diff) | |
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.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
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); |
