@@ -574,5 +574,7 @@ libm {
f32subf64x; f32subf128;
f32xsubf64x; f32xsubf128; f64subf64x; f64subf128;
f64xsubf128;
+ # No SVID compatible error handling.
+ exp; exp2;
}
}
new file mode 100644
@@ -0,0 +1,8 @@
+#include <math-type-macros-double.h>
+#undef __USE_WRAPPER_TEMPLATE
+#define __USE_WRAPPER_TEMPLATE 1
+#undef declare_mgen_alias
+#define declare_mgen_alias(a, b)
+#include <w_exp_template.c>
+versioned_symbol (libm, __exp, exp, GLIBC_2_28);
+libm_alias_double_other (__exp, exp)
new file mode 100644
@@ -0,0 +1,8 @@
+#include <math-type-macros-double.h>
+#undef __USE_WRAPPER_TEMPLATE
+#define __USE_WRAPPER_TEMPLATE 1
+#undef declare_mgen_alias
+#define declare_mgen_alias(a, b)
+#include <w_exp2_template.c>
+versioned_symbol (libm, __exp2, exp2, GLIBC_2_28);
+libm_alias_double_other (__exp2, exp2)
@@ -7,9 +7,9 @@
#include <math-svid-compat.h>
#include <libm-alias-double.h>
-#if LIBM_SVID_COMPAT
+#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_28)
double
-__exp2 (double x)
+__exp2_compat (double x)
{
double z = __ieee754_exp2 (x);
if (__builtin_expect (!isfinite (z) || z == 0, 0)
@@ -19,5 +19,5 @@ __exp2 (double x)
return z;
}
-libm_alias_double (__exp2, exp2)
+compat_symbol (libm, __exp2_compat, exp2, GLIBC_2_1);
#endif
@@ -21,10 +21,10 @@
#include <math-svid-compat.h>
#include <libm-alias-double.h>
-#if LIBM_SVID_COMPAT
+#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_28)
/* wrapper exp */
double
-__exp (double x)
+__exp_compat (double x)
{
double z = __ieee754_exp (x);
if (__builtin_expect (!isfinite (z) || z == 0, 0)
@@ -33,6 +33,5 @@ __exp (double x)
return z;
}
-libm_hidden_def (__exp)
-libm_alias_double (__exp, exp)
+compat_symbol (libm, __exp_compat, exp, GLIBC_2_0);
#endif
new file mode 100644
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_exp.c>
new file mode 100644
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_exp2.c>
@@ -739,6 +739,12 @@ EXP_UNDERFLOW_ZERO:
GLOBAL_IEEE754_END(exp)
libm_alias_double_other (__exp, exp)
+#ifdef SHARED
+.symver exp,exp@@GLIBC_2.28
+.weak __exp_compat
+.set __exp_compat,__exp
+.symver __exp_compat,exp@GLIBC_2.0
+#endif
LOCAL_LIBM_ENTRY(__libm_error_region)
@@ -495,6 +495,12 @@ OUT_RANGE_exp2:
GLOBAL_LIBM_END(exp2)
libm_alias_double_other (exp2, exp2)
+#ifdef SHARED
+.symver exp2,exp2@@GLIBC_2.28
+.weak __exp2_compat
+.set __exp2_compat,__exp2
+.symver __exp2_compat,exp2@GLIBC_2.1
+#endif
LOCAL_LIBM_ENTRY(__libm_error_region)
@@ -20,6 +20,8 @@
#include <stdint.h>
#include <math-barriers.h>
#include <math-narrow-eval.h>
+#include <shlib-compat.h>
+#include <libm-alias-double.h>
#include "math_config.h"
#define N (1 << EXP_TABLE_BITS)
@@ -89,7 +91,7 @@ top12 (double x)
double
SECTION
-__ieee754_exp (double x)
+__exp (double x)
{
uint32_t abstop;
uint64_t ki, idx, top, sbits;
@@ -162,6 +164,10 @@ __ieee754_exp (double x)
is no spurious underflow here even without fma. */
return scale + scale * tmp;
}
-#ifndef __ieee754_exp
-strong_alias (__ieee754_exp, __exp_finite)
+#ifndef __exp
+hidden_def (__exp)
+strong_alias (__exp, __ieee754_exp)
+strong_alias (__exp, __exp_finite)
+versioned_symbol (libm, __exp, exp, GLIBC_2_28);
+libm_alias_double_other (__exp, exp)
#endif
@@ -20,6 +20,8 @@
#include <stdint.h>
#include <math-barriers.h>
#include <math-narrow-eval.h>
+#include <shlib-compat.h>
+#include <libm-alias-double.h>
#include "math_config.h"
#define N (1 << EXP_TABLE_BITS)
@@ -82,7 +84,7 @@ top12 (double x)
}
double
-__ieee754_exp2 (double x)
+__exp2 (double x)
{
uint32_t abstop;
uint64_t ki, idx, top, sbits;
@@ -144,6 +146,9 @@ __ieee754_exp2 (double x)
is no spurious underflow here even without fma. */
return scale + scale * tmp;
}
-#ifndef __ieee754_exp2
-strong_alias (__ieee754_exp2, __exp2_finite)
+#ifndef __exp2
+strong_alias (__exp2, __ieee754_exp2)
+strong_alias (__exp2, __exp2_finite)
+versioned_symbol (libm, __exp2, exp2, GLIBC_2_28);
+libm_alias_double_other (__exp2, exp2)
#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 @@
+#include <sysdeps/../math/w_exp.c>
new file mode 100644
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_exp2.c>
@@ -1020,6 +1020,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -984,6 +984,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -995,6 +995,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -433,6 +433,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -744,6 +744,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -1027,6 +1027,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -957,6 +957,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -433,6 +433,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -784,6 +784,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -745,6 +745,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -744,6 +744,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -984,6 +984,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -745,6 +745,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -790,6 +790,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -789,6 +789,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -1028,6 +1028,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -468,6 +468,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -971,6 +971,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -985,6 +985,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -985,6 +985,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -744,6 +744,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
GLIBC_2.28 f32divf32x F
@@ -992,6 +992,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -984,6 +984,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -1018,6 +1018,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -1018,6 +1018,8 @@ GLIBC_2.28 daddl F
GLIBC_2.28 ddivl F
GLIBC_2.28 dmull F
GLIBC_2.28 dsubl F
+GLIBC_2.28 exp F
+GLIBC_2.28 exp2 F
GLIBC_2.28 f32addf128 F
GLIBC_2.28 f32addf32x F
GLIBC_2.28 f32addf64 F
@@ -1,5 +1,4 @@
-#define __ieee754_exp __ieee754_exp_avx
-#define __exp1 __exp1_avx
+#define __exp __ieee754_exp_avx
#define SECTION __attribute__ ((section (".text.avx")))
#include <sysdeps/ieee754/dbl-64/e_exp.c>
@@ -1,5 +1,4 @@
-#define __ieee754_exp __ieee754_exp_fma
-#define __exp1 __exp1_fma
+#define __exp __ieee754_exp_fma
#define SECTION __attribute__ ((section (".text.fma")))
#include <sysdeps/ieee754/dbl-64/e_exp.c>
@@ -1,5 +1,4 @@
-#define __ieee754_exp __ieee754_exp_fma4
-#define __exp1 __exp1_fma4
+#define __exp __ieee754_exp_fma4
#define SECTION __attribute__ ((section (".text.fma4")))
#include <sysdeps/ieee754/dbl-64/e_exp.c>
@@ -16,6 +16,8 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <math.h>
+
extern double __redirect_ieee754_exp (double);
#define SYMBOL_NAME ieee754_exp
@@ -25,5 +27,5 @@ libc_ifunc_redirected (__redirect_ieee754_exp, __ieee754_exp,
IFUNC_SELECTOR ());
strong_alias (__ieee754_exp, __exp_finite)
-#define __ieee754_exp __ieee754_exp_sse2
+#define __exp __ieee754_exp_sse2
#include <sysdeps/ieee754/dbl-64/e_exp.c>
new file mode 100644
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_exp.c>