mbox series

[0/7] Simplify and optimize modf/modff

Message ID 20250528180100.172042-1-adhemerval.zanella@linaro.org
Headers show
Series Simplify and optimize modf/modff | expand

Message

Adhemerval Zanella May 28, 2025, 5:59 p.m. UTC
The patchset uses the powerpc implementation idea to make it generic and
leverage rounding instruction on newer chips. The PowerPC implementation
is also suboptimal, where a trunc operation can replace the floor/ceil
operation.

The optimized implementation is gated through USE_TRUNCF_BUILTIN, since
libc exports modf/modff, and making it generic would add a lot of
complexity (since trunc will need to be pulled) and not all ABIs have
rounding instruction in the base ABI.

Adhemerval Zanella (7):
  benchtests: Add modff benchtest
  benchtests: Improve modf benchtest
  math: Simplify and optimize modff implementation
  math: Simplify and optimize modf implementation
  powerpc: Remove modff optimization
  powerpc: Remove modf optimization
  x86_64: Optimize modf/modff for x86_64-v2

 benchtests/Makefile                           |    1 +
 benchtests/modf-inputs                        | 4013 ++++++++-
 benchtests/modff-inputs                       | 8011 +++++++++++++++++
 sysdeps/ieee754/dbl-64/math_config.h          |   13 +
 sysdeps/ieee754/dbl-64/s_modf.c               |  109 +-
 sysdeps/ieee754/flt-32/math_config.h          |   13 +
 sysdeps/ieee754/flt-32/s_modff.c              |  103 +-
 sysdeps/powerpc/fpu/math-use-builtins-trunc.h |    9 +
 sysdeps/powerpc/fpu/s_modf.c                  |   59 -
 sysdeps/powerpc/fpu/s_modff.c                 |   55 -
 .../power4/fpu/multiarch/s_modf-power5+.c     |    2 +-
 .../power4/fpu/multiarch/s_modff-power5+.c    |    2 +-
 .../be/fpu/multiarch/s_modf-power5+.c         |    2 +-
 .../be/fpu/multiarch/s_modff-power5+.c        |    2 +-
 sysdeps/x86_64/fpu/math-use-builtins-trunc.h  |    9 +
 15 files changed, 12186 insertions(+), 217 deletions(-)
 create mode 100644 benchtests/modff-inputs
 create mode 100644 sysdeps/powerpc/fpu/math-use-builtins-trunc.h
 delete mode 100644 sysdeps/powerpc/fpu/s_modf.c
 delete mode 100644 sysdeps/powerpc/fpu/s_modff.c
 create mode 100644 sysdeps/x86_64/fpu/math-use-builtins-trunc.h