Relax asm requirements for recently added x86-64 math interfaces
authorUlrich Drepper <drepper@gmail.com>
Tue, 18 Oct 2011 00:30:52 +0000 (20:30 -0400)
committerUlrich Drepper <drepper@gmail.com>
Tue, 18 Oct 2011 00:30:52 +0000 (20:30 -0400)
ChangeLog
sysdeps/x86_64/fpu/bits/mathinline.h
sysdeps/x86_64/fpu/math_private.h

index e66482f..081b414 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2011-10-17  Ulrich Drepper  <drepper@gmail.com>
 
+       * sysdeps/x86_64/fpu/math_private.h: Relax asm requirements for
+       recently added interfaces.
+       * sysdeps/x86_64/fpu/bits/mathinline.h: Likewise.
+
        * sysdeps/x86_64/fpu/math_private.h: Add some parenthesis to be safe
        about macro parameter expansion.
 
index 721f6e4..6221958 100644 (file)
@@ -156,14 +156,14 @@ __MATH_INLINE double
 __NTH (rint (double __x))
 {
   double __res;
-  __asm ("roundsd $4, %1, %0" : "=x" (__res) : "x" (__x));
+  __asm ("roundsd $4, %1, %0" : "=x" (__res) : "xm" (__x));
   return __res;
 }
 __MATH_INLINE float
 __NTH (rintf (float __x))
 {
   float __res;
-  __asm ("roundss $4, %1, %0" : "=x" (__res) : "x" (__x));
+  __asm ("roundss $4, %1, %0" : "=x" (__res) : "xm" (__x));
   return __res;
 }
 
@@ -176,7 +176,7 @@ __MATH_INLINE double
 __NTH (ceil (double __x))
 {
   double __res;
-  __asm ("roundsd $2, %1, %0" : "=x" (__res) : "x" (__x));
+  __asm ("roundsd $2, %1, %0" : "=x" (__res) : "xm" (__x));
   return __res;
 }
 __END_NAMESPACE_STD
@@ -186,7 +186,7 @@ __MATH_INLINE float
 __NTH (ceilf (float __x))
 {
   float __res;
-  __asm ("roundss $2, %1, %0" : "=x" (__res) : "x" (__x));
+  __asm ("roundss $2, %1, %0" : "=x" (__res) : "xm" (__x));
   return __res;
 }
 __END_NAMESPACE_C99
@@ -197,7 +197,7 @@ __MATH_INLINE double
 __NTH (floor (double __x))
 {
   double __res;
-  __asm ("roundsd $1, %1, %0" : "=x" (__res) : "x" (__x));
+  __asm ("roundsd $1, %1, %0" : "=x" (__res) : "xm" (__x));
   return __res;
 }
 __END_NAMESPACE_STD
@@ -207,7 +207,7 @@ __MATH_INLINE float
 __NTH (floorf (float __x))
 {
   float __res;
-  __asm ("roundss $1, %1, %0" : "=x" (__res) : "x" (__x));
+  __asm ("roundss $1, %1, %0" : "=x" (__res) : "xm" (__x));
   return __res;
 }
 __END_NAMESPACE_C99
index a66616b..6cff8b3 100644 (file)
@@ -95,26 +95,26 @@ do {                                                                \
 # ifndef __rint
 #  define __rint(d) \
   ({ double __res; \
-    asm ("roundsd $4, %1, %0" : "=x" (__res) : "x" ((double) (d)));          \
+    asm ("roundsd $4, %1, %0" : "=x" (__res) : "xm" ((double) (d)));         \
      __res; })
 # endif
 # ifndef __rintf
 #  define __rintf(d) \
   ({ float __res; \
-    asm ("roundss $4, %1, %0" : "=x" (__res) : "x" ((float) (d)));           \
+    asm ("roundss $4, %1, %0" : "=x" (__res) : "xm" ((float) (d)));          \
      __res; })
 # endif
 
 # ifndef __floor
 #  define __floor(d) \
   ({ double __res; \
-    asm ("roundsd $1, %1, %0" : "=x" (__res) : "x" ((double) (d)));          \
+    asm ("roundsd $1, %1, %0" : "=x" (__res) : "xm" ((double) (d)));         \
      __res; })
 # endif
 # ifndef __floorf
 #  define __floorf(d) \
   ({ float __res; \
-    asm ("roundss $1, %1, %0" : "=x" (__res) : "x" ((float) (d)));           \
+    asm ("roundss $1, %1, %0" : "=x" (__res) : "xm" ((float) (d)));          \
      __res; })
 # endif
 #endif