about summary refs log tree commit diff
path: root/sysdeps/i386/i686/fpu/multiarch/Makefile
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-10-22 07:54:38 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-10-22 07:54:50 -0700
commitb2f6137ea570933fb4be286574cc58b794eb5b5f (patch)
treeb95f459a9090aba7854e32c454001a610f400728 /sysdeps/i386/i686/fpu/multiarch/Makefile
parente1f59bebd885c442c14df3554da9fe08792ce7ce (diff)
downloadglibc-b2f6137ea570933fb4be286574cc58b794eb5b5f.tar.gz
glibc-b2f6137ea570933fb4be286574cc58b794eb5b5f.tar.xz
glibc-b2f6137ea570933fb4be286574cc58b794eb5b5f.zip
i386: Replace assembly versions of e_expf with generic e_expf.c
This patch replaces i386 assembly versions of e_expf with generic
e_expf.c.  For workload-spec2017.wrf, on Nehalem, it improves
performance by:

                           Before            After     Improvement
reciprocal-throughput      55.5724          40.2664       38%
latency                    80.0687          60.8517       31%

On Skylake, it improves performance by:

                           Before            After     Improvement
reciprocal-throughput      62.4056          39.4188       58%
latency                    85.5496          59.6377       43%

On IvyBridge with --disable-multi-arch, it improves performance by:

                           Before            After     Improvement
reciprocal-throughput      133.707          40.3778       231%
latency                    149.191          63.2515       135%

	* sysdeps/i386/fpu/e_exp2f_data.c: Removed.
	* sysdeps/i386/fpu/e_expf.S: Likewise.
	* sysdeps/i386/fpu/math_errf.c: Likewise.
	* sysdeps/i386/fpu/w_expf.c: Likewise.
	* sysdeps/i386/i686/fpu/multiarch/e_expf-ia32.S: Likewise.
	* sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S: Likewise.
	* sysdeps/i386/i686/fpu/multiarch/w_expf.c: Likewise.
	* sysdeps/i386/fpu/libm-test-ulps: Updated for generic e_expf.c.
	* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise.
	* sysdeps/i386/i686/fpu/multiarch/Makefile (libm-sysdep_routines):
	Remove e_expf-ia32.
	(CFLAGS-e_expf-sse2.c): New.
	* sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.c: New file.
	* sysdeps/i386/i686/fpu/multiarch/e_expf.c: Rewritten.
Diffstat (limited to 'sysdeps/i386/i686/fpu/multiarch/Makefile')
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/Makefile4
1 files changed, 3 insertions, 1 deletions
diff --git a/sysdeps/i386/i686/fpu/multiarch/Makefile b/sysdeps/i386/i686/fpu/multiarch/Makefile
index 7d9089232f..c5e8cfd689 100644
--- a/sysdeps/i386/i686/fpu/multiarch/Makefile
+++ b/sysdeps/i386/i686/fpu/multiarch/Makefile
@@ -1,4 +1,6 @@
 ifeq ($(subdir),math)
-libm-sysdep_routines += e_expf-sse2 e_expf-ia32 s_sinf-sse2 s_cosf-sse2 \
+libm-sysdep_routines += e_expf-sse2 s_sinf-sse2 s_cosf-sse2 \
                         s_sincosf-sse2
+
+CFLAGS-e_expf-sse2.c = -msse2 -mfpmath=sse
 endif