[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 5/7] target-arm: Correct ABD's handling of negative
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PATCH 5/7] target-arm: Correct ABD's handling of negative zeroes |
Date: |
Fri, 11 Mar 2011 18:12:24 +0000 |
Implement ABD by taking the absolute value of the difference
of the operands (as the ARM ARM specifies) rather than by
flipping the order of the operands to the subtract based
on the results of a comparison. The latter approch gives
the wrong answers for some edge cases like negative zero.
Signed-off-by: Peter Maydell <address@hidden>
---
target-arm/neon_helper.c | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/target-arm/neon_helper.c b/target-arm/neon_helper.c
index 8eb4cef..1905545 100644
--- a/target-arm/neon_helper.c
+++ b/target-arm/neon_helper.c
@@ -1788,9 +1788,7 @@ uint32_t HELPER(neon_abd_f32)(CPUState *env, uint32_t a,
uint32_t b)
{
float32 f0 = make_float32(a);
float32 f1 = make_float32(b);
- return float32_val((float32_compare_quiet(f0, f1, NFS) == 1)
- ? float32_sub(f0, f1, NFS)
- : float32_sub(f1, f0, NFS));
+ return float32_val(float32_abs(float32_sub(f0, f1, NFS)));
}
uint32_t HELPER(neon_add_f32)(CPUState *env, uint32_t a, uint32_t b)
--
1.7.1
- [Qemu-devel] [PATCH 0/7] ARM: minor Neon fixes (mostly NaN related), Peter Maydell, 2011/03/11
- [Qemu-devel] [PATCH 4/7] target-arm: Fix VCLE.F32 #0, VCLT.F32 #0 NaN handling, Peter Maydell, 2011/03/11
- [Qemu-devel] [PATCH 3/7] target-arm: Return right result for Neon comparison with NaNs, Peter Maydell, 2011/03/11
- [Qemu-devel] [PATCH 7/7] target-arm: Use new softfloat min/max functions for VMAX, VMIN, Peter Maydell, 2011/03/11
- [Qemu-devel] [PATCH 5/7] target-arm: Correct ABD's handling of negative zeroes,
Peter Maydell <=
- [Qemu-devel] [PATCH 2/7] target-arm/neon_helper.c: Use make_float32/float32_val macros, Peter Maydell, 2011/03/11
- [Qemu-devel] [PATCH 1/7] target-arm: Make Neon helper routines use correct FP status, Peter Maydell, 2011/03/11
[Qemu-devel] [PATCH 6/7] softfloat: Add float*_min() and float*_max() functions, Peter Maydell, 2011/03/11