mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-23 21:39:52 +00:00
Integer round inf/nan to INT_MAX/INT_MIN.
Instead of 0x80000000 (the default "invalid" value.) Improves the fpu test.
This commit is contained in:
parent
a537aa946d
commit
455431ba13
@ -866,13 +866,31 @@ namespace MIPSInt
|
|||||||
case 5: F(fd) = fabsf(F(fs)); break; //abs
|
case 5: F(fd) = fabsf(F(fs)); break; //abs
|
||||||
case 6: F(fd) = F(fs); break; //mov
|
case 6: F(fd) = F(fs); break; //mov
|
||||||
case 7: F(fd) = -F(fs); break; //neg
|
case 7: F(fd) = -F(fs); break; //neg
|
||||||
case 12: FsI(fd) = (int)floorf(F(fs)+0.5f); break; //round.w.s
|
case 12:
|
||||||
case 13: FsI(fd) = F(fs)>=0 ? (int)floorf(F(fs)) : (int)ceilf(F(fs)); break;//trunc.w.s
|
case 13:
|
||||||
case 14: FsI(fd) = (int)ceilf (F(fs)); break; //ceil.w.s
|
case 14:
|
||||||
case 15: FsI(fd) = (int)floorf(F(fs)); break; //floor.w.s
|
case 15:
|
||||||
|
if (my_isinf(F(fs)) || my_isnan(F(fs)))
|
||||||
|
{
|
||||||
|
FsI(fd) = my_isinf(F(fs)) && F(fs) < 0.0f ? -2147483648LL : 2147483647LL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch (op & 0x3f)
|
||||||
|
{
|
||||||
|
case 12: FsI(fd) = (int)floorf(F(fs)+0.5f); break; //round.w.s
|
||||||
|
case 13: FsI(fd) = F(fs)>=0 ? (int)floorf(F(fs)) : (int)ceilf(F(fs)); break;//trunc.w.s
|
||||||
|
case 14: FsI(fd) = (int)ceilf (F(fs)); break; //ceil.w.s
|
||||||
|
case 15: FsI(fd) = (int)floorf(F(fs)); break; //floor.w.s
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 32: F(fd) = (float)FsI(fs); break; //cvt.s.w
|
case 32: F(fd) = (float)FsI(fs); break; //cvt.s.w
|
||||||
|
|
||||||
case 36:
|
case 36:
|
||||||
|
if (my_isinf(F(fs)) || my_isnan(F(fs)))
|
||||||
|
{
|
||||||
|
FsI(fd) = my_isinf(F(fs)) && F(fs) < 0.0f ? -2147483648LL : 2147483647LL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
switch (currentMIPS->fcr31 & 3)
|
switch (currentMIPS->fcr31 & 3)
|
||||||
{
|
{
|
||||||
case 0: FsI(fd) = (int)round_ieee_754(F(fs)); break; // RINT_0
|
case 0: FsI(fd) = (int)round_ieee_754(F(fs)); break; // RINT_0
|
||||||
|
Loading…
Reference in New Issue
Block a user