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] | |
This is a patch proposing manually optimized and high-performance sinf
and cosf versions with excellent precision.
Performance on main path [-10000; 10000] is more than 26X better.
Other important intervals are here (ratio of cycles).
(random) Ist. Bulld. Atom Neh. AVX
cosf |x|<0.78 1,9 2,72 1,65 1,89 1,79 times
cosf |x|<1.57 1,55 1,84 1,75 1,70 1,55 times
cosf |x|<2.35 1,64 2,08 1,78 1,75 1,66 times
cosf |x|<3.14 1,97 2,86 1,97 1,87 2,12 times
cosf |x|<3.92 2,15 3,50 2,08 2,01 2,33 times
cosf |x|<4.71 2,29 3,89 2,15 2,07 2,43 times
cosf |x|<5.49 2,39 4,70 2,21 2,06 2,52 times
cosf |x|<6.28 2,47 4,62 2,25 2,14 2,58 times
cosf |x|<7.06 2,54 4,63 2,28 2,16 2,64 times
cosf |x|<7.85 2,43 4,48 2,27 2,10 2,63 times
cosf |x|<8.63 2,30 4,47 2,23 2,04 2,56 times
cosf |x|<9.42 2,21 4,18 2,20 1,99 2,51 times
cosf |x|<100 2,53 5,43 2,28 2,34 2,01 times
cosf |x|<1000 19,82 20,50 19,88 17,96 18,37 times
cosf |x|<10000 25,98 29,78 24,95 23,63 23,52 times
cosf |x|<1e10 18,92 28,74 20,97 16,16 18,78 times
sinf |x|<0.78 1,39 1,75 1,31 1,30 1,28 times
sinf |x|<1.57 1,47 1,78 1,65 1,62 1,67 times
sinf |x|<2.35 1,64 2,10 1,77 1,79 1,77 times
sinf |x|<3.14 1,94 2,85 1,95 1,88 2,09 times
sinf |x|<3.92 2,12 3,38 2,04 1,91 2,30 times
sinf |x|<4.71 2,31 3,95 2,14 1,96 2,42 times
sinf |x|<5.49 2,66 4,57 2,21 2,15 2,51 times
sinf |x|<6.28 2,53 4,67 2,24 2,17 2,56 times
sinf |x|<7.06 2,52 4,54 2,23 2,11 2,62 times
sinf |x|<7.85 2,43 4,54 2,24 2,08 2,59 times
sinf |x|<8.63 2,33 4,62 2,21 2,09 2,53 times
sinf |x|<9.42 2,27 4,28 2,17 1,96 2,51 times
sinf |x|<100 2,52 5,32 2,26 2,34 2,01 times
sinf |x|<1000 20,12 20,42 19,89 18,24 18,48 times
sinf |x|<10000 26,26 26,73 25,00 23,11 23,79 times
sinf |x|<1e10 18,76 28,73 20,90 16,09 18,49 times
Testing passed for new sinf/cosf 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 was ok too.
Our test system observed more than 1e4 ulp errors for |x|>1e4 for
current GLIBC. New asm versions, provided here, are maximum 0.500121
ulp for sinf, 0.500573 ulp for cosf.
ChangeLog:
2012-06-22 Liubov Dmitrieva <liubov.dmitrieva@gmail.com>
* sysdeps/i386/i686/fpu/multiarch/Makefile: Update
(sysdep_routines): Add s_sinf-sse2, s_conf-sse2
* sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S New file
* sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S New file
* sysdeps/i386/i686/fpu/multiarch/s_sinf.c New file
* sysdeps/i386/i686/fpu/multiarch/s_cosf.c New file
* sysdeps/ieee754/flt-32/s_sinf.c Update
(SINF): Add macro for using routine as __sinf_ia32
* sysdeps/ieee754/flt-32/s_cosf.c Update
(COSF): Add macro for using routine as __cosf_ia32
* sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S Fix Copyright
* sysdeps/i386/i686/fpu/multiarch/e_expf.c Fix Copyright
--
Liubov Dmitrieva
Software Engineer
Intel Corporation
Attachment:
sinf_cosf_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] |