Permalink
Browse files

Interpreter_FloatingPoint: Handle QNaNs properly in frsp

Essentially the same behavior as the SNaN path, minus the conditional result and setting of the VXSNAN FPSCR bit.
  • Loading branch information...
lioncash committed Apr 12, 2018
1 parent 965b963 commit a36bf438cde503f98964af16a958891ad9cd8ff9
Showing with 6 additions and 3 deletions.
  1. +6 −3 Source/Core/Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp
@@ -275,11 +275,14 @@ void Interpreter::frspx(UGeckoInstruction inst) // round to single
const double b = rPS0(inst.FB);
const double rounded = ForceSingle(b);
if (MathUtil::IsSNAN(b))
if (std::isnan(b))
{
SetFPException(FPSCR_VXSNAN);
const bool is_snan = MathUtil::IsSNAN(b);
if (FPSCR.VE == 0)
if (is_snan)
SetFPException(FPSCR_VXSNAN);
if (!is_snan || FPSCR.VE == 0)
{
rPS0(inst.FD) = rounded;
rPS1(inst.FD) = rounded;

0 comments on commit a36bf43

Please sign in to comment.