Implement versions of float*_is_any_nan() for the floatx80 and float128 types.
Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> --- fpu/softfloat.h | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/fpu/softfloat.h b/fpu/softfloat.h index f2104c6..ac81845 100644 --- a/fpu/softfloat.h +++ b/fpu/softfloat.h @@ -469,6 +469,11 @@ INLINE int floatx80_is_zero(floatx80 a) return (a.high & 0x7fff) == 0 && a.low == 0; } +INLINE int floatx80_is_any_nan(floatx80 a) +{ + return ((a.high & 0x7fff) == 0x7fff) && (a.low<<1); +} + #endif #ifdef FLOAT128 @@ -536,6 +541,12 @@ INLINE int float128_is_zero(float128 a) return (a.high & 0x7fffffffffffffffLL) == 0 && a.low == 0; } +INLINE int float128_is_any_nan(float128 a) +{ + return ((a.high >> 48) & 0x7fff) == 0x7fff && + ((a.low != 0) || ((a.high & 0xffffffffffffLL) != 0)); +} + #endif #else /* CONFIG_SOFTFLOAT */ -- 1.6.3.3