Skip to content

Commit

Permalink
Fix x86_64 bits/mathinline.h for -m32 compilation.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jakub Jelinek authored and Ulrich Drepper committed Sep 1, 2009
1 parent c2735e9 commit 2404410
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2009-09-01 Jakub Jelinek <jakub@redhat.com>

* sysdeps/x86_64/fpu/bits/mathinline.h: Include bits/wordsize.h.
(__signbitf, __signbit): Only use SSE inline asm for 64-bit.

2009-08-31 Andreas Schwab <schwab@redhat.com>

* sysdeps/x86_64/fpu/bits/mathinline.h: Use __asm instead of asm.
Expand Down
12 changes: 12 additions & 0 deletions sysdeps/x86_64/fpu/bits/mathinline.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
# error "Never use <bits/mathinline.h> directly; include <math.h> instead."
#endif

#include <bits/wordsize.h>

#ifndef __extern_inline
# define __MATH_INLINE __inline
#else
Expand All @@ -35,16 +37,26 @@
__MATH_INLINE int
__NTH (__signbitf (float __x))
{
#if __WORDSIZE == 32
__extension__ union { float __f; int __i; } __u = { __f: __x };
return __u.__i < 0;
#else
int __m;
__asm ("pmovmskb %1, %0" : "=r" (__m) : "x" (__x));
return __m & 0x8;
#endif
}
__MATH_INLINE int
__NTH (__signbit (double __x))
{
#if __WORDSIZE == 32
__extension__ union { double __d; int __i[2]; } __u = { __d: __x };
return __u.__i[1] < 0;
#else
int __m;
__asm ("pmovmskb %1, %0" : "=r" (__m) : "x" (__x));
return __m & 0x80;
#endif
}
__MATH_INLINE int
__NTH (__signbitl (long double __x))
Expand Down

0 comments on commit 2404410

Please sign in to comment.