aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-06-17 16:31:49 +0000
committerJoseph Myers <josmyers@redhat.com>2024-06-17 16:31:49 +0000
commit7ec903e028271d029818378fd60ddaf6b76b89ac (patch)
tree29840403dc63c9c633e18e1d6607280ae59ce601 /sysdeps
parent55eb99e9a9d840ba452b128be14d6529c2dde039 (diff)
downloadglibc-7ec903e028271d029818378fd60ddaf6b76b89ac.zip
glibc-7ec903e028271d029818378fd60ddaf6b76b89ac.tar.gz
glibc-7ec903e028271d029818378fd60ddaf6b76b89ac.tar.bz2
Implement C23 exp2m1, exp10m1
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the exp2m1 and exp10m1 functions (exp2(x)-1 and exp10(x)-1, like expm1). As with other such functions, these use type-generic templates that could be replaced with faster and more accurate type-specific implementations in future. Test inputs are copied from those for expm1, plus some additions close to the overflow threshold (copied from exp2 and exp10) and also some near the underflow threshold. exp2m1 has the unusual property of having an input (M_MAX_EXP) where whether the function overflows (under IEEE semantics) depends on the rounding mode. Although these could reasonably be XFAILed in the testsuite (as we do in some cases for arguments very close to a function's overflow threshold when an error of a few ulps in the implementation can result in the implementation not agreeing with an ideal one on whether overflow takes place - the testsuite isn't smart enough to handle this automatically), since these functions aren't required to be correctly rounding, I made the implementation check for and handle this case specially. The Makefile ordering expected by lint-makefiles for the new functions is a bit peculiar, but I implemented it in this patch so that the test passes; I don't know why log2 also needed moving in one Makefile variable setting when it didn't in my previous patches, but the failure showed a different place was expected for that function as well. The powerpc64le IFUNC setup seems not to be as self-contained as one might hope; it shouldn't be necessary to add IFUNCs for new functions such as these simply to get them building, but without setting up IFUNCs for the new functions, there were undefined references to __GI___expm1f128 (that IFUNC machinery results in no such function being defined, but doesn't stop include/math.h from doing the redirection resulting in the exp2m1f128 and exp10m1f128 implementations expecting to call it). Tested for x86_64 and x86, and with build-many-glibcs.py.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps48
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/Versions2
-rw-r--r--sysdeps/ieee754/ldbl-opt/Makefile4
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-exp10m1.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-exp2m1.c8
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist16
-rw-r--r--sysdeps/mach/hurd/x86_64/libm.abilist16
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile5
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h2
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h3
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/arc/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/csky/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/be/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/or1k/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist18
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/sh/be/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist16
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps48
42 files changed, 589 insertions, 1 deletions
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index 8446b81..0d441dc 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -1156,6 +1156,30 @@ float: 1
float128: 3
ldouble: 2
+Function: "exp10m1":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+float128: 3
+ldouble: 2
+
Function: "exp2":
double: 1
float128: 1
@@ -1175,6 +1199,30 @@ float: 1
float128: 2
ldouble: 1
+Function: "exp2m1":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 2
+float: 1
+float128: 2
+ldouble: 3
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+float128: 2
+ldouble: 3
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+float128: 2
+ldouble: 3
+
Function: "exp_downward":
double: 1
float: 1
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
index 696d132..bd73016 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
@@ -138,6 +138,8 @@ libm {
__fminimum_mag_numieee128;
}
GLIBC_2.40 {
+ __exp2m1ieee128;
+ __exp10m1ieee128;
__log2p1ieee128;
__log10p1ieee128;
__logp1ieee128;
diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
index d8cceb5..14fd715 100644
--- a/sysdeps/ieee754/ldbl-opt/Makefile
+++ b/sysdeps/ieee754/ldbl-opt/Makefile
@@ -61,8 +61,10 @@ libnldbl-calls = \
erf \
erfc \
exp \
+ exp10m1 \
exp2 \
exp10 \
+ exp2m1 \
expm1 \
fabs \
fadd \
@@ -296,7 +298,9 @@ CFLAGS-nldbl-erf.c = -fno-builtin-erfl
CFLAGS-nldbl-erfc.c = -fno-builtin-erfcl
CFLAGS-nldbl-exp.c = -fno-builtin-expl
CFLAGS-nldbl-exp10.c = -fno-builtin-exp10l
+CFLAGS-nldbl-exp10m1.c = -fno-builtin-exp10m1l
CFLAGS-nldbl-exp2.c = -fno-builtin-exp2l
+CFLAGS-nldbl-exp2m1.c = -fno-builtin-exp2m1l
CFLAGS-nldbl-expm1.c = -fno-builtin-expm1l
CFLAGS-nldbl-fabs.c = -fno-builtin-fabsl
CFLAGS-nldbl-fadd.c = -fno-builtin-faddl
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-exp10m1.c b/sysdeps/ieee754/ldbl-opt/nldbl-exp10m1.c
new file mode 100644
index 0000000..3495263
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-exp10m1.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+exp10m1l (double x)
+{
+ return exp10m1 (x);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-exp2m1.c b/sysdeps/ieee754/ldbl-opt/nldbl-exp2m1.c
new file mode 100644
index 0000000..2bc6066
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-exp2m1.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+exp2m1l (double x)
+{
+ return exp2m1 (x);
+}
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index c999fc0..1811377 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1181,6 +1181,22 @@ GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/mach/hurd/x86_64/libm.abilist b/sysdeps/mach/hurd/x86_64/libm.abilist
index 256717f..d4c087a 100644
--- a/sysdeps/mach/hurd/x86_64/libm.abilist
+++ b/sysdeps/mach/hurd/x86_64/libm.abilist
@@ -1038,6 +1038,22 @@ GLIBC_2.38 ynf32x F
GLIBC_2.38 ynf64 F
GLIBC_2.38 ynf64x F
GLIBC_2.38 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile
index 43d9e5f..6d74f09 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile
@@ -91,7 +91,8 @@ gen-libm-f128-ifunc-routines = \
e_expf128 e_fmodf128 e_hypotf128 e_j0f128 e_j1f128 e_jnf128 \
e_lgammaf128_r e_logf128 e_log10f128 e_powf128 e_remainderf128 \
e_sinhf128 e_sqrtf128 e_gammaf128_r e_ilogbf128 k_tanf128 s_asinhf128 \
- s_atanf128 s_cbrtf128 s_ceilf128 s_cosf128 s_erff128 s_expm1f128 \
+ s_atanf128 s_cbrtf128 s_ceilf128 s_cosf128 s_erff128 s_exp10m1f128 \
+ s_exp2m1f128 s_expm1f128 \
s_fabsf128 s_floorf128 s_log1pf128 s_logbf128 \
s_rintf128 s_scalblnf128 s_sinf128 s_tanf128 \
s_tanhf128 s_truncf128 s_remquof128 e_log2f128 \
@@ -253,7 +254,9 @@ CFLAGS-s_erff128-ifunc.c += -fno-builtin-erff64x
CFLAGS-s_erfcf128-ifunc.c += -fno-builtin-erfcf64x
CFLAGS-e_expf128-ifunc.c += -fno-builtin-expf64x
CFLAGS-w_exp10f128-ifunc.c += -fno-builtin-exp10f64x
+CFLAGS-s_exp10m1f128-ifunc.c += -fno-builtin-exp10m1f64x
CFLAGS-e_exp2f128-ifunc.c += -fno-builtin-exp2f64x
+CFLAGS-s_exp2m1f128-ifunc.c += -fno-builtin-exp2m1f64x
CFLAGS-s_expm1f128-ifunc.c += -fno-builtin-expm1f64x
CFLAGS-s_fabsf128-ifunc.c += -fno-builtin-fabsf64x
CFLAGS-s_faddf128-ifunc.c += -fno-builtin-f32addf64x
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h
index 22038bb..173cfca 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h
+++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h
@@ -59,6 +59,8 @@ F128_REDIR (__cosf128)
F128_REDIR (__erfcf128)
F128_REDIR (__erff128)
F128_REDIR (__expf128)
+F128_REDIR (__exp10m1f128);
+F128_REDIR (__exp2m1f128);
F128_REDIR (__expm1f128)
F128_REDIR (__fabsf128)
F128_REDIR (__fdimf128)
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h
index 0506db0..39241dc 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h
+++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h
@@ -81,6 +81,8 @@ F128_REDIR (__crealf128);
F128_REDIR (__conjf128);
F128_REDIR (__cprojf128);
F128_REDIR (__cabsf128);
+F128_REDIR (__exp10m1f128);
+F128_REDIR (__exp2m1f128);
F128_REDIR (__fdimf128);
F128_REDIR (__fminf128);
F128_REDIR (__fmaxf128);
@@ -89,6 +91,7 @@ F128_REDIR (__llogbf128);
F128_REDIR (__log2f128);
F128_REDIR (__exp10f128);
F128_REDIR (__exp2f128);
+F128_REDIR (__expm1f128);
F128_REDIR (__j0f128);
F128_REDIR (__j1f128);
F128_REDIR (__jnf128);
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index 5737e6d..024cb8d 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1149,6 +1149,22 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index f0e96fb..4b7f756 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1308,6 +1308,22 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
index 315a453..f6eb7a5 100644
--- a/sysdeps/unix/sysv/linux/arc/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
@@ -757,6 +757,18 @@ GLIBC_2.35 fminimumf64 F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index 20da5b7..78540e9 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.4 y1l F
GLIBC_2.4 yn F
GLIBC_2.4 ynf F
GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index 20da5b7..78540e9 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.4 y1l F
GLIBC_2.4 yn F
GLIBC_2.4 ynf F
GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist
index a8181e8..7a68784 100644
--- a/sysdeps/unix/sysv/linux/csky/libm.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libm.abilist
@@ -823,6 +823,18 @@ GLIBC_2.35 fminimumf64 F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index b10d92f..d29139e 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index e760f73..0797f3f 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1188,6 +1188,22 @@ GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
index 1b3f5df..16bde43 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
@@ -1028,6 +1028,22 @@ GLIBC_2.36 ynf32x F
GLIBC_2.36 ynf64 F
GLIBC_2.36 ynf64x F
GLIBC_2.36 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 20da5b7..78540e9 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.4 y1l F
GLIBC_2.4 yn F
GLIBC_2.4 ynf F
GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index 89069d5..6fd32e7 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -884,6 +884,18 @@ GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index bcd47e7..d2c2cdb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index bcd47e7..d2c2cdb 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index f21b04a..a7c8ca0 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index 4af7729..8e36e16 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1149,6 +1149,22 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index 95c654f..c0df77f 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/or1k/libm.abilist b/sysdeps/unix/sysv/linux/or1k/libm.abilist
index edcd206..4db8702 100644
--- a/sysdeps/unix/sysv/linux/or1k/libm.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libm.abilist
@@ -757,6 +757,18 @@ GLIBC_2.35 ynf32 F
GLIBC_2.35 ynf32x F
GLIBC_2.35 ynf64 F
GLIBC_2.35 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index f56a507..cbadcef 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -995,6 +995,18 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index be9e896..d0078a4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -994,6 +994,18 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index 70eea29..86fdb9f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -988,6 +988,18 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 4f9aa4c..34568bd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1321,9 +1321,27 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 __exp10m1ieee128 F
+GLIBC_2.40 __exp2m1ieee128 F
GLIBC_2.40 __log10p1ieee128 F
GLIBC_2.40 __log2p1ieee128 F
GLIBC_2.40 __logp1ieee128 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
index ef575d0..248ca38 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
@@ -1028,6 +1028,22 @@ GLIBC_2.35 fminimumf64x F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
index 9e647f7..c8f976c 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
@@ -1125,6 +1125,22 @@ GLIBC_2.35 fminimumf64x F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 022cb27..81f186f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1252,6 +1252,22 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 1453d09..ee54f8d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1252,6 +1252,22 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index 044945d..b21a3ba 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index 044945d..b21a3ba 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index 92b6a77..15c958e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1259,6 +1259,22 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 258058b..bf608f5 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1149,6 +1149,22 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 66f264d..0ba4ef5 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1182,6 +1182,22 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 877d64a..4057115 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1182,6 +1182,22 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index f46ac59..3592dfa 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -1429,6 +1429,30 @@ float: 1
Function: "exp10_vlen8_avx2":
float: 1
+Function: "exp10m1":
+double: 2
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+float128: 3
+ldouble: 2
+
Function: "exp2":
double: 1
float: 1
@@ -1473,6 +1497,30 @@ float: 1
Function: "exp2_vlen8_avx2":
float: 1
+Function: "exp2m1":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 2
+float: 1
+float128: 2
+ldouble: 3
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+float128: 2
+ldouble: 3
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+float128: 2
+ldouble: 3
+
Function: "exp_downward":
double: 1
float: 1