This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] [BZ #3268] Add fma single/double to ports powerpc32 nofpu


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]