This is the mail archive of the
libc-ports@sources.redhat.com
mailing list for the libc-ports project.
[PATCH] [BZ #3268] Add fma single/double to ports powerpc32 nofpu
- From: Steven Munroe <munroesj at us dot ibm dot com>
- To: libc-ports at sources dot redhat dot com, David Edelsohn <dje at watson dot ibm dot com>, "Joseph S. Myers" <joseph at codesourcery dot com>
- Date: Thu, 12 Oct 2006 11:47:56 -0500
- Subject: [PATCH] [BZ #3268] Add fma single/double to ports powerpc32 nofpu
- Organization: IBM LTC
This patch overrides the s_fma.c and s_fmaf.c to call __fmadf4()
__fmasf4() sotf-fp functions. I also had to add __fmadf4/__fmasf4 to
the Versions file to export them from libc.so so s_fma.c/s_fmaf.c (in
libm.so) can call them. Finally I had to add an Implies for
"powerpc/nofpu" to insure that s_fma.c overrides the implementation from
ldbl_opt.
2006-10-05 Steven Munroe <sjmunroe@us.ibm.com>
[BZ #3268]
* sysdeps/powerpc/nofpu/Versions (GLIBC_2.5): Export __fmasf4 and __fmadf4.
* sysdeps/powerpc/nofpu/s_fma.c: New file.
* sysdeps/powerpc/nofpu/s_fmaf.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies: Add
powerpc/nofpu to override ldbl-opt.
diff -urN dummy-libc/ports-cvstip-20061005/sysdeps/powerpc/nofpu/Versions libc24/ports/sysdeps/powerpc/nofpu/Versions
--- dummy-libc/ports-cvstip-20061005/sysdeps/powerpc/nofpu/Versions 2006-10-12 09:21:23.000000000 -0500
+++ libc24/ports/sysdeps/powerpc/nofpu/Versions 2006-10-12 11:05:32.520993144 -0500
@@ -17,4 +17,7 @@
__gtdf2; __gtsf2;
__ltdf2; __ltsf2;
}
+ GLIBC_2.5 {
+ __fmasf4; __fmadf4;
+ }
}
diff -urN dummy-libc/ports-cvstip-20061005/sysdeps/powerpc/nofpu/s_fma.c libc24/ports/sysdeps/powerpc/nofpu/s_fma.c
--- dummy-libc/ports-cvstip-20061005/sysdeps/powerpc/nofpu/s_fma.c Wed Dec 31 18:00:00 1969
+++ libc24/ports/sysdeps/powerpc/nofpu/s_fma.c Tue Oct 10 09:50:59 2006
@@ -0,0 +1,36 @@
+/* soft-fp x * y + z as ternary operation.
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Steven Munroe <sjmunroe@us.ibm.com>, 2006.
+
+ 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 <math.h>
+
+extern double __fmadf4 (double, double, double);
+
+/* Compute floating point multiply-add with higher (quad) precision. */
+double
+__fma (double a, double b, double c)
+{
+ return __fmadf4 (a, b, c);
+}
+weak_alias (__fma, fma)
+
+#ifdef NO_LONG_DOUBLE
+strong_alias (__fma, __fmal)
+weak_alias (__fmal, fmal)
+#endif
diff -urN dummy-libc/ports-cvstip-20061005/sysdeps/powerpc/nofpu/s_fmaf.c libc24/ports/sysdeps/powerpc/nofpu/s_fmaf.c
--- dummy-libc/ports-cvstip-20061005/sysdeps/powerpc/nofpu/s_fmaf.c Wed Dec 31 18:00:00 1969
+++ libc24/ports/sysdeps/powerpc/nofpu/s_fmaf.c Tue Oct 10 09:50:59 2006
@@ -0,0 +1,31 @@
+/* soft-fp x * y + z as ternary operation.
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Steven Munroe <sjmunroe@us.ibm.com>, 2006.
+
+ 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 <math.h>
+
+extern float __fmasf4 (float, float, float);
+
+/* Compute floating point multiply-add with higher (double) precision. */
+float
+__fmaf (float a, float b, float c)
+{
+ return __fmasf4 (a, b, c);
+}
+weak_alias (__fmaf, fmaf)
diff -urN dummy-libc/ports-cvstip-20061005/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies
--- dummy-libc/ports-cvstip-20061005/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies Wed Dec 31 18:00:00 1969
+++ libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies Tue Oct 10 09:50:59 2006
@@ -0,0 +1,2 @@
+powerpc/nofpu
+powerpc/soft-fp