From patchwork Wed Nov 5 11:10:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 123556 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B6E44385B519 for ; Wed, 5 Nov 2025 11:11:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B6E44385B519 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=PXqS4BII X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by sourceware.org (Postfix) with ESMTPS id 83B9A3858D2A for ; Wed, 5 Nov 2025 11:10:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 83B9A3858D2A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 83B9A3858D2A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::62d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1762341050; cv=none; b=Df788zwDC5fU7VNnqwAwoP8IFpJzmyqNpOM4E4VHvHR2+p0hxNhH2lz2bbllRZHmZWzjY014AnGFegrxbkEzhWq+UnjRpLo+sFwXX+bkuDcwIA3anKLtZmgzlHYhL6GdxObCgUUkdkhoqyaYiP0k3dNvf1BsnWox15swP+ashdc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1762341050; c=relaxed/simple; bh=Mt9fmF3sdnUxXBb2WgDnQgCJkv3x0uk+w0Rc8R3t6tQ=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Ev6DzwoH0aVb7tiEtGgdxZyxOeUoH/e+vB5589h/D7FqszAUiCGKkt5VBoEQrH0KES2/km29D2VjGi6uj2ihRsau1myMlPHzuE6K4J3anWEni0Gm1vITiFQYQD69UtEutjeiPkFYn+GKFNoFRSIRRYo86eTEmmQ6UxWxPgL96f8= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 83B9A3858D2A Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-b6d2f5c0e8eso1269344666b.3 for ; Wed, 05 Nov 2025 03:10:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1762341048; x=1762945848; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=SaOmwEY+8Q2NbS/XXRCm3esfIzETcJM0bfBn3PNtpTo=; b=PXqS4BIIBkz4AwPuDRvyBel//9O1wjgzkYWpc9MLmVsjp5o2cANdDj8F5dABVFSzoM 4drPtBglyPZfRIVdcxET8iIlv4YBywbxddjjdCS9UnokJpyjruoBs9dt7vM5aRUYVZn+ RM4URFwqV9ScFju4HegeSYAeUoJtv9XtmZkdHjtvRLkXmeV5vpI2qfbTZvkco3icDFPa z4H6tcWQz0st135/bZ0nqwHP6R8rcTf5o3Q7VABueVFOsDQdPa0r24vbo6b9bga/HTPX TRAyEwgGenvDN3+Bn2BxBNXf3N7Mh95XSnCpilv2GVJXWZSVrbUGR/5KHGOfjX2AjNEg 2vkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762341048; x=1762945848; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=SaOmwEY+8Q2NbS/XXRCm3esfIzETcJM0bfBn3PNtpTo=; b=lNOLxihgrtPfwbZpBg74Ul1E8byqShWW/VC87ez/6hIAuyoXRxRyIMZCURBKysihfC pjFFnjGvf68tA1vd82081W0Qq70cJbY/Y8kLlWI7sM5oeGTyBjYfMyQoXcA0VjKfnmoc RRRcpHfogvYCyV7F+1SaeMoF9pN5QNimEjQ3jIVaAFXngCvhEV6QVxGuYKeLBlLNP9Y1 QzrYYU2uFQs5/BtxI1azE63VfnEPnnH+RMPqQYwje378/IEWtYumxZTUnxvrmRunHmS6 SbkRLqaugOOCouZZJ27JcAGiHne31ptZwMLWGaamGhvWQbdBgAX5JPY4zIVkTmjZHdDg wDFg== X-Gm-Message-State: AOJu0YxTMNWZvVeoq5f9bOxXPfMWk73mAFH35a2n1pAqTYyAhKqkvO+o ADe/9B+WlMh8S06mRYXfwGSoSTBKrAOVYIeJ3TR/1N3RdWQOgBJDv6uhuTyulG7oTBuloPGDh5+ lTYVO9XrEkHxt X-Gm-Gg: ASbGncuZ8uq2J4omK4CURfdeFWyFe6SifMf0tSaK1IyGUEVJrqoSCNQOLOPaPjKNqkx ZNIzdUk7zFaTC2xbpLgih1ahQANdIzaaPO+mDSielyhZdbrYajVxtnMR9dgRYb0QLWxIE1nljXU aM4YqIZBb0zf/GOqoP5z85iQlUKi8x4u6M5a17K1HX7f653Dsc9NmKj1GDTVedcrB4vlZ8YWvJ3 ssVEj0U1BewsXYIezCXCLzYA9Z4bhJnDmU7hOFPhJXF9YqpMGGMXnuLIunHrDS7JANY6ksbxoNv H89+RDVjk0373jdpsw98Dg5LWWWZhErvjB+eXScFv2hG39hKY5nOo/BgM/vQBjUw7aLinmKwgsz YCVdRLhw6NUzlODY3iOZyDeNYHqiS0cKlyZkJe9ZUygO3Af2HohFeCzau3392CuFHYEPti2eZ69 C3Cw07CRwwV9qXURA= X-Google-Smtp-Source: AGHT+IFRT77mYIXUwoeYtInTKuBlro0rgKjKUGaNYacW0eCt3rEYgbBZGwqJGG5BowCWKzHhs6JKNg== X-Received: by 2002:a17:907:72d1:b0:b45:b078:c52d with SMTP id a640c23a62f3a-b72654d737bmr247291566b.35.1762341047430; Wed, 05 Nov 2025 03:10:47 -0800 (PST) Received: from ubuntu-vm.. ([87.213.113.147]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b723d3a3d79sm459447766b.10.2025.11.05.03.10.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 03:10:46 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Cc: Wilco Dijkstra Subject: [PATCH v7 1/2] math: Remove the SVID error handling from lgammaf/lgammaf_r Date: Wed, 5 Nov 2025 08:10:00 -0300 Message-ID: <20251105111044.2688041-1-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org It improves latency throughput for about 2%. Tested on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Wilco Dijkstra --- math/Versions | 2 ++ math/lgamma-compat.h | 15 +++++++++--- math/w_lgammaf_compat2.c | 2 +- math/w_lgammaf_main.c | 7 +----- math/w_lgammaf_r_compat.c | 5 ++-- sysdeps/ieee754/flt-32/e_lgammaf_r.c | 24 ++++++++++++++----- sysdeps/ieee754/flt-32/w_lgammaf.c | 17 +++++++++++++ sysdeps/ieee754/flt-32/w_lgammaf_r.c | 1 + sysdeps/mach/hurd/i386/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/aarch64/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/alpha/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/arm/be/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/arm/le/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/hppa/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/i386/libm.abilist | 2 ++ .../sysv/linux/m68k/coldfire/libm.abilist | 2 ++ .../unix/sysv/linux/m68k/m680x0/libm.abilist | 2 ++ .../sysv/linux/microblaze/be/libm.abilist | 2 ++ .../sysv/linux/microblaze/le/libm.abilist | 2 ++ .../unix/sysv/linux/mips/mips32/libm.abilist | 2 ++ .../unix/sysv/linux/mips/mips64/libm.abilist | 2 ++ .../linux/powerpc/powerpc32/fpu/libm.abilist | 2 ++ .../powerpc/powerpc32/nofpu/libm.abilist | 1 + .../linux/powerpc/powerpc64/be/libm.abilist | 2 ++ .../linux/powerpc/powerpc64/le/libm.abilist | 2 ++ .../unix/sysv/linux/s390/s390-32/libm.abilist | 2 ++ .../unix/sysv/linux/s390/s390-64/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/sh/be/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/sh/le/libm.abilist | 2 ++ .../sysv/linux/sparc/sparc32/libm.abilist | 2 ++ .../sysv/linux/sparc/sparc64/libm.abilist | 2 ++ .../unix/sysv/linux/x86_64/64/libm.abilist | 2 ++ .../unix/sysv/linux/x86_64/x32/libm.abilist | 2 ++ 33 files changed, 104 insertions(+), 18 deletions(-) create mode 100644 sysdeps/ieee754/flt-32/w_lgammaf.c create mode 100644 sysdeps/ieee754/flt-32/w_lgammaf_r.c diff --git a/math/Versions b/math/Versions index bf57cc9176..3afbc427b9 100644 --- a/math/Versions +++ b/math/Versions @@ -697,6 +697,8 @@ libm { j0f; j1f; jnf; + lgammaf; + lgammaf_r; log10f; remainder; remainderf; diff --git a/math/lgamma-compat.h b/math/lgamma-compat.h index bf4acef559..795e97d5a0 100644 --- a/math/lgamma-compat.h +++ b/math/lgamma-compat.h @@ -34,10 +34,17 @@ old glibc. Users of this file define USE_AS_COMPAT to 0 when building the main - version of lgamma, 1 when building the compatibility version. */ + version of lgamma, 1 when building the compatibility version that + handles signgam visibility, and 2 when building the compatibility + that handles SVID support). */ +#if USE_AS_COMPAT <= 1 #define LGAMMA_OLD_VER GLIBC_2_0 #define LGAMMA_NEW_VER GLIBC_2_23 +#elif USE_AS_COMPAT == 2 +#define LGAMMA_OLD_VER GLIBC_2_23 +#define LGAMMA_NEW_VER GLIBC_2_43 +#endif #define HAVE_LGAMMA_COMPAT SHLIB_COMPAT (libm, LGAMMA_OLD_VER, LGAMMA_NEW_VER) /* Whether to build this version at all. */ @@ -45,8 +52,10 @@ (LIBM_SVID_COMPAT && (HAVE_LGAMMA_COMPAT || !USE_AS_COMPAT)) /* The name to use for this version. */ -#if USE_AS_COMPAT +#if USE_AS_COMPAT == 1 # define LGFUNC(FUNC) FUNC ## _compat +#elif USE_AS_COMPAT == 2 +# define LGFUNC(FUNC) FUNC ## _compat2 #else # define LGFUNC(FUNC) FUNC #endif @@ -54,7 +63,7 @@ /* If there is a compatibility version, gamma (not an ISO C function, so never a problem for it to set signgam) points directly to it rather than having separate versions. */ -#define GAMMA_ALIAS (USE_AS_COMPAT ? HAVE_LGAMMA_COMPAT : !HAVE_LGAMMA_COMPAT) +#define GAMMA_ALIAS (USE_AS_COMPAT == 1 ? HAVE_LGAMMA_COMPAT : !HAVE_LGAMMA_COMPAT) /* How to call the underlying lgamma_r function. */ #define CALL_LGAMMA(TYPE, FUNC, ARG) \ diff --git a/math/w_lgammaf_compat2.c b/math/w_lgammaf_compat2.c index 5fc402260c..3a942dbe04 100644 --- a/math/w_lgammaf_compat2.c +++ b/math/w_lgammaf_compat2.c @@ -1,2 +1,2 @@ -#define USE_AS_COMPAT 0 +#define USE_AS_COMPAT 2 #include diff --git a/math/w_lgammaf_main.c b/math/w_lgammaf_main.c index 22b7f8fc53..8d475d3a6c 100644 --- a/math/w_lgammaf_main.c +++ b/math/w_lgammaf_main.c @@ -33,12 +33,7 @@ LGFUNC (__lgammaf) (float x) return y; } -# if USE_AS_COMPAT -compat_symbol (libm, __lgammaf_compat, lgammaf, LGAMMA_OLD_VER); -# else -versioned_symbol (libm, __lgammaf, lgammaf, LGAMMA_NEW_VER); -libm_alias_float_other (__lgamma, lgamma) -# endif +compat_symbol (libm, LGFUNC (__lgammaf), lgammaf, LGAMMA_OLD_VER); # if GAMMA_ALIAS strong_alias (LGFUNC (__lgammaf), __gammaf) weak_alias (__gammaf, gammaf) diff --git a/math/w_lgammaf_r_compat.c b/math/w_lgammaf_r_compat.c index be01b6daac..524f9901d3 100644 --- a/math/w_lgammaf_r_compat.c +++ b/math/w_lgammaf_r_compat.c @@ -20,11 +20,12 @@ #include #include #include +#include #if LIBM_SVID_COMPAT float -__lgammaf_r(float x, int *signgamp) +__lgammaf_r_svidf(float x, int *signgamp) { float y = __ieee754_lgammaf_r(x,signgamp); if(__builtin_expect(!isfinite(y), 0) @@ -36,5 +37,5 @@ __lgammaf_r(float x, int *signgamp) return y; } -libm_alias_float_r (__lgamma, lgamma, _r) +compat_symbol (libm, __lgammaf_r_svidf, lgammaf_r, GLIBC_2_0); #endif diff --git a/sysdeps/ieee754/flt-32/e_lgammaf_r.c b/sysdeps/ieee754/flt-32/e_lgammaf_r.c index 059afa86c6..2fb4784b59 100644 --- a/sysdeps/ieee754/flt-32/e_lgammaf_r.c +++ b/sysdeps/ieee754/flt-32/e_lgammaf_r.c @@ -36,6 +36,8 @@ SOFTWARE. #include #include #include +#include +#include #include #include "math_config.h" @@ -108,7 +110,7 @@ as_ln (double x) } float -__ieee754_lgammaf_r (float x, int *signgamp) +__lgammaf_r (float x, int *signgamp) { static const struct { @@ -161,7 +163,7 @@ __ieee754_lgammaf_r (float x, int *signgamp) if (x <= 0.0f) { *signgamp = asuint (x) >> 31 ? -1 : 1; - return 1.0f / 0.0f; + return __math_divzerof (0); } if (x == 1.0f || x == 2.0f) { @@ -206,10 +208,11 @@ __ieee754_lgammaf_r (float x, int *signgamp) if (ax > 0x1.afc1ap+1f) { if (__glibc_unlikely (x > 0x1.895f1cp+121f)) - return math_narrow_eval (0x1p127f * 0x1p127f); + return __math_oflowf (0); + /* |x|>=2**23, must be -integer */ if (__glibc_unlikely (x < 0.0f && ax > 0x1p+23f)) - return ax / 0.0f; + return __math_divzerof (0); double lz = as_ln (z); f = (z - 0.5) * (lz - 1) + 0x1.acfe390c97d69p-2; if (ax < 0x1.0p+20f) @@ -271,7 +274,7 @@ __ieee754_lgammaf_r (float x, int *signgamp) { int ni = floorf (-2 * x); if ((ni & 1) == 0 && ni == -2 * x) - return 1.0f / 0.0f; + return __math_divzerof (0); } const double c0 = 0x1.3cc0e6a0106b3p+2; static const double rd[] = @@ -363,4 +366,13 @@ __ieee754_lgammaf_r (float x, int *signgamp) } return r; } -libm_alias_finite (__ieee754_lgammaf_r, __lgammaf_r) +strong_alias (__lgammaf_r, __ieee754_lgammaf_r) +libm_alias_finite (__lgammaf_r, __lgammaf_r) +#if LIBM_SVID_COMPAT +versioned_symbol (libm, __lgammaf_r, lgammaf_r, GLIBC_2_43); +# if __HAVE_FLOAT32 && !__HAVE_DISTINCT_FLOAT32 +weak_alias (__lgammaf_r, lgammaf32_r) +# endif +#else +libm_alias_float_r (__lgamma, lgamma, _r) +#endif diff --git a/sysdeps/ieee754/flt-32/w_lgammaf.c b/sysdeps/ieee754/flt-32/w_lgammaf.c new file mode 100644 index 0000000000..5fc9b46866 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_lgammaf.c @@ -0,0 +1,17 @@ +#include +#include +#include + +float +__lgammaf (float x) +{ + return __lgammaf_r (x, &__signgam); +} +#if LIBM_SVID_COMPAT +versioned_symbol (libm, __lgammaf, lgammaf, GLIBC_2_43); +libm_alias_float_other (__lgamma, lgamma) +#else +libm_alias_float (__lgamma, lgamma) +strong_alias (__lgammaf, __gammaf) +weak_alias (__gammaf, gammaf) +#endif diff --git a/sysdeps/ieee754/flt-32/w_lgammaf_r.c b/sysdeps/ieee754/flt-32/w_lgammaf_r.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_lgammaf_r.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist index 024bc15fe5..95aeaacda6 100644 --- a/sysdeps/mach/hurd/i386/libm.abilist +++ b/sysdeps/mach/hurd/i386/libm.abilist @@ -1328,6 +1328,8 @@ GLIBC_2.43 fmodf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index 9e803a74ac..4e203bf5a4 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -1294,6 +1294,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index dbbad3c8fb..3d587a92a6 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -1453,6 +1453,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist index b819f6d8d0..635490118f 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist @@ -959,6 +959,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist index b819f6d8d0..635490118f 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist @@ -959,6 +959,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index 0091839d73..3e9cb9fd3e 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -959,6 +959,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index 6fc86a9230..b76820ffad 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -1335,6 +1335,8 @@ GLIBC_2.43 fmodf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index b819f6d8d0..635490118f 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -959,6 +959,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index 968c41a8bd..67156d74fa 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -992,6 +992,8 @@ GLIBC_2.43 fmodf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sqrtf F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist index 2f6ac7784d..86744483ed 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist @@ -959,6 +959,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist index 2f6ac7784d..86744483ed 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist @@ -959,6 +959,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index 92eaa36b8d..24e19f31f7 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -959,6 +959,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index 13f0831083..0e2c6c6464 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -1294,6 +1294,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index 80a5aaf8b8..1dfe3281c2 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -1106,6 +1106,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index 2a876cae98..bc167e6424 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -1105,6 +1105,7 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist index 4cbec9212f..d123eeef26 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist @@ -1099,6 +1099,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist index 55b3fa1906..ca9f3cd4b9 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist @@ -1483,6 +1483,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index 61cc0a5ba1..f36d31952b 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -1397,6 +1397,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index 1b4db358a4..355df9f489 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -1397,6 +1397,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist index 32857b8b54..9b626d9580 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist @@ -959,6 +959,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist index 32857b8b54..9b626d9580 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist @@ -959,6 +959,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index 364f51b035..7ddd3c4b5e 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -1404,6 +1404,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index 49e898d5eb..5cd12dfb19 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -1294,6 +1294,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index 73b55ae4dd..eb267367f1 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -1327,6 +1327,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index a138d3e070..d1fea5ad56 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -1327,6 +1327,8 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F +GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F From patchwork Wed Nov 5 11:10:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 123557 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A8C7F385B519 for ; Wed, 5 Nov 2025 11:12:51 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A8C7F385B519 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=pfelFg5R X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) by sourceware.org (Postfix) with ESMTPS id E6D76385B519 for ; Wed, 5 Nov 2025 11:10:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E6D76385B519 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E6D76385B519 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::634 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1762341051; cv=none; b=pQPswFbdZA8CB9sXVizvdktPN5d90TszJRiPrKn95/PjLhFSPIak0cKXODDQFS5qjXcwKeKC3WBI1fIqdyGznT+4sJGYLEchvLiczJjZz42/f9EAfx4A6I2dWJuL/ppjyzqtLtRyCGQx/fTy2ef6ITd5X+FjGdMf0AdQ3h6HfxM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1762341051; c=relaxed/simple; bh=DsCB0/KMqBFyi1amhOjfyzlj3Yqq3lb1afEvpJPrpGs=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=vN8EAsewIEeXDptdLcu3+eF4rvFqd6pku4hXB39bwPIMRTe5cumKNFDXzH7TbRSRnZ9jzTJ7/ZmrCM3elHPOiKbg1eNeAiIYZ+3k67wlYN/9wMSNrvtPxBSdxj8FqybBYZnYxTYrLFdxfCMrfZS4HSWt40R9TMolL9lLauMY9KA= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E6D76385B519 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-b5b823b4f3dso1037724766b.3 for ; Wed, 05 Nov 2025 03:10:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1762341049; x=1762945849; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UKENfjm3cZAQiSSA94eDO1JAZGMZMUTQ5tlr9FFDH/0=; b=pfelFg5R7cekZMgEycSsdqXDYebOHPPFNWPQzSZKlkiSvSHS9YdXfr7TRQvMlKt6ja sg6IT2H4CcJ1eaG1xMT0XMLKIkaue74VRO/HatSuoPCWZJQnQudsz1BA91I5iG6pfg9t GvqZ/jUNYaV9jF0paujTyU2DQ46zH12faMSe+JmCDExhmTRFpDaQ+aFZD81U3zE1eDrs iouw/TQ2kt2+Cyl3XadHwfYutL9E//VBQx99S1v5C3+xpAk02Cw2puZe+eddKCN0enaZ ia/omWqUmkmTK8tgbGXkMGVCp6zKoUUZPaII0b5CqWjp9+1IFxkFEukVbmbR2/s+831/ Pzzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762341049; x=1762945849; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UKENfjm3cZAQiSSA94eDO1JAZGMZMUTQ5tlr9FFDH/0=; b=tz0aOn8/6GhwBSW3779IKAsNab+BTSgal1Rc11plAu28JnFa5gUHdLPAEU9fwD0LOP xZ5FLpggSV2UtHbpbYSJpdPT+UgTlKh9cfhHWxVXqGB9liRBG1lChp2C4JWnKlymEer8 whGjlR6lH8i3WZsnRN46MJt//+aN913EdAAKdW5yOkUUO+3UDWosQ6+nzZ1xDdCkMS2f b27wQEN5jkGPrO3Bvqk6u4KRXmkgNZbJbuMabdGA6Y8GSGD320qfqALjLevJG6bzTogC eRNZmqjMm/uT/1rKoxmR4I3sTmeMGzaHpzDPedVJIegcX8HQLSjAGkcCgZZlnd1mQCXi IoTA== X-Gm-Message-State: AOJu0YzdDYi10RSDN+e/T2PVIT18371fTz35fjfcTh6ThX7mvMTXlkPS ilJfBGYJC3mzx0CyF42ehNhAPt5CPOhvolHO4mHtVEgMuiZpcx3kcxU2wuYdSUr7gA34Ov65Wm1 QfIVS4yo6URvX X-Gm-Gg: ASbGnctKiduhuR4prMQ0Hj5+d6SSWeQC+Gh/qZ+yztJshwVa/5C1iclheInfoM1KmtQ BtRl/bvTQnlm/m5TJxceUQzRp5dO1+yxhneW5zPyiZ9P2+LS0jmHe8ta2Dsrf3YplfmVQmYkS/4 CqhKMc3MyBlynPYNSVQ1DsNr2+1iACMEZdJAISb+kPI3zH6/wbgWpfPx7SSUcm5SruW4ObMaFw+ qaAK/IdID591qtq76969C0CUmBUhMNX+v8aJlai2AYYKInq7vmVKVyPfsDJnCBjOdYBwEgnb7zW A412JIZzyyuXeDyHG9pjqgujY+TdGKdIK4oyQJ1VREhBKgBXLNzqM+XSX9migDhT8cQBWHWdhzh gk9dXtUrErZldU2NMNHiB0SZFDiEcGU0RUYJnhr2CLvAOfxjC2qEWZfN9LOkexEUc4zcDCRrY4H ERLPmBOmIetzVUl3kggEM9ityJSA== X-Google-Smtp-Source: AGHT+IHCg2K45lLTLtR5k2Gc3hpKu3qziN0EP797kg8H7eubLRGsfdDRkaSA70W/qKxUWirkJsTRdg== X-Received: by 2002:a17:907:d92:b0:b70:b324:6eed with SMTP id a640c23a62f3a-b7264e12516mr253100266b.0.1762341048905; Wed, 05 Nov 2025 03:10:48 -0800 (PST) Received: from ubuntu-vm.. ([87.213.113.147]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b723d3a3d79sm459447766b.10.2025.11.05.03.10.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 03:10:47 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Cc: Wilco Dijkstra Subject: [PATCH v7 2/2] math: Remove the SVID error handling from tgammaf Date: Wed, 5 Nov 2025 08:10:01 -0300 Message-ID: <20251105111044.2688041-2-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251105111044.2688041-1-adhemerval.zanella@linaro.org> References: <20251105111044.2688041-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org It improves latency for about 1.5% and throughput for about 2-4%. Tested on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Wilco Dijkstra --- math/Versions | 1 + math/w_tgammaf_compat.c | 9 ++-- sysdeps/generic/math_private_calls.h | 2 + sysdeps/ieee754/flt-32/e_gammaf_r.c | 52 ++++++++----------- sysdeps/ieee754/flt-32/w_tgammaf.c | 1 + sysdeps/mach/hurd/i386/libm.abilist | 1 + sysdeps/unix/sysv/linux/aarch64/libm.abilist | 1 + sysdeps/unix/sysv/linux/alpha/libm.abilist | 1 + sysdeps/unix/sysv/linux/arm/be/libm.abilist | 1 + sysdeps/unix/sysv/linux/arm/le/libm.abilist | 1 + sysdeps/unix/sysv/linux/hppa/libm.abilist | 1 + sysdeps/unix/sysv/linux/i386/libm.abilist | 1 + .../sysv/linux/m68k/coldfire/libm.abilist | 1 + .../unix/sysv/linux/m68k/m680x0/libm.abilist | 1 + .../sysv/linux/microblaze/be/libm.abilist | 1 + .../sysv/linux/microblaze/le/libm.abilist | 1 + .../unix/sysv/linux/mips/mips32/libm.abilist | 1 + .../unix/sysv/linux/mips/mips64/libm.abilist | 1 + .../linux/powerpc/powerpc32/fpu/libm.abilist | 1 + .../powerpc/powerpc32/nofpu/libm.abilist | 2 + .../linux/powerpc/powerpc64/be/libm.abilist | 1 + .../linux/powerpc/powerpc64/le/libm.abilist | 1 + .../unix/sysv/linux/s390/s390-32/libm.abilist | 1 + .../unix/sysv/linux/s390/s390-64/libm.abilist | 1 + sysdeps/unix/sysv/linux/sh/be/libm.abilist | 1 + sysdeps/unix/sysv/linux/sh/le/libm.abilist | 1 + .../sysv/linux/sparc/sparc32/libm.abilist | 1 + .../sysv/linux/sparc/sparc64/libm.abilist | 1 + .../unix/sysv/linux/x86_64/64/libm.abilist | 1 + .../unix/sysv/linux/x86_64/x32/libm.abilist | 1 + 30 files changed, 58 insertions(+), 33 deletions(-) create mode 100644 sysdeps/ieee754/flt-32/w_tgammaf.c diff --git a/math/Versions b/math/Versions index 3afbc427b9..d6ad34f459 100644 --- a/math/Versions +++ b/math/Versions @@ -707,5 +707,6 @@ libm { y0f; y1f; ynf; + tgammaf; } } diff --git a/math/w_tgammaf_compat.c b/math/w_tgammaf_compat.c index 253d0c8b66..b63d646261 100644 --- a/math/w_tgammaf_compat.c +++ b/math/w_tgammaf_compat.c @@ -18,12 +18,13 @@ #include #include #include +#include -#if LIBM_SVID_COMPAT +#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_43) float -__tgammaf(float x) +__tgammaf_svid(float x) { - float y = __ieee754_gammaf_r(x, NULL); + float y = __tgammaf(x); if(__glibc_unlikely (!isfinite (y) || y == 0) && (isfinite (x) || (isinf (x) && x < 0.0f)) @@ -43,5 +44,5 @@ __tgammaf(float x) } return y; } -libm_alias_float (__tgamma, tgamma) +compat_symbol (libm, __tgammaf_svid, tgammaf, GLIBC_2_1); #endif diff --git a/sysdeps/generic/math_private_calls.h b/sysdeps/generic/math_private_calls.h index 62ced4efb3..097a5de673 100644 --- a/sysdeps/generic/math_private_calls.h +++ b/sysdeps/generic/math_private_calls.h @@ -36,7 +36,9 @@ extern _Mdouble_ __MSUF (__ieee754_exp10) (_Mdouble_); extern _Mdouble_ __MSUF (__ieee754_exp2) (_Mdouble_); extern _Mdouble_ __MSUF (__ieee754_fmod) (_Mdouble_, _Mdouble_); extern _Mdouble_ __MSUF (__ieee754_gamma) (_Mdouble_); +#if !defined __MATH_DECLARING_FLOAT extern _Mdouble_ __MSUF_R (__ieee754_gamma) (_Mdouble_, int *); +#endif extern _Mdouble_ __MSUF (__ieee754_hypot) (_Mdouble_, _Mdouble_); extern _Mdouble_ __MSUF (__ieee754_j0) (_Mdouble_); extern _Mdouble_ __MSUF (__ieee754_j1) (_Mdouble_); diff --git a/sysdeps/ieee754/flt-32/e_gammaf_r.c b/sysdeps/ieee754/flt-32/e_gammaf_r.c index 66e8caee0b..2e16412775 100644 --- a/sysdeps/ieee754/flt-32/e_gammaf_r.c +++ b/sysdeps/ieee754/flt-32/e_gammaf_r.c @@ -25,31 +25,23 @@ SOFTWARE. */ /* Changes with respect to the original CORE-MATH code: - - removed the dealing with errno - (this is done in the wrapper math/w_tgammaf_compat.c) - usage of math_narrow_eval to deal with underflow/overflow - - deal with signgamp */ +#include #include #include #include #include +#include +#include #include #include #include "math_config.h" float -__ieee754_gammaf_r (float x, int *signgamp) +__tgammaf (float x) { - /* The wrapper in math/w_tgamma_template.c expects *signgamp to be set to a - non-negative value if the returned value is gamma(x), and to a negative - value if it is -gamma(x). - Since the code here directly computes gamma(x), we set it to 1. - */ - if (signgamp != NULL) - *signgamp = 1; - /* List of exceptional cases. Each entry contains the 32-bit encoding u of x, a binary32 approximation f of gamma(x), and a correction term df. */ static const struct @@ -92,27 +84,22 @@ __ieee754_gammaf_r (float x, int *signgamp) uint64_t rt = asuint64 (f); if (((rt + 2) & 0xfffffff) < 4) { - for (unsigned i = 0; i < sizeof (tb) / sizeof (tb[0]); i++) + for (unsigned i = 0; i < array_length (tb); i++) if (t == tb[i].u) return tb[i].f + tb[i].df; } + if (isinf (r)) + return __math_erangef (r); return r; } float fx = floorf (x); if (__glibc_unlikely (x >= 0x1.18522p+5f)) - { - /* Overflow case. The original CORE-MATH code returns - 0x1p127f * 0x1p127f, but apparently some compilers replace this - by +Inf. */ - return math_narrow_eval (x * 0x1p127f); - } + return __math_oflowf (0); /* compute k only after the overflow check, otherwise the case to integer might overflow */ int k = fx; if (__glibc_unlikely (fx == x)) { /* x is integer */ - if (x == 0.0f) - return 1.0f / x; if (x < 0.0f) return __math_invalidf (0.0f); double t0 = 1, x0 = 1; @@ -121,12 +108,10 @@ __ieee754_gammaf_r (float x, int *signgamp) return t0; } if (__glibc_unlikely (x < -42.0f)) - { /* negative non-integer */ - /* For x < -42, x non-integer, |gamma(x)| < 2^-151. */ - static const float sgn[2] = { 0x1p-127f, -0x1p-127f }; - /* Underflows always happens */ - return math_narrow_eval (0x1p-127f * sgn[k & 1]); - } + /* negative non-integer */ + /* For x < -42, x non-integer, |gamma(x)| < 2^-151. */ + /* Underflows always happens */ + return __math_uflowf (k & 1); /* The array c[] stores a degree-15 polynomial approximation for gamma(x). */ static const double c[] = @@ -164,13 +149,22 @@ __ieee754_gammaf_r (float x, int *signgamp) f *= w; uint64_t rt = asuint64 (f); float r = f; + if (__glibc_unlikely (r == 0)) + return __math_uflowf (rt >> 63); /* Deal with exceptional cases. */ if (__glibc_unlikely (((rt + 2) & 0xfffffff) < 8)) { - for (unsigned j = 0; j < sizeof (tb) / sizeof (tb[0]); j++) + for (unsigned j = 0; j < array_length (tb); j++) if (t == tb[j].u) return tb[j].f + tb[j].df; } return r; } -libm_alias_finite (__ieee754_gammaf_r, __gammaf_r) + +#if LIBM_SVID_COMPAT +versioned_symbol (libm, __tgammaf, tgammaf, GLIBC_2_43); +libm_alias_float_other (__tgamma, tgamma) +#else +libm_alias_float (__tgamma, tgamma) +#endif +libm_alias_finite (__tgammaf, __gammaf_r) diff --git a/sysdeps/ieee754/flt-32/w_tgammaf.c b/sysdeps/ieee754/flt-32/w_tgammaf.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_tgammaf.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist index 95aeaacda6..20da811584 100644 --- a/sysdeps/mach/hurd/i386/libm.abilist +++ b/sysdeps/mach/hurd/i386/libm.abilist @@ -1335,6 +1335,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index 4e203bf5a4..17a71db73d 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -1301,6 +1301,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index 3d587a92a6..ec439daa5d 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -1460,6 +1460,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist index 635490118f..24e1adc4b5 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist @@ -966,6 +966,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist index 635490118f..24e1adc4b5 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist @@ -966,6 +966,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index 3e9cb9fd3e..b8e75bce1e 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -966,6 +966,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index b76820ffad..6d0400dcc1 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -1342,6 +1342,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index 635490118f..24e1adc4b5 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -966,6 +966,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index 67156d74fa..fcb3e6f369 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -997,6 +997,7 @@ GLIBC_2.43 lgammaf_r F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist index 86744483ed..06c935c595 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist @@ -966,6 +966,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist index 86744483ed..06c935c595 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist @@ -966,6 +966,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index 24e19f31f7..ac514efdcd 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -966,6 +966,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index 0e2c6c6464..713065cd65 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -1301,6 +1301,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index 1dfe3281c2..64af459283 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -1113,6 +1113,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index bc167e6424..c9b6b2be85 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -1105,12 +1105,14 @@ GLIBC_2.43 coshf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 lgammaf F GLIBC_2.43 lgammaf_r F GLIBC_2.43 log10f F GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist index d123eeef26..a7a949ec86 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist @@ -1106,6 +1106,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist index ca9f3cd4b9..5f6dd0a606 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist @@ -1490,6 +1490,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index f36d31952b..9c3a54a6db 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -1404,6 +1404,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index 355df9f489..0c6fd6ef65 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -1404,6 +1404,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist index 9b626d9580..24c81ef25a 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist @@ -966,6 +966,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist index 9b626d9580..24c81ef25a 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist @@ -966,6 +966,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index 7ddd3c4b5e..064ca0f7c6 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -1411,6 +1411,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index 5cd12dfb19..a5717fe546 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -1301,6 +1301,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index eb267367f1..d3dff0e42b 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -1334,6 +1334,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index d1fea5ad56..387d97597e 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -1334,6 +1334,7 @@ GLIBC_2.43 remainder F GLIBC_2.43 remainderf F GLIBC_2.43 sinhf F GLIBC_2.43 sqrtf F +GLIBC_2.43 tgammaf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F