From bd4430c2a6d9d4deb49cab20ebe6aaf8a779ba0d Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Wed, 13 Sep 2017 18:14:26 +0100 Subject: [PATCH] Do not wrap logf, log2f and powf The new generic logf, log2f and powf code don't need wrappers any more, they set errno inline so only use the wrappers on targets that need it. * sysdeps/ieee754/flt-32/e_log2f.c (__log2f): Define without wrapper. * sysdeps/ieee754/flt-32/e_logf.c (__logf): Likewise * sysdeps/ieee754/flt-32/e_powf.c (__powf): Likewise * sysdeps/ieee754/flt-32/w_log2f.c: New file. * sysdeps/ieee754/flt-32/w_logf.c: New file. * sysdeps/ieee754/flt-32/w_powf.c: New file. * sysdeps/i386/fpu/w_log2f.c: New file. * sysdeps/i386/fpu/w_logf.c: New file. * sysdeps/i386/fpu/w_powf.c: New file. * sysdeps/m68k/m680x0/fpu/w_log2f.c: New file. * sysdeps/m68k/m680x0/fpu/w_logf.c: New file. * sysdeps/m68k/m680x0/fpu/w_powf.c: New file. --- ChangeLog | 15 +++++++++++++++ sysdeps/i386/fpu/w_log2f.c | 1 + sysdeps/i386/fpu/w_logf.c | 1 + sysdeps/i386/fpu/w_powf.c | 1 + sysdeps/ieee754/flt-32/e_log2f.c | 9 +++++++-- sysdeps/ieee754/flt-32/e_logf.c | 9 +++++++-- sysdeps/ieee754/flt-32/e_powf.c | 9 +++++++-- sysdeps/ieee754/flt-32/w_log2f.c | 1 + sysdeps/ieee754/flt-32/w_logf.c | 1 + sysdeps/ieee754/flt-32/w_powf.c | 1 + sysdeps/m68k/m680x0/fpu/w_log2f.c | 1 + sysdeps/m68k/m680x0/fpu/w_logf.c | 1 + sysdeps/m68k/m680x0/fpu/w_powf.c | 1 + 13 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 sysdeps/i386/fpu/w_log2f.c create mode 100644 sysdeps/i386/fpu/w_logf.c create mode 100644 sysdeps/i386/fpu/w_powf.c create mode 100644 sysdeps/ieee754/flt-32/w_log2f.c create mode 100644 sysdeps/ieee754/flt-32/w_logf.c create mode 100644 sysdeps/ieee754/flt-32/w_powf.c create mode 100644 sysdeps/m68k/m680x0/fpu/w_log2f.c create mode 100644 sysdeps/m68k/m680x0/fpu/w_logf.c create mode 100644 sysdeps/m68k/m680x0/fpu/w_powf.c diff --git a/ChangeLog b/ChangeLog index 25587d670e0..a60ba0a70e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2017-10-02 Szabolcs Nagy + + * sysdeps/ieee754/flt-32/e_log2f.c (__log2f): Define without wrapper. + * sysdeps/ieee754/flt-32/e_logf.c (__logf): Likewise + * sysdeps/ieee754/flt-32/e_powf.c (__powf): Likewise + * sysdeps/ieee754/flt-32/w_log2f.c: New file. + * sysdeps/ieee754/flt-32/w_logf.c: New file. + * sysdeps/ieee754/flt-32/w_powf.c: New file. + * sysdeps/i386/fpu/w_log2f.c: New file. + * sysdeps/i386/fpu/w_logf.c: New file. + * sysdeps/i386/fpu/w_powf.c: New file. + * sysdeps/m68k/m680x0/fpu/w_log2f.c: New file. + * sysdeps/m68k/m680x0/fpu/w_logf.c: New file. + * sysdeps/m68k/m680x0/fpu/w_powf.c: New file. + 2017-10-02 Szabolcs Nagy H.J. Lu diff --git a/sysdeps/i386/fpu/w_log2f.c b/sysdeps/i386/fpu/w_log2f.c new file mode 100644 index 00000000000..3f5c71cec27 --- /dev/null +++ b/sysdeps/i386/fpu/w_log2f.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/i386/fpu/w_logf.c b/sysdeps/i386/fpu/w_logf.c new file mode 100644 index 00000000000..ea48d1356ed --- /dev/null +++ b/sysdeps/i386/fpu/w_logf.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/i386/fpu/w_powf.c b/sysdeps/i386/fpu/w_powf.c new file mode 100644 index 00000000000..d133216f5b7 --- /dev/null +++ b/sysdeps/i386/fpu/w_powf.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/ieee754/flt-32/e_log2f.c b/sysdeps/ieee754/flt-32/e_log2f.c index 6c42f278432..ef13b372cbd 100644 --- a/sysdeps/ieee754/flt-32/e_log2f.c +++ b/sysdeps/ieee754/flt-32/e_log2f.c @@ -18,6 +18,7 @@ #include #include +#include #include "math_config.h" /* @@ -34,7 +35,7 @@ Relative error: 1.9 * 2^-26 (before rounding.) #define OFF 0x3f330000 float -__ieee754_log2f (float x) +__log2f (float x) { /* double_t for better performance on targets with FLT_EVAL_METHOD==2. */ double_t z, r, r2, p, y, y0, invc, logc; @@ -85,4 +86,8 @@ __ieee754_log2f (float x) y = y * r2 + p; return (float) y; } -strong_alias (__ieee754_log2f, __log2f_finite) +#ifndef __log2f +strong_alias (__log2f, __ieee754_log2f) +strong_alias (__log2f, __log2f_finite) +versioned_symbol (libm, __log2f, log2f, GLIBC_2_27); +#endif diff --git a/sysdeps/ieee754/flt-32/e_logf.c b/sysdeps/ieee754/flt-32/e_logf.c index b8d262441fe..ea847b57ec2 100644 --- a/sysdeps/ieee754/flt-32/e_logf.c +++ b/sysdeps/ieee754/flt-32/e_logf.c @@ -18,6 +18,7 @@ #include #include +#include #include "math_config.h" /* @@ -35,7 +36,7 @@ Relative error: 1.957 * 2^-26 (before rounding.) #define OFF 0x3f330000 float -__ieee754_logf (float x) +__logf (float x) { /* double_t for better performance on targets with FLT_EVAL_METHOD==2. */ double_t z, r, r2, y, y0, invc, logc; @@ -84,4 +85,8 @@ __ieee754_logf (float x) y = y * r2 + (y0 + r); return (float) y; } -strong_alias (__ieee754_logf, __logf_finite) +#ifndef __logf +strong_alias (__logf, __ieee754_logf) +strong_alias (__logf, __logf_finite) +versioned_symbol (libm, __logf, logf, GLIBC_2_27); +#endif diff --git a/sysdeps/ieee754/flt-32/e_powf.c b/sysdeps/ieee754/flt-32/e_powf.c index 644a18d05e1..08d2c6d0580 100644 --- a/sysdeps/ieee754/flt-32/e_powf.c +++ b/sysdeps/ieee754/flt-32/e_powf.c @@ -18,6 +18,7 @@ #include #include +#include #include "math_config.h" /* @@ -139,7 +140,7 @@ zeroinfnan (uint32_t ix) } float -__ieee754_powf (float x, float y) +__powf (float x, float y) { unsigned long sign_bias = 0; uint32_t ix, iy; @@ -214,4 +215,8 @@ __ieee754_powf (float x, float y) } return (float) exp2_inline (ylogx, sign_bias); } -strong_alias (__ieee754_powf, __powf_finite) +#ifndef __powf +strong_alias (__powf, __ieee754_powf) +strong_alias (__powf, __powf_finite) +versioned_symbol (libm, __powf, powf, GLIBC_2_27); +#endif diff --git a/sysdeps/ieee754/flt-32/w_log2f.c b/sysdeps/ieee754/flt-32/w_log2f.c new file mode 100644 index 00000000000..1cc89317007 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_log2f.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/ieee754/flt-32/w_logf.c b/sysdeps/ieee754/flt-32/w_logf.c new file mode 100644 index 00000000000..1cc89317007 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_logf.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/ieee754/flt-32/w_powf.c b/sysdeps/ieee754/flt-32/w_powf.c new file mode 100644 index 00000000000..1cc89317007 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_powf.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/w_log2f.c b/sysdeps/m68k/m680x0/fpu/w_log2f.c new file mode 100644 index 00000000000..3f5c71cec27 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/w_log2f.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/m68k/m680x0/fpu/w_logf.c b/sysdeps/m68k/m680x0/fpu/w_logf.c new file mode 100644 index 00000000000..ea48d1356ed --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/w_logf.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/m68k/m680x0/fpu/w_powf.c b/sysdeps/m68k/m680x0/fpu/w_powf.c new file mode 100644 index 00000000000..d133216f5b7 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/w_powf.c @@ -0,0 +1 @@ +#include -- 2.39.5