Message ID | 1302736274-2908-9-git-send-email-aurelien@aurel32.net |
---|---|
State | New |
Headers | show |
On 04/13/2011 04:11 PM, Aurelien Jarno wrote: > Use float64_unordered_quiet() in helper_cmptun() instead of doing the > the comparison manually. > > According to the "Alpha Compiler Writer's Guide", we should use the > _quiet version here, as CMPTUN and CMPTEQ should generate InvalidOp > for SNaNs but not for QNaNs. > > Thanks to Peter Maydell <peter.maydell@linaro.org> and Richard > Henderson <rth@twiddle.net> for digging into the manuals. > > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> Acked-by: Richard Henderson <rth@twiddle.net> r~
diff --git a/target-alpha/op_helper.c b/target-alpha/op_helper.c index 6c2ae20..36f4f6d 100644 --- a/target-alpha/op_helper.c +++ b/target-alpha/op_helper.c @@ -904,10 +904,11 @@ uint64_t helper_cmptun (uint64_t a, uint64_t b) fa = t_to_float64(a); fb = t_to_float64(b); - if (float64_is_quiet_nan(fa) || float64_is_quiet_nan(fb)) + if (float64_unordered_quiet(fa, fb, &FP_STATUS)) { return 0x4000000000000000ULL; - else + } else { return 0; + } } uint64_t helper_cmpteq(uint64_t a, uint64_t b)
Use float64_unordered_quiet() in helper_cmptun() instead of doing the the comparison manually. According to the "Alpha Compiler Writer's Guide", we should use the _quiet version here, as CMPTUN and CMPTEQ should generate InvalidOp for SNaNs but not for QNaNs. Thanks to Peter Maydell <peter.maydell@linaro.org> and Richard Henderson <rth@twiddle.net> for digging into the manuals. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> --- target-alpha/op_helper.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) v2: use float64_unordered_quiet() instead of float64_unordered()