softfloat: Rename float*_is_nan() functions to float*_is_quiet_nan()
The softfloat functions float*_is_nan() were badly misnamed, because they return true only for quiet NaNs, not for all NaNs. Rename them to float*_is_quiet_nan() to more accurately reflect what they do. This change was produced by: perl -p -i -e 's/_is_nan/_is_quiet_nan/g' $(git grep -l is_nan) (with the results manually checked.) Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Nathan Froyd <froydnj@codesourcery.com> Acked-by: Edgar E. Iglesias <edgar.iglesias@gmail.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
f96a38347a
commit
185698715d
@ -254,7 +254,7 @@ int float32_is_signaling_nan( float32 a1)
|
||||
return ( ( ( a>>22 ) & 0x1FF ) == 0x1FE ) && ( a & 0x003FFFFF );
|
||||
}
|
||||
|
||||
int float32_is_nan( float32 a1 )
|
||||
int float32_is_quiet_nan( float32 a1 )
|
||||
{
|
||||
float32u u;
|
||||
uint64_t a;
|
||||
@ -411,7 +411,7 @@ int float64_is_signaling_nan( float64 a1)
|
||||
|
||||
}
|
||||
|
||||
int float64_is_nan( float64 a1 )
|
||||
int float64_is_quiet_nan( float64 a1 )
|
||||
{
|
||||
float64u u;
|
||||
uint64_t a;
|
||||
@ -504,7 +504,7 @@ int floatx80_is_signaling_nan( floatx80 a1)
|
||||
&& ( u.i.low == aLow );
|
||||
}
|
||||
|
||||
int floatx80_is_nan( floatx80 a1 )
|
||||
int floatx80_is_quiet_nan( floatx80 a1 )
|
||||
{
|
||||
floatx80u u;
|
||||
u.f = a1;
|
||||
|
@ -242,7 +242,7 @@ INLINE int float32_unordered( float32 a, float32 b STATUS_PARAM)
|
||||
int float32_compare( float32, float32 STATUS_PARAM );
|
||||
int float32_compare_quiet( float32, float32 STATUS_PARAM );
|
||||
int float32_is_signaling_nan( float32 );
|
||||
int float32_is_nan( float32 );
|
||||
int float32_is_quiet_nan( float32 );
|
||||
|
||||
INLINE float32 float32_abs(float32 a)
|
||||
{
|
||||
@ -351,7 +351,7 @@ INLINE int float64_unordered( float64 a, float64 b STATUS_PARAM)
|
||||
int float64_compare( float64, float64 STATUS_PARAM );
|
||||
int float64_compare_quiet( float64, float64 STATUS_PARAM );
|
||||
int float64_is_signaling_nan( float64 );
|
||||
int float64_is_nan( float64 );
|
||||
int float64_is_quiet_nan( float64 );
|
||||
|
||||
INLINE float64 float64_abs(float64 a)
|
||||
{
|
||||
@ -455,7 +455,7 @@ INLINE int floatx80_unordered( floatx80 a, floatx80 b STATUS_PARAM)
|
||||
int floatx80_compare( floatx80, floatx80 STATUS_PARAM );
|
||||
int floatx80_compare_quiet( floatx80, floatx80 STATUS_PARAM );
|
||||
int floatx80_is_signaling_nan( floatx80 );
|
||||
int floatx80_is_nan( floatx80 );
|
||||
int floatx80_is_quiet_nan( floatx80 );
|
||||
|
||||
INLINE floatx80 floatx80_abs(floatx80 a)
|
||||
{
|
||||
|
@ -76,7 +76,7 @@ typedef struct {
|
||||
| NaN; otherwise returns 0.
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
int float32_is_nan( float32 a_ )
|
||||
int float32_is_quiet_nan( float32 a_ )
|
||||
{
|
||||
uint32_t a = float32_val(a_);
|
||||
#if SNAN_BIT_IS_ONE
|
||||
@ -166,9 +166,9 @@ static float32 propagateFloat32NaN( float32 a, float32 b STATUS_PARAM)
|
||||
if ( STATUS(default_nan_mode) )
|
||||
return float32_default_nan;
|
||||
|
||||
aIsNaN = float32_is_nan( a );
|
||||
aIsNaN = float32_is_quiet_nan( a );
|
||||
aIsSignalingNaN = float32_is_signaling_nan( a );
|
||||
bIsNaN = float32_is_nan( b );
|
||||
bIsNaN = float32_is_quiet_nan( b );
|
||||
bIsSignalingNaN = float32_is_signaling_nan( b );
|
||||
av = float32_val(a);
|
||||
bv = float32_val(b);
|
||||
@ -223,7 +223,7 @@ static float32 propagateFloat32NaN( float32 a, float32 b STATUS_PARAM)
|
||||
| NaN; otherwise returns 0.
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
int float64_is_nan( float64 a_ )
|
||||
int float64_is_quiet_nan( float64 a_ )
|
||||
{
|
||||
bits64 a = float64_val(a_);
|
||||
#if SNAN_BIT_IS_ONE
|
||||
@ -320,9 +320,9 @@ static float64 propagateFloat64NaN( float64 a, float64 b STATUS_PARAM)
|
||||
if ( STATUS(default_nan_mode) )
|
||||
return float64_default_nan;
|
||||
|
||||
aIsNaN = float64_is_nan( a );
|
||||
aIsNaN = float64_is_quiet_nan( a );
|
||||
aIsSignalingNaN = float64_is_signaling_nan( a );
|
||||
bIsNaN = float64_is_nan( b );
|
||||
bIsNaN = float64_is_quiet_nan( b );
|
||||
bIsSignalingNaN = float64_is_signaling_nan( b );
|
||||
av = float64_val(a);
|
||||
bv = float64_val(b);
|
||||
@ -377,7 +377,7 @@ static float64 propagateFloat64NaN( float64 a, float64 b STATUS_PARAM)
|
||||
| quiet NaN; otherwise returns 0.
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
int floatx80_is_nan( floatx80 a )
|
||||
int floatx80_is_quiet_nan( floatx80 a )
|
||||
{
|
||||
#if SNAN_BIT_IS_ONE
|
||||
bits64 aLow;
|
||||
@ -462,9 +462,9 @@ static floatx80 propagateFloatx80NaN( floatx80 a, floatx80 b STATUS_PARAM)
|
||||
return a;
|
||||
}
|
||||
|
||||
aIsNaN = floatx80_is_nan( a );
|
||||
aIsNaN = floatx80_is_quiet_nan( a );
|
||||
aIsSignalingNaN = floatx80_is_signaling_nan( a );
|
||||
bIsNaN = floatx80_is_nan( b );
|
||||
bIsNaN = floatx80_is_quiet_nan( b );
|
||||
bIsSignalingNaN = floatx80_is_signaling_nan( b );
|
||||
#if SNAN_BIT_IS_ONE
|
||||
a.low &= ~LIT64( 0xC000000000000000 );
|
||||
@ -511,7 +511,7 @@ static floatx80 propagateFloatx80NaN( floatx80 a, floatx80 b STATUS_PARAM)
|
||||
| NaN; otherwise returns 0.
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
int float128_is_nan( float128 a )
|
||||
int float128_is_quiet_nan( float128 a )
|
||||
{
|
||||
#if SNAN_BIT_IS_ONE
|
||||
return
|
||||
@ -588,9 +588,9 @@ static float128 propagateFloat128NaN( float128 a, float128 b STATUS_PARAM)
|
||||
return a;
|
||||
}
|
||||
|
||||
aIsNaN = float128_is_nan( a );
|
||||
aIsNaN = float128_is_quiet_nan( a );
|
||||
aIsSignalingNaN = float128_is_signaling_nan( a );
|
||||
bIsNaN = float128_is_nan( b );
|
||||
bIsNaN = float128_is_quiet_nan( b );
|
||||
bIsSignalingNaN = float128_is_signaling_nan( b );
|
||||
#if SNAN_BIT_IS_ONE
|
||||
a.high &= ~LIT64( 0x0000800000000000 );
|
||||
|
@ -287,7 +287,7 @@ int float32_le_quiet( float32, float32 STATUS_PARAM );
|
||||
int float32_lt_quiet( float32, float32 STATUS_PARAM );
|
||||
int float32_compare( float32, float32 STATUS_PARAM );
|
||||
int float32_compare_quiet( float32, float32 STATUS_PARAM );
|
||||
int float32_is_nan( float32 );
|
||||
int float32_is_quiet_nan( float32 );
|
||||
int float32_is_signaling_nan( float32 );
|
||||
float32 float32_maybe_silence_nan( float32 );
|
||||
float32 float32_scalbn( float32, int STATUS_PARAM );
|
||||
@ -367,7 +367,7 @@ int float64_le_quiet( float64, float64 STATUS_PARAM );
|
||||
int float64_lt_quiet( float64, float64 STATUS_PARAM );
|
||||
int float64_compare( float64, float64 STATUS_PARAM );
|
||||
int float64_compare_quiet( float64, float64 STATUS_PARAM );
|
||||
int float64_is_nan( float64 a );
|
||||
int float64_is_quiet_nan( float64 a );
|
||||
int float64_is_signaling_nan( float64 );
|
||||
float64 float64_maybe_silence_nan( float64 );
|
||||
float64 float64_scalbn( float64, int STATUS_PARAM );
|
||||
@ -437,7 +437,7 @@ int floatx80_lt( floatx80, floatx80 STATUS_PARAM );
|
||||
int floatx80_eq_signaling( floatx80, floatx80 STATUS_PARAM );
|
||||
int floatx80_le_quiet( floatx80, floatx80 STATUS_PARAM );
|
||||
int floatx80_lt_quiet( floatx80, floatx80 STATUS_PARAM );
|
||||
int floatx80_is_nan( floatx80 );
|
||||
int floatx80_is_quiet_nan( floatx80 );
|
||||
int floatx80_is_signaling_nan( floatx80 );
|
||||
floatx80 floatx80_scalbn( floatx80, int STATUS_PARAM );
|
||||
|
||||
@ -503,7 +503,7 @@ int float128_le_quiet( float128, float128 STATUS_PARAM );
|
||||
int float128_lt_quiet( float128, float128 STATUS_PARAM );
|
||||
int float128_compare( float128, float128 STATUS_PARAM );
|
||||
int float128_compare_quiet( float128, float128 STATUS_PARAM );
|
||||
int float128_is_nan( float128 );
|
||||
int float128_is_quiet_nan( float128 );
|
||||
int float128_is_signaling_nan( float128 );
|
||||
float128 float128_scalbn( float128, int STATUS_PARAM );
|
||||
|
||||
|
@ -199,21 +199,21 @@ static unsigned int PerformComparison(const unsigned int opcode)
|
||||
{
|
||||
case typeSingle:
|
||||
//printk("single.\n");
|
||||
if (float32_is_nan(fpa11->fpreg[Fn].fSingle))
|
||||
if (float32_is_quiet_nan(fpa11->fpreg[Fn].fSingle))
|
||||
goto unordered;
|
||||
rFn = float32_to_floatx80(fpa11->fpreg[Fn].fSingle, &fpa11->fp_status);
|
||||
break;
|
||||
|
||||
case typeDouble:
|
||||
//printk("double.\n");
|
||||
if (float64_is_nan(fpa11->fpreg[Fn].fDouble))
|
||||
if (float64_is_quiet_nan(fpa11->fpreg[Fn].fDouble))
|
||||
goto unordered;
|
||||
rFn = float64_to_floatx80(fpa11->fpreg[Fn].fDouble, &fpa11->fp_status);
|
||||
break;
|
||||
|
||||
case typeExtended:
|
||||
//printk("extended.\n");
|
||||
if (floatx80_is_nan(fpa11->fpreg[Fn].fExtended))
|
||||
if (floatx80_is_quiet_nan(fpa11->fpreg[Fn].fExtended))
|
||||
goto unordered;
|
||||
rFn = fpa11->fpreg[Fn].fExtended;
|
||||
break;
|
||||
@ -225,7 +225,7 @@ static unsigned int PerformComparison(const unsigned int opcode)
|
||||
{
|
||||
//printk("Fm is a constant: #%d.\n",Fm);
|
||||
rFm = getExtendedConstant(Fm);
|
||||
if (floatx80_is_nan(rFm))
|
||||
if (floatx80_is_quiet_nan(rFm))
|
||||
goto unordered;
|
||||
}
|
||||
else
|
||||
@ -235,21 +235,21 @@ static unsigned int PerformComparison(const unsigned int opcode)
|
||||
{
|
||||
case typeSingle:
|
||||
//printk("single.\n");
|
||||
if (float32_is_nan(fpa11->fpreg[Fm].fSingle))
|
||||
if (float32_is_quiet_nan(fpa11->fpreg[Fm].fSingle))
|
||||
goto unordered;
|
||||
rFm = float32_to_floatx80(fpa11->fpreg[Fm].fSingle, &fpa11->fp_status);
|
||||
break;
|
||||
|
||||
case typeDouble:
|
||||
//printk("double.\n");
|
||||
if (float64_is_nan(fpa11->fpreg[Fm].fDouble))
|
||||
if (float64_is_quiet_nan(fpa11->fpreg[Fm].fDouble))
|
||||
goto unordered;
|
||||
rFm = float64_to_floatx80(fpa11->fpreg[Fm].fDouble, &fpa11->fp_status);
|
||||
break;
|
||||
|
||||
case typeExtended:
|
||||
//printk("extended.\n");
|
||||
if (floatx80_is_nan(fpa11->fpreg[Fm].fExtended))
|
||||
if (floatx80_is_quiet_nan(fpa11->fpreg[Fm].fExtended))
|
||||
goto unordered;
|
||||
rFm = fpa11->fpreg[Fm].fExtended;
|
||||
break;
|
||||
|
@ -904,7 +904,7 @@ uint64_t helper_cmptun (uint64_t a, uint64_t b)
|
||||
fa = t_to_float64(a);
|
||||
fb = t_to_float64(b);
|
||||
|
||||
if (float64_is_nan(fa) || float64_is_nan(fb))
|
||||
if (float64_is_quiet_nan(fa) || float64_is_quiet_nan(fb))
|
||||
return 0x4000000000000000ULL;
|
||||
else
|
||||
return 0;
|
||||
|
@ -614,10 +614,10 @@ float64 HELPER(sub_cmp_f64)(CPUState *env, float64 a, float64 b)
|
||||
/* ??? Should flush denormals to zero. */
|
||||
float64 res;
|
||||
res = float64_sub(a, b, &env->fp_status);
|
||||
if (float64_is_nan(res)) {
|
||||
if (float64_is_quiet_nan(res)) {
|
||||
/* +/-inf compares equal against itself, but sub returns nan. */
|
||||
if (!float64_is_nan(a)
|
||||
&& !float64_is_nan(b)) {
|
||||
if (!float64_is_quiet_nan(a)
|
||||
&& !float64_is_quiet_nan(b)) {
|
||||
res = float64_zero;
|
||||
if (float64_lt_quiet(a, res, &env->fp_status))
|
||||
res = float64_chs(res);
|
||||
|
@ -308,7 +308,7 @@ uint32_t helper_fcmp_un(uint32_t a, uint32_t b)
|
||||
r = 1;
|
||||
}
|
||||
|
||||
if (float32_is_nan(fa.f) || float32_is_nan(fb.f)) {
|
||||
if (float32_is_quiet_nan(fa.f) || float32_is_quiet_nan(fb.f)) {
|
||||
r = 1;
|
||||
}
|
||||
|
||||
|
@ -2877,10 +2877,10 @@ static int float64_is_unordered(int sig, float64 a, float64 b STATUS_PARAM)
|
||||
{
|
||||
if (float64_is_signaling_nan(a) ||
|
||||
float64_is_signaling_nan(b) ||
|
||||
(sig && (float64_is_nan(a) || float64_is_nan(b)))) {
|
||||
(sig && (float64_is_quiet_nan(a) || float64_is_quiet_nan(b)))) {
|
||||
float_raise(float_flag_invalid, status);
|
||||
return 1;
|
||||
} else if (float64_is_nan(a) || float64_is_nan(b)) {
|
||||
} else if (float64_is_quiet_nan(a) || float64_is_quiet_nan(b)) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
@ -2935,10 +2935,10 @@ static flag float32_is_unordered(int sig, float32 a, float32 b STATUS_PARAM)
|
||||
{
|
||||
if (float32_is_signaling_nan(a) ||
|
||||
float32_is_signaling_nan(b) ||
|
||||
(sig && (float32_is_nan(a) || float32_is_nan(b)))) {
|
||||
(sig && (float32_is_quiet_nan(a) || float32_is_quiet_nan(b)))) {
|
||||
float_raise(float_flag_invalid, status);
|
||||
return 1;
|
||||
} else if (float32_is_nan(a) || float32_is_nan(b)) {
|
||||
} else if (float32_is_quiet_nan(a) || float32_is_quiet_nan(b)) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
|
@ -546,7 +546,7 @@ uint32_t helper_compute_fprf (uint64_t arg, uint32_t set_fprf)
|
||||
int ret;
|
||||
farg.ll = arg;
|
||||
isneg = float64_is_neg(farg.d);
|
||||
if (unlikely(float64_is_nan(farg.d))) {
|
||||
if (unlikely(float64_is_quiet_nan(farg.d))) {
|
||||
if (float64_is_signaling_nan(farg.d)) {
|
||||
/* Signaling NaN: flags are undefined */
|
||||
ret = 0x00;
|
||||
@ -1111,7 +1111,7 @@ uint64_t helper_fctiw (uint64_t arg)
|
||||
if (unlikely(float64_is_signaling_nan(farg.d))) {
|
||||
/* sNaN conversion */
|
||||
farg.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN | POWERPC_EXCP_FP_VXCVI);
|
||||
} else if (unlikely(float64_is_nan(farg.d) || float64_is_infinity(farg.d))) {
|
||||
} else if (unlikely(float64_is_quiet_nan(farg.d) || float64_is_infinity(farg.d))) {
|
||||
/* qNan / infinity conversion */
|
||||
farg.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI);
|
||||
} else {
|
||||
@ -1135,7 +1135,7 @@ uint64_t helper_fctiwz (uint64_t arg)
|
||||
if (unlikely(float64_is_signaling_nan(farg.d))) {
|
||||
/* sNaN conversion */
|
||||
farg.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN | POWERPC_EXCP_FP_VXCVI);
|
||||
} else if (unlikely(float64_is_nan(farg.d) || float64_is_infinity(farg.d))) {
|
||||
} else if (unlikely(float64_is_quiet_nan(farg.d) || float64_is_infinity(farg.d))) {
|
||||
/* qNan / infinity conversion */
|
||||
farg.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI);
|
||||
} else {
|
||||
@ -1168,7 +1168,7 @@ uint64_t helper_fctid (uint64_t arg)
|
||||
if (unlikely(float64_is_signaling_nan(farg.d))) {
|
||||
/* sNaN conversion */
|
||||
farg.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN | POWERPC_EXCP_FP_VXCVI);
|
||||
} else if (unlikely(float64_is_nan(farg.d) || float64_is_infinity(farg.d))) {
|
||||
} else if (unlikely(float64_is_quiet_nan(farg.d) || float64_is_infinity(farg.d))) {
|
||||
/* qNan / infinity conversion */
|
||||
farg.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI);
|
||||
} else {
|
||||
@ -1186,7 +1186,7 @@ uint64_t helper_fctidz (uint64_t arg)
|
||||
if (unlikely(float64_is_signaling_nan(farg.d))) {
|
||||
/* sNaN conversion */
|
||||
farg.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN | POWERPC_EXCP_FP_VXCVI);
|
||||
} else if (unlikely(float64_is_nan(farg.d) || float64_is_infinity(farg.d))) {
|
||||
} else if (unlikely(float64_is_quiet_nan(farg.d) || float64_is_infinity(farg.d))) {
|
||||
/* qNan / infinity conversion */
|
||||
farg.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI);
|
||||
} else {
|
||||
@ -1205,7 +1205,7 @@ static inline uint64_t do_fri(uint64_t arg, int rounding_mode)
|
||||
if (unlikely(float64_is_signaling_nan(farg.d))) {
|
||||
/* sNaN round */
|
||||
farg.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN | POWERPC_EXCP_FP_VXCVI);
|
||||
} else if (unlikely(float64_is_nan(farg.d) || float64_is_infinity(farg.d))) {
|
||||
} else if (unlikely(float64_is_quiet_nan(farg.d) || float64_is_infinity(farg.d))) {
|
||||
/* qNan / infinity round */
|
||||
farg.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI);
|
||||
} else {
|
||||
@ -1375,7 +1375,7 @@ uint64_t helper_fnmadd (uint64_t arg1, uint64_t arg2, uint64_t arg3)
|
||||
farg1.d = float64_mul(farg1.d, farg2.d, &env->fp_status);
|
||||
farg1.d = float64_add(farg1.d, farg3.d, &env->fp_status);
|
||||
#endif
|
||||
if (likely(!float64_is_nan(farg1.d)))
|
||||
if (likely(!float64_is_quiet_nan(farg1.d)))
|
||||
farg1.d = float64_chs(farg1.d);
|
||||
}
|
||||
return farg1.ll;
|
||||
@ -1425,7 +1425,7 @@ uint64_t helper_fnmsub (uint64_t arg1, uint64_t arg2, uint64_t arg3)
|
||||
farg1.d = float64_mul(farg1.d, farg2.d, &env->fp_status);
|
||||
farg1.d = float64_sub(farg1.d, farg3.d, &env->fp_status);
|
||||
#endif
|
||||
if (likely(!float64_is_nan(farg1.d)))
|
||||
if (likely(!float64_is_quiet_nan(farg1.d)))
|
||||
farg1.d = float64_chs(farg1.d);
|
||||
}
|
||||
return farg1.ll;
|
||||
@ -1533,7 +1533,7 @@ uint64_t helper_fsel (uint64_t arg1, uint64_t arg2, uint64_t arg3)
|
||||
|
||||
farg1.ll = arg1;
|
||||
|
||||
if ((!float64_is_neg(farg1.d) || float64_is_zero(farg1.d)) && !float64_is_nan(farg1.d))
|
||||
if ((!float64_is_neg(farg1.d) || float64_is_zero(farg1.d)) && !float64_is_quiet_nan(farg1.d))
|
||||
return arg2;
|
||||
else
|
||||
return arg3;
|
||||
@ -1546,8 +1546,8 @@ void helper_fcmpu (uint64_t arg1, uint64_t arg2, uint32_t crfD)
|
||||
farg1.ll = arg1;
|
||||
farg2.ll = arg2;
|
||||
|
||||
if (unlikely(float64_is_nan(farg1.d) ||
|
||||
float64_is_nan(farg2.d))) {
|
||||
if (unlikely(float64_is_quiet_nan(farg1.d) ||
|
||||
float64_is_quiet_nan(farg2.d))) {
|
||||
ret = 0x01UL;
|
||||
} else if (float64_lt(farg1.d, farg2.d, &env->fp_status)) {
|
||||
ret = 0x08UL;
|
||||
@ -1575,8 +1575,8 @@ void helper_fcmpo (uint64_t arg1, uint64_t arg2, uint32_t crfD)
|
||||
farg1.ll = arg1;
|
||||
farg2.ll = arg2;
|
||||
|
||||
if (unlikely(float64_is_nan(farg1.d) ||
|
||||
float64_is_nan(farg2.d))) {
|
||||
if (unlikely(float64_is_quiet_nan(farg1.d) ||
|
||||
float64_is_quiet_nan(farg2.d))) {
|
||||
ret = 0x01UL;
|
||||
} else if (float64_lt(farg1.d, farg2.d, &env->fp_status)) {
|
||||
ret = 0x08UL;
|
||||
@ -1938,7 +1938,7 @@ target_ulong helper_dlmzb (target_ulong high, target_ulong low, uint32_t update_
|
||||
/* If X is a NaN, store the corresponding QNaN into RESULT. Otherwise,
|
||||
* execute the following block. */
|
||||
#define DO_HANDLE_NAN(result, x) \
|
||||
if (float32_is_nan(x) || float32_is_signaling_nan(x)) { \
|
||||
if (float32_is_quiet_nan(x) || float32_is_signaling_nan(x)) { \
|
||||
CPU_FloatU __f; \
|
||||
__f.f = x; \
|
||||
__f.l = __f.l | (1 << 22); /* Set QNaN bit. */ \
|
||||
@ -2283,7 +2283,7 @@ void helper_vcmpbfp_dot (ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)
|
||||
float_status s = env->vec_status; \
|
||||
set_float_rounding_mode(float_round_to_zero, &s); \
|
||||
for (i = 0; i < ARRAY_SIZE(r->f); i++) { \
|
||||
if (float32_is_nan(b->f[i]) || \
|
||||
if (float32_is_quiet_nan(b->f[i]) || \
|
||||
float32_is_signaling_nan(b->f[i])) { \
|
||||
r->element[i] = 0; \
|
||||
} else { \
|
||||
@ -3132,7 +3132,7 @@ static inline int32_t efsctsi(uint32_t val)
|
||||
|
||||
u.l = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float32_is_nan(u.f)))
|
||||
if (unlikely(float32_is_quiet_nan(u.f)))
|
||||
return 0;
|
||||
|
||||
return float32_to_int32(u.f, &env->vec_status);
|
||||
@ -3144,7 +3144,7 @@ static inline uint32_t efsctui(uint32_t val)
|
||||
|
||||
u.l = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float32_is_nan(u.f)))
|
||||
if (unlikely(float32_is_quiet_nan(u.f)))
|
||||
return 0;
|
||||
|
||||
return float32_to_uint32(u.f, &env->vec_status);
|
||||
@ -3156,7 +3156,7 @@ static inline uint32_t efsctsiz(uint32_t val)
|
||||
|
||||
u.l = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float32_is_nan(u.f)))
|
||||
if (unlikely(float32_is_quiet_nan(u.f)))
|
||||
return 0;
|
||||
|
||||
return float32_to_int32_round_to_zero(u.f, &env->vec_status);
|
||||
@ -3168,7 +3168,7 @@ static inline uint32_t efsctuiz(uint32_t val)
|
||||
|
||||
u.l = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float32_is_nan(u.f)))
|
||||
if (unlikely(float32_is_quiet_nan(u.f)))
|
||||
return 0;
|
||||
|
||||
return float32_to_uint32_round_to_zero(u.f, &env->vec_status);
|
||||
@ -3205,7 +3205,7 @@ static inline uint32_t efsctsf(uint32_t val)
|
||||
|
||||
u.l = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float32_is_nan(u.f)))
|
||||
if (unlikely(float32_is_quiet_nan(u.f)))
|
||||
return 0;
|
||||
tmp = uint64_to_float32(1ULL << 32, &env->vec_status);
|
||||
u.f = float32_mul(u.f, tmp, &env->vec_status);
|
||||
@ -3220,7 +3220,7 @@ static inline uint32_t efsctuf(uint32_t val)
|
||||
|
||||
u.l = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float32_is_nan(u.f)))
|
||||
if (unlikely(float32_is_quiet_nan(u.f)))
|
||||
return 0;
|
||||
tmp = uint64_to_float32(1ULL << 32, &env->vec_status);
|
||||
u.f = float32_mul(u.f, tmp, &env->vec_status);
|
||||
@ -3474,7 +3474,7 @@ uint32_t helper_efdctsi (uint64_t val)
|
||||
|
||||
u.ll = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float64_is_nan(u.d)))
|
||||
if (unlikely(float64_is_quiet_nan(u.d)))
|
||||
return 0;
|
||||
|
||||
return float64_to_int32(u.d, &env->vec_status);
|
||||
@ -3486,7 +3486,7 @@ uint32_t helper_efdctui (uint64_t val)
|
||||
|
||||
u.ll = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float64_is_nan(u.d)))
|
||||
if (unlikely(float64_is_quiet_nan(u.d)))
|
||||
return 0;
|
||||
|
||||
return float64_to_uint32(u.d, &env->vec_status);
|
||||
@ -3498,7 +3498,7 @@ uint32_t helper_efdctsiz (uint64_t val)
|
||||
|
||||
u.ll = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float64_is_nan(u.d)))
|
||||
if (unlikely(float64_is_quiet_nan(u.d)))
|
||||
return 0;
|
||||
|
||||
return float64_to_int32_round_to_zero(u.d, &env->vec_status);
|
||||
@ -3510,7 +3510,7 @@ uint64_t helper_efdctsidz (uint64_t val)
|
||||
|
||||
u.ll = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float64_is_nan(u.d)))
|
||||
if (unlikely(float64_is_quiet_nan(u.d)))
|
||||
return 0;
|
||||
|
||||
return float64_to_int64_round_to_zero(u.d, &env->vec_status);
|
||||
@ -3522,7 +3522,7 @@ uint32_t helper_efdctuiz (uint64_t val)
|
||||
|
||||
u.ll = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float64_is_nan(u.d)))
|
||||
if (unlikely(float64_is_quiet_nan(u.d)))
|
||||
return 0;
|
||||
|
||||
return float64_to_uint32_round_to_zero(u.d, &env->vec_status);
|
||||
@ -3534,7 +3534,7 @@ uint64_t helper_efdctuidz (uint64_t val)
|
||||
|
||||
u.ll = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float64_is_nan(u.d)))
|
||||
if (unlikely(float64_is_quiet_nan(u.d)))
|
||||
return 0;
|
||||
|
||||
return float64_to_uint64_round_to_zero(u.d, &env->vec_status);
|
||||
@ -3571,7 +3571,7 @@ uint32_t helper_efdctsf (uint64_t val)
|
||||
|
||||
u.ll = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float64_is_nan(u.d)))
|
||||
if (unlikely(float64_is_quiet_nan(u.d)))
|
||||
return 0;
|
||||
tmp = uint64_to_float64(1ULL << 32, &env->vec_status);
|
||||
u.d = float64_mul(u.d, tmp, &env->vec_status);
|
||||
@ -3586,7 +3586,7 @@ uint32_t helper_efdctuf (uint64_t val)
|
||||
|
||||
u.ll = val;
|
||||
/* NaN are not treated the same way IEEE 754 does */
|
||||
if (unlikely(float64_is_nan(u.d)))
|
||||
if (unlikely(float64_is_quiet_nan(u.d)))
|
||||
return 0;
|
||||
tmp = uint64_to_float64(1ULL << 32, &env->vec_status);
|
||||
u.d = float64_mul(u.d, tmp, &env->vec_status);
|
||||
|
Loading…
Reference in New Issue
Block a user