From dc230e23df20ac3ab13e2cc2e858083c0550bb31 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date: Wed, 13 Sep 2017 18:14:26 +0100
Subject: [PATCH 5/5] 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.
2017-09-19 Szabolcs Nagy <szabolcs.nagy@arm.com>
* 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.
---
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 +
12 files changed, 30 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
new file mode 100644
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_log2f.c>
new file mode 100644
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_logf.c>
new file mode 100644
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_powf.c>
@@ -18,6 +18,7 @@
#include <math.h>
#include <stdint.h>
+#include <shlib-compat.h>
#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
@@ -18,6 +18,7 @@
#include <math.h>
#include <stdint.h>
+#include <shlib-compat.h>
#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
@@ -18,6 +18,7 @@
#include <math.h>
#include <stdint.h>
+#include <shlib-compat.h>
#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
new file mode 100644
@@ -0,0 +1 @@
+/* Not needed. */
new file mode 100644
@@ -0,0 +1 @@
+/* Not needed. */
new file mode 100644
@@ -0,0 +1 @@
+/* Not needed. */
new file mode 100644
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_log2f.c>
new file mode 100644
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_logf.c>
new file mode 100644
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_powf.c>
--
2.11.0