math: Remove the SVID error handling wrapper from yn/jn

Tested on x86_64-linux-gnu and i686-linux-gnu.

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>
This commit is contained in:
Adhemerval Zanella 2025-10-08 10:55:21 -03:00
parent 8d4815e6d7
commit ee946212fe
29 changed files with 86 additions and 11 deletions

View File

@ -695,8 +695,10 @@ libm {
coshf; coshf;
j0f; j0f;
j1f; j1f;
jnf;
log10f; log10f;
y0f; y0f;
y1f; y1f;
ynf;
} }
} }

View File

@ -22,10 +22,10 @@
#include <libm-alias-float.h> #include <libm-alias-float.h>
#if LIBM_SVID_COMPAT #if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_43)
/* wrapper jnf */ /* wrapper jnf */
float float
__jnf (int n, float x) __jnf_svid (int n, float x)
{ {
if (__builtin_expect (isgreater (fabsf (x), if (__builtin_expect (isgreater (fabsf (x),
AS_FLOAT_CONSTANT (X_TLOSS)), 0) AS_FLOAT_CONSTANT (X_TLOSS)), 0)
@ -35,12 +35,12 @@ __jnf (int n, float x)
return __ieee754_jnf (n, x); return __ieee754_jnf (n, x);
} }
libm_alias_float (__jn, jn) compat_symbol (libm, __jnf_svid, jnf, GLIBC_2_0);
/* wrapper ynf */ /* wrapper ynf */
float float
__ynf (int n, float x) __ynf_svid (int n, float x)
{ {
if (__builtin_expect (islessequal (x, 0.0f) if (__builtin_expect (islessequal (x, 0.0f)
|| isgreater (x, AS_FLOAT_CONSTANT (X_TLOSS)), 0) || isgreater (x, AS_FLOAT_CONSTANT (X_TLOSS)), 0)
@ -65,5 +65,5 @@ __ynf (int n, float x)
return __ieee754_ynf (n, x); return __ieee754_ynf (n, x);
} }
libm_alias_float (__yn, yn) compat_symbol (libm, __ynf_svid, ynf, GLIBC_2_0);
#endif #endif

View File

@ -20,6 +20,9 @@
#include <fenv_private.h> #include <fenv_private.h>
#include <math-underflow.h> #include <math-underflow.h>
#include <libm-alias-finite.h> #include <libm-alias-finite.h>
#include <libm-alias-float.h>
#include <math-svid-compat.h>
#include "math_config.h"
static const float static const float
two = 2.0000000000e+00, /* 0x40000000 */ two = 2.0000000000e+00, /* 0x40000000 */
@ -28,7 +31,7 @@ one = 1.0000000000e+00; /* 0x3F800000 */
static const float zero = 0.0000000000e+00; static const float zero = 0.0000000000e+00;
float float
__ieee754_jnf(int n, float x) __jnf(int n, float x)
{ {
float ret; float ret;
{ {
@ -182,10 +185,17 @@ __ieee754_jnf(int n, float x)
math_check_force_underflow (ret); math_check_force_underflow (ret);
return ret; return ret;
} }
strong_alias (__jnf, __ieee754_jnf)
#if LIBM_SVID_COMPAT
versioned_symbol (libm, __jnf, jnf, GLIBC_2_43);
libm_alias_float_other (__jn, jn)
#else
libm_alias_float (__jn, jn)
#endif
libm_alias_finite (__ieee754_jnf, __jnf) libm_alias_finite (__ieee754_jnf, __jnf)
float float
__ieee754_ynf(int n, float x) __ynf(int n, float x)
{ {
float ret; float ret;
{ {
@ -197,16 +207,21 @@ __ieee754_ynf(int n, float x)
GET_FLOAT_WORD(hx,x); GET_FLOAT_WORD(hx,x);
ix = 0x7fffffff&hx; ix = 0x7fffffff&hx;
/* if Y(n,NaN) is NaN */ /* if Y(n,NaN) is NaN */
if(__builtin_expect(ix>0x7f800000, 0)) return x+x; if(ix>=0x7f800000)
{
if (hx==0xFF800000)
return __math_invalidf (1);
return one/(x+x*x);
}
sign = 1; sign = 1;
if(n<0){ if(n<0){
n = -n; n = -n;
sign = 1 - ((n&1)<<1); sign = 1 - ((n&1)<<1);
} }
if(n==0) return(__ieee754_y0f(x)); if(n==0) return(__ieee754_y0f(x));
if(__builtin_expect(ix==0, 0)) if(ix==0)
return -sign/zero; return __math_divzerof (sign == 1 ? 1 : 0);
if(__builtin_expect(hx<0, 0)) return zero/(zero*x); if(hx<0) return __math_invalidf (x);
SET_RESTORE_ROUNDF (FE_TONEAREST); SET_RESTORE_ROUNDF (FE_TONEAREST);
if(n==1) { if(n==1) {
ret = sign*__ieee754_y1f(x); ret = sign*__ieee754_y1f(x);
@ -235,4 +250,11 @@ __ieee754_ynf(int n, float x)
ret = copysignf (FLT_MAX, ret) * FLT_MAX; ret = copysignf (FLT_MAX, ret) * FLT_MAX;
return ret; return ret;
} }
strong_alias (__ynf, __ieee754_ynf)
#if LIBM_SVID_COMPAT
versioned_symbol (libm, __ynf, ynf, GLIBC_2_43);
libm_alias_float_other (__yn, yn)
#else
libm_alias_float (__yn, yn)
#endif
libm_alias_finite (__ieee754_ynf, __ynf) libm_alias_finite (__ieee754_ynf, __ynf)

View File

@ -0,0 +1 @@
/* Not needed */

View File

@ -1326,6 +1326,8 @@ GLIBC_2.43 fmod F
GLIBC_2.43 fmodf F GLIBC_2.43 fmodf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1292,6 +1292,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1451,6 +1451,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -957,6 +957,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -957,6 +957,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -957,6 +957,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1333,6 +1333,8 @@ GLIBC_2.43 fmod F
GLIBC_2.43 fmodf F GLIBC_2.43 fmodf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -957,6 +957,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -991,5 +991,7 @@ GLIBC_2.43 fmod F
GLIBC_2.43 fmodf F GLIBC_2.43 fmodf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -957,6 +957,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -957,6 +957,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -957,6 +957,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1292,6 +1292,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1104,6 +1104,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1103,6 +1103,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1097,6 +1097,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1481,6 +1481,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1395,6 +1395,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1395,6 +1395,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -957,6 +957,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -957,6 +957,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1402,6 +1402,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1292,6 +1292,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1325,6 +1325,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F

View File

@ -1325,6 +1325,8 @@ GLIBC_2.43 atanhf F
GLIBC_2.43 coshf F GLIBC_2.43 coshf F
GLIBC_2.43 j0f F GLIBC_2.43 j0f F
GLIBC_2.43 j1f F GLIBC_2.43 j1f F
GLIBC_2.43 jnf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F
GLIBC_2.43 y0f F GLIBC_2.43 y0f F
GLIBC_2.43 y1f F GLIBC_2.43 y1f F
GLIBC_2.43 ynf F