power7-optimized classification functions
authorLuis Machado <luisgpm@br.ibm.com>
Wed, 10 Feb 2010 06:42:38 +0000 (22:42 -0800)
committerUlrich Drepper <drepper@redhat.com>
Wed, 10 Feb 2010 06:42:38 +0000 (22:42 -0800)
13 files changed:
ChangeLog
sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power7/fpu/s_isinff.S [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S [new file with mode: 0644]
sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S [new file with mode: 0644]
sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S [new file with mode: 0644]
sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S [new file with mode: 0644]
sysdeps/powerpc/powerpc64/power7/fpu/s_isinff.S [new file with mode: 0644]
sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S [new file with mode: 0644]
sysdeps/powerpc/powerpc64/power7/fpu/s_isnanf.S [new file with mode: 0644]

index 9b24c0b..d9e1c3c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2010-02-08  Luis Machado  <luisgpm@br.ibm.com>
+
+       * sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S: New file.
+       * sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S: New file.
+       * sysdeps/powerpc/powerpc64/power7/fpu/s_isnanf.S: New file.
+       * sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S: New file.
+       * sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S: New file.
+       * sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S: New file.
+       * sysdeps/powerpc/powerpc64/power7/fpu/s_isinff.S: New file.
+       * sysdeps/powerpc/powerpc32/power7/fpu/s_isinff.S: New file.
+       * sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S: New file.
+       * sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S: New file.
+       * sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S: New file.
+       * sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S: New file.
+
 2010-02-08  Andreas Schwab  <schwab@redhat.com>
 
        * include/fenv.h: Add hidden proto for fegetenv.
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S
new file mode 100644 (file)
index 0000000..5b0d950
--- /dev/null
@@ -0,0 +1,89 @@
+/* finite().  PowerPC32/POWER7 version.
+   Copyright (C) 2010 Free Software Foundation, Inc.
+   Contributed by Luis Machado <luisgpm@br.ibm.com>.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+/* int __finite(x)  */
+       .section    .rodata.cst8,"aM",@progbits,8
+       .align 3
+.LC0:   /* 1.0 */
+       .quad       0x3ff0000000000000
+
+       .section    ".text"
+       .type       __finite, @function
+       .machine    power7
+ENTRY (__finite)
+#ifdef SHARED
+       mflr    r11
+       cfi_register(lr,r11)
+
+       bcl     20,31,1f
+1:     mflr    r9
+       addis   r9,r9,.LC0-1b@ha
+       lfd     fp0,.LC0-1b@l(r9)
+
+       mtlr    r11
+       cfi_same_value (lr)
+#else
+       lis     r9,.LC0@ha
+       lfd     fp0,.LC0@l(r9)
+#endif
+       ftdiv   cr7,fp1,fp0
+       li      r3,1
+       bflr    30
+
+       /* We have -INF/+INF/NaN or a denormal.  */
+
+       stwu    r1,-16(r1)    /* Allocate stack space.  */
+       stfd    fp1,8(r1)     /* Transfer FP to GPR's.  */
+
+       ori     2,2,0         /* Force a new dispatch group.  */
+       lhz     r0,8(r1)      /* Fetch the upper portion of the high word of
+                             the FP value (where the exponent and sign bits
+                             are).  */
+       clrlwi  r0,r0,17      /* r0 = abs(r0).  */
+       addi    r1,r1,16      /* Reset the stack pointer.  */
+       cmpwi   cr7,r0,0x7ff0 /* r4 == 0x7ff0?.  */
+       bltlr   cr7           /* LT means we have a denormal.  */
+       li      r3,0
+       blr
+       END (__finite)
+
+hidden_def (__finite)
+weak_alias (__finite, finite)
+
+/* It turns out that the 'double' version will also always work for
+   single-precision.  */
+strong_alias (__finite, __finitef)
+hidden_def (__finitef)
+weak_alias (__finitef, finitef)
+
+#ifdef NO_LONG_DOUBLE
+strong_alias (__finite, __finitel)
+weak_alias (__finite, finitel)
+#endif
+
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
+compat_symbol (libc, finite, finitel, GLIBC_2_0);
+# endif
+#endif
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S
new file mode 100644 (file)
index 0000000..54bd941
--- /dev/null
@@ -0,0 +1 @@
+/* This function uses the same code as s_finite.S.  */
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S
new file mode 100644 (file)
index 0000000..1c8a384
--- /dev/null
@@ -0,0 +1,89 @@
+/* isinf().  PowerPC32/POWER7 version.
+   Copyright (C) 2010 Free Software Foundation, Inc.
+   Contributed by Luis Machado <luisgpm@br.ibm.com>.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+/* int __isinf(x)  */
+       .section    .rodata.cst8,"aM",@progbits,8
+       .align 3
+.LC0:   /* 1.0 */
+       .quad       0x3ff0000000000000
+
+       .section    ".text"
+       .type       __isinf, @function
+       .machine    power7
+ENTRY (__isinf)
+#ifdef SHARED
+       mflr    r11
+       cfi_register(lr,r11)
+
+       bcl     20,31,1f
+1:     mflr    r9
+       addis   r9,r9,.LC0-1b@ha
+       lfd     fp0,.LC0-1b@l(r9)
+
+       mtlr    r11
+       cfi_same_value (lr)
+#else
+       lis     r9,.LC0@ha
+       lfd     fp0,.LC0@l(r9)
+#endif
+       ftdiv   cr7,fp1,fp0
+       li      r3,0
+       bflr    29            /* If not INF, return.  */
+
+       /* Either we have -INF/+INF or a denormal.  */
+
+       stwu    r1,-16(r1)    /* Allocate stack space.  */
+       stfd    fp1,8(r1)     /* Transfer FP to GPR's.  */
+       ori     2,2,0         /* Force a new dispatch group.  */
+       lhz     r4,8(r1)      /* Fetch the upper portion of the high word of
+                             the FP value (where the exponent and sign bits
+                             are).  */
+       addi    r1,r1,16      /* Reset the stack pointer.  */
+       cmpwi   cr7,r4,0x7ff0 /* r4 == 0x7ff0?  */
+       li      r3,1
+       beqlr   cr7           /* EQ means INF, otherwise -INF.  */
+       li      r3,-1
+       blr
+       END (__isinf)
+
+hidden_def (__isinf)
+weak_alias (__isinf, isinf)
+
+/* It turns out that the 'double' version will also always work for
+   single-precision.  */
+strong_alias (__isinf, __isinff)
+hidden_def (__isinff)
+weak_alias (__isinff, isinff)
+
+#ifdef NO_LONG_DOUBLE
+strong_alias (__isinf, __isinfl)
+weak_alias (__isinf, isinfl)
+#endif
+
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
+# endif
+#endif
+
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_isinff.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_isinff.S
new file mode 100644 (file)
index 0000000..be759e0
--- /dev/null
@@ -0,0 +1 @@
+/* This function uses the same code as s_isinf.S.  */
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S
new file mode 100644 (file)
index 0000000..852539f
--- /dev/null
@@ -0,0 +1,92 @@
+/* isnan().  PowerPC32/POWER7 version.
+   Copyright (C) 2010 Free Software Foundation, Inc.
+   Contributed by Luis Machado <luisgpm@br.ibm.com>.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+/* int __isnan(x)  */
+       .section    .rodata.cst8,"aM",@progbits,8
+       .align 3
+.LC0:   /* 1.0 */
+       .quad       0x3ff0000000000000
+
+       .section    ".text"
+       .type       __isnan, @function
+       .machine    power7
+ENTRY (__isnan)
+#ifdef SHARED
+       mflr    r11
+       cfi_register(lr,r11)
+
+       bcl     20,31,1f
+1:     mflr    r9
+       addis   r9,r9,.LC0-1b@ha
+       lfd     fp0,.LC0-1b@l(r9)
+
+       mtlr    r11
+       cfi_same_value (lr)
+#else
+       lis     r9,.LC0@ha
+       lfd     fp0,.LC0@l(r9)
+#endif
+       ftdiv   cr7,fp1,fp0
+       li      r3,0
+       bflr    30            /* If not NaN or Inf, finish. */
+
+       /* We have -INF/+INF/NaN or a denormal.  */
+
+       stwu    r1,-16(r1)    /* Allocate stack space.  */
+       stfd    fp1,8(r1)     /* Transfer FP to GPR's.  */
+       ori     2,2,0         /* Force a new dispatch group.  */
+       lwz     r4,8(r1)      /* Load the upper half of the FP value.  */
+       lwz     r5,12(r1)     /* Load the lower half of the FP value.  */
+       addi    r1,r1,16      /* Reset the stack pointer.  */
+       lis     r0,0x7ff0     /* Load the upper portion for an INF/NaN.  */
+       clrlwi  r4,r4,1       /* r4 = abs(r4).  */
+       cmpw    cr7,r4,r0     /* if (abs(r4) <= inf).  */
+       cmpwi   cr6,r5,0      /* r5 == 0x00000000?  */
+       bltlr   cr7           /* LT means we have a denormal.  */
+       bgt     cr7,L(NaN)    /* GT means we have a NaN.  */
+       beqlr   cr6           /* EQ means we have +/-INF.  */
+L(NaN):
+       li      r3,1          /* x == NaN?  */
+       blr
+       END (__isnan)
+
+hidden_def (__isnan)
+weak_alias (__isnan, isnan)
+
+/* It turns out that the 'double' version will also always work for
+   single-precision.  */
+strong_alias (__isnan, __isnanf)
+hidden_def (__isnanf)
+weak_alias (__isnanf, isnanf)
+
+#ifdef NO_LONG_DOUBLE
+strong_alias (__isnan, __isnanl)
+weak_alias (__isnan, isnanl)
+#endif
+
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+# endif
+#endif
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S
new file mode 100644 (file)
index 0000000..b48c85e
--- /dev/null
@@ -0,0 +1 @@
+/* This function uses the same code as s_isnan.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
new file mode 100644 (file)
index 0000000..e76e8a5
--- /dev/null
@@ -0,0 +1,69 @@
+/* finite().  PowerPC64/POWER7 version.
+   Copyright (C) 2010 Free Software Foundation, Inc.
+   Contributed by Luis Machado <luisgpm@br.ibm.com>.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+/* int __finite(x)  */
+       .section    ".toc","aw"
+.LC0:   /* 1.0 */
+       .tc         FD_ONE[TC],0x3ff0000000000000
+       .section    ".text"
+       .type       __finite, @function
+       .machine    power7
+EALIGN (__finite, 4, 0)
+       CALL_MCOUNT 0
+       lfd     fp0,.LC0@toc(r2)
+       ftdiv   cr7,fp1,fp0
+       li      r3,1
+       bflr    30
+
+       /* If we are here, we either have +/-INF,
+       NaN or denormal.  */
+
+       stfd    fp1,-16(r1)   /* Transfer FP to GPR's.  */
+       ori     2,2,0         /* Force a new dispatch group.  */
+
+       lhz     r4,-16(r1)    /* Fetch the upper portion of the high word of
+                             the FP value (where the exponent and sign bits
+                             are).  */
+       clrlwi  r4,r4,17      /* r4 = abs(r4).  */
+       cmpwi   cr7,r4,0x7ff0 /* r4 == 0x7ff0?  */
+       bltlr   cr7           /* LT means finite, other non-finite.  */
+       li      r3,0
+       blr
+       END (__finite)
+
+hidden_def (__finite)
+weak_alias (__finite, finite)
+
+/* It turns out that the 'double' version will also always work for
+   single-precision.  */
+strong_alias (__finite, __finitef)
+hidden_def (__finitef)
+weak_alias (__finitef, finitef)
+
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
+compat_symbol (libc, finite, finitel, GLIBC_2_0);
+# endif
+#endif
+
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S
new file mode 100644 (file)
index 0000000..54bd941
--- /dev/null
@@ -0,0 +1 @@
+/* This function uses the same code as s_finite.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S
new file mode 100644 (file)
index 0000000..9a72ce7
--- /dev/null
@@ -0,0 +1,72 @@
+/* isinf().  PowerPC64/POWER7 version.
+   Copyright (C) 2010 Free Software Foundation, Inc.
+   Contributed by Luis Machado <luisgpm@br.ibm.com>.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+/* int __isinf(x)  */
+       .section    ".toc","aw"
+.LC0:   /* 1.0 */
+       .tc         FD_ONE[TC],0x3ff0000000000000
+       .section    ".text"
+       .type       __isinf, @function
+       .machine    power7
+EALIGN (__isinf, 4, 0)
+       CALL_MCOUNT 0
+       lfd     fp0,.LC0@toc(r2)
+       ftdiv   cr7,fp1,fp0
+       li      r3,0
+       bflr    29            /* If not INF, return.  */
+
+       /* Either we have -INF/+INF or a denormal.  */
+
+       stfd    fp1,-16(r1)   /* Transfer FP to GPR's.  */
+       ori     2,2,0         /* Force a new dispatch group.  */
+       lhz     r4,-16(r1)    /* Fetch the upper portion of the high word of
+                             the FP value (where the exponent and sign bits
+                             are).  */
+       cmpwi   cr7,r4,0x7ff0 /* r4 == 0x7ff0?  */
+       li      r3,1
+       beqlr   cr7           /* EQ means INF, otherwise -INF.  */
+       li      r3,-1
+       blr
+       END (__isinf)
+
+hidden_def (__isinf)
+weak_alias (__isinf, isinf)
+
+/* It turns out that the 'double' version will also always work for
+   single-precision.  */
+strong_alias (__isinf, __isinff)
+hidden_def (__isinff)
+weak_alias (__isinff, isinff)
+
+#ifdef NO_LONG_DOUBLE
+strong_alias (__isinf, __isinfl)
+weak_alias (__isinf, isinfl)
+#endif
+
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
+# endif
+#endif
+
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_isinff.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_isinff.S
new file mode 100644 (file)
index 0000000..be759e0
--- /dev/null
@@ -0,0 +1 @@
+/* This function uses the same code as s_isinf.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S
new file mode 100644 (file)
index 0000000..cd9c75e
--- /dev/null
@@ -0,0 +1,70 @@
+/* isnan().  PowerPC64/POWER7 version.
+   Copyright (C) 2010 Free Software Foundation, Inc.
+   Contributed by Luis Machado <luisgpm@br.ibm.com>.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+/* int __isnan(x)  */
+       .section    ".toc","aw"
+.LC0:   /* 1.0 */
+       .tc         FD_ONE[TC],0x3ff0000000000000
+       .section    ".text"
+       .type       __isnan, @function
+       .machine    power7
+EALIGN (__isnan, 4, 0)
+       CALL_MCOUNT 0
+       lfd     fp0,.LC0@toc(r2)
+       ftdiv   cr7,fp1,fp0
+       li      r3,0
+       bflr    30            /* If not NaN, finish.  */
+
+       stfd    fp1,-16(r1)   /* Transfer FP to GPR's.  */
+       ori     2,2,0         /* Force a new dispatch group.  */
+       ld      r4,-16(r1)    /* Load FP into GPR.  */
+       lis     r0,0x7ff0
+       sldi    r0,r0,32      /* const long r0 0x7ff00000 00000000.  */
+       clrldi  r4,r4,1       /* x = fabs(x)  */
+       cmpd    cr7,r4,r0     /* if (fabs(x) <= inf)  */
+       blelr   cr7           /* LE means not NaN.  */
+       li      r3,1          /* else return 1  */
+       blr
+       END (__isnan)
+
+hidden_def (__isnan)
+weak_alias (__isnan, isnan)
+
+/* It turns out that the 'double' version will also always work for
+   single-precision.  */
+strong_alias (__isnan, __isnanf)
+hidden_def (__isnanf)
+weak_alias (__isnanf, isnanf)
+
+#ifdef NO_LONG_DOUBLE
+strong_alias (__isnan, __isnanl)
+weak_alias (__isnan, isnanl)
+#endif
+
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+# endif
+#endif
+
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_isnanf.S
new file mode 100644 (file)
index 0000000..b48c85e
--- /dev/null
@@ -0,0 +1 @@
+/* This function uses the same code as s_isnan.S.  */