Added some NaN related utils.

This commit is contained in:
Jean-Philip Desjardins 2021-01-18 13:05:10 -05:00
parent 622a21bc12
commit 7f92effbd6
2 changed files with 22 additions and 0 deletions

View file

@ -62,6 +62,26 @@ void FpUtils::IsZero(CMipsJitter* codeGen, size_t offset)
codeGen->PushCst(0);
}
void FpUtils::IsNaN(CMipsJitter* codeGen, size_t offset)
{
//Check wether an FP number is a NaN (exponent is 0xFF)
//BeginIf(CONDITION_EQ) to verify result
codeGen->PushRel(offset);
codeGen->PushCst(0x7F800000);
codeGen->And();
codeGen->PushCst(0x7F800000);
}
void FpUtils::AssertIsNotNaN(CMipsJitter* codeGen, size_t offset)
{
FpUtils::IsNaN(codeGen, offset);
codeGen->BeginIf(Jitter::CONDITION_EQ);
{
codeGen->Break();
}
codeGen->EndIf();
}
void FpUtils::ComputeDivisionByZero(CMipsJitter* codeGen, size_t dividend, size_t divisor)
{
//Return either +/-FP_MAX

View file

@ -10,5 +10,7 @@ namespace FpUtils
void EnableFpExceptions();
void IsZero(CMipsJitter*, size_t);
void IsNaN(CMipsJitter*, size_t);
void AssertIsNotNaN(CMipsJitter*, size_t);
void ComputeDivisionByZero(CMipsJitter*, size_t, size_t);
}