qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] powerpc: use float64 for frsqrte


From: Alexander Graf
Subject: Re: [Qemu-devel] [PATCH] powerpc: use float64 for frsqrte
Date: Tue, 03 Jun 2014 12:02:40 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130910 Thunderbird/17.0.9

On 06/03/2014 11:14 AM, Tristan Gingold wrote:
Remove the code that reduce the result to float32 as the frsqrte
instruction is defined to return a double-precision estimate of
the reciprocal square root.

Although reducing the fractional part is harmless (as the estimation
must have at least 12 bits of precision according to the old PEM),
reducing the exponent range is not correct.

Signed-off-by: Tristan Gingold <address@hidden>

I couldn't find a reference to doubles in ISA 2.07. Is frsqrte supposed to return doubles on all cores? Or is this implementation specific? Also, is frsqrte the only instruction affected?


Alex

---
  target-ppc/fpu_helper.c |    3 ---
  1 file changed, 3 deletions(-)

diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index cd8f015..da93d12 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -977,7 +977,6 @@ uint64_t helper_fres(CPUPPCState *env, uint64_t arg)
  uint64_t helper_frsqrte(CPUPPCState *env, uint64_t arg)
  {
      CPU_DoubleU farg;
-    float32 f32;
farg.ll = arg; @@ -991,8 +990,6 @@ uint64_t helper_frsqrte(CPUPPCState *env, uint64_t arg)
          }
          farg.d = float64_sqrt(farg.d, &env->fp_status);
          farg.d = float64_div(float64_one, farg.d, &env->fp_status);
-        f32 = float64_to_float32(farg.d, &env->fp_status);
-        farg.d = float32_to_float64(f32, &env->fp_status);
      }
      return farg.ll;
  }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]