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.26.9000-630-g6089a3e


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  6089a3ee24cede17e9443aef0aa72fa1a0ba1548 (commit)
      from  80bb5935632faf8a8e94daf976340e549be9d4c5 (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=6089a3ee24cede17e9443aef0aa72fa1a0ba1548

commit 6089a3ee24cede17e9443aef0aa72fa1a0ba1548
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Sun Oct 22 08:09:08 2017 -0700

    i386: Replace assembly versions of e_log2f with generic e_log2f.c
    
    This patch replaces i386 assembly versions of e_log2f with generic
    e_log2f.c.  For workload-spec2017.wrf, on Nehalem, it improves
    performance by:
    
                               Before            After     Improvement
    reciprocal-throughput      92.3845          30.8752       199%
    latency                    112.855          54.8645       105%
    
    On Skylake, it improves performance by:
    
                               Before            After     Improvement
    reciprocal-throughput      98.7488          22.7507       334%
    latency                    118.01           51.6083       128%
    
    On IvyBridge with --disable-multi-arch, it improves performance by:
    
                               Before            After     Improvement
    reciprocal-throughput      106.635          28.8596       269%
    latency                    129.888          56.9187       128%
    
    	* sysdeps/i386/fpu/e_log2f.S: Removed.
    	* sysdeps/i386/fpu/e_log2f_data.c: Likewise.
    	* sysdeps/i386/fpu/w_log2f.c: Likewise.
    	* sysdeps/i386/fpu/libm-test-ulps: Updated for generic e_log2f.c.
    	* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise.
    	* sysdeps/i386/i686/fpu/multiarch/Makefile (libm-sysdep_routines):
    	Add e_log2f-sse2.
    	(CFLAGS-e_log2f-sse2.c): New.
    	* sysdeps/i386/i686/fpu/multiarch/e_log2f-sse2.c: New file.
    	* sysdeps/i386/i686/fpu/multiarch/e_log2f.c: Likewise.

diff --git a/ChangeLog b/ChangeLog
index 28df1d2..78910c5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2017-10-22  H.J. Lu  <hongjiu.lu@intel.com>
 
+	* sysdeps/i386/fpu/e_log2f.S: Removed.
+	* sysdeps/i386/fpu/e_log2f_data.c: Likewise.
+	* sysdeps/i386/fpu/w_log2f.c: Likewise.
+	* sysdeps/i386/fpu/libm-test-ulps: Updated for generic e_log2f.c.
+	* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise.
+	* sysdeps/i386/i686/fpu/multiarch/Makefile (libm-sysdep_routines):
+	Add e_log2f-sse2.
+	(CFLAGS-e_log2f-sse2.c): New.
+	* sysdeps/i386/i686/fpu/multiarch/e_log2f-sse2.c: New file.
+	* sysdeps/i386/i686/fpu/multiarch/e_log2f.c: Likewise.
+
+2017-10-22  H.J. Lu  <hongjiu.lu@intel.com>
+
 	* sysdeps/x86_64/fpu/multiarch/Makefile (libm-sysdep_routines):
 	Add e_powf-fma.
 	(CFLAGS-e_powf-fma.c): New.
diff --git a/sysdeps/i386/fpu/e_log2f.S b/sysdeps/i386/fpu/e_log2f.S
deleted file mode 100644
index 344eeb4..0000000
--- a/sysdeps/i386/fpu/e_log2f.S
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Written by J.T. Conklin <jtc@netbsd.org>.
- * Adapted for use as log2 by Ulrich Drepper <drepper@cygnus.com>.
- * Public domain.
- *
- * Changed to use fyl2xp1 for values near 1, <drepper@cygnus.com>.
- */
-
-#include <machine/asm.h>
-
-	.section .rodata.cst8,"aM",@progbits,8
-
-	.p2align 3
-	.type one,@object
-one:	.double 1.0
-	ASM_SIZE_DIRECTIVE(one)
-	/* It is not important that this constant is precise.  It is only
-	   a value which is known to be on the safe side for using the
-	   fyl2xp1 instruction.  */
-	.type limit,@object
-limit:	.double 0.29
-	ASM_SIZE_DIRECTIVE(limit)
-
-
-#ifdef PIC
-# define MO(op) op##@GOTOFF(%edx)
-#else
-# define MO(op) op
-#endif
-
-	.text
-ENTRY(__ieee754_log2f)
-#ifdef PIC
-	LOAD_PIC_REG (dx)
-#endif
-	fldl	MO(one)
-	flds	4(%esp)		// x : 1
-	fxam
-	fnstsw
-	fld	%st		// x : x : 1
-	sahf
-	jc	3f		// in case x is NaN or ±Inf
-4:	fsub	%st(2), %st	// x-1 : x : 1
-	fld	%st		// x-1 : x-1 : x : 1
-	fabs			// |x-1| : x-1 : x : 1
-	fcompl	MO(limit)	// x-1 : x : 1
-	fnstsw			// x-1 : x : 1
-	andb	$0x45, %ah
-	jz	2f
-	fxam
-	fnstsw
-	andb	$0x45, %ah
-	cmpb	$0x40, %ah
-	jne	5f
-	fabs			// log2(1) is +0 in all rounding modes.
-5:	fstp	%st(1)		// x-1 : 1
-	fyl2xp1			// log(x)
-	ret
-
-2:	fstp	%st(0)		// x : 1
-	fyl2x			// log(x)
-	ret
-
-3:	jp	4b		// in case x is ±Inf
-	fstp	%st(1)
-	fstp	%st(1)
-	ret
-END (__ieee754_log2f)
-strong_alias (__ieee754_log2f, __log2f_finite)
diff --git a/sysdeps/i386/fpu/e_log2f_data.c b/sysdeps/i386/fpu/e_log2f_data.c
deleted file mode 100644
index 1cc8931..0000000
--- a/sysdeps/i386/fpu/e_log2f_data.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Not needed.  */
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index ba9b9ec..64cac56 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -2300,8 +2300,10 @@ ldouble: 3
 
 Function: "log2":
 double: 1
+float: 1
 float128: 2
 idouble: 1
+ifloat: 1
 ifloat128: 2
 ildouble: 1
 ldouble: 1
diff --git a/sysdeps/i386/fpu/w_log2f.c b/sysdeps/i386/fpu/w_log2f.c
deleted file mode 100644
index 3f5c71c..0000000
--- a/sysdeps/i386/fpu/w_log2f.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/../math/w_log2f.c>
diff --git a/sysdeps/i386/i686/fpu/multiarch/Makefile b/sysdeps/i386/i686/fpu/multiarch/Makefile
index ee4c3f3..eee3b8b 100644
--- a/sysdeps/i386/i686/fpu/multiarch/Makefile
+++ b/sysdeps/i386/i686/fpu/multiarch/Makefile
@@ -1,8 +1,9 @@
 ifeq ($(subdir),math)
-libm-sysdep_routines += e_exp2f-sse2 e_expf-sse2 e_logf-sse2 \
+libm-sysdep_routines += e_exp2f-sse2 e_expf-sse2 e_logf-sse2 e_log2f-sse2 \
 			s_sinf-sse2 s_cosf-sse2 s_sincosf-sse2
 
 CFLAGS-e_exp2f-sse2.c = -msse2 -mfpmath=sse
 CFLAGS-e_expf-sse2.c = -msse2 -mfpmath=sse
+CFLAGS-e_log2f-sse2.c = -msse2 -mfpmath=sse
 CFLAGS-e_logf-sse2.c = -msse2 -mfpmath=sse
 endif
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_log2f-sse2.c b/sysdeps/i386/i686/fpu/multiarch/e_log2f-sse2.c
new file mode 100644
index 0000000..a9ed25e
--- /dev/null
+++ b/sysdeps/i386/i686/fpu/multiarch/e_log2f-sse2.c
@@ -0,0 +1,3 @@
+#define __log2f __log2f_sse2
+
+#include <sysdeps/ieee754/flt-32/e_log2f.c>
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_log2f.c b/sysdeps/i386/i686/fpu/multiarch/e_log2f.c
new file mode 100644
index 0000000..2c47949
--- /dev/null
+++ b/sysdeps/i386/i686/fpu/multiarch/e_log2f.c
@@ -0,0 +1,40 @@
+/* Multiple versions of log2f.
+   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_log2f (float);
+
+#define SYMBOL_NAME log2f
+#include "ifunc-sse2.h"
+
+libc_ifunc_redirected (__redirect_log2f, __log2f, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (__log2f_ia32, __GI___log2f, __redirect_log2f)
+  __attribute__ ((visibility ("hidden")));
+
+# include <shlib-compat.h>
+versioned_symbol (libm, __log2f, log2f, GLIBC_2_27);
+#else
+weak_alias (__log2f, log2f)
+#endif
+
+strong_alias (__log2f, __ieee754_log2f)
+strong_alias (__log2f, __log2f_finite)
+
+#define __log2f __log2f_ia32
+#include <sysdeps/ieee754/flt-32/e_log2f.c>
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index c86294b..b5d74df 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -2300,8 +2300,10 @@ ldouble: 3
 
 Function: "log2":
 double: 1
+float: 1
 float128: 2
 idouble: 1
+ifloat: 1
 ifloat128: 2
 ildouble: 1
 ldouble: 1

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

Summary of changes:
 ChangeLog                                          |   13 ++++
 sysdeps/i386/fpu/e_log2f.S                         |   69 --------------------
 sysdeps/i386/fpu/e_log2f_data.c                    |    1 -
 sysdeps/i386/fpu/libm-test-ulps                    |    2 +
 sysdeps/i386/fpu/w_log2f.c                         |    1 -
 sysdeps/i386/i686/fpu/multiarch/Makefile           |    3 +-
 .../i686/fpu/multiarch/e_log2f-sse2.c}             |    2 +-
 .../{x86_64 => i386/i686}/fpu/multiarch/e_log2f.c  |    6 +-
 sysdeps/i386/i686/fpu/multiarch/libm-test-ulps     |    2 +
 9 files changed, 23 insertions(+), 76 deletions(-)
 delete mode 100644 sysdeps/i386/fpu/e_log2f.S
 delete mode 100644 sysdeps/i386/fpu/e_log2f_data.c
 delete mode 100644 sysdeps/i386/fpu/w_log2f.c
 copy sysdeps/{x86_64/fpu/multiarch/e_log2f-fma.c => i386/i686/fpu/multiarch/e_log2f-sse2.c} (60%)
 copy sysdeps/{x86_64 => i386/i686}/fpu/multiarch/e_log2f.c (91%)


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]