This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH][BZ #3268] use soft-fp fma in powerpc32/nofpu
- From: Steven Munroe <munroesj at us dot ibm dot com>
- To: libc-alpha at sources dot redhat dot com, libc-ports at sources dot redhat dot com
- Cc: Daniel Jacobowitz <drow at false dot org>, "Joseph S. Myers" <joseph at codesourcery dot com>
- Date: Wed, 24 Jan 2007 14:37:34 -0600
- Subject: [PATCH][BZ #3268] use soft-fp fma in powerpc32/nofpu
This patch overrides s_fma.c and s_fmaf.c in powerpc32/nofpu to call the __fmadf4()/__fmasf4() soft-fp fma functions. I also added __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.
2007-01-23 Steven Munroe <sjmunroe@us.ibm.com>
[BZ #3268]
* sysdeps/powerpc/nofpu/Versions (libc): Add __fmasf4 and __fmadf4
for version GLIBC_2.5.
* sysdeps/powerpc/nofpu/s_fma.c: New file.
* sysdeps/powerpc/nofpu/s_fmaf.c: New file.
* sysdeps/powerpc/nofpu/fenv_libc.h: New file.
diff -urN dummy-libc/ports-cvstip-20070123/sysdeps/powerpc/nofpu/Versions libc24/ports/sysdeps/powerpc/nofpu/Versions
--- dummy-libc/ports-cvstip-20070123/sysdeps/powerpc/nofpu/Versions 2006-11-22 09:13:11.000000000 -0600
+++ libc24/ports/sysdeps/powerpc/nofpu/Versions 2007-01-23 10:01:17.526148296 -0600
@@ -17,4 +17,7 @@
__gtdf2; __gtsf2;
__ltdf2; __ltsf2;
}
+ GLIBC_2.5 {
+ __fmasf4; __fmadf4;
+ }
}
diff -urN dummy-libc/ports-cvstip-20070123/sysdeps/powerpc/nofpu/s_fma.c libc24/ports/sysdeps/powerpc/nofpu/s_fma.c
--- dummy-libc/ports-cvstip-20070123/sysdeps/powerpc/nofpu/s_fma.c Wed Dec 31 18:00:00 1969
+++ libc24/ports/sysdeps/powerpc/nofpu/s_fma.c Tue Jan 23 10:01:17 2007
@@ -0,0 +1,37 @@
+/* soft-fp x * y + z as ternary operation.
+ Copyright (C) 2007 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-20070123/sysdeps/powerpc/nofpu/s_fmaf.c libc24/ports/sysdeps/powerpc/nofpu/s_fmaf.c
--- dummy-libc/ports-cvstip-20070123/sysdeps/powerpc/nofpu/s_fmaf.c Wed Dec 31 18:00:00 1969
+++ libc24/ports/sysdeps/powerpc/nofpu/s_fmaf.c Tue Jan 23 10:01:17 2007
@@ -0,0 +1,32 @@
+/* soft-fp x * y + z as ternary operation.
+ Copyright (C) 2007 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)
+