arrfab / rpms / glibc

Forked from rpms/glibc 5 years ago
Clone

Blame SOURCES/glibc-rh731833-libm-6.patch

147e83
Consolidated two commits:
147e83
147e83
From 51c33bd233d00d77f268ec28565506a6cd1e7d10 Mon Sep 17 00:00:00 2001
147e83
From: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
147e83
Date: Mon, 25 Mar 2013 16:10:06 -0500
147e83
Subject: [PATCH 25/42] PowerPC: modf optimization
147e83
147e83
This patch implements modf/modff optimization for POWER by focus
147e83
on FP operations instead of relying in integer ones.
147e83
(backported from commit 3c0265394d9ffedff2b0de508602dc52e077ce5c)
147e83
147e83
This backport does not include the benchmark tests from the original
147e83
commit.
147e83
147e83
From 599fefcc3e7fbf65d9c441bf1b336b272c39f262 Mon Sep 17 00:00:00 2001
147e83
From: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
147e83
Date: Fri, 26 Apr 2013 13:00:56 -0500
147e83
Subject: [PATCH 26/42] PowerPC: modf optimization fix
147e83
147e83
This patch fix the 3c0265394d9ffedff2b0de508602dc52e077ce5c commits
147e83
by correctly setting minimum architecture for modf PPC optimization
147e83
to power5+ instead of power5 (since only on power5+ round/ceil will
147e83
be inline to inline assembly).
147e83
(cherry picked from commit aa630f590c9c7d070a7cdf3a2a88069ad6b63de9)
147e83
147e83
diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c
147e83
--- glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c	1970-01-01 05:30:00.000000000 +0530
147e83
+++ glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c	2013-08-06 17:48:57.609526556 +0530
147e83
@@ -0,0 +1,58 @@
147e83
+/* Copyright (C) 2013 Free Software Foundation, Inc.
147e83
+   This file is part of the GNU C Library
147e83
+
147e83
+   The GNU C Library is free software; you can redistribute it and/or
147e83
+   modify it under the terms of the GNU Library General Public License as
147e83
+   published by the Free Software Foundation; either version 2 of the
147e83
+   License, or (at your option) any later version.
147e83
+
147e83
+   The GNU C Library is distributed in the hope that it will be useful,
147e83
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
147e83
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
147e83
+   Library General Public License for more details.
147e83
+
147e83
+   You should have received a copy of the GNU Library General Public
147e83
+   License along with the GNU C Library; see the file COPYING.LIB.  If
147e83
+   not, see <http://www.gnu.org/licenses/>.  */
147e83
+
147e83
+#include <math.h>
147e83
+#include <math_private.h>
147e83
+#include <math_ldbl_opt.h>
147e83
+
147e83
+double
147e83
+__modf (double x, double *iptr)
147e83
+{
147e83
+  if (__builtin_isinf (x))
147e83
+    {
147e83
+      *iptr = x;
147e83
+      return __copysign (0.0, x);
147e83
+    }
147e83
+  else if (__builtin_isnan (x))
147e83
+    {
147e83
+      *iptr = NAN;
147e83
+      return NAN;
147e83
+    }
147e83
+
147e83
+  if (x >= 0.0)
147e83
+    {
147e83
+      *iptr = __floor (x);
147e83
+      return (x - *iptr);
147e83
+    }
147e83
+  else
147e83
+    {
147e83
+      *iptr = __ceil (x);
147e83
+      return (x - *iptr);
147e83
+    }
147e83
+}
147e83
+weak_alias (__modf, modf)
147e83
+#ifdef NO_LONG_DOUBLE
147e83
+strong_alias (__modf, __modfl)
147e83
+weak_alias (__modf, modfl)
147e83
+#endif
147e83
+#ifdef IS_IN_libm
147e83
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
147e83
+compat_symbol (libm, __modf, modfl, GLIBC_2_0);
147e83
+# endif
147e83
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
147e83
+compat_symbol (libc, __modf, modfl, GLIBC_2_0);
147e83
+#endif
147e83
diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modff.c glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modff.c
147e83
--- glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modff.c	1970-01-01 05:30:00.000000000 +0530
147e83
+++ glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modff.c	2013-08-06 17:48:57.609526556 +0530
147e83
@@ -0,0 +1,46 @@
147e83
+/* Copyright (C) 2013 Free Software Foundation, Inc.
147e83
+   This file is part of the GNU C Library
147e83
+
147e83
+   The GNU C Library is free software; you can redistribute it and/or
147e83
+   modify it under the terms of the GNU Library General Public License as
147e83
+   published by the Free Software Foundation; either version 2 of the
147e83
+   License, or (at your option) any later version.
147e83
+
147e83
+   The GNU C Library is distributed in the hope that it will be useful,
147e83
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
147e83
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
147e83
+   Library General Public License for more details.
147e83
+
147e83
+   You should have received a copy of the GNU Library General Public
147e83
+   License along with the GNU C Library; see the file COPYING.LIB.  If
147e83
+   not, see <http://www.gnu.org/licenses/>.  */
147e83
+
147e83
+#include <math.h>
147e83
+#include <math_private.h>
147e83
+
147e83
+float
147e83
+__modff (float x, float *iptr)
147e83
+{
147e83
+  if (__builtin_isinff (x))
147e83
+    {
147e83
+      *iptr = x;
147e83
+      return __copysignf (0.0, x);
147e83
+    }
147e83
+  else if (__builtin_isnanf (x))
147e83
+    {
147e83
+      *iptr = NAN;
147e83
+      return NAN;
147e83
+    }
147e83
+
147e83
+  if (x >= 0.0)
147e83
+    {
147e83
+      *iptr = __floorf (x);
147e83
+      return (x - *iptr);
147e83
+    }
147e83
+  else
147e83
+    {
147e83
+      *iptr = __ceilf (x);
147e83
+      return (x - *iptr);
147e83
+    }
147e83
+}
147e83
+weak_alias (__modff, modff)
147e83
diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/Implies
147e83
--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/Implies	2012-12-25 08:32:13.000000000 +0530
147e83
+++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/Implies	2013-08-06 17:48:54.266526703 +0530
147e83
@@ -1,2 +1,4 @@
147e83
+powerpc/power5/fpu
147e83
+powerpc/power5
147e83
 powerpc/powerpc32/power4/fpu
147e83
 powerpc/powerpc32/power4
147e83
diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/Implies
147e83
--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/Implies	2012-12-25 08:32:13.000000000 +0530
147e83
+++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/Implies	2013-08-06 17:48:57.609526556 +0530
147e83
@@ -1,2 +1,4 @@
147e83
+powerpc/power5+/fpu
147e83
+powerpc/power5+
147e83
 powerpc/powerpc32/power5/fpu
147e83
 powerpc/powerpc32/power5
147e83
diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/Implies
147e83
--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/Implies	2012-12-25 08:32:13.000000000 +0530
147e83
+++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/Implies	2013-08-06 17:48:54.266526703 +0530
147e83
@@ -1,2 +1,4 @@
147e83
+powerpc/power5/fpu
147e83
+powerpc/power5
147e83
 powerpc/powerpc64/power4/fpu
147e83
 powerpc/powerpc64/power4
147e83
diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/Implies
147e83
--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/Implies	2012-12-25 08:32:13.000000000 +0530
147e83
+++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/Implies	2013-08-06 17:48:57.610526556 +0530
147e83
@@ -1,2 +1,4 @@
147e83
+powerpc/power5+/fpu
147e83
+powerpc/power5+
147e83
 powerpc/powerpc64/power5/fpu
147e83
 powerpc/powerpc64/power5