[PATCH 00/10] x86: Use the generic math implementations
H.J. Lu
hjl.tools@gmail.com
Thu Oct 19 17:32:00 GMT 2017
The new generic math implementations are faster than the current assembly
versions on i686 and x86-64. This series of patches replaces the x86
assembly versions with the generic math implementations and enables FMA
for x86-64.
H.J. Lu (10):
x86-64: Replace assembly versions of e_expf with generic e_expf.c
i386: Replace assembly versions of e_expf with generic e_expf.c
x86-64: Add exp2f with FMA
i386: Replace assembly versions of e_exp2f with generic e_exp2f.c
i386: Replace assembly versions of e_logf with generic e_logf.c
x86-64: Add logf with FMA
x86-64: Add log2f with FMA
x86-64: Add powf with FMA
i386: Replace assembly versions of e_log2f with generic e_log2f.c
i386: Replace assembly versions of e_powf with generic e_powf.c
sysdeps/i386/fpu/e_exp2f.S | 52 ---
sysdeps/i386/fpu/e_exp2f_data.c | 1 -
sysdeps/i386/fpu/e_expf.S | 74 ----
sysdeps/i386/fpu/e_log2f.S | 69 ----
sysdeps/i386/fpu/e_log2f_data.c | 1 -
sysdeps/i386/fpu/e_logf.S | 93 -----
sysdeps/i386/fpu/e_logf_data.c | 1 -
sysdeps/i386/fpu/e_powf.S | 392 ---------------------
sysdeps/i386/fpu/e_powf_log2_data.c | 1 -
sysdeps/i386/fpu/libm-test-ulps | 36 +-
sysdeps/i386/fpu/math_errf.c | 1 -
sysdeps/i386/fpu/w_exp2f.c | 1 -
sysdeps/i386/fpu/w_expf.c | 1 -
sysdeps/i386/fpu/w_log2f.c | 1 -
sysdeps/i386/fpu/w_logf.c | 1 -
sysdeps/i386/fpu/w_powf.c | 1 -
sysdeps/i386/i686/fpu/e_logf.S | 30 --
sysdeps/i386/i686/fpu/multiarch/Makefile | 10 +-
sysdeps/i386/i686/fpu/multiarch/e_exp2f-sse2.c | 3 +
sysdeps/i386/i686/fpu/multiarch/e_exp2f.c | 37 ++
sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S | 325 -----------------
sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.c | 3 +
sysdeps/i386/i686/fpu/multiarch/e_expf.c | 35 +-
sysdeps/i386/i686/fpu/multiarch/e_log2f-sse2.c | 3 +
sysdeps/i386/i686/fpu/multiarch/e_log2f.c | 40 +++
sysdeps/i386/i686/fpu/multiarch/e_logf-sse2.c | 3 +
sysdeps/i386/i686/fpu/multiarch/e_logf.c | 40 +++
sysdeps/i386/i686/fpu/multiarch/e_powf-sse2.c | 3 +
sysdeps/i386/i686/fpu/multiarch/e_powf.c | 43 +++
sysdeps/i386/i686/fpu/multiarch/libm-test-ulps | 38 +-
sysdeps/i386/i686/fpu/multiarch/w_expf.c | 1 -
sysdeps/x86_64/fpu/e_expf.S | 339 ------------------
sysdeps/x86_64/fpu/libm-test-ulps | 4 +
sysdeps/x86_64/fpu/multiarch/Makefile | 10 +-
sysdeps/x86_64/fpu/multiarch/e_exp2f-fma.c | 3 +
.../fpu/multiarch/e_exp2f.c} | 25 +-
sysdeps/x86_64/fpu/multiarch/e_expf-fma.S | 182 ----------
sysdeps/x86_64/fpu/multiarch/e_expf-fma.c | 3 +
sysdeps/x86_64/fpu/multiarch/e_expf.c | 26 +-
sysdeps/x86_64/fpu/multiarch/e_log2f-fma.c | 3 +
sysdeps/x86_64/fpu/multiarch/e_log2f.c | 40 +++
sysdeps/x86_64/fpu/multiarch/e_logf-fma.c | 3 +
sysdeps/x86_64/fpu/multiarch/e_logf.c | 40 +++
sysdeps/x86_64/fpu/multiarch/e_powf-fma.c | 3 +
sysdeps/x86_64/fpu/multiarch/e_powf.c | 43 +++
sysdeps/x86_64/fpu/w_expf.c | 1 -
46 files changed, 444 insertions(+), 1621 deletions(-)
delete mode 100644 sysdeps/i386/fpu/e_exp2f.S
delete mode 100644 sysdeps/i386/fpu/e_exp2f_data.c
delete mode 100644 sysdeps/i386/fpu/e_expf.S
delete mode 100644 sysdeps/i386/fpu/e_log2f.S
delete mode 100644 sysdeps/i386/fpu/e_log2f_data.c
delete mode 100644 sysdeps/i386/fpu/e_logf.S
delete mode 100644 sysdeps/i386/fpu/e_logf_data.c
delete mode 100644 sysdeps/i386/fpu/e_powf.S
delete mode 100644 sysdeps/i386/fpu/e_powf_log2_data.c
delete mode 100644 sysdeps/i386/fpu/math_errf.c
delete mode 100644 sysdeps/i386/fpu/w_exp2f.c
delete mode 100644 sysdeps/i386/fpu/w_expf.c
delete mode 100644 sysdeps/i386/fpu/w_log2f.c
delete mode 100644 sysdeps/i386/fpu/w_logf.c
delete mode 100644 sysdeps/i386/fpu/w_powf.c
delete mode 100644 sysdeps/i386/i686/fpu/e_logf.S
create mode 100644 sysdeps/i386/i686/fpu/multiarch/e_exp2f-sse2.c
create mode 100644 sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
delete mode 100644 sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
create mode 100644 sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.c
create mode 100644 sysdeps/i386/i686/fpu/multiarch/e_log2f-sse2.c
create mode 100644 sysdeps/i386/i686/fpu/multiarch/e_log2f.c
create mode 100644 sysdeps/i386/i686/fpu/multiarch/e_logf-sse2.c
create mode 100644 sysdeps/i386/i686/fpu/multiarch/e_logf.c
create mode 100644 sysdeps/i386/i686/fpu/multiarch/e_powf-sse2.c
create mode 100644 sysdeps/i386/i686/fpu/multiarch/e_powf.c
delete mode 100644 sysdeps/i386/i686/fpu/multiarch/w_expf.c
delete mode 100644 sysdeps/x86_64/fpu/e_expf.S
create mode 100644 sysdeps/x86_64/fpu/multiarch/e_exp2f-fma.c
rename sysdeps/{i386/i686/fpu/multiarch/e_expf-ia32.S => x86_64/fpu/multiarch/e_exp2f.c} (57%)
delete mode 100644 sysdeps/x86_64/fpu/multiarch/e_expf-fma.S
create mode 100644 sysdeps/x86_64/fpu/multiarch/e_expf-fma.c
create mode 100644 sysdeps/x86_64/fpu/multiarch/e_log2f-fma.c
create mode 100644 sysdeps/x86_64/fpu/multiarch/e_log2f.c
create mode 100644 sysdeps/x86_64/fpu/multiarch/e_logf-fma.c
create mode 100644 sysdeps/x86_64/fpu/multiarch/e_logf.c
create mode 100644 sysdeps/x86_64/fpu/multiarch/e_powf-fma.c
create mode 100644 sysdeps/x86_64/fpu/multiarch/e_powf.c
delete mode 100644 sysdeps/x86_64/fpu/w_expf.c
--
2.13.6
More information about the Libc-alpha
mailing list