[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 1/6] target-arm: Don't set FP exceptions in recip
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PATCH v2 1/6] target-arm: Don't set FP exceptions in recip, recip_sqrt estimate fns |
Date: |
Thu, 19 May 2011 14:46:14 +0100 |
The functions which do the core estimation algorithms for the VRSQRTE
and VRECPE instructions should not set floating point exception flags,
so use a local fp status for doing these calculations.
Signed-off-by: Peter Maydell <address@hidden>
---
target-arm/helper.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/target-arm/helper.c b/target-arm/helper.c
index 62ae72e..5ff6a9b 100644
--- a/target-arm/helper.c
+++ b/target-arm/helper.c
@@ -2749,7 +2749,11 @@ float32 HELPER(rsqrts_f32)(float32 a, float32 b,
CPUState *env)
*/
static float64 recip_estimate(float64 a, CPUState *env)
{
- float_status *s = &env->vfp.standard_fp_status;
+ /* These calculations mustn't set any fp exception flags,
+ * so we use a local copy of the fp_status.
+ */
+ float_status dummy_status = env->vfp.standard_fp_status;
+ float_status *s = &dummy_status;
/* q = (int)(a * 512.0) */
float64 q = float64_mul(float64_512, a, s);
int64_t q_int = float64_to_int64_round_to_zero(q, s);
@@ -2812,7 +2816,11 @@ float32 HELPER(recpe_f32)(float32 a, CPUState *env)
*/
static float64 recip_sqrt_estimate(float64 a, CPUState *env)
{
- float_status *s = &env->vfp.standard_fp_status;
+ /* These calculations mustn't set any fp exception flags,
+ * so we use a local copy of the fp_status.
+ */
+ float_status dummy_status = env->vfp.standard_fp_status;
+ float_status *s = &dummy_status;
float64 q;
int64_t q_int;
--
1.7.1
- [Qemu-devel] [PATCH v2 0/6] target-arm: Fix bugs in fp exception flag setting, Peter Maydell, 2011/05/19
- [Qemu-devel] [PATCH v2 1/6] target-arm: Don't set FP exceptions in recip, recip_sqrt estimate fns,
Peter Maydell <=
- [Qemu-devel] [PATCH v2 5/6] target-arm: Signal Underflow when denormal flushed to zero on output, Peter Maydell, 2011/05/19
- [Qemu-devel] [PATCH v2 2/6] target-arm: Signal InputDenormal for VRECPE, VRSQRTE, VRECPS, VRSQRTS, Peter Maydell, 2011/05/19
- [Qemu-devel] [PATCH v2 6/6] target-arm: Use correct float status for Neon int-float conversions, Peter Maydell, 2011/05/19
- [Qemu-devel] [PATCH v2 3/6] target-arm: Signal InvalidOp for Neon GE and GT compares of QNaN, Peter Maydell, 2011/05/19
- [Qemu-devel] [PATCH v2 4/6] softfloat: Add new flag for when denormal result is flushed to zero, Peter Maydell, 2011/05/19
- Re: [Qemu-devel] [PATCH v2 0/6] target-arm: Fix bugs in fp exception flag setting, Aurelien Jarno, 2011/05/23