diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/bits/mathinline.h | 12 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/math_private.h | 8 |
3 files changed, 14 insertions, 10 deletions
@@ -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. diff --git a/sysdeps/x86_64/fpu/bits/mathinline.h b/sysdeps/x86_64/fpu/bits/mathinline.h index 721f6e4731..6221958773 100644 --- a/sysdeps/x86_64/fpu/bits/mathinline.h +++ b/sysdeps/x86_64/fpu/bits/mathinline.h @@ -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 diff --git a/sysdeps/x86_64/fpu/math_private.h b/sysdeps/x86_64/fpu/math_private.h index a66616b7a5..6cff8b3161 100644 --- a/sysdeps/x86_64/fpu/math_private.h +++ b/sysdeps/x86_64/fpu/math_private.h @@ -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 |