diff options
45 files changed, 214 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog index 9cdd3bad36..5968aa4ee0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,57 @@ +2018-11-21 Szabolcs Nagy <szabolcs.nagy@arm.com> + + * math/Versions (GLIBC_2.29): Add exp and exp2. + * math/w_exp2_compat.c (__exp2_compat): Change to versioned compat + symbol, handle NO_LONG_DOUBLE and LONG_DOUBLE_COMPAT explicitly. + * math/w_exp_compat.c (__exp_compat): Likewise. + * math/w_exp.c: New file. + * math/w_exp2.c: New file. + * sysdeps/i386/fpu/w_exp.c: New file. + * sysdeps/i386/fpu/w_exp2.c: New file. + * sysdeps/ia64/fpu/e_exp.S: Add versioned symbols. + * sysdeps/ia64/fpu/e_exp2.S: Likewise. + * sysdeps/ieee754/dbl-64/e_exp.c (__ieee754_exp): Rename to __exp + and add necessary aliases. + * sysdeps/ieee754/dbl-64/e_exp2.c (__ieee754_exp2): Rename to __exp2 + and add necessary aliases. + * sysdeps/ieee754/dbl-64/w_exp.c: New file. + * sysdeps/ieee754/dbl-64/w_exp2.c: New file. + * sysdeps/m68k/m680x0/fpu/w_exp.c: New file. + * sysdeps/m68k/m680x0/fpu/w_exp2.c: New file. + * sysdeps/mach/hurd/i386/libm.abilist: Update. + * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Update. + * sysdeps/unix/sysv/linux/alpha/libm.abilist: Update. + * sysdeps/unix/sysv/linux/arm/libm.abilist: Update. + * sysdeps/unix/sysv/linux/hppa/libm.abilist: Update. + * sysdeps/unix/sysv/linux/i386/libm.abilist: Update. + * sysdeps/unix/sysv/linux/ia64/libm.abilist: Update. + * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Update. + * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Update. + * sysdeps/unix/sysv/linux/microblaze/libm.abilist: Update. + * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Update. + * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Update. + * sysdeps/unix/sysv/linux/nios2/libm.abilist: Update. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Update. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Update. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Update. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Update. + * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Update. + * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Update. + * sysdeps/unix/sysv/linux/sh/libm.abilist: Update. + * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Update. + * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Update. + * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Update. + * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Update. + * sysdeps/x86_64/fpu/multiarch/e_exp-avx.c (__exp1): Remove. + (__ieee754_exp): Rename to __exp. + * sysdeps/x86_64/fpu/multiarch/e_exp-fma.c (__exp1): Remove. + (__ieee754_exp): Rename to __exp. + * sysdeps/x86_64/fpu/multiarch/e_exp-fma4.c (__exp1): Remove. + (__ieee754_exp): Rename to __exp. + * sysdeps/x86_64/fpu/multiarch/e_exp.c (__ieee754_exp): Rename to + __exp. + * sysdeps/x86_64/fpu/multiarch/w_exp.c: New file. + 2018-11-20 DJ Delorie <dj@redhat.com> * malloc/malloc.c (tcache_entry): Add key field. diff --git a/math/Versions b/math/Versions index b5a2500712..29e02d6654 100644 --- a/math/Versions +++ b/math/Versions @@ -575,4 +575,8 @@ libm { f32xsubf64x; f32xsubf128; f64subf64x; f64subf128; f64xsubf128; } + GLIBC_2.29 { + # No SVID compatible error handling. + exp; exp2; + } } diff --git a/math/w_exp.c b/math/w_exp.c new file mode 100644 index 0000000000..9a18bd5c12 --- /dev/null +++ b/math/w_exp.c @@ -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_29); +libm_alias_double_other (__exp, exp) diff --git a/math/w_exp2.c b/math/w_exp2.c new file mode 100644 index 0000000000..6c848715fb --- /dev/null +++ b/math/w_exp2.c @@ -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_29); +libm_alias_double_other (__exp2, exp2) diff --git a/math/w_exp2_compat.c b/math/w_exp2_compat.c index 7ab618292f..567383d001 100644 --- a/math/w_exp2_compat.c +++ b/math/w_exp2_compat.c @@ -7,9 +7,11 @@ #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_29) \ + || defined NO_LONG_DOUBLE \ + || defined LONG_DOUBLE_COMPAT) double -__exp2 (double x) +__exp2_compat (double x) { double z = __ieee754_exp2 (x); if (__builtin_expect (!isfinite (z) || z == 0, 0) @@ -19,5 +21,17 @@ __exp2 (double x) return z; } -libm_alias_double (__exp2, exp2) +# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_29) +compat_symbol (libm, __exp2_compat, exp2, GLIBC_2_1); +# endif +# ifdef NO_LONG_DOUBLE +weak_alias (__exp2_compat, exp2l) +# endif +# ifdef LONG_DOUBLE_COMPAT +/* Work around gas bug "multiple versions for symbol". */ +weak_alias (__exp2_compat, __exp2_compat_alias) + +LONG_DOUBLE_COMPAT_CHOOSE_libm_exp2l ( + compat_symbol (libm, __exp2_compat_alias, exp2l, FIRST_VERSION_libm_exp2l), ); +# endif #endif diff --git a/math/w_exp_compat.c b/math/w_exp_compat.c index ccda100075..df0137cb65 100644 --- a/math/w_exp_compat.c +++ b/math/w_exp_compat.c @@ -21,10 +21,12 @@ #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_29) \ + || defined NO_LONG_DOUBLE \ + || defined LONG_DOUBLE_COMPAT) /* 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 +35,17 @@ __exp (double x) return z; } -libm_hidden_def (__exp) -libm_alias_double (__exp, exp) +# if SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_29) +compat_symbol (libm, __exp_compat, exp, GLIBC_2_0); +# endif +# ifdef NO_LONG_DOUBLE +weak_alias (__exp_compat, expl) +# endif +# ifdef LONG_DOUBLE_COMPAT +/* Work around gas bug "multiple versions for symbol". */ +weak_alias (__exp_compat, __exp_compat_alias) + +LONG_DOUBLE_COMPAT_CHOOSE_libm_expl ( + compat_symbol (libm, __exp_compat_alias, expl, FIRST_VERSION_libm_expl), ); +# endif #endif diff --git a/sysdeps/i386/fpu/w_exp.c b/sysdeps/i386/fpu/w_exp.c new file mode 100644 index 0000000000..27eee98a0a --- /dev/null +++ b/sysdeps/i386/fpu/w_exp.c @@ -0,0 +1 @@ +#include <sysdeps/../math/w_exp.c> diff --git a/sysdeps/i386/fpu/w_exp2.c b/sysdeps/i386/fpu/w_exp2.c new file mode 100644 index 0000000000..e0636a7ceb --- /dev/null +++ b/sysdeps/i386/fpu/w_exp2.c @@ -0,0 +1 @@ +#include <sysdeps/../math/w_exp2.c> diff --git a/sysdeps/ia64/fpu/e_exp.S b/sysdeps/ia64/fpu/e_exp.S index c8cebeb177..4774a43768 100644 --- a/sysdeps/ia64/fpu/e_exp.S +++ b/sysdeps/ia64/fpu/e_exp.S @@ -739,6 +739,12 @@ EXP_UNDERFLOW_ZERO: GLOBAL_IEEE754_END(exp) libm_alias_double_other (__exp, exp) +#ifdef SHARED +.symver exp,exp@@GLIBC_2.29 +.weak __exp_compat +.set __exp_compat,__exp +.symver __exp_compat,exp@GLIBC_2.2 +#endif LOCAL_LIBM_ENTRY(__libm_error_region) diff --git a/sysdeps/ia64/fpu/e_exp2.S b/sysdeps/ia64/fpu/e_exp2.S index 18711866a1..97b69263e4 100644 --- a/sysdeps/ia64/fpu/e_exp2.S +++ b/sysdeps/ia64/fpu/e_exp2.S @@ -227,7 +227,7 @@ LOCAL_OBJECT_END(T_table) .section .text -GLOBAL_LIBM_ENTRY(exp2) +WEAK_LIBM_ENTRY(exp2) {.mfi @@ -493,8 +493,14 @@ OUT_RANGE_exp2: } ;; -GLOBAL_LIBM_END(exp2) -libm_alias_double_other (exp2, exp2) +WEAK_LIBM_END(exp2) +libm_alias_double_other (__exp2, exp2) +#ifdef SHARED +.symver exp2,exp2@@GLIBC_2.29 +.weak __exp2_compat +.set __exp2_compat,__exp2 +.symver __exp2_compat,exp2@GLIBC_2.2 +#endif LOCAL_LIBM_ENTRY(__libm_error_region) diff --git a/sysdeps/ieee754/dbl-64/e_exp.c b/sysdeps/ieee754/dbl-64/e_exp.c index 37fdafcfa0..9e55c50a4d 100644 --- a/sysdeps/ieee754/dbl-64/e_exp.c +++ b/sysdeps/ieee754/dbl-64/e_exp.c @@ -20,6 +20,9 @@ #include <stdint.h> #include <math-barriers.h> #include <math-narrow-eval.h> +#include <math-svid-compat.h> +#include <shlib-compat.h> +#include <libm-alias-double.h> #include "math_config.h" #define N (1 << EXP_TABLE_BITS) @@ -91,7 +94,7 @@ top12 (double x) double SECTION -__ieee754_exp (double x) +__exp (double x) { uint32_t abstop; uint64_t ki, idx, top, sbits; @@ -153,6 +156,14 @@ __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) +# if LIBM_SVID_COMPAT +versioned_symbol (libm, __exp, exp, GLIBC_2_29); +libm_alias_double_other (__exp, exp) +# else +libm_alias_double (__exp, exp) +# endif #endif diff --git a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c index 96afcf9c20..48741e8452 100644 --- a/sysdeps/ieee754/dbl-64/e_exp2.c +++ b/sysdeps/ieee754/dbl-64/e_exp2.c @@ -20,6 +20,9 @@ #include <stdint.h> #include <math-barriers.h> #include <math-narrow-eval.h> +#include <math-svid-compat.h> +#include <shlib-compat.h> +#include <libm-alias-double.h> #include "math_config.h" #define N (1 << EXP_TABLE_BITS) @@ -84,7 +87,7 @@ top12 (double x) } double -__ieee754_exp2 (double x) +__exp2 (double x) { uint32_t abstop; uint64_t ki, idx, top, sbits; @@ -140,6 +143,13 @@ __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) +# if LIBM_SVID_COMPAT +versioned_symbol (libm, __exp2, exp2, GLIBC_2_29); +libm_alias_double_other (__exp2, exp2) +# else +libm_alias_double (__exp2, exp2) +# endif #endif diff --git a/sysdeps/ieee754/dbl-64/w_exp.c b/sysdeps/ieee754/dbl-64/w_exp.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/ieee754/dbl-64/w_exp.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/ieee754/dbl-64/w_exp2.c b/sysdeps/ieee754/dbl-64/w_exp2.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/ieee754/dbl-64/w_exp2.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/w_exp.c b/sysdeps/m68k/m680x0/fpu/w_exp.c new file mode 100644 index 0000000000..27eee98a0a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/w_exp.c @@ -0,0 +1 @@ +#include <sysdeps/../math/w_exp.c> diff --git a/sysdeps/m68k/m680x0/fpu/w_exp2.c b/sysdeps/m68k/m680x0/fpu/w_exp2.c new file mode 100644 index 0000000000..e0636a7ceb --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/w_exp2.c @@ -0,0 +1 @@ +#include <sysdeps/../math/w_exp2.c> diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist index fd0a277bdc..ff0a06fdb8 100644 --- a/sysdeps/mach/hurd/i386/libm.abilist +++ b/sysdeps/mach/hurd/i386/libm.abilist @@ -1068,3 +1068,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index 37e99a91bc..cfb8f7d729 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -1032,3 +1032,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index 2773d61cd1..8a7f92f548 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -1043,6 +1043,8 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.3.4 __c1_cabsf F GLIBC_2.3.4 __c1_cacosf F GLIBC_2.3.4 __c1_cacoshf F diff --git a/sysdeps/unix/sysv/linux/arm/libm.abilist b/sysdeps/unix/sysv/linux/arm/libm.abilist index e126eb07e3..a4a2c9b5e0 100644 --- a/sysdeps/unix/sysv/linux/arm/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/libm.abilist @@ -453,6 +453,8 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F GLIBC_2.4 __clog10f F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index 679bbfbd59..c665d65ef1 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -764,4 +764,6 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index 3110c1f4fa..6728695daa 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -1075,3 +1075,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist index 33a99ff678..3a5d2fb84d 100644 --- a/sysdeps/unix/sysv/linux/ia64/libm.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist @@ -1005,3 +1005,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index e126eb07e3..a4a2c9b5e0 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -453,6 +453,8 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F GLIBC_2.4 __clog10f F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index 40ac529f7f..84a580a3a0 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -804,3 +804,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/microblaze/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/libm.abilist index 4a2c2e669e..f2c3143b70 100644 --- a/sysdeps/unix/sysv/linux/microblaze/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/libm.abilist @@ -765,3 +765,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index ff011f86f2..7ecaeea9d5 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -764,4 +764,6 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index c19ee985a6..c3679e812c 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -1032,3 +1032,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist index 2ed649a655..2964682f19 100644 --- a/sysdeps/unix/sysv/linux/nios2/libm.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist @@ -765,3 +765,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index 511b24b764..f7ceb788ce 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -810,6 +810,8 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index a6e4e4edaa..7e1c1b559a 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -809,6 +809,8 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist index 1e1f2b8d6e..de18417d46 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist @@ -1076,3 +1076,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist index 331449dfcb..6dd35dbb28 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist @@ -488,6 +488,8 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.3 _LIB_VERSION D 0x4 GLIBC_2.3 __clog10 F GLIBC_2.3 __clog10f F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index 643aa55498..b33b21431f 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -1033,6 +1033,8 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index 8cc5fdfc0b..567059b054 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -1033,6 +1033,8 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/sh/libm.abilist b/sysdeps/unix/sysv/linux/sh/libm.abilist index 43525fccf6..baea13116d 100644 --- a/sysdeps/unix/sysv/linux/sh/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/libm.abilist @@ -764,4 +764,6 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index fd973676e2..7249346330 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -1040,6 +1040,8 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index 470e64f4ef..629fb08f54 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -1032,3 +1032,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index 4a442c3989..ac703100df 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -1066,3 +1066,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index f1fc0e9f4d..55098e04c8 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -1066,3 +1066,5 @@ GLIBC_2.28 fmul F GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F +GLIBC_2.29 exp F +GLIBC_2.29 exp2 F diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp-avx.c b/sysdeps/x86_64/fpu/multiarch/e_exp-avx.c index afd917442a..9044823feb 100644 --- a/sysdeps/x86_64/fpu/multiarch/e_exp-avx.c +++ b/sysdeps/x86_64/fpu/multiarch/e_exp-avx.c @@ -1,5 +1,5 @@ -#define __ieee754_exp __ieee754_exp_avx -#define __exp1 __exp1_avx +#include <math.h> +#define __exp __ieee754_exp_avx #define SECTION __attribute__ ((section (".text.avx"))) #include <sysdeps/ieee754/dbl-64/e_exp.c> diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp-fma.c b/sysdeps/x86_64/fpu/multiarch/e_exp-fma.c index 765b1b9dd3..9d6e544ee0 100644 --- a/sysdeps/x86_64/fpu/multiarch/e_exp-fma.c +++ b/sysdeps/x86_64/fpu/multiarch/e_exp-fma.c @@ -1,5 +1,5 @@ -#define __ieee754_exp __ieee754_exp_fma -#define __exp1 __exp1_fma +#include <math.h> +#define __exp __ieee754_exp_fma #define SECTION __attribute__ ((section (".text.fma"))) #include <sysdeps/ieee754/dbl-64/e_exp.c> diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp-fma4.c b/sysdeps/x86_64/fpu/multiarch/e_exp-fma4.c index 9ac7acad28..25643b6ad7 100644 --- a/sysdeps/x86_64/fpu/multiarch/e_exp-fma4.c +++ b/sysdeps/x86_64/fpu/multiarch/e_exp-fma4.c @@ -1,5 +1,5 @@ -#define __ieee754_exp __ieee754_exp_fma4 -#define __exp1 __exp1_fma4 +#include <math.h> +#define __exp __ieee754_exp_fma4 #define SECTION __attribute__ ((section (".text.fma4"))) #include <sysdeps/ieee754/dbl-64/e_exp.c> diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp.c b/sysdeps/x86_64/fpu/multiarch/e_exp.c index 7cd7d1729c..26e614fa70 100644 --- a/sysdeps/x86_64/fpu/multiarch/e_exp.c +++ b/sysdeps/x86_64/fpu/multiarch/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> diff --git a/sysdeps/x86_64/fpu/multiarch/w_exp.c b/sysdeps/x86_64/fpu/multiarch/w_exp.c new file mode 100644 index 0000000000..27eee98a0a --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/w_exp.c @@ -0,0 +1 @@ +#include <sysdeps/../math/w_exp.c> |