qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [4168] Always enable precise emulation when softfloat is us


From: Aurelien Jarno
Subject: [Qemu-devel] [4168] Always enable precise emulation when softfloat is used
Date: Mon, 07 Apr 2008 21:00:51 +0000

Revision: 4168
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4168
Author:   aurel32
Date:     2008-04-07 21:00:51 +0000 (Mon, 07 Apr 2008)

Log Message:
-----------
Always enable precise emulation when softfloat is used

The patch below changes the way to enable softfloat on the PPC target. It
is now enabled when softfloat is used. The rationale behind this change
is that persons who want precise emulation prefer precision over emulation
speed.

Signed-off-by: Aurelien Jarno <address@hidden>

Modified Paths:
--------------
    trunk/target-ppc/exec.h
    trunk/target-ppc/op.c
    trunk/target-ppc/op_helper.c
    trunk/target-ppc/op_helper.h

Modified: trunk/target-ppc/exec.h
===================================================================
--- trunk/target-ppc/exec.h     2008-04-07 20:31:02 UTC (rev 4167)
+++ trunk/target-ppc/exec.h     2008-04-07 21:00:51 UTC (rev 4168)
@@ -27,10 +27,6 @@
 #include "cpu.h"
 #include "exec-all.h"
 
-/* For normal operations, precise emulation should not be needed */
-//#define USE_PRECISE_EMULATION 1
-#define USE_PRECISE_EMULATION 0
-
 register struct CPUPPCState *env asm(AREG0);
 #if TARGET_LONG_BITS > HOST_LONG_BITS
 /* no registers can be used */

Modified: trunk/target-ppc/op.c
===================================================================
--- trunk/target-ppc/op.c       2008-04-07 20:31:02 UTC (rev 4167)
+++ trunk/target-ppc/op.c       2008-04-07 21:00:51 UTC (rev 4168)
@@ -1716,7 +1716,7 @@
 /* fadd - fadd. */
 void OPPROTO op_fadd (void)
 {
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
     do_fadd();
 #else
     FT0 = float64_add(FT0, FT1, &env->fp_status);
@@ -1727,7 +1727,7 @@
 /* fsub - fsub. */
 void OPPROTO op_fsub (void)
 {
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
     do_fsub();
 #else
     FT0 = float64_sub(FT0, FT1, &env->fp_status);
@@ -1738,7 +1738,7 @@
 /* fmul - fmul. */
 void OPPROTO op_fmul (void)
 {
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
     do_fmul();
 #else
     FT0 = float64_mul(FT0, FT1, &env->fp_status);
@@ -1749,7 +1749,7 @@
 /* fdiv - fdiv. */
 void OPPROTO op_fdiv (void)
 {
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
     do_fdiv();
 #else
     FT0 = float64_div(FT0, FT1, &env->fp_status);
@@ -1796,7 +1796,7 @@
 /* fmadd - fmadd. */
 void OPPROTO op_fmadd (void)
 {
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
     do_fmadd();
 #else
     FT0 = float64_mul(FT0, FT1, &env->fp_status);
@@ -1808,7 +1808,7 @@
 /* fmsub - fmsub. */
 void OPPROTO op_fmsub (void)
 {
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
     do_fmsub();
 #else
     FT0 = float64_mul(FT0, FT1, &env->fp_status);
@@ -1835,7 +1835,7 @@
 /* frsp - frsp. */
 void OPPROTO op_frsp (void)
 {
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
     do_frsp();
 #else
     FT0 = float64_to_float32(FT0, &env->fp_status);

Modified: trunk/target-ppc/op_helper.c
===================================================================
--- trunk/target-ppc/op_helper.c        2008-04-07 20:31:02 UTC (rev 4167)
+++ trunk/target-ppc/op_helper.c        2008-04-07 21:00:51 UTC (rev 4168)
@@ -922,7 +922,7 @@
 }
 #endif
 
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
 void do_fadd (void)
 {
     if (unlikely(float64_is_signaling_nan(FT0) ||
@@ -989,7 +989,7 @@
         FT0 = float64_div(FT0, FT1, &env->fp_status);
     }
 }
-#endif /* USE_PRECISE_EMULATION */
+#endif /* CONFIG_SOFTFLOAT */
 
 void do_fctiw (void)
 {
@@ -1003,7 +1003,7 @@
         fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI);
     } else {
         p.ll = float64_to_int32(FT0, &env->fp_status);
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
         /* XXX: higher bits are not supposed to be significant.
          *     to make tests easier, return the same as a real PowerPC 750
          */
@@ -1025,7 +1025,7 @@
         fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI);
     } else {
         p.ll = float64_to_int32_round_to_zero(FT0, &env->fp_status);
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
         /* XXX: higher bits are not supposed to be significant.
          *     to make tests easier, return the same as a real PowerPC 750
          */
@@ -1114,7 +1114,7 @@
     do_fri(float_round_down);
 }
 
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
 void do_fmadd (void)
 {
     if (unlikely(float64_is_signaling_nan(FT0) ||
@@ -1164,7 +1164,7 @@
 #endif
     }
 }
-#endif /* USE_PRECISE_EMULATION */
+#endif /* CONFIG_SOFTFLOAT */
 
 void do_fnmadd (void)
 {
@@ -1174,7 +1174,7 @@
         /* sNaN operation */
         fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN);
     } else {
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
 #ifdef FLOAT128
         /* This is the way the PowerPC specification defines it */
         float128 ft0_128, ft1_128;
@@ -1206,7 +1206,7 @@
         /* sNaN operation */
         fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN);
     } else {
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
 #ifdef FLOAT128
         /* This is the way the PowerPC specification defines it */
         float128 ft0_128, ft1_128;
@@ -1230,7 +1230,7 @@
     }
 }
 
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
 void do_frsp (void)
 {
     if (unlikely(float64_is_signaling_nan(FT0))) {
@@ -1240,7 +1240,7 @@
         FT0 = float64_to_float32(FT0, &env->fp_status);
     }
 }
-#endif /* USE_PRECISE_EMULATION */
+#endif /* CONFIG_SOFTFLOAT */
 
 void do_fsqrt (void)
 {
@@ -1295,7 +1295,7 @@
         /* Zero reciprocal */
         float_zero_divide_excp();
     } else if (likely(isnormal(FT0))) {
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
         FT0 = float64_div(1.0, FT0, &env->fp_status);
         FT0 = float64_to_float32(FT0, &env->fp_status);
 #else

Modified: trunk/target-ppc/op_helper.h
===================================================================
--- trunk/target-ppc/op_helper.h        2008-04-07 20:31:02 UTC (rev 4167)
+++ trunk/target-ppc/op_helper.h        2008-04-07 21:00:51 UTC (rev 4168)
@@ -98,7 +98,7 @@
 #ifdef CONFIG_SOFTFLOAT
 void do_float_check_status (void);
 #endif
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
 void do_fadd (void);
 void do_fsub (void);
 void do_fmul (void);
@@ -109,13 +109,13 @@
 void do_fres (void);
 void do_frsqrte (void);
 void do_fsel (void);
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
 void do_fmadd (void);
 void do_fmsub (void);
 #endif
 void do_fnmadd (void);
 void do_fnmsub (void);
-#if USE_PRECISE_EMULATION
+#ifdef CONFIG_SOFTFLOAT
 void do_frsp (void);
 #endif
 void do_fctiw (void);






reply via email to

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