mbox

[0/5] Use generic sinf, cosf, and sincosf for i686

Message ID 20220531213502.227895-1-adhemerval.zanella@linaro.org
Headers

Message

Adhemerval Zanella May 31, 2022, 9:34 p.m. UTC
  Performance seems to be similar, with generic implementation showing
slight better performance for sinf large inputs and for sincosf.

Although generic implementation shows slight lower precision (the
ulp data required some adjustments), the code size shows a good
improvement:

i686-linux-gnu-master$ size math/s_sinf-sse2.os math/s_cosf-sse2.os
math/s_sincosf-sse2.os
   text    data     bss     dec     hex filename
   1555       0       0    1555     613 math/s_sinf-sse2.os
   1551       0       0    1551     60f math/s_cosf-sse2.os
   1754       0       0    1754     6da math/s_sincosf-sse2.os

i686-linux-gnu-patched$ size math/s_sinf-sse2.os math/s_cosf-sse2.os
math/s_sincosf-sse2.os
   text    data     bss     dec     hex filename
   1059       0       0    1059     423 math/s_sinf-sse2.os
   1067       0       0    1067     42b math/s_cosf-sse2.os
    993       0       0     993     3e1 math/s_sincosf-sse2.os

And it also simplifies the code base a lot with less assembly
implementations.

Adhemerval Zanella (5):
  benchtests: Add workload name for cosf
  i686: Use generic cosf implementation for SSE2 version
  i686: Use generic sinf implementation for SSE2 version
  benchtests: Add workload name for sincosf
  math: Use generic sinf implementation for SSE2 version

 benchtests/cosf-inputs                        |   2 +-
 benchtests/sincosf-inputs                     |   1 +
 sysdeps/i386/i686/fpu/multiarch/Makefile      |   3 +
 .../i386/i686/fpu/multiarch/libm-test-ulps    |  11 +
 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S | 552 -----------------
 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.c |   3 +
 .../i386/i686/fpu/multiarch/s_sincosf-sse2.S  | 585 ------------------
 .../i386/i686/fpu/multiarch/s_sincosf-sse2.c  |   3 +
 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S | 565 -----------------
 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.c |   3 +
 sysdeps/ieee754/flt-32/s_cosf.c               |   5 +
 sysdeps/ieee754/flt-32/s_sinf.c               |   5 +
 12 files changed, 35 insertions(+), 1703 deletions(-)
 delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S
 create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.c
 delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.S
 create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.c
 delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S
 create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.c