Use accurate frsqrte in Interpreter.
The implementation of frsqrte exposed by this change isn't completely correct; that will be fixed in a later commit.
This commit is contained in:
parent
6544d53c16
commit
ad4ad7c1ed
|
@ -419,7 +419,6 @@ void Interpreter::frsqrtex(UGeckoInstruction _inst)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef VERY_ACCURATE_FP
|
|
||||||
if (b == 0.0)
|
if (b == 0.0)
|
||||||
{
|
{
|
||||||
SetFPException(FPSCR_ZX);
|
SetFPException(FPSCR_ZX);
|
||||||
|
@ -442,11 +441,6 @@ void Interpreter::frsqrtex(UGeckoInstruction _inst)
|
||||||
outa |= frsqrtex_lut[idx] >> 12;
|
outa |= frsqrtex_lut[idx] >> 12;
|
||||||
riPS0(_inst.FD) = ((u64)outa << 32) + (u64)outb;
|
riPS0(_inst.FD) = ((u64)outa << 32) + (u64)outb;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
if (b == 0.0)
|
|
||||||
SetFPException(FPSCR_ZX);
|
|
||||||
rPS0(_inst.FD) = ForceDouble(1.0 / sqrt(b));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
UpdateFPRF(rPS0(_inst.FD));
|
UpdateFPRF(rPS0(_inst.FD));
|
||||||
if (_inst.Rc) Helper_UpdateCR1();
|
if (_inst.Rc) Helper_UpdateCR1();
|
||||||
|
|
Loading…
Reference in New Issue