This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.26.9000-627-g0ccc715
- From: hjl at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 22 Oct 2017 15:05:25 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.26.9000-627-g0ccc715
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 0ccc7153ccd8fbecefb0793a65cd5a85cdb099fc (commit)
from fe596486d694e657413d0d4c5a04598674ff71b1 (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=0ccc7153ccd8fbecefb0793a65cd5a85cdb099fc
commit 0ccc7153ccd8fbecefb0793a65cd5a85cdb099fc
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Sun Oct 22 08:03:46 2017 -0700
x86-64: Add logf with FMA
For workload-spec2017.wrf, on Skylake, it improves performance by:
Before After Improvement
reciprocal-throughput 16.1534 13.8874 16%
latency 41.9642 34.3072 22%
* sysdeps/x86_64/fpu/multiarch/Makefile (libm-sysdep_routines):
Add e_logf-fma.
(CFLAGS-e_logf-fma.c): New.
* sysdeps/x86_64/fpu/multiarch/e_logf-fma.c: New file.
* sysdeps/x86_64/fpu/multiarch/e_logf.c: Likewise.
diff --git a/ChangeLog b/ChangeLog
index 347bdb7..603cdae 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2017-10-22 H.J. Lu <hongjiu.lu@intel.com>
+ * sysdeps/x86_64/fpu/multiarch/Makefile (libm-sysdep_routines):
+ Add e_logf-fma.
+ (CFLAGS-e_logf-fma.c): New.
+ * sysdeps/x86_64/fpu/multiarch/e_logf-fma.c: New file.
+ * sysdeps/x86_64/fpu/multiarch/e_logf.c: Likewise.
+
+2017-10-22 H.J. Lu <hongjiu.lu@intel.com>
+
* sysdeps/i386/fpu/e_logf.S: Removed.
* sysdeps/i386/fpu/e_logf_data.c: Likewise.
* sysdeps/i386/fpu/w_logf.c: Likewise.
diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile
index 71a3b33..97d886a 100644
--- a/sysdeps/x86_64/fpu/multiarch/Makefile
+++ b/sysdeps/x86_64/fpu/multiarch/Makefile
@@ -37,10 +37,11 @@ CFLAGS-slowpow-fma.c = -mfma -mavx2
CFLAGS-s_sin-fma.c = -mfma -mavx2
CFLAGS-s_tan-fma.c = -mfma -mavx2
-libm-sysdep_routines += e_exp2f-fma e_expf-fma
+libm-sysdep_routines += e_exp2f-fma e_expf-fma e_logf-fma
CFLAGS-e_exp2f-fma.c = -mfma -mavx2
CFLAGS-e_expf-fma.c = -mfma -mavx2
+CFLAGS-e_logf-fma.c = -mfma -mavx2
libm-sysdep_routines += e_exp-fma4 e_log-fma4 e_pow-fma4 s_atan-fma4 \
e_asin-fma4 e_atan2-fma4 s_sin-fma4 s_tan-fma4 \
diff --git a/sysdeps/x86_64/fpu/multiarch/e_logf-fma.c b/sysdeps/x86_64/fpu/multiarch/e_logf-fma.c
new file mode 100644
index 0000000..a47fd81
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/e_logf-fma.c
@@ -0,0 +1,3 @@
+#define __logf __logf_fma
+
+#include <sysdeps/ieee754/flt-32/e_logf.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_logf.c b/sysdeps/x86_64/fpu/multiarch/e_logf.c
new file mode 100644
index 0000000..6b29473
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/e_logf.c
@@ -0,0 +1,40 @@
+/* Multiple versions of logf.
+ Copyright (C) 2017 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 float __redirect_logf (float);
+
+#define SYMBOL_NAME logf
+#include "ifunc-fma.h"
+
+libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (__logf, __GI___logf, __redirect_logf)
+ __attribute__ ((visibility ("hidden")));
+
+# include <shlib-compat.h>
+versioned_symbol (libm, __logf, logf, GLIBC_2_27);
+#else
+weak_alias (__logf, logf)
+#endif
+
+strong_alias (__logf, __ieee754_logf)
+strong_alias (__logf, __logf_finite)
+
+#define __logf __logf_sse2
+#include <sysdeps/ieee754/flt-32/e_logf.c>
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 8 ++++++++
sysdeps/x86_64/fpu/multiarch/Makefile | 3 ++-
.../fpu/multiarch/e_logf-fma.c} | 2 +-
.../{i386/i686 => x86_64}/fpu/multiarch/e_logf.c | 6 +++---
4 files changed, 14 insertions(+), 5 deletions(-)
copy sysdeps/{i386/i686/fpu/multiarch/e_logf-sse2.c => x86_64/fpu/multiarch/e_logf-fma.c} (61%)
copy sysdeps/{i386/i686 => x86_64}/fpu/multiarch/e_logf.c (91%)
hooks/post-receive
--
GNU C Library master sources