Revert f13b366e8d57c15a6a97cc0721d68ddb5268385f: the fixNaN function is
completely bogus and the correct one doesn't have any effect.
This commit is contained in:
parent
4fd233aca0
commit
2d3fd59e04
|
@ -110,10 +110,23 @@ struct SH4ThrownException {
|
|||
};
|
||||
|
||||
// The SH4 sets the signaling bit to 0 for qNaN (unlike all recent CPUs). Some games relies on this.
|
||||
static INLINE float fixNaN(f32 f)
|
||||
static INLINE f32 fixNaN(f32 f)
|
||||
{
|
||||
// u32& hex = *(u32 *)&f;
|
||||
// // no fast-math
|
||||
// if (f != f)
|
||||
// hex = 0x7fbfffff;
|
||||
// // fast-math
|
||||
// if ((hex & 0x7fffffff) > 0x7f800000)
|
||||
// hex = 0x7fbfffff;
|
||||
return f;
|
||||
}
|
||||
|
||||
static INLINE f64 fixNaN64(f64 f)
|
||||
{
|
||||
// no fast-math
|
||||
// return f == f ? f : 0x7fbfffff;
|
||||
// return f == f ? f : 0x7ff7ffffffffffffll;
|
||||
// fast-math
|
||||
return (*(u32 *)&f & 0x7fffffff) <= 0x7f800000 ? f : 0x7fbfffff;
|
||||
// return (*(u64 *)&f & 0x7fffffffffffffffll) <= 0x7f80000000000000ll ? f : 0x7ff7ffffffffffffll;
|
||||
return f;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue