This is the mail archive of the libc-alpha@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]

PATCH: optimized expf for x86_32


Hello,

This patch is just i386-update of the x86_64-version that we recently
provided to GLIBC. So it totally works in SSE, and only epilogue moves
result from SSE to FPU, but without explicit rounding of the result to
single precision and hence does not degrade accuracy of functions that
depend on it, including complex single precision functions.

Performance on main path [-87;87] in cycles:

				Istanbul, Atom, Nehalem, AVX
Current __expf_finite:			79.20	326.29	98.05	99.05
Current __ieee754_expf:	70.69	293.30	91.38	94.76

New __expf_finite:			64.29	145.14	42.31	35.95
New __ieee754_expf:		51.83	113.14	34.12	30.24


Testing passed for new expf with our proprietary test system that
tests on many intervals with different steps, checks for special
values (from ISO C) and corner cases. Test using “make check” from
GLIBC did not show new fails.

ChangeLog:

2012-04-02  Liubov Dmitrieva  <liubov.dmitrieva@gmail.com>

	* sysdeps/i386/fpu/multiarch/: New folder.
	* sysdeps/i386/fpu/multiarch/init-arch.c: New file.
	* sysdeps/i386/fpu/multiarch/init-arch.h: New file.
	* sysdeps/i386/fpu/multiarch/ifunc-defines.sym: New file.
	* sysdeps/i386/fpu/multiarch/Makefile: New file.
	* sysdeps/i386/fpu/multiarch/e_expf.S: New file.
	* sysdeps/i386/fpu/multiarch/e_expf-sse2.S: New file.



--
Liubov Dmitrieva
Intel Corporation

Attachment: expf_x86_32.patch
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]