Interpreter_FloatingPoint: Clear FPSCR.FI and FPSCR.FR in invalid operation cases

As explained within 179d73ac0d, the table
within the Programming Environments Manual for PowerPC lists the FI and
FR bits as cleared for invalid operation cases. So, we amend the
relevant cases here in order to be accurate to hardware.
This commit is contained in:
Lioncash 2018-06-02 15:30:51 -04:00
parent b71a9e658f
commit 21add26b71
1 changed files with 4 additions and 0 deletions

View File

@ -432,6 +432,8 @@ void Interpreter::frsqrtex(UGeckoInstruction inst)
if (b < 0.0)
{
SetFPException(FPSCR_VXSQRT);
FPSCR.FI = 0;
FPSCR.FR = 0;
if (FPSCR.VE == 0)
compute_result(b);
@ -446,6 +448,8 @@ void Interpreter::frsqrtex(UGeckoInstruction inst)
else if (Common::IsSNAN(b))
{
SetFPException(FPSCR_VXSNAN);
FPSCR.FI = 0;
FPSCR.FR = 0;
if (FPSCR.VE == 0)
compute_result(b);