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-625-g7eda65f


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  7eda65f69e0e4533b76ca4614fe516de03fe2b3a (commit)
      from  5d15c9697577d2c342b5ade820bfd7b84a736b23 (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=7eda65f69e0e4533b76ca4614fe516de03fe2b3a

commit 7eda65f69e0e4533b76ca4614fe516de03fe2b3a
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Sun Oct 22 07:58:54 2017 -0700

    i386: Replace assembly versions of e_exp2f with generic e_exp2f.c
    
    This patch replaces i386 assembly versions of e_exp2f with generic
    e_exp2f.c.  For workload-spec2017.wrf, on Nehalem, it improves
    performance by:
    
                               Before            After     Improvement
    reciprocal-throughput      112.996          40.0454       182%
    latency                    126.581          54.4479       132%
    
    On Skylake, it improves performance by:
    
                               Before            After     Improvement
    reciprocal-throughput      113.14           39.447        186%
    latency                    136.068          55.684        144%
    
    On IvyBridge with --disable-multi-arch, it improves performance by:
    
                               Before            After     Improvement
    reciprocal-throughput      132.521          40.3759       228%
    latency                    145.791          58.4587       149%
    
    	* sysdeps/i386/fpu/e_exp2f.S: Removed.
    	* sysdeps/i386/fpu/w_exp2f.c: Likewise.
    	* sysdeps/i386/fpu/libm-test-ulps: Updated for generic e_exp2f.c.
    	* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise.
    	* sysdeps/i386/i686/fpu/multiarch/Makefile (libm-sysdep_routines):
    	Add e_exp2f-sse2.
    	(CFLAGS-e_exp2f-sse2.c): New.
    	* sysdeps/i386/i686/fpu/multiarch/e_exp2f-sse2.c: New file.
    	* sysdeps/i386/i686/fpu/multiarch/e_exp2f.c: Likewise.

diff --git a/ChangeLog b/ChangeLog
index 2fa1ddc..2100c0a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2017-10-22  H.J. Lu  <hongjiu.lu@intel.com>
 
+	* sysdeps/i386/fpu/e_exp2f.S: Removed.
+	* sysdeps/i386/fpu/w_exp2f.c: Likewise.
+	* sysdeps/i386/fpu/libm-test-ulps: Updated for generic e_exp2f.c.
+	* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise.
+	* sysdeps/i386/i686/fpu/multiarch/Makefile (libm-sysdep_routines):
+	Add e_exp2f-sse2.
+	(CFLAGS-e_exp2f-sse2.c): New.
+	* sysdeps/i386/i686/fpu/multiarch/e_exp2f-sse2.c: New file.
+	* sysdeps/i386/i686/fpu/multiarch/e_exp2f.c: Likewise.
+
+2017-10-22  H.J. Lu  <hongjiu.lu@intel.com>
+
 	* sysdeps/x86_64/fpu/multiarch/Makefile (libm-sysdep_routines):
 	Add e_exp2f-fma.
 	(CFLAGS-e_exp2f-fma.c): New.
diff --git a/sysdeps/i386/fpu/e_exp2f.S b/sysdeps/i386/fpu/e_exp2f.S
deleted file mode 100644
index 30623cd..0000000
--- a/sysdeps/i386/fpu/e_exp2f.S
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Written by J.T. Conklin <jtc@netbsd.org>.
- * Adapted for exp2 by Ulrich Drepper <drepper@cygnus.com>.
- * Public domain.
- */
-
-#include <machine/asm.h>
-#include <i386-math-asm.h>
-
-DEFINE_FLT_MIN
-
-#ifdef PIC
-# define MO(op) op##@GOTOFF(%ecx)
-#else
-# define MO(op) op
-#endif
-
-	.text
-ENTRY(__ieee754_exp2f)
-#ifdef  PIC
-	LOAD_PIC_REG (cx)
-#endif
-	flds	4(%esp)
-/* I added the following ugly construct because exp(+-Inf) resulted
-   in NaN.  The ugliness results from the bright minds at Intel.
-   For the i686 the code can be written better.
-   -- drepper@cygnus.com.  */
-	fxam				/* Is NaN or +-Inf?  */
-	fstsw	%ax
-	movb	$0x45, %dh
-	andb	%ah, %dh
-	cmpb	$0x05, %dh
-	je	1f			/* Is +-Inf, jump.  */
-	fld	%st
-	frndint				/* int(x) */
-	fsubr	%st,%st(1)		/* fract(x) */
-	fxch
-	f2xm1				/* 2^(fract(x)) - 1 */
-	fld1
-	faddp				/* 2^(fract(x)) */
-	fscale				/* e^x */
-	fstp	%st(1)
-	FLT_NARROW_EVAL_UFLOW_NONNEG_NAN
-	ret
-
-1:	testl	$0x200, %eax		/* Test sign.  */
-	jz	2f			/* If positive, jump.  */
-	fstp	%st
-	fldz				/* Set result to 0.  */
-2:	ret
-END (__ieee754_exp2f)
-strong_alias (__ieee754_exp2f, __exp2f_finite)
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index c826b29..0aa18ea 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -1921,7 +1921,9 @@ ildouble: 1
 ldouble: 1
 
 Function: "exp2_upward":
+float: 1
 float128: 2
+ifloat: 1
 ifloat128: 2
 ildouble: 1
 ldouble: 1
diff --git a/sysdeps/i386/fpu/w_exp2f.c b/sysdeps/i386/fpu/w_exp2f.c
deleted file mode 100644
index 583065d..0000000
--- a/sysdeps/i386/fpu/w_exp2f.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/../math/w_exp2f.c>
diff --git a/sysdeps/i386/i686/fpu/multiarch/Makefile b/sysdeps/i386/i686/fpu/multiarch/Makefile
index c5e8cfd..2723f57 100644
--- a/sysdeps/i386/i686/fpu/multiarch/Makefile
+++ b/sysdeps/i386/i686/fpu/multiarch/Makefile
@@ -1,6 +1,7 @@
 ifeq ($(subdir),math)
-libm-sysdep_routines += e_expf-sse2 s_sinf-sse2 s_cosf-sse2 \
+libm-sysdep_routines += e_exp2f-sse2 e_expf-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
 endif
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_exp2f-sse2.c b/sysdeps/i386/i686/fpu/multiarch/e_exp2f-sse2.c
new file mode 100644
index 0000000..dc3138d
--- /dev/null
+++ b/sysdeps/i386/i686/fpu/multiarch/e_exp2f-sse2.c
@@ -0,0 +1,3 @@
+#define __exp2f __exp2f_sse2
+
+#include <sysdeps/ieee754/flt-32/e_exp2f.c>
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c b/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
new file mode 100644
index 0000000..0a5727f
--- /dev/null
+++ b/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
@@ -0,0 +1,37 @@
+/* Multiple versions of exp2f.
+   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_exp2f (float);
+
+#define SYMBOL_NAME exp2f
+#include "ifunc-sse2.h"
+
+libc_ifunc_redirected (__redirect_exp2f, __exp2f, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+# include <shlib-compat.h>
+versioned_symbol (libm, __exp2f, exp2f, GLIBC_2_27);
+#else
+weak_alias (__exp2f, exp2f)
+#endif
+
+strong_alias (__exp2f, __ieee754_exp2f)
+strong_alias (__exp2f, __exp2f_finite)
+
+#define __exp2f __exp2f_ia32
+#include <sysdeps/ieee754/flt-32/e_exp2f.c>
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index 5ff641f..2d056a9 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -1921,7 +1921,9 @@ ildouble: 1
 ldouble: 1
 
 Function: "exp2_upward":
+float: 1
 float128: 2
+ifloat: 1
 ifloat128: 2
 ildouble: 1
 ldouble: 1

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

Summary of changes:
 ChangeLog                                          |   12 +++++
 sysdeps/i386/fpu/e_exp2f.S                         |   52 --------------------
 sysdeps/i386/fpu/libm-test-ulps                    |    2 +
 sysdeps/i386/fpu/w_exp2f.c                         |    1 -
 sysdeps/i386/i686/fpu/multiarch/Makefile           |    3 +-
 .../i686/fpu/multiarch/e_exp2f-sse2.c}             |    2 +-
 .../{x86_64 => i386/i686}/fpu/multiarch/e_exp2f.c  |    4 +-
 sysdeps/i386/i686/fpu/multiarch/libm-test-ulps     |    2 +
 8 files changed, 21 insertions(+), 57 deletions(-)
 delete mode 100644 sysdeps/i386/fpu/e_exp2f.S
 delete mode 100644 sysdeps/i386/fpu/w_exp2f.c
 copy sysdeps/{x86_64/fpu/multiarch/e_exp2f-fma.c => i386/i686/fpu/multiarch/e_exp2f-sse2.c} (60%)
 copy sysdeps/{x86_64 => i386/i686}/fpu/multiarch/e_exp2f.c (95%)


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]