This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch, master, updated. glibc-2.14-600-g70c6c24


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  70c6c246a2758fcdc63536d2c7855a80e58613c6 (commit)
      from  c044cf14b0238b6e866f4ef5f8907d6680230212 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=70c6c246a2758fcdc63536d2c7855a80e58613c6

commit 70c6c246a2758fcdc63536d2c7855a80e58613c6
Author: Ulrich Drepper <drepper@gmail.com>
Date:   Fri Dec 23 09:18:02 2011 -0500

    Optimize x86-32 feraiseexcept also for !__SSE_MATH__

diff --git a/ChangeLog b/ChangeLog
index 7d77002..74b628c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-12-23  Ulrich Drepper  <drepper@gmail.com>
+
+	* sysdeps/i386/fpu/bits/fenv.h (feraiseexcept): Also enable for
+	!__SSE_MATH__.
+
 2011-12-23  Liubov Dmitrieva  <liubov.dmitrieva@gmail.com>
 
 	* sysdeps/i386/i686/multiarch/wcscpy-ssse3.S: Fix wrong copying
diff --git a/sysdeps/i386/fpu/bits/fenv.h b/sysdeps/i386/fpu/bits/fenv.h
index e11e83f..8c00771 100644
--- a/sysdeps/i386/fpu/bits/fenv.h
+++ b/sysdeps/i386/fpu/bits/fenv.h
@@ -90,7 +90,7 @@ fenv_t;
 #endif
 
 
-#if defined __SSE_MATH__ && defined __USE_EXTERN_INLINES
+#ifdef __USE_EXTERN_INLINES
 __BEGIN_DECLS
 
 /* Optimized versions.  */
@@ -106,7 +106,12 @@ __NTH (feraiseexcept (int __excepts))
 	  /* One example of a invalid operation is 0.0 / 0.0.  */
 	  float __f = 0.0;
 
+# ifdef __SSE_MATH__
 	  __asm__ __volatile__ ("divss %0, %0 " : : "x" (__f));
+# else
+	  __asm__ __volatile__ ("fdiv %%st, %%st(0); fwait"
+				: "=t" (__f) : "0" (__f));
+# endif
 	  (void) &__f;
 	}
       if ((FE_DIVBYZERO & __excepts) != 0)
@@ -114,7 +119,12 @@ __NTH (feraiseexcept (int __excepts))
 	  float __f = 1.0;
 	  float __g = 0.0;
 
+# ifdef __SSE_MATH__
 	  __asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g));
+# else
+	  __asm__ __volatile__ ("fdivp %%st(1), %%st; fwait"
+				: "=t" (__f) : "0" (__f), "u" (__g) : "st(1)");
+# endif
 	  (void) &__f;
 	}
 

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                    |    5 +++++
 sysdeps/i386/fpu/bits/fenv.h |   12 +++++++++++-
 2 files changed, 16 insertions(+), 1 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]