diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2011-04-14 00:49:29 +0200 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2011-04-17 20:32:14 +0200 |
commit | a4d2d1a063897b859b7f25e414b229370b679bc8 (patch) | |
tree | 35d2225f965da3fcfd64039da30388f0bfc32ca3 /target-alpha/op_helper.c | |
parent | b4a0ef7911297567e17b56d96ae06d6283049630 (diff) | |
download | qemu-a4d2d1a063897b859b7f25e414b229370b679bc8.zip qemu-a4d2d1a063897b859b7f25e414b229370b679bc8.tar.gz qemu-a4d2d1a063897b859b7f25e414b229370b679bc8.tar.bz2 |
target-alpha: use new float64_unordered_quiet() function
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.
Acked-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'target-alpha/op_helper.c')
-rw-r--r-- | target-alpha/op_helper.c | 5 |
1 files changed, 3 insertions, 2 deletions
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) |