Permalink
Browse files

Interpreter_FPUtils: Unset FPSCR.FI and FPSCR.FR when FPSCR.ZX is set…

… in NI_div()

Another bit of behavior that we weren't performing correctly is the
unsetting of FPSCR.FI and FPSCR.FR when FPSCR.ZX is supposed to be set.
This is supported in PEM's section 3.3.6.1 where the following is
stated:

"
When a zero divide condition occurs, the following actions are taken:

- Zero divide exception condition bit is set FPSCR[ZX] = 1.
- FPSCR[FR, FI] are cleared.
"

And so, this fixes that behavior.
  • Loading branch information...
lioncash committed May 28, 2018
1 parent 3deadd1 commit 7bfeffe32f9f1aa7ead0eaaa746eaaaee67e0be6
Showing with 2 additions and 0 deletions.
  1. +2 −0 Source/Core/Core/PowerPC/Interpreter/Interpreter_FPUtils.h
@@ -134,6 +134,8 @@ inline double NI_div(double a, double b)
else
{
SetFPException(FPSCR_ZX);
FPSCR.FI = 0;
FPSCR.FR = 0;
}
}
else if (std::isinf(a) && std::isinf(b))

0 comments on commit 7bfeffe

Please sign in to comment.