This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc 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]

GNU C Library master sources branch master updated. glibc-2.17-552-g3c02653


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  3c0265394d9ffedff2b0de508602dc52e077ce5c (commit)
      from  ff491d14a2c7329e4b61cb9d937203d4139954f9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3c0265394d9ffedff2b0de508602dc52e077ce5c

commit 3c0265394d9ffedff2b0de508602dc52e077ce5c
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Mon Mar 25 16:10:06 2013 -0500

    PowerPC: modf optimization
    
    This patch implements modf/modff optimization for POWER by focus
    on FP operations instead of relying in integer ones.

diff --git a/ChangeLog b/ChangeLog
index 164026b..9d283f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2013-04-23  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+
+	* sysdeps/powerpc/power5/fpu/s_modf.c: New file: modf optimization for
+	POWER.
+	* sysdeps/powerpc/power5/fpu/s_modff.c: New file: modff optimization
+	for POWER.
+	* sysdeps/powerpc/powerpc64/power5/Implies: Add powerpc/power5 and
+	powerpc/power5/fpu folders.
+	* sysdeps/powerpc/powerpc32/power5/Implies: Likewise.
+	* benchtests/Makefile: Add modf testcase.
+	* benchtests/bench-modf.c: New file: Benchmark test for mo
+
 2013-04-23  Siddhesh Poyarekar  <siddhesh@redhat.com>
 
 	[BZ #14888]
diff --git a/benchtests/Makefile b/benchtests/Makefile
index c61fd87..110c5d8 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -45,7 +45,7 @@
 #   See pow-inputs for an example.
 
 subdir := benchtests
-bench := exp pow rint sin cos tan atan \
+bench := exp pow rint sin cos tan atan modf \
 	 slowexp slowpow slowsin slowcos slowtan slowatan
 
 # exp function fast path
diff --git a/benchtests/bench-modf.c b/benchtests/bench-modf.c
new file mode 100644
index 0000000..975a29f
--- /dev/null
+++ b/benchtests/bench-modf.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2013 Free Software Foundation, Inc.
+   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, see
+   <http://www.gnu.org/licenses/>.  */
+
+extern double modf (double, double *);
+
+#define CALL_BENCH_FUNC(j, i) modf ( in[j].arg0, &i);
+
+struct args
+{
+  double arg0;
+} in[] =
+{
+  {  42.42 },
+  { -42.42 }
+};
+
+#define NUM_SAMPLES (sizeof (in) / sizeof (struct args))
+
+static volatile double ret = 0.0;
+#define BENCH_FUNC(j) ({double iptr; ret =  CALL_BENCH_FUNC (j, iptr);})
+
+#define ITER 250000000
+#define FUNCNAME "modf"
+
+#include "bench-skeleton.c"
diff --git a/sysdeps/powerpc/power5/fpu/s_modf.c b/sysdeps/powerpc/power5/fpu/s_modf.c
new file mode 100644
index 0000000..b45bf66
--- /dev/null
+++ b/sysdeps/powerpc/power5/fpu/s_modf.c
@@ -0,0 +1,58 @@
+/* Copyright (C) 2013 Free Software Foundation, Inc.
+   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 Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If
+   not, see <http://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+double
+__modf (double x, double *iptr)
+{
+  if (__builtin_isinf (x))
+    {
+      *iptr = x;
+      return __copysign (0.0, x);
+    }
+  else if (__builtin_isnan (x))
+    {
+      *iptr = NAN;
+      return NAN;
+    }
+
+  if (x >= 0.0)
+    {
+      *iptr = __floor (x);
+      return (x - *iptr);
+    }
+  else
+    {
+      *iptr = __ceil (x);
+      return (x - *iptr);
+    }
+}
+weak_alias (__modf, modf)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__modf, __modfl)
+weak_alias (__modf, modfl)
+#endif
+#ifdef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __modf, modfl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __modf, modfl, GLIBC_2_0);
+#endif
diff --git a/sysdeps/powerpc/power5/fpu/s_modff.c b/sysdeps/powerpc/power5/fpu/s_modff.c
new file mode 100644
index 0000000..55759cd
--- /dev/null
+++ b/sysdeps/powerpc/power5/fpu/s_modff.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 2013 Free Software Foundation, Inc.
+   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 Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If
+   not, see <http://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+#include <math_private.h>
+
+float
+__modff (float x, float *iptr)
+{
+  if (__builtin_isinff (x))
+    {
+      *iptr = x;
+      return __copysignf (0.0, x);
+    }
+  else if (__builtin_isnanf (x))
+    {
+      *iptr = NAN;
+      return NAN;
+    }
+
+  if (x >= 0.0)
+    {
+      *iptr = __floorf (x);
+      return (x - *iptr);
+    }
+  else
+    {
+      *iptr = __ceilf (x);
+      return (x - *iptr);
+    }
+}
+weak_alias (__modff, modff)
diff --git a/sysdeps/powerpc/powerpc32/power5/Implies b/sysdeps/powerpc/powerpc32/power5/Implies
index 17139bf..17949d4 100644
--- a/sysdeps/powerpc/powerpc32/power5/Implies
+++ b/sysdeps/powerpc/powerpc32/power5/Implies
@@ -1,2 +1,4 @@
+powerpc/power5/fpu
+powerpc/power5
 powerpc/powerpc32/power4/fpu
 powerpc/powerpc32/power4
diff --git a/sysdeps/powerpc/powerpc64/power5/Implies b/sysdeps/powerpc/powerpc64/power5/Implies
index bedb20b..b36831e 100644
--- a/sysdeps/powerpc/powerpc64/power5/Implies
+++ b/sysdeps/powerpc/powerpc64/power5/Implies
@@ -1,2 +1,4 @@
+powerpc/power5/fpu
+powerpc/power5
 powerpc/powerpc64/power4/fpu
 powerpc/powerpc64/power4

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                |   12 ++++++
 benchtests/Makefile                      |    2 +-
 benchtests/bench-modf.c                  |   39 ++++++++++++++++++++
 sysdeps/powerpc/power5/fpu/s_modf.c      |   58 ++++++++++++++++++++++++++++++
 sysdeps/powerpc/power5/fpu/s_modff.c     |   46 +++++++++++++++++++++++
 sysdeps/powerpc/powerpc32/power5/Implies |    2 +
 sysdeps/powerpc/powerpc64/power5/Implies |    2 +
 7 files changed, 160 insertions(+), 1 deletions(-)
 create mode 100644 benchtests/bench-modf.c
 create mode 100644 sysdeps/powerpc/power5/fpu/s_modf.c
 create mode 100644 sysdeps/powerpc/power5/fpu/s_modff.c


hooks/post-receive
-- 
GNU C Library master sources


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