diff mbox series

Add fmaximum, fminimum functions [committed]

Message ID alpine.DEB.2.22.394.2109282332060.38468@digraph.polyomino.org.uk
State Committed
Commit 90f0ac10a74b2d43b5a65aab4be40565e359be43
Headers show
Series Add fmaximum, fminimum functions [committed] | expand

Commit Message

Joseph Myers Sept. 28, 2021, 11:32 p.m. UTC
C2X adds new <math.h> functions for floating-point maximum and
minimum, corresponding to the new operations that were added in IEEE
754-2019 because of concerns about the old operations not being
associative in the presence of signaling NaNs.  fmaximum and fminimum
handle NaNs like most <math.h> functions (any NaN argument means the
result is a quiet NaN).  fmaximum_num and fminimum_num handle both
quiet and signaling NaNs the way fmax and fmin handle quiet NaNs (if
one argument is a number and the other is a NaN, return the number),
but still raise "invalid" for a signaling NaN argument, making them
exceptions to the normal rule that a function with a floating-point
result raising "invalid" also returns a quiet NaN.  fmaximum_mag,
fminimum_mag, fmaximum_mag_num and fminimum_mag_num are corresponding
functions returning the argument with greatest or least absolute
value.  All these functions also treat +0 as greater than -0.  There
are also corresponding <tgmath.h> type-generic macros.

Add these functions to glibc.  The implementations use type-generic
templates based on those for fmax, fmin, fmaxmag and fminmag, and test
inputs are based on those for those functions with appropriate
adjustments to the expected results.  The RISC-V maintainers might
wish to add optimized versions of fmaximum_num and fminimum_num (for
float and double), since RISC-V (F extension version 2.2 and later)
provides instructions corresponding to those functions - though it
might be at least as useful to add architecture-independent built-in
functions to GCC and teach the RISC-V back end to expand those
functions inline, which is what you generally want for functions that
can be implemented with a single instruction.

Tested for x86_64 and x86, and with build-many-glibcs.py.

---

Committed.

Comments

Palmer Dabbelt Oct. 4, 2021, 4:43 p.m. UTC | #1
On Tue, 28 Sep 2021 16:32:52 PDT (-0700), joseph@codesourcery.com wrote:
> C2X adds new <math.h> functions for floating-point maximum and
> minimum, corresponding to the new operations that were added in IEEE
> 754-2019 because of concerns about the old operations not being
> associative in the presence of signaling NaNs.  fmaximum and fminimum
> handle NaNs like most <math.h> functions (any NaN argument means the
> result is a quiet NaN).  fmaximum_num and fminimum_num handle both
> quiet and signaling NaNs the way fmax and fmin handle quiet NaNs (if
> one argument is a number and the other is a NaN, return the number),
> but still raise "invalid" for a signaling NaN argument, making them
> exceptions to the normal rule that a function with a floating-point
> result raising "invalid" also returns a quiet NaN.  fmaximum_mag,
> fminimum_mag, fmaximum_mag_num and fminimum_mag_num are corresponding
> functions returning the argument with greatest or least absolute
> value.  All these functions also treat +0 as greater than -0.  There
> are also corresponding <tgmath.h> type-generic macros.
>
> Add these functions to glibc.  The implementations use type-generic
> templates based on those for fmax, fmin, fmaxmag and fminmag, and test
> inputs are based on those for those functions with appropriate
> adjustments to the expected results.  The RISC-V maintainers might
> wish to add optimized versions of fmaximum_num and fminimum_num (for
> float and double), since RISC-V (F extension version 2.2 and later)

Thanks for pointing this out.

I don't actually remember if we had any pre-2.2 hardware that could run 
glibc: pretty sure the HiFive Unleashed is post-2.2, and that's the only 
thing I can think of that would be that old.  I'm never quite sure about 
the dates on specs, but I'm seeing May 2017 for 2.2 and Feb 2018 for the 
HiFive Unleashed so I think it's likely fine.  Andrew would know for 
sure, though.

In theory we could add dynamic probing for this sort of thing, and while 
I'm sure we'll have to do that at some point we don't really have the 
mechanisms to do that right now (thought it is in progress for this new 
set of specs).  Given that we don't have a mechanism to handle this now, 
there's probably no hardware, and I can't find anything written down 
about what we do support I think it's best to just agree on 2.2 as the 
minimum supported user ISA for glibc to avoid the extra complexity here.

Unless anyone is opposed, I'll send the sort of email we usually do for 
this sort of thing to sw-dev.

> provides instructions corresponding to those functions - though it
> might be at least as useful to add architecture-independent built-in
> functions to GCC and teach the RISC-V back end to expand those
> functions inline, which is what you generally want for functions that
> can be implemented with a single instruction.
>
> Tested for x86_64 and x86, and with build-many-glibcs.py.
>
> ---
>
> Committed.
>
> diff --git a/NEWS b/NEWS
> index 9ae04b2f20..6bc98873ab 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -32,6 +32,13 @@ Major new features:
>    - ffma, ffmal, dfmal and corresponding fMfmafN, fMfmafNx, fMxfmafN and
>      fMxfmafNx functions.
>
> +* <math.h> functions for floating-point maximum and minimum,
> +  corresponding to new operations in IEEE 754-2019, and corresponding
> +  <tgmath.h> macros, are added from draft ISO C2X: fmaximum,
> +  fmaximum_num, fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num,
> +  fminimum_mag, fminimum_mag_num and corresponding functions for float,
> +  long double, _FloatN and _FloatNx.
> +
>  * The __STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__ macros are
>    predefined as specified in TS 18661-1:2014.
>
> diff --git a/manual/arith.texi b/manual/arith.texi
> index 6a158e624d..edb9cfdafb 100644
> --- a/manual/arith.texi
> +++ b/manual/arith.texi
> @@ -2097,8 +2097,8 @@ and @var{y}.  It is similar to the expression
>  @end smallexample
>  except that @var{x} and @var{y} are only evaluated once.
>
> -If an argument is NaN, the other argument is returned.  If both arguments
> -are NaN, NaN is returned.
> +If an argument is a quiet NaN, the other argument is returned.  If both arguments
> +are NaN, or either is a signaling NaN, NaN is returned.
>  @end deftypefun
>
>  @deftypefun double fmax (double @var{x}, double @var{y})
> @@ -2113,8 +2113,58 @@ are NaN, NaN is returned.
>  The @code{fmax} function returns the greater of the two values @var{x}
>  and @var{y}.
>
> -If an argument is NaN, the other argument is returned.  If both arguments
> -are NaN, NaN is returned.
> +If an argument is a quiet NaN, the other argument is returned.  If both arguments
> +are NaN, or either is a signaling NaN, NaN is returned.
> +@end deftypefun
> +
> +@deftypefun double fminimum (double @var{x}, double @var{y})
> +@deftypefunx float fminimumf (float @var{x}, float @var{y})
> +@deftypefunx {long double} fminimuml (long double @var{x}, long double @var{y})
> +@deftypefunx _FloatN fminimumfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
> +@deftypefunx _FloatNx fminimumfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
> +@standards{C2X, math.h}
> +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
> +The @code{fminimum} function returns the lesser of the two values @var{x}
> +and @var{y}.  Unlike @code{fmin}, if either argument is a NaN, NaN is returned.
> +Positive zero is treated as greater than negative zero.
> +@end deftypefun
> +
> +@deftypefun double fmaximum (double @var{x}, double @var{y})
> +@deftypefunx float fmaximumf (float @var{x}, float @var{y})
> +@deftypefunx {long double} fmaximuml (long double @var{x}, long double @var{y})
> +@deftypefunx _FloatN fmaximumfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
> +@deftypefunx _FloatNx fmaximumfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
> +@standards{C2X, math.h}
> +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
> +The @code{fmaximum} function returns the greater of the two values @var{x}
> +and @var{y}.  Unlike @code{fmax}, if either argument is a NaN, NaN is returned.
> +Positive zero is treated as greater than negative zero.
> +@end deftypefun
> +
> +@deftypefun double fminimum_num (double @var{x}, double @var{y})
> +@deftypefunx float fminimum_numf (float @var{x}, float @var{y})
> +@deftypefunx {long double} fminimum_numl (long double @var{x}, long double @var{y})
> +@deftypefunx _FloatN fminimum_numfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
> +@deftypefunx _FloatNx fminimum_numfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
> +@standards{C2X, math.h}
> +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
> +The @code{fminimum_num} function returns the lesser of the two values
> +@var{x} and @var{y}.  If one argument is a number and the other is a
> +NaN, even a signaling NaN, the number is returned.  Positive zero is
> +treated as greater than negative zero.
> +@end deftypefun
> +
> +@deftypefun double fmaximum_num (double @var{x}, double @var{y})
> +@deftypefunx float fmaximum_numf (float @var{x}, float @var{y})
> +@deftypefunx {long double} fmaximum_numl (long double @var{x}, long double @var{y})
> +@deftypefunx _FloatN fmaximum_numfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
> +@deftypefunx _FloatNx fmaximum_numfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
> +@standards{C2X, math.h}
> +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
> +The @code{fmaximum_num} function returns the greater of the two values
> +@var{x} and @var{y}.  If one argument is a number and the other is a
> +NaN, even a signaling NaN, the number is returned.  Positive zero is
> +treated as greater than negative zero.
>  @end deftypefun
>
>  @deftypefun double fminmag (double @var{x}, double @var{y})
> @@ -2147,6 +2197,58 @@ have the same absolute value, or either is NaN, they behave the same
>  as the @code{fmax} functions.
>  @end deftypefun
>
> +@deftypefun double fminimum_mag (double @var{x}, double @var{y})
> +@deftypefunx float fminimum_magf (float @var{x}, float @var{y})
> +@deftypefunx {long double} fminimum_magl (long double @var{x}, long double @var{y})
> +@deftypefunx _FloatN fminimum_magfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
> +@deftypefunx _FloatNx fminimum_magfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
> +@standards{C2X, math.h}
> +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
> +These functions return whichever of the two values @var{x} and @var{y}
> +has the smaller absolute value.  If both have the same absolute value,
> +or either is NaN, they behave the same as the @code{fminimum}
> +functions.
> +@end deftypefun
> +
> +@deftypefun double fmaximum_mag (double @var{x}, double @var{y})
> +@deftypefunx float fmaximum_magf (float @var{x}, float @var{y})
> +@deftypefunx {long double} fmaximum_magl (long double @var{x}, long double @var{y})
> +@deftypefunx _FloatN fmaximum_magfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
> +@deftypefunx _FloatNx fmaximum_magfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
> +@standards{C2X, math.h}
> +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
> +These functions return whichever of the two values @var{x} and @var{y}
> +has the greater absolute value.  If both have the same absolute value,
> +or either is NaN, they behave the same as the @code{fmaximum}
> +functions.
> +@end deftypefun
> +
> +@deftypefun double fminimum_mag_num (double @var{x}, double @var{y})
> +@deftypefunx float fminimum_mag_numf (float @var{x}, float @var{y})
> +@deftypefunx {long double} fminimum_mag_numl (long double @var{x}, long double @var{y})
> +@deftypefunx _FloatN fminimum_mag_numfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
> +@deftypefunx _FloatNx fminimum_mag_numfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
> +@standards{C2X, math.h}
> +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
> +These functions return whichever of the two values @var{x} and @var{y}
> +has the smaller absolute value.  If both have the same absolute value,
> +or either is NaN, they behave the same as the @code{fminimum_num}
> +functions.
> +@end deftypefun
> +
> +@deftypefun double fmaximum_mag_num (double @var{x}, double @var{y})
> +@deftypefunx float fmaximum_mag_numf (float @var{x}, float @var{y})
> +@deftypefunx {long double} fmaximum_mag_numl (long double @var{x}, long double @var{y})
> +@deftypefunx _FloatN fmaximum_mag_numfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
> +@deftypefunx _FloatNx fmaximum_mag_numfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
> +@standards{C2X, math.h}
> +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
> +These functions return whichever of the two values @var{x} and @var{y}
> +has the greater absolute value.  If both have the same absolute value,
> +or either is NaN, they behave the same as the @code{fmaximum_num}
> +functions.
> +@end deftypefun
> +
>  @deftypefun double fdim (double @var{x}, double @var{y})
>  @deftypefunx float fdimf (float @var{x}, float @var{y})
>  @deftypefunx {long double} fdiml (long double @var{x}, long double @var{y})
> diff --git a/math/Makefile b/math/Makefile
> index 8d67bfff7e..af734d41c4 100644
> --- a/math/Makefile
> +++ b/math/Makefile
> @@ -60,7 +60,10 @@ gen-libm-calls = cargF conjF cimagF crealF cabsF e_scalbF s_cacosF	  \
>  		 w_exp2F w_fmodF w_hypotF w_j0F w_j1F w_jnF w_logF	  \
>  		 w_log10F w_log2F w_powF w_remainderF w_scalbF		  \
>  		 w_sinhF w_sqrtF					  \
> -		 w_tgammaF w_lgammaF w_lgammaF_r w_expF e_exp2F
> +		 w_tgammaF w_lgammaF w_lgammaF_r w_expF e_exp2F		  \
> +		 s_fmaximumF s_fmaximum_magF s_fmaximum_numF		  \
> +		 s_fmaximum_mag_numF s_fminimumF s_fminimum_magF	  \
> +		 s_fminimum_numF s_fminimum_mag_numF
>
>  libm-calls =								  \
>  	e_acosF e_acoshF e_asinF e_atan2F e_atanhF e_coshF e_expF e_fmodF \
> @@ -287,9 +290,11 @@ libm-test-funcs-auto = acos acosh asin asinh atan atan2 atanh cabs cacos \
>  		       lgamma log log10 log1p log2 pow sin sincos sinh sqrt \
>  		       tan tanh tgamma y0 y1 yn
>  libm-test-funcs-noauto = canonicalize ceil cimag conj copysign cproj creal \
> -			 fabs fdim floor fmax fmaxmag fmin fminmag fmod \
> -			 fpclassify frexp fromfp fromfpx getpayload ilogb \
> -			 iscanonical iseqsig isfinite isgreater \
> +			 fabs fdim floor fmax fmaximum fmaximum_mag \
> +			 fmaximum_mag_num fmaximum_num fmaxmag fmin fminimum \
> +			 fminimum_mag fminimum_mag_num fminimum_num fminmag \
> +			 fmod fpclassify frexp fromfp fromfpx getpayload \
> +			 ilogb iscanonical iseqsig isfinite isgreater \
>  			 isgreaterequal isinf isless islessequal \
>  			 islessgreater isnan isnormal issignaling issubnormal \
>  			 isunordered iszero llogb llrint llround logb lrint \
> @@ -375,7 +380,9 @@ tgmath3-macros = atan2 cbrt ceil copysign erf erfc exp2 expm1 fdim floor \
>  		 nextafter nexttoward remainder remquo rint round scalbn \
>  		 scalbln tgamma trunc acos asin atan acosh asinh atanh cos \
>  		 sin tan cosh sinh tanh exp log pow sqrt fabs carg cimag conj \
> -		 cproj creal roundeven nextup nextdown fminmag fmaxmag llogb \
> +		 cproj creal roundeven nextup nextdown fminmag fmaxmag \
> +		 fmaximum fmaximum_mag fmaximum_num fmaximum_mag_num \
> +		 fminimum fminimum_mag fminimum_num fminimum_mag_num llogb \
>  		 fromfp fromfpx ufromfp ufromfpx scalb $(tgmath3-narrow-macros)
>  tgmath3-macro-tests = $(addprefix test-tgmath3-,$(tgmath3-macros))
>  tests += $(tgmath3-macro-tests)
> @@ -682,8 +689,16 @@ CFLAGS-s_finite.c += -fno-builtin-finitel
>  CFLAGS-s_floor.c += -fno-builtin-floorl
>  CFLAGS-s_fma.c += -fno-builtin-fmal
>  CFLAGS-s_fmax.c += -fno-builtin-fmaxl
> +CFLAGS-s_fmaximum.c += -fno-builtin-fmaximuml
> +CFLAGS-s_fmaximum_mag.c += -fno-builtin-fmaximum_magl
> +CFLAGS-s_fmaximum_mag_num.c += -fno-builtin-fmaximum_mag_numl
> +CFLAGS-s_fmaximum_num.c += -fno-builtin-fmaximum_numl
>  CFLAGS-s_fmaxmag.c += -fno-builtin-fmaxmagl
>  CFLAGS-s_fmin.c += -fno-builtin-fminl
> +CFLAGS-s_fminimum.c += -fno-builtin-fminimuml
> +CFLAGS-s_fminimum_mag.c += -fno-builtin-fminimum_magl
> +CFLAGS-s_fminimum_mag_num.c += -fno-builtin-fminimum_mag_numl
> +CFLAGS-s_fminimum_num.c += -fno-builtin-fminimum_numl
>  CFLAGS-s_fminmag.c += -fno-builtin-fminmagl
>  CFLAGS-w_fmod.c += -fno-builtin-fmodl
>  CFLAGS-s_fmul.c += -fno-builtin-fmull
> diff --git a/math/Versions b/math/Versions
> index 1a25b2ce9a..a4b5405ddc 100644
> --- a/math/Versions
> +++ b/math/Versions
> @@ -599,6 +599,20 @@ libm {
>      f32fmaf32x; f32fmaf64; f32xfmaf64;
>      fsqrt; fsqrtl; dsqrtl;
>      f32sqrtf32x; f32sqrtf64; f32xsqrtf64;
> +    fmaximum; fmaximumf; fmaximuml; fmaximumf32; fmaximumf64; fmaximumf32x;
> +    fmaximum_num; fmaximum_numf; fmaximum_numl;
> +    fmaximum_numf32; fmaximum_numf64; fmaximum_numf32x;
> +    fmaximum_mag; fmaximum_magf; fmaximum_magl;
> +    fmaximum_magf32; fmaximum_magf64; fmaximum_magf32x;
> +    fmaximum_mag_num; fmaximum_mag_numf; fmaximum_mag_numl;
> +    fmaximum_mag_numf32; fmaximum_mag_numf64; fmaximum_mag_numf32x;
> +    fminimum; fminimumf; fminimuml; fminimumf32; fminimumf64; fminimumf32x;
> +    fminimum_num; fminimum_numf; fminimum_numl;
> +    fminimum_numf32; fminimum_numf64; fminimum_numf32x;
> +    fminimum_mag; fminimum_magf; fminimum_magl;
> +    fminimum_magf32; fminimum_magf64; fminimum_magf32x;
> +    fminimum_mag_num; fminimum_mag_numf; fminimum_mag_numl;
> +    fminimum_mag_numf32; fminimum_mag_numf64; fminimum_mag_numf32x;
>      # Functions involving _Float64x or _Float128, for some configurations.
>      f32fmaf64x; f32fmaf128;
>      f32xfmaf64x; f32xfmaf128; f64fmaf64x; f64fmaf128;
> @@ -606,5 +620,13 @@ libm {
>      f32sqrtf64x; f32sqrtf128;
>      f32xsqrtf64x; f32xsqrtf128; f64sqrtf64x; f64sqrtf128;
>      f64xsqrtf128;
> +    fmaximumf64x; fmaximumf128;
> +    fmaximum_numf64x; fmaximum_numf128;
> +    fmaximum_magf64x; fmaximum_magf128;
> +    fmaximum_mag_numf64x; fmaximum_mag_numf128;
> +    fminimumf64x; fminimumf128;
> +    fminimum_numf64x; fminimum_numf128;
> +    fminimum_magf64x; fminimum_magf128;
> +    fminimum_mag_numf64x; fminimum_mag_numf128;
>    }
>  }
> diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
> index dc145b4bcf..ee0c6d7219 100644
> --- a/math/bits/mathcalls.h
> +++ b/math/bits/mathcalls.h
> @@ -378,6 +378,32 @@ __MATHCALLX (fmaxmag,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
>  __MATHCALLX (fminmag,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
>  #endif
>
> +#if __GLIBC_USE (ISOC2X)
> +/* Return maximum value from X and Y.  */
> +__MATHCALLX (fmaximum,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
> +
> +/* Return minimum value from X and Y.  */
> +__MATHCALLX (fminimum,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
> +
> +/* Return maximum numeric value from X and Y.  */
> +__MATHCALLX (fmaximum_num,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
> +
> +/* Return minimum numeric value from X and Y.  */
> +__MATHCALLX (fminimum_num,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
> +
> +/* Return value with maximum magnitude.  */
> +__MATHCALLX (fmaximum_mag,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
> +
> +/* Return value with minimum magnitude.  */
> +__MATHCALLX (fminimum_mag,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
> +
> +/* Return numeric value with maximum magnitude.  */
> +__MATHCALLX (fmaximum_mag_num,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
> +
> +/* Return numeric value with minimum magnitude.  */
> +__MATHCALLX (fminimum_mag_num,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
> +#endif
> +
>  #if __GLIBC_USE (IEC_60559_EXT) || __MATH_DECLARING_FLOATN
>  /* Total order operation.  */
>  __MATHDECL_1 (int, totalorder,, (const _Mdouble_ *__x,
> diff --git a/math/gen-tgmath-tests.py b/math/gen-tgmath-tests.py
> index 6d32a4b6e4..d433b484b8 100755
> --- a/math/gen-tgmath-tests.py
> +++ b/math/gen-tgmath-tests.py
> @@ -707,6 +707,15 @@ class Tests(object):
>                                  ('_Float32x', 'f32x'),
>                                  ('_Float64x', 'f64x')):
>                  self.add_tests(prefix + fn, ret, ['r'] * args)
> +        # C2X functions.
> +        self.add_tests('fmaximum', 'r', ['r', 'r'])
> +        self.add_tests('fmaximum_mag', 'r', ['r', 'r'])
> +        self.add_tests('fmaximum_num', 'r', ['r', 'r'])
> +        self.add_tests('fmaximum_mag_num', 'r', ['r', 'r'])
> +        self.add_tests('fminimum', 'r', ['r', 'r'])
> +        self.add_tests('fminimum_mag', 'r', ['r', 'r'])
> +        self.add_tests('fminimum_num', 'r', ['r', 'r'])
> +        self.add_tests('fminimum_mag_num', 'r', ['r', 'r'])
>          # Miscellaneous functions.
>          self.add_tests('scalb', 's', ['s', 's'])
>
> diff --git a/math/libm-test-fmaximum.inc b/math/libm-test-fmaximum.inc
> new file mode 100644
> index 0000000000..72e12c4dfa
> --- /dev/null
> +++ b/math/libm-test-fmaximum.inc
> @@ -0,0 +1,130 @@
> +/* Test fmaximum.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "libm-test-driver.c"
> +
> +static const struct test_ff_f_data fmaximum_test_data[] =
> +  {
> +    TEST_ff_f (fmaximum, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, 0, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, minus_zero, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, min_subnorm_value, -min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, min_value, -min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, max_value, -max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, 9, 0, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, 0, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, 0, -9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum, minus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, minus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, 9, minus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -9, minus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, 0, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, minus_zero, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, minus_zero, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, 9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, 0, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, 0, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, minus_zero, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, minus_zero, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, 9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, 9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, plus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, minus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, plus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, plus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, minus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, minus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +  };
> +
> +static void
> +fmaximum_test (void)
> +{
> +  ALL_RM_TEST (fmaximum, 1, fmaximum_test_data, RUN_TEST_LOOP_ff_f, END);
> +}
> +
> +static void
> +do_test (void)
> +{
> +  fmaximum_test ();
> +}
> +
> +/*
> + * Local Variables:
> + * mode:c
> + * End:
> + */
> diff --git a/math/libm-test-fmaximum_mag.inc b/math/libm-test-fmaximum_mag.inc
> new file mode 100644
> index 0000000000..556188fada
> --- /dev/null
> +++ b/math/libm-test-fmaximum_mag.inc
> @@ -0,0 +1,144 @@
> +/* Test fmaximum_mag.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "libm-test-driver.c"
> +
> +static const struct test_ff_f_data fmaximum_mag_test_data[] =
> +  {
> +    TEST_ff_f (fmaximum_mag, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, 0, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, minus_zero, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, min_subnorm_value, -min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, min_value, -min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, max_value, -max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, max_value, min_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, max_value, -min_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -max_value, min_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -max_value, -min_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, min_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, min_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -min_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -min_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, 9, 0, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, 0, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -9, 0, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, 0, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum_mag, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum_mag, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum_mag, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, 0, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, minus_zero, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, minus_zero, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, 9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, 0, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, 0, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, minus_zero, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, minus_zero, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, 9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, 9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, plus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, minus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, plus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, plus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, minus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, minus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +  };
> +
> +static void
> +fmaximum_mag_test (void)
> +{
> +  ALL_RM_TEST (fmaximum_mag, 1, fmaximum_mag_test_data, RUN_TEST_LOOP_ff_f, END);
> +}
> +
> +static void
> +do_test (void)
> +{
> +  fmaximum_mag_test ();
> +}
> +
> +/*
> + * Local Variables:
> + * mode:c
> + * End:
> + */
> diff --git a/math/libm-test-fmaximum_mag_num.inc b/math/libm-test-fmaximum_mag_num.inc
> new file mode 100644
> index 0000000000..75cc46484a
> --- /dev/null
> +++ b/math/libm-test-fmaximum_mag_num.inc
> @@ -0,0 +1,144 @@
> +/* Test fmaximum_mag_num.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "libm-test-driver.c"
> +
> +static const struct test_ff_f_data fmaximum_mag_num_test_data[] =
> +  {
> +    TEST_ff_f (fmaximum_mag_num, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, 0, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, minus_zero, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, min_subnorm_value, -min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, min_value, -min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, max_value, -max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, max_value, min_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, max_value, -min_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -max_value, min_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -max_value, -min_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, min_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, min_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -min_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -min_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, 9, 0, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, 0, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -9, 0, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, 0, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum_mag_num, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum_mag_num, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum_mag_num, 0, qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, 0, -qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, minus_zero, qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, minus_zero, -qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, 9, qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, 9, -qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -9, qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -9, -qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, 0, snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, 0, -snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, minus_zero, snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, minus_zero, -snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, 9, snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, 9, -snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -9, snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -9, -snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, plus_infty, -qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, minus_infty, -qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, plus_infty, snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, plus_infty, -snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, minus_infty, snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, minus_infty, -snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_mag_num, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_mag_num, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +  };
> +
> +static void
> +fmaximum_mag_num_test (void)
> +{
> +  ALL_RM_TEST (fmaximum_mag_num, 1, fmaximum_mag_num_test_data, RUN_TEST_LOOP_ff_f, END);
> +}
> +
> +static void
> +do_test (void)
> +{
> +  fmaximum_mag_num_test ();
> +}
> +
> +/*
> + * Local Variables:
> + * mode:c
> + * End:
> + */
> diff --git a/math/libm-test-fmaximum_num.inc b/math/libm-test-fmaximum_num.inc
> new file mode 100644
> index 0000000000..948be9ada2
> --- /dev/null
> +++ b/math/libm-test-fmaximum_num.inc
> @@ -0,0 +1,130 @@
> +/* Test fmaximum_num.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "libm-test-driver.c"
> +
> +static const struct test_ff_f_data fmaximum_num_test_data[] =
> +  {
> +    TEST_ff_f (fmaximum_num, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, 0, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, minus_zero, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, min_subnorm_value, -min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, min_value, -min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, max_value, -max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, 9, 0, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, 0, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, 0, -9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum_num, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum_num, minus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, minus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, 9, minus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -9, minus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fmaximum_num, 0, qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, 0, -qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, minus_zero, qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, minus_zero, -qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, 9, qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, 9, -qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -9, qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -9, -qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, 0, snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, 0, -snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, minus_zero, snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, minus_zero, -snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, 9, snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, 9, -snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -9, snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -9, -snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, plus_infty, -qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, minus_infty, -qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, plus_infty, snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, plus_infty, -snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, minus_infty, snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, minus_infty, -snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fmaximum_num, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fmaximum_num, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +  };
> +
> +static void
> +fmaximum_num_test (void)
> +{
> +  ALL_RM_TEST (fmaximum_num, 1, fmaximum_num_test_data, RUN_TEST_LOOP_ff_f, END);
> +}
> +
> +static void
> +do_test (void)
> +{
> +  fmaximum_num_test ();
> +}
> +
> +/*
> + * Local Variables:
> + * mode:c
> + * End:
> + */
> diff --git a/math/libm-test-fminimum.inc b/math/libm-test-fminimum.inc
> new file mode 100644
> index 0000000000..ff37fb115e
> --- /dev/null
> +++ b/math/libm-test-fminimum.inc
> @@ -0,0 +1,129 @@
> +/* Test fminimum.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "libm-test-driver.c"
> +
> +static const struct test_ff_f_data fminimum_test_data[] =
> +  {
> +    TEST_ff_f (fminimum, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -min_subnorm_value, min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -min_value, min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -max_value, max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, 9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, 0, 9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -9, 0, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, 0, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fminimum, plus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, 9, plus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, plus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -9, plus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fminimum, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, 0, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, minus_zero, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, minus_zero, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, 9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, 0, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, 0, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, minus_zero, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, minus_zero, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, 9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, 9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, plus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, minus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, plus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, plus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, minus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, minus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +  };
> +
> +static void
> +fminimum_test (void)
> +{
> +  ALL_RM_TEST (fminimum, 1, fminimum_test_data, RUN_TEST_LOOP_ff_f, END);
> +}
> +
> +static void
> +do_test (void)
> +{
> +  fminimum_test ();
> +}
> +
> +/*
> + * Local Variables:
> + * mode:c
> + * End:
> + */
> diff --git a/math/libm-test-fminimum_mag.inc b/math/libm-test-fminimum_mag.inc
> new file mode 100644
> index 0000000000..b3e85b38ef
> --- /dev/null
> +++ b/math/libm-test-fminimum_mag.inc
> @@ -0,0 +1,143 @@
> +/* Test fminimum_mag.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "libm-test-driver.c"
> +
> +static const struct test_ff_f_data fminimum_mag_test_data[] =
> +  {
> +    TEST_ff_f (fminimum_mag, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -min_subnorm_value, min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -min_value, min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -max_value, max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, max_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, max_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -max_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -max_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, min_value, max_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, min_value, -max_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -min_value, max_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -min_value, -max_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, 9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, 0, 9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, 0, -9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fminimum_mag, plus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, 9, plus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, plus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -9, plus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, minus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, minus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, 9, minus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -9, minus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fminimum_mag, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, 0, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, minus_zero, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, minus_zero, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, 9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, 0, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, 0, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, minus_zero, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, minus_zero, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, 9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, 9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, plus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, minus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, plus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, plus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, minus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, minus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +  };
> +
> +static void
> +fminimum_mag_test (void)
> +{
> +  ALL_RM_TEST (fminimum_mag, 1, fminimum_mag_test_data, RUN_TEST_LOOP_ff_f, END);
> +}
> +
> +static void
> +do_test (void)
> +{
> +  fminimum_mag_test ();
> +}
> +
> +/*
> + * Local Variables:
> + * mode:c
> + * End:
> + */
> diff --git a/math/libm-test-fminimum_mag_num.inc b/math/libm-test-fminimum_mag_num.inc
> new file mode 100644
> index 0000000000..f9e824c4cd
> --- /dev/null
> +++ b/math/libm-test-fminimum_mag_num.inc
> @@ -0,0 +1,143 @@
> +/* Test fminimum_mag_num.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "libm-test-driver.c"
> +
> +static const struct test_ff_f_data fminimum_mag_num_test_data[] =
> +  {
> +    TEST_ff_f (fminimum_mag_num, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -min_subnorm_value, min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -min_value, min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -max_value, max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, max_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, max_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -max_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -max_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, min_value, max_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, min_value, -max_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -min_value, max_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -min_value, -max_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, 9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, 0, 9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, 0, -9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fminimum_mag_num, plus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, 9, plus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, plus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -9, plus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, minus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, minus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, 9, minus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -9, minus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fminimum_mag_num, 0, qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, 0, -qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, minus_zero, qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, minus_zero, -qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, 9, qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, 9, -qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -9, qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -9, -qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, 0, snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, 0, -snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, minus_zero, snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, minus_zero, -snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, 9, snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, 9, -snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -9, snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -9, -snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, plus_infty, -qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, minus_infty, -qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, plus_infty, snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, plus_infty, -snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, minus_infty, snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, minus_infty, -snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_mag_num, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_mag_num, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +  };
> +
> +static void
> +fminimum_mag_num_test (void)
> +{
> +  ALL_RM_TEST (fminimum_mag_num, 1, fminimum_mag_num_test_data, RUN_TEST_LOOP_ff_f, END);
> +}
> +
> +static void
> +do_test (void)
> +{
> +  fminimum_mag_num_test ();
> +}
> +
> +/*
> + * Local Variables:
> + * mode:c
> + * End:
> + */
> diff --git a/math/libm-test-fminimum_num.inc b/math/libm-test-fminimum_num.inc
> new file mode 100644
> index 0000000000..74c4df234c
> --- /dev/null
> +++ b/math/libm-test-fminimum_num.inc
> @@ -0,0 +1,129 @@
> +/* Test fminimum_num.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "libm-test-driver.c"
> +
> +static const struct test_ff_f_data fminimum_num_test_data[] =
> +  {
> +    TEST_ff_f (fminimum_num, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -min_subnorm_value, min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -min_value, min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -max_value, max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, 9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, 0, 9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -9, 0, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, 0, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fminimum_num, plus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, 9, plus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, plus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -9, plus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +
> +    TEST_ff_f (fminimum_num, 0, qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, 0, -qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, minus_zero, qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, minus_zero, -qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, 9, qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, 9, -qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -9, qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -9, -qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, 0, snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, 0, -snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, minus_zero, snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, minus_zero, -snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, 9, snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, 9, -snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -9, snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -9, -snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, plus_infty, -qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, minus_infty, -qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, plus_infty, snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, plus_infty, -snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, minus_infty, snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, minus_infty, -snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
> +    TEST_ff_f (fminimum_num, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +    TEST_ff_f (fminimum_num, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
> +  };
> +
> +static void
> +fminimum_num_test (void)
> +{
> +  ALL_RM_TEST (fminimum_num, 1, fminimum_num_test_data, RUN_TEST_LOOP_ff_f, END);
> +}
> +
> +static void
> +do_test (void)
> +{
> +  fminimum_num_test ();
> +}
> +
> +/*
> + * Local Variables:
> + * mode:c
> + * End:
> + */
> diff --git a/math/s_fmaximum_mag_num_template.c b/math/s_fmaximum_mag_num_template.c
> new file mode 100644
> index 0000000000..5c9cef21fd
> --- /dev/null
> +++ b/math/s_fmaximum_mag_num_template.c
> @@ -0,0 +1,35 @@
> +/* Return number with maximum magnitude.
> +   Copyright (C) 2016-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <math.h>
> +
> +FLOAT
> +M_DECL_FUNC (__fmaximum_mag_num) (FLOAT x, FLOAT y)
> +{
> +  FLOAT ax = M_FABS (x);
> +  FLOAT ay = M_FABS (y);
> +  if (isgreater (ax, ay))
> +    return x;
> +  else if (isless (ax, ay))
> +    return y;
> +  else if (ax == ay)
> +    return (M_COPYSIGN (1, x) >= M_COPYSIGN (1, y) ? x : y);
> +  else
> +    return isnan (y) ? (isnan (x) ? x + y : x) : y;
> +}
> +declare_mgen_alias (__fmaximum_mag_num, fmaximum_mag_num);
> diff --git a/math/s_fmaximum_mag_template.c b/math/s_fmaximum_mag_template.c
> new file mode 100644
> index 0000000000..7e9a020344
> --- /dev/null
> +++ b/math/s_fmaximum_mag_template.c
> @@ -0,0 +1,35 @@
> +/* Return value with maximum magnitude.
> +   Copyright (C) 2016-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <math.h>
> +
> +FLOAT
> +M_DECL_FUNC (__fmaximum_mag) (FLOAT x, FLOAT y)
> +{
> +  FLOAT ax = M_FABS (x);
> +  FLOAT ay = M_FABS (y);
> +  if (isgreater (ax, ay))
> +    return x;
> +  else if (isless (ax, ay))
> +    return y;
> +  else if (ax == ay)
> +    return (M_COPYSIGN (1, x) >= M_COPYSIGN (1, y) ? x : y);
> +  else
> +    return x + y;
> +}
> +declare_mgen_alias (__fmaximum_mag, fmaximum_mag);
> diff --git a/math/s_fmaximum_num_template.c b/math/s_fmaximum_num_template.c
> new file mode 100644
> index 0000000000..ce0042fd5c
> --- /dev/null
> +++ b/math/s_fmaximum_num_template.c
> @@ -0,0 +1,33 @@
> +/* Return maximum number of X and Y.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <math.h>
> +
> +FLOAT
> +M_DECL_FUNC (__fmaximum_num) (FLOAT x, FLOAT y)
> +{
> +  if (isgreater (x, y))
> +    return x;
> +  else if (isless (x, y))
> +    return y;
> +  else if (x == y)
> +    return (M_COPYSIGN (1, x) >= M_COPYSIGN (1, y) ? x : y);
> +  else
> +    return isnan (y) ? (isnan (x) ? x + y : x) : y;
> +}
> +declare_mgen_alias (__fmaximum_num, fmaximum_num);
> diff --git a/math/s_fmaximum_template.c b/math/s_fmaximum_template.c
> new file mode 100644
> index 0000000000..e49c5d3c0f
> --- /dev/null
> +++ b/math/s_fmaximum_template.c
> @@ -0,0 +1,33 @@
> +/* Return maximum of X and Y.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <math.h>
> +
> +FLOAT
> +M_DECL_FUNC (__fmaximum) (FLOAT x, FLOAT y)
> +{
> +  if (isgreater (x, y))
> +    return x;
> +  else if (isless (x, y))
> +    return y;
> +  else if (x == y)
> +    return (M_COPYSIGN (1, x) >= M_COPYSIGN (1, y) ? x : y);
> +  else
> +    return x + y;
> +}
> +declare_mgen_alias (__fmaximum, fmaximum);
> diff --git a/math/s_fminimum_mag_num_template.c b/math/s_fminimum_mag_num_template.c
> new file mode 100644
> index 0000000000..f2dc3821ba
> --- /dev/null
> +++ b/math/s_fminimum_mag_num_template.c
> @@ -0,0 +1,35 @@
> +/* Return number with minimum magnitude.
> +   Copyright (C) 2016-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <math.h>
> +
> +FLOAT
> +M_DECL_FUNC (__fminimum_mag_num) (FLOAT x, FLOAT y)
> +{
> +  FLOAT ax = M_FABS (x);
> +  FLOAT ay = M_FABS (y);
> +  if (isless (ax, ay))
> +    return x;
> +  else if (isgreater (ax, ay))
> +    return y;
> +  else if (ax == ay)
> +    return (M_COPYSIGN (1, x) <= M_COPYSIGN (1, y) ? x : y);
> +  else
> +    return isnan (y) ? (isnan (x) ? x + y : x) : y;
> +}
> +declare_mgen_alias (__fminimum_mag_num, fminimum_mag_num);
> diff --git a/math/s_fminimum_mag_template.c b/math/s_fminimum_mag_template.c
> new file mode 100644
> index 0000000000..4a35596ba1
> --- /dev/null
> +++ b/math/s_fminimum_mag_template.c
> @@ -0,0 +1,35 @@
> +/* Return value with minimum magnitude.
> +   Copyright (C) 2016-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <math.h>
> +
> +FLOAT
> +M_DECL_FUNC (__fminimum_mag) (FLOAT x, FLOAT y)
> +{
> +  FLOAT ax = M_FABS (x);
> +  FLOAT ay = M_FABS (y);
> +  if (isless (ax, ay))
> +    return x;
> +  else if (isgreater (ax, ay))
> +    return y;
> +  else if (ax == ay)
> +    return (M_COPYSIGN (1, x) <= M_COPYSIGN (1, y) ? x : y);
> +  else
> +    return x + y;
> +}
> +declare_mgen_alias (__fminimum_mag, fminimum_mag);
> diff --git a/math/s_fminimum_num_template.c b/math/s_fminimum_num_template.c
> new file mode 100644
> index 0000000000..cdc245da32
> --- /dev/null
> +++ b/math/s_fminimum_num_template.c
> @@ -0,0 +1,33 @@
> +/* Return minimum number of X and Y.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <math.h>
> +
> +FLOAT
> +M_DECL_FUNC (__fminimum_num) (FLOAT x, FLOAT y)
> +{
> +  if (isless (x, y))
> +    return x;
> +  else if (isgreater (x, y))
> +    return y;
> +  else if (x == y)
> +    return (M_COPYSIGN (1, x) <= M_COPYSIGN (1, y) ? x : y);
> +  else
> +    return isnan (y) ? (isnan (x) ? x + y : x) : y;
> +}
> +declare_mgen_alias (__fminimum_num, fminimum_num);
> diff --git a/math/s_fminimum_template.c b/math/s_fminimum_template.c
> new file mode 100644
> index 0000000000..9da7beb674
> --- /dev/null
> +++ b/math/s_fminimum_template.c
> @@ -0,0 +1,33 @@
> +/* Return minimum of X and Y.
> +   Copyright (C) 1997-2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <math.h>
> +
> +FLOAT
> +M_DECL_FUNC (__fminimum) (FLOAT x, FLOAT y)
> +{
> +  if (isless (x, y))
> +    return x;
> +  else if (isgreater (x, y))
> +    return y;
> +  else if (x == y)
> +    return (M_COPYSIGN (1, x) <= M_COPYSIGN (1, y) ? x : y);
> +  else
> +    return x + y;
> +}
> +declare_mgen_alias (__fminimum, fminimum);
> diff --git a/math/test-tgmath.c b/math/test-tgmath.c
> index 6ec7760c62..f9b5fc640f 100644
> --- a/math/test-tgmath.c
> +++ b/math/test-tgmath.c
> @@ -48,7 +48,7 @@ volatile int count_cdouble;
>  volatile int count_cfloat;
>  volatile int count_cldouble;
>
> -#define NCALLS     132
> +#define NCALLS     156
>  #define NCALLS_INT 4
>  #define NCCALLS    47
>
> @@ -290,6 +290,14 @@ F(compile_test) (void)
>    a = fmin (fmin (x, a), fmin (c, b));
>    b = fmaxmag (fmaxmag (a, x), fmaxmag (c, b));
>    a = fminmag (fminmag (x, a), fminmag (c, b));
> +  b = fmaximum (fmaximum (a, x), fmaximum (c, b));
> +  a = fminimum (fminimum (x, a), fminimum (c, b));
> +  b = fmaximum_num (fmaximum_num (a, x), fmaximum_num (c, b));
> +  a = fminimum_num (fminimum_num (x, a), fminimum_num (c, b));
> +  b = fmaximum_mag (fmaximum_mag (a, x), fmaximum_mag (c, b));
> +  a = fminimum_mag (fminimum_mag (x, a), fminimum_mag (c, b));
> +  b = fmaximum_mag_num (fmaximum_mag_num (a, x), fmaximum_mag_num (c, b));
> +  a = fminimum_mag_num (fminimum_mag_num (x, a), fminimum_mag_num (c, b));
>    b = fma (sin (a), sin (x), sin (c));
>
>  #ifdef TEST_INT
> @@ -393,6 +401,14 @@ F(compile_test) (void)
>        a = fmin (y, y);
>        a = fmaxmag (y, y);
>        a = fminmag (y, y);
> +      a = fmaximum (y, y);
> +      a = fminimum (y, y);
> +      a = fmaximum_num (y, y);
> +      a = fminimum_num (y, y);
> +      a = fmaximum_mag (y, y);
> +      a = fminimum_mag (y, y);
> +      a = fmaximum_mag_num (y, y);
> +      a = fminimum_mag_num (y, y);
>        a = fma (y, y, y);
>
>  #ifdef TEST_INT
> @@ -943,6 +959,70 @@ TYPE
>    return x + y;
>  }
>
> +TYPE
> +(F(fminimum)) (TYPE x, TYPE y)
> +{
> +  ++count;
> +  P ();
> +  return x + y;
> +}
> +
> +TYPE
> +(F(fmaximum)) (TYPE x, TYPE y)
> +{
> +  ++count;
> +  P ();
> +  return x + y;
> +}
> +
> +TYPE
> +(F(fminimum_num)) (TYPE x, TYPE y)
> +{
> +  ++count;
> +  P ();
> +  return x + y;
> +}
> +
> +TYPE
> +(F(fmaximum_num)) (TYPE x, TYPE y)
> +{
> +  ++count;
> +  P ();
> +  return x + y;
> +}
> +
> +TYPE
> +(F(fminimum_mag)) (TYPE x, TYPE y)
> +{
> +  ++count;
> +  P ();
> +  return x + y;
> +}
> +
> +TYPE
> +(F(fmaximum_mag)) (TYPE x, TYPE y)
> +{
> +  ++count;
> +  P ();
> +  return x + y;
> +}
> +
> +TYPE
> +(F(fminimum_mag_num)) (TYPE x, TYPE y)
> +{
> +  ++count;
> +  P ();
> +  return x + y;
> +}
> +
> +TYPE
> +(F(fmaximum_mag_num)) (TYPE x, TYPE y)
> +{
> +  ++count;
> +  P ();
> +  return x + y;
> +}
> +
>  TYPE
>  (F(fma)) (TYPE x, TYPE y, TYPE z)
>  {
> diff --git a/math/tgmath.h b/math/tgmath.h
> index 5fdc7982b2..9868353c46 100644
> --- a/math/tgmath.h
> +++ b/math/tgmath.h
> @@ -929,6 +929,38 @@
>  # define fminmag(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fminmag)
>  #endif
>
> +#if __GLIBC_USE (ISOC2X)
> +/* Return maximum value from X and Y.  */
> +# define fmaximum(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmaximum)
> +
> +/* Return minimum value from X and Y.  */
> +# define fminimum(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fminimum)
> +
> +/* Return maximum numeric value from X and Y.  */
> +# define fmaximum_num(Val1, Val2)			\
> +  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmaximum_num)
> +
> +/* Return minimum numeric value from X and Y.  */
> +# define fminimum_num(Val1, Val2)			\
> +  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fminimum_num)
> +
> +/* Return value with maximum magnitude.  */
> +# define fmaximum_mag(Val1, Val2)			\
> +  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmaximum_mag)
> +
> +/* Return value with minimum magnitude.  */
> +# define fminimum_mag(Val1, Val2)			\
> +  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fminimum_mag)
> +
> +/* Return numeric value with maximum magnitude.  */
> +# define fmaximum_mag_num(Val1, Val2)				\
> +  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmaximum_mag_num)
> +
> +/* Return numeric value with minimum magnitude.  */
> +# define fminimum_mag_num(Val1, Val2)				\
> +  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fminimum_mag_num)
> +#endif
> +
>
>  /* Absolute value, conjugates, and projection.  */
>
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
> index 03a66134c4..d4ffd3762b 100644
> --- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions
> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
> @@ -128,6 +128,14 @@ libm {
>      __f64fmaieee128;
>      __f32sqrtieee128;
>      __f64sqrtieee128;
> +    __fmaximumieee128;
> +    __fmaximum_numieee128;
> +    __fmaximum_magieee128;
> +    __fmaximum_mag_numieee128;
> +    __fminimumieee128;
> +    __fminimum_numieee128;
> +    __fminimum_magieee128;
> +    __fminimum_mag_numieee128;
>    }
>  }
>  libc {
> diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
> index 6b21680033..1d01846476 100644
> --- a/sysdeps/ieee754/ldbl-opt/Makefile
> +++ b/sysdeps/ieee754/ldbl-opt/Makefile
> @@ -45,7 +45,9 @@ libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
>  		 nextup nextdown totalorder totalordermag getpayload \
>  		 canonicalize setpayload setpayloadsig llogb fmaxmag fminmag \
>  		 roundeven fromfp ufromfp fromfpx ufromfpx fadd dadd \
> -		 fdiv ddiv ffma dfma fmul dmul fsqrt dsqrt fsub dsub
> +		 fdiv ddiv ffma dfma fmul dmul fsqrt dsqrt fsub dsub \
> +		 fmaximum fmaximum_mag fmaximum_num fmaximum_mag_num \
> +		 fminimum fminimum_mag fminimum_num fminimum_mag_num
>  libnldbl-routines = $(libnldbl-calls:%=nldbl-%)
>  libnldbl-inhibit-o = $(object-suffixes)
>  libnldbl-static-only-routines = $(libnldbl-routines)
> @@ -108,8 +110,16 @@ CFLAGS-nldbl-finite.c = -fno-builtin-finitel
>  CFLAGS-nldbl-floor.c = -fno-builtin-floorl
>  CFLAGS-nldbl-fma.c = -fno-builtin-fmal
>  CFLAGS-nldbl-fmax.c = -fno-builtin-fmaxl
> +CFLAGS-nldbl-fmaximum.c += -fno-builtin-fmaximuml
> +CFLAGS-nldbl-fmaximum_mag.c += -fno-builtin-fmaximum_magl
> +CFLAGS-nldbl-fmaximum_mag_num.c += -fno-builtin-fmaximum_mag_numl
> +CFLAGS-nldbl-fmaximum_num.c += -fno-builtin-fmaximum_numl
>  CFLAGS-nldbl-fmaxmag.c = -fno-builtin-fmaxmagl
>  CFLAGS-nldbl-fmin.c = -fno-builtin-fminl
> +CFLAGS-nldbl-fminimum.c += -fno-builtin-fminimuml
> +CFLAGS-nldbl-fminimum_mag.c += -fno-builtin-fminimum_magl
> +CFLAGS-nldbl-fminimum_mag_num.c += -fno-builtin-fminimum_mag_numl
> +CFLAGS-nldbl-fminimum_num.c += -fno-builtin-fminimum_numl
>  CFLAGS-nldbl-fminmag.c = -fno-builtin-fminmagl
>  CFLAGS-nldbl-fmod.c = -fno-builtin-fmodl
>  CFLAGS-nldbl-fmul.c = -fno-builtin-fmull
> diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum.c b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum.c
> new file mode 100644
> index 0000000000..f26de00184
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum.c
> @@ -0,0 +1,26 @@
> +/* Compatibility routine for IEEE double as long double for fmaximum.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "nldbl-compat.h"
> +
> +double
> +attribute_hidden
> +fmaximuml (double x, double y)
> +{
> +  return fmaximum (x, y);
> +}
> diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag.c b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag.c
> new file mode 100644
> index 0000000000..5c6f9e6fbb
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag.c
> @@ -0,0 +1,26 @@
> +/* Compatibility routine for IEEE double as long double for fmaximum_mag.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "nldbl-compat.h"
> +
> +double
> +attribute_hidden
> +fmaximum_magl (double x, double y)
> +{
> +  return fmaximum_mag (x, y);
> +}
> diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag_num.c b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag_num.c
> new file mode 100644
> index 0000000000..66c84e3ec0
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag_num.c
> @@ -0,0 +1,26 @@
> +/* Compatibility routine for IEEE double as long double for fmaximum_mag_num.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "nldbl-compat.h"
> +
> +double
> +attribute_hidden
> +fmaximum_mag_numl (double x, double y)
> +{
> +  return fmaximum_mag_num (x, y);
> +}
> diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_num.c b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_num.c
> new file mode 100644
> index 0000000000..72fba4a477
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_num.c
> @@ -0,0 +1,26 @@
> +/* Compatibility routine for IEEE double as long double for fmaximum_num.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "nldbl-compat.h"
> +
> +double
> +attribute_hidden
> +fmaximum_numl (double x, double y)
> +{
> +  return fmaximum_num (x, y);
> +}
> diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fminimum.c b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum.c
> new file mode 100644
> index 0000000000..9247a814fe
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum.c
> @@ -0,0 +1,26 @@
> +/* Compatibility routine for IEEE double as long double for fminimum.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "nldbl-compat.h"
> +
> +double
> +attribute_hidden
> +fminimuml (double x, double y)
> +{
> +  return fminimum (x, y);
> +}
> diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag.c b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag.c
> new file mode 100644
> index 0000000000..175f6d7d92
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag.c
> @@ -0,0 +1,26 @@
> +/* Compatibility routine for IEEE double as long double for fminimum_mag.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "nldbl-compat.h"
> +
> +double
> +attribute_hidden
> +fminimum_magl (double x, double y)
> +{
> +  return fminimum_mag (x, y);
> +}
> diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag_num.c b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag_num.c
> new file mode 100644
> index 0000000000..b37b4a5e68
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag_num.c
> @@ -0,0 +1,26 @@
> +/* Compatibility routine for IEEE double as long double for fminimum_mag_num.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "nldbl-compat.h"
> +
> +double
> +attribute_hidden
> +fminimum_mag_numl (double x, double y)
> +{
> +  return fminimum_mag_num (x, y);
> +}
> diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_num.c b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_num.c
> new file mode 100644
> index 0000000000..2cbd5a8188
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_num.c
> @@ -0,0 +1,26 @@
> +/* Compatibility routine for IEEE double as long double for fminimum_num.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include "nldbl-compat.h"
> +
> +double
> +attribute_hidden
> +fminimum_numl (double x, double y)
> +{
> +  return fminimum_num (x, y);
> +}
> diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
> index 51e1bc00fd..abf91bd142 100644
> --- a/sysdeps/mach/hurd/i386/libm.abilist
> +++ b/sysdeps/mach/hurd/i386/libm.abilist
> @@ -1113,5 +1113,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/powerpc/nofpu/Makefile b/sysdeps/powerpc/nofpu/Makefile
> index 80c762ebdf..3b51ff6d18 100644
> --- a/sysdeps/powerpc/nofpu/Makefile
> +++ b/sysdeps/powerpc/nofpu/Makefile
> @@ -50,4 +50,8 @@ CFLAGS-e_log2l.c += -fno-builtin-fabsl
>  CFLAGS-e_remainderl.c += -fno-builtin-fabsl
>  CFLAGS-s_fmaxmagl.c += -fno-builtin-fabsl
>  CFLAGS-s_fminmagl.c += -fno-builtin-fabsl
> +CFLAGS-s_fmaximum_magl.c += -fno-builtin-fabsl
> +CFLAGS-s_fmaximum_mag_numl.c += -fno-builtin-fabsl
> +CFLAGS-s_fminimum_magl.c += -fno-builtin-fabsl
> +CFLAGS-s_fminimum_mag_numl.c += -fno-builtin-fabsl
>  endif
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
> index 9bf30560a0..1cef7d3db7 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
> @@ -1078,5 +1078,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
> index a1ad3c7682..59d51021fa 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
> @@ -1135,6 +1135,70 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 __clog10l F
> diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
> index 32aa436456..f2169f8f57 100644
> --- a/sysdeps/unix/sysv/linux/arc/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
> @@ -707,5 +707,53 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
> index 6567ac7730..44666ad7cd 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
> @@ -481,6 +481,54 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 _LIB_VERSION D 0x4
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
> index 6567ac7730..44666ad7cd 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
> @@ -481,6 +481,54 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 _LIB_VERSION D 0x4
> diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist
> index e76270cf1d..225a5e9b81 100644
> --- a/sysdeps/unix/sysv/linux/csky/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libm.abilist
> @@ -773,5 +773,53 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
> index 8c80c9f2af..35d316a720 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
> @@ -792,6 +792,54 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 exp2l F
> diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
> index 51ebd7f227..ef99b3e104 100644
> --- a/sysdeps/unix/sysv/linux/i386/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
> @@ -1120,5 +1120,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist
> index a817771484..31933a7ff5 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist
> @@ -1050,5 +1050,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
> index 6567ac7730..44666ad7cd 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
> @@ -481,6 +481,54 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 _LIB_VERSION D 0x4
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
> index 3503533664..58316c96ae 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
> @@ -832,5 +832,53 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
> index 3115cd6afe..b5e5da0272 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
> @@ -793,5 +793,53 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
> index 3115cd6afe..b5e5da0272 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
> @@ -793,5 +793,53 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
> index 82995a9c3b..4113d3170d 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
> @@ -792,6 +792,54 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 exp2l F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
> index df8eaa2dba..18fe9cc57a 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
> @@ -1078,5 +1078,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
> index df148c1990..3a2b34ecc2 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
> @@ -793,5 +793,53 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
> index ff9046d243..740cc8f55b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
> @@ -838,6 +838,54 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 __clog10l F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
> index 24cfb00ce6..16fb30566b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
> @@ -837,6 +837,54 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 __clog10l F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
> index 29d4892722..ad4b98c09a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
> @@ -831,6 +831,54 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 __clog10l F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
> index 07753c0cce..955765051c 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
> @@ -1218,6 +1218,14 @@ GLIBC_2.35 __f32fmaieee128 F
>  GLIBC_2.35 __f32sqrtieee128 F
>  GLIBC_2.35 __f64fmaieee128 F
>  GLIBC_2.35 __f64sqrtieee128 F
> +GLIBC_2.35 __fmaximum_mag_numieee128 F
> +GLIBC_2.35 __fmaximum_magieee128 F
> +GLIBC_2.35 __fmaximum_numieee128 F
> +GLIBC_2.35 __fmaximumieee128 F
> +GLIBC_2.35 __fminimum_mag_numieee128 F
> +GLIBC_2.35 __fminimum_magieee128 F
> +GLIBC_2.35 __fminimum_numieee128 F
> +GLIBC_2.35 __fminimumieee128 F
>  GLIBC_2.35 dfmal F
>  GLIBC_2.35 dsqrtl F
>  GLIBC_2.35 f32fmaf128 F
> @@ -1242,5 +1250,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
> index ed5bd3bf6b..45ca5c677a 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
> @@ -962,5 +962,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
> index e592d9da6e..4838edf991 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
> @@ -1059,5 +1059,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
> index 6f55647398..1f5bd7754d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
> @@ -1079,6 +1079,70 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 __clog10l F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
> index 237a880c6a..0b18481f39 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
> @@ -1079,6 +1079,70 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 __clog10l F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
> index bdd8edfa13..f525a9e77e 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
> @@ -792,6 +792,54 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 exp2l F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
> index bdd8edfa13..f525a9e77e 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
> @@ -792,6 +792,54 @@ GLIBC_2.35 f32xfmaf64 F
>  GLIBC_2.35 f32xsqrtf64 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 exp2l F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
> index 76ab323332..727d1ce707 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
> @@ -1086,6 +1086,70 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
>  GLIBC_2.4 __clog10l F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
> index d1c2fe6714..0f57574523 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
> @@ -1078,5 +1078,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
> index 13e1d9f0c8..574789e061 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
> @@ -1111,5 +1111,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
> index 40b5f7f9b0..1dc89b304d 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
> @@ -1111,5 +1111,69 @@ GLIBC_2.35 f64xfmaf128 F
>  GLIBC_2.35 f64xsqrtf128 F
>  GLIBC_2.35 ffma F
>  GLIBC_2.35 ffmal F
> +GLIBC_2.35 fmaximum F
> +GLIBC_2.35 fmaximum_mag F
> +GLIBC_2.35 fmaximum_mag_num F
> +GLIBC_2.35 fmaximum_mag_numf F
> +GLIBC_2.35 fmaximum_mag_numf128 F
> +GLIBC_2.35 fmaximum_mag_numf32 F
> +GLIBC_2.35 fmaximum_mag_numf32x F
> +GLIBC_2.35 fmaximum_mag_numf64 F
> +GLIBC_2.35 fmaximum_mag_numf64x F
> +GLIBC_2.35 fmaximum_mag_numl F
> +GLIBC_2.35 fmaximum_magf F
> +GLIBC_2.35 fmaximum_magf128 F
> +GLIBC_2.35 fmaximum_magf32 F
> +GLIBC_2.35 fmaximum_magf32x F
> +GLIBC_2.35 fmaximum_magf64 F
> +GLIBC_2.35 fmaximum_magf64x F
> +GLIBC_2.35 fmaximum_magl F
> +GLIBC_2.35 fmaximum_num F
> +GLIBC_2.35 fmaximum_numf F
> +GLIBC_2.35 fmaximum_numf128 F
> +GLIBC_2.35 fmaximum_numf32 F
> +GLIBC_2.35 fmaximum_numf32x F
> +GLIBC_2.35 fmaximum_numf64 F
> +GLIBC_2.35 fmaximum_numf64x F
> +GLIBC_2.35 fmaximum_numl F
> +GLIBC_2.35 fmaximumf F
> +GLIBC_2.35 fmaximumf128 F
> +GLIBC_2.35 fmaximumf32 F
> +GLIBC_2.35 fmaximumf32x F
> +GLIBC_2.35 fmaximumf64 F
> +GLIBC_2.35 fmaximumf64x F
> +GLIBC_2.35 fmaximuml F
> +GLIBC_2.35 fminimum F
> +GLIBC_2.35 fminimum_mag F
> +GLIBC_2.35 fminimum_mag_num F
> +GLIBC_2.35 fminimum_mag_numf F
> +GLIBC_2.35 fminimum_mag_numf128 F
> +GLIBC_2.35 fminimum_mag_numf32 F
> +GLIBC_2.35 fminimum_mag_numf32x F
> +GLIBC_2.35 fminimum_mag_numf64 F
> +GLIBC_2.35 fminimum_mag_numf64x F
> +GLIBC_2.35 fminimum_mag_numl F
> +GLIBC_2.35 fminimum_magf F
> +GLIBC_2.35 fminimum_magf128 F
> +GLIBC_2.35 fminimum_magf32 F
> +GLIBC_2.35 fminimum_magf32x F
> +GLIBC_2.35 fminimum_magf64 F
> +GLIBC_2.35 fminimum_magf64x F
> +GLIBC_2.35 fminimum_magl F
> +GLIBC_2.35 fminimum_num F
> +GLIBC_2.35 fminimum_numf F
> +GLIBC_2.35 fminimum_numf128 F
> +GLIBC_2.35 fminimum_numf32 F
> +GLIBC_2.35 fminimum_numf32x F
> +GLIBC_2.35 fminimum_numf64 F
> +GLIBC_2.35 fminimum_numf64x F
> +GLIBC_2.35 fminimum_numl F
> +GLIBC_2.35 fminimumf F
> +GLIBC_2.35 fminimumf128 F
> +GLIBC_2.35 fminimumf32 F
> +GLIBC_2.35 fminimumf32x F
> +GLIBC_2.35 fminimumf64 F
> +GLIBC_2.35 fminimumf64x F
> +GLIBC_2.35 fminimuml F
>  GLIBC_2.35 fsqrt F
>  GLIBC_2.35 fsqrtl F
Joseph Myers Oct. 4, 2021, 5 p.m. UTC | #2
On Mon, 4 Oct 2021, Palmer Dabbelt via Libc-alpha wrote:

> > Add these functions to glibc.  The implementations use type-generic
> > templates based on those for fmax, fmin, fmaxmag and fminmag, and test
> > inputs are based on those for those functions with appropriate
> > adjustments to the expected results.  The RISC-V maintainers might
> > wish to add optimized versions of fmaximum_num and fminimum_num (for
> > float and double), since RISC-V (F extension version 2.2 and later)
> 
> Thanks for pointing this out.
> 
> I don't actually remember if we had any pre-2.2 hardware that could run glibc:
> pretty sure the HiFive Unleashed is post-2.2, and that's the only thing I can
> think of that would be that old.  I'm never quite sure about the dates on
> specs, but I'm seeing May 2017 for 2.2 and Feb 2018 for the HiFive Unleashed
> so I think it's likely fine.  Andrew would know for sure, though.

Note that this is F (and D) extension version 2.2 rather than architecture 
version 2.2 (architecture version 2.2 has F extension 2.0, where FMAX and 
FMIN still referred to the IEEE 754-2008 operations, i.e. fmax and fmin 
functions rather than fmaximum_num and fminimum_num).
Palmer Dabbelt Oct. 4, 2021, 5:05 p.m. UTC | #3
On Mon, 04 Oct 2021 10:00:03 PDT (-0700), joseph@codesourcery.com wrote:
> On Mon, 4 Oct 2021, Palmer Dabbelt via Libc-alpha wrote:
>
>> > Add these functions to glibc.  The implementations use type-generic
>> > templates based on those for fmax, fmin, fmaxmag and fminmag, and test
>> > inputs are based on those for those functions with appropriate
>> > adjustments to the expected results.  The RISC-V maintainers might
>> > wish to add optimized versions of fmaximum_num and fminimum_num (for
>> > float and double), since RISC-V (F extension version 2.2 and later)
>>
>> Thanks for pointing this out.
>>
>> I don't actually remember if we had any pre-2.2 hardware that could run glibc:
>> pretty sure the HiFive Unleashed is post-2.2, and that's the only thing I can
>> think of that would be that old.  I'm never quite sure about the dates on
>> specs, but I'm seeing May 2017 for 2.2 and Feb 2018 for the HiFive Unleashed
>> so I think it's likely fine.  Andrew would know for sure, though.
>
> Note that this is F (and D) extension version 2.2 rather than architecture
> version 2.2 (architecture version 2.2 has F extension 2.0, where FMAX and
> FMIN still referred to the IEEE 754-2008 operations, i.e. fmax and fmin
> functions rather than fmaximum_num and fminimum_num).

OK, well then this is definately a question for Andrew.  I was recently 
told that extensions don't have versions, but I've yet to figure out how 
to reason about that statement.  Also, I have been told in to uncertain 
terms that I have no idea what I'm talking about so maybe take that all 
with a grain on salt until someone else chimes in ;)
Andreas Schwab Oct. 4, 2021, 6:12 p.m. UTC | #4
On Okt 04 2021, Palmer Dabbelt via Libc-alpha wrote:

> I don't actually remember if we had any pre-2.2 hardware that could run
> glibc: pretty sure the HiFive Unleashed is post-2.2, and that's the only 
> thing I can think of that would be that old.  I'm never quite sure about
> the dates on specs, but I'm seeing May 2017 for 2.2 and Feb 2018 for the 
> HiFive Unleashed so I think it's likely fine.  Andrew would know for sure,
> though.

Running the following test program on the Unleashed prints 0 FE_INVALID.

#define _GNU_SOURCE 1
#include <fenv.h>
#include <math.h>
#include <stdio.h>

int
main ()
{
  double x;
  feclearexcept (FE_INVALID);
  asm ("fmax.d %0,%1,%2" : "=f" (x) : "f" (SNAN), "f" (0.0));
  if (fetestexcept (FE_INVALID))
    printf ("%g FE_INVALID\n", x);
}

Andreas.
Andrew Waterman Oct. 4, 2021, 9:08 p.m. UTC | #5
On Mon, Oct 4, 2021 at 10:05 AM Palmer Dabbelt <palmerdabbelt@google.com>
wrote:

> On Mon, 04 Oct 2021 10:00:03 PDT (-0700), joseph@codesourcery.com wrote:
> > On Mon, 4 Oct 2021, Palmer Dabbelt via Libc-alpha wrote:
> >
> >> > Add these functions to glibc.  The implementations use type-generic
> >> > templates based on those for fmax, fmin, fmaxmag and fminmag, and test
> >> > inputs are based on those for those functions with appropriate
> >> > adjustments to the expected results.  The RISC-V maintainers might
> >> > wish to add optimized versions of fmaximum_num and fminimum_num (for
> >> > float and double), since RISC-V (F extension version 2.2 and later)
> >>
> >> Thanks for pointing this out.
> >>
> >> I don't actually remember if we had any pre-2.2 hardware that could run
> glibc:
> >> pretty sure the HiFive Unleashed is post-2.2, and that's the only thing
> I can
> >> think of that would be that old.  I'm never quite sure about the dates
> on
> >> specs, but I'm seeing May 2017 for 2.2 and Feb 2018 for the HiFive
> Unleashed
> >> so I think it's likely fine.  Andrew would know for sure, though.
> >
> > Note that this is F (and D) extension version 2.2 rather than
> architecture
> > version 2.2 (architecture version 2.2 has F extension 2.0, where FMAX and
> > FMIN still referred to the IEEE 754-2008 operations, i.e. fmax and fmin
> > functions rather than fmaximum_num and fminimum_num).
>
> OK, well then this is definately a question for Andrew.  I was recently
> told that extensions don't have versions, but I've yet to figure out how
> to reason about that statement.  Also, I have been told in to uncertain
> terms that I have no idea what I'm talking about so maybe take that all
> with a grain on salt until someone else chimes in ;)
>

Unleashed does implement the newer version of the F and D specs.
diff mbox series

Patch

diff --git a/NEWS b/NEWS
index 9ae04b2f20..6bc98873ab 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,13 @@  Major new features:
   - ffma, ffmal, dfmal and corresponding fMfmafN, fMfmafNx, fMxfmafN and
     fMxfmafNx functions.
 
+* <math.h> functions for floating-point maximum and minimum,
+  corresponding to new operations in IEEE 754-2019, and corresponding
+  <tgmath.h> macros, are added from draft ISO C2X: fmaximum,
+  fmaximum_num, fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num,
+  fminimum_mag, fminimum_mag_num and corresponding functions for float,
+  long double, _FloatN and _FloatNx.
+
 * The __STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__ macros are
   predefined as specified in TS 18661-1:2014.
 
diff --git a/manual/arith.texi b/manual/arith.texi
index 6a158e624d..edb9cfdafb 100644
--- a/manual/arith.texi
+++ b/manual/arith.texi
@@ -2097,8 +2097,8 @@  and @var{y}.  It is similar to the expression
 @end smallexample
 except that @var{x} and @var{y} are only evaluated once.
 
-If an argument is NaN, the other argument is returned.  If both arguments
-are NaN, NaN is returned.
+If an argument is a quiet NaN, the other argument is returned.  If both arguments
+are NaN, or either is a signaling NaN, NaN is returned.
 @end deftypefun
 
 @deftypefun double fmax (double @var{x}, double @var{y})
@@ -2113,8 +2113,58 @@  are NaN, NaN is returned.
 The @code{fmax} function returns the greater of the two values @var{x}
 and @var{y}.
 
-If an argument is NaN, the other argument is returned.  If both arguments
-are NaN, NaN is returned.
+If an argument is a quiet NaN, the other argument is returned.  If both arguments
+are NaN, or either is a signaling NaN, NaN is returned.
+@end deftypefun
+
+@deftypefun double fminimum (double @var{x}, double @var{y})
+@deftypefunx float fminimumf (float @var{x}, float @var{y})
+@deftypefunx {long double} fminimuml (long double @var{x}, long double @var{y})
+@deftypefunx _FloatN fminimumfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
+@deftypefunx _FloatNx fminimumfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
+@standards{C2X, math.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+The @code{fminimum} function returns the lesser of the two values @var{x}
+and @var{y}.  Unlike @code{fmin}, if either argument is a NaN, NaN is returned.
+Positive zero is treated as greater than negative zero.
+@end deftypefun
+
+@deftypefun double fmaximum (double @var{x}, double @var{y})
+@deftypefunx float fmaximumf (float @var{x}, float @var{y})
+@deftypefunx {long double} fmaximuml (long double @var{x}, long double @var{y})
+@deftypefunx _FloatN fmaximumfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
+@deftypefunx _FloatNx fmaximumfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
+@standards{C2X, math.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+The @code{fmaximum} function returns the greater of the two values @var{x}
+and @var{y}.  Unlike @code{fmax}, if either argument is a NaN, NaN is returned.
+Positive zero is treated as greater than negative zero.
+@end deftypefun
+
+@deftypefun double fminimum_num (double @var{x}, double @var{y})
+@deftypefunx float fminimum_numf (float @var{x}, float @var{y})
+@deftypefunx {long double} fminimum_numl (long double @var{x}, long double @var{y})
+@deftypefunx _FloatN fminimum_numfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
+@deftypefunx _FloatNx fminimum_numfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
+@standards{C2X, math.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+The @code{fminimum_num} function returns the lesser of the two values
+@var{x} and @var{y}.  If one argument is a number and the other is a
+NaN, even a signaling NaN, the number is returned.  Positive zero is
+treated as greater than negative zero.
+@end deftypefun
+
+@deftypefun double fmaximum_num (double @var{x}, double @var{y})
+@deftypefunx float fmaximum_numf (float @var{x}, float @var{y})
+@deftypefunx {long double} fmaximum_numl (long double @var{x}, long double @var{y})
+@deftypefunx _FloatN fmaximum_numfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
+@deftypefunx _FloatNx fmaximum_numfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
+@standards{C2X, math.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+The @code{fmaximum_num} function returns the greater of the two values
+@var{x} and @var{y}.  If one argument is a number and the other is a
+NaN, even a signaling NaN, the number is returned.  Positive zero is
+treated as greater than negative zero.
 @end deftypefun
 
 @deftypefun double fminmag (double @var{x}, double @var{y})
@@ -2147,6 +2197,58 @@  have the same absolute value, or either is NaN, they behave the same
 as the @code{fmax} functions.
 @end deftypefun
 
+@deftypefun double fminimum_mag (double @var{x}, double @var{y})
+@deftypefunx float fminimum_magf (float @var{x}, float @var{y})
+@deftypefunx {long double} fminimum_magl (long double @var{x}, long double @var{y})
+@deftypefunx _FloatN fminimum_magfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
+@deftypefunx _FloatNx fminimum_magfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
+@standards{C2X, math.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+These functions return whichever of the two values @var{x} and @var{y}
+has the smaller absolute value.  If both have the same absolute value,
+or either is NaN, they behave the same as the @code{fminimum}
+functions.
+@end deftypefun
+
+@deftypefun double fmaximum_mag (double @var{x}, double @var{y})
+@deftypefunx float fmaximum_magf (float @var{x}, float @var{y})
+@deftypefunx {long double} fmaximum_magl (long double @var{x}, long double @var{y})
+@deftypefunx _FloatN fmaximum_magfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
+@deftypefunx _FloatNx fmaximum_magfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
+@standards{C2X, math.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+These functions return whichever of the two values @var{x} and @var{y}
+has the greater absolute value.  If both have the same absolute value,
+or either is NaN, they behave the same as the @code{fmaximum}
+functions.
+@end deftypefun
+
+@deftypefun double fminimum_mag_num (double @var{x}, double @var{y})
+@deftypefunx float fminimum_mag_numf (float @var{x}, float @var{y})
+@deftypefunx {long double} fminimum_mag_numl (long double @var{x}, long double @var{y})
+@deftypefunx _FloatN fminimum_mag_numfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
+@deftypefunx _FloatNx fminimum_mag_numfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
+@standards{C2X, math.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+These functions return whichever of the two values @var{x} and @var{y}
+has the smaller absolute value.  If both have the same absolute value,
+or either is NaN, they behave the same as the @code{fminimum_num}
+functions.
+@end deftypefun
+
+@deftypefun double fmaximum_mag_num (double @var{x}, double @var{y})
+@deftypefunx float fmaximum_mag_numf (float @var{x}, float @var{y})
+@deftypefunx {long double} fmaximum_mag_numl (long double @var{x}, long double @var{y})
+@deftypefunx _FloatN fmaximum_mag_numfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
+@deftypefunx _FloatNx fmaximum_mag_numfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
+@standards{C2X, math.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+These functions return whichever of the two values @var{x} and @var{y}
+has the greater absolute value.  If both have the same absolute value,
+or either is NaN, they behave the same as the @code{fmaximum_num}
+functions.
+@end deftypefun
+
 @deftypefun double fdim (double @var{x}, double @var{y})
 @deftypefunx float fdimf (float @var{x}, float @var{y})
 @deftypefunx {long double} fdiml (long double @var{x}, long double @var{y})
diff --git a/math/Makefile b/math/Makefile
index 8d67bfff7e..af734d41c4 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -60,7 +60,10 @@  gen-libm-calls = cargF conjF cimagF crealF cabsF e_scalbF s_cacosF	  \
 		 w_exp2F w_fmodF w_hypotF w_j0F w_j1F w_jnF w_logF	  \
 		 w_log10F w_log2F w_powF w_remainderF w_scalbF		  \
 		 w_sinhF w_sqrtF					  \
-		 w_tgammaF w_lgammaF w_lgammaF_r w_expF e_exp2F
+		 w_tgammaF w_lgammaF w_lgammaF_r w_expF e_exp2F		  \
+		 s_fmaximumF s_fmaximum_magF s_fmaximum_numF		  \
+		 s_fmaximum_mag_numF s_fminimumF s_fminimum_magF	  \
+		 s_fminimum_numF s_fminimum_mag_numF
 
 libm-calls =								  \
 	e_acosF e_acoshF e_asinF e_atan2F e_atanhF e_coshF e_expF e_fmodF \
@@ -287,9 +290,11 @@  libm-test-funcs-auto = acos acosh asin asinh atan atan2 atanh cabs cacos \
 		       lgamma log log10 log1p log2 pow sin sincos sinh sqrt \
 		       tan tanh tgamma y0 y1 yn
 libm-test-funcs-noauto = canonicalize ceil cimag conj copysign cproj creal \
-			 fabs fdim floor fmax fmaxmag fmin fminmag fmod \
-			 fpclassify frexp fromfp fromfpx getpayload ilogb \
-			 iscanonical iseqsig isfinite isgreater \
+			 fabs fdim floor fmax fmaximum fmaximum_mag \
+			 fmaximum_mag_num fmaximum_num fmaxmag fmin fminimum \
+			 fminimum_mag fminimum_mag_num fminimum_num fminmag \
+			 fmod fpclassify frexp fromfp fromfpx getpayload \
+			 ilogb iscanonical iseqsig isfinite isgreater \
 			 isgreaterequal isinf isless islessequal \
 			 islessgreater isnan isnormal issignaling issubnormal \
 			 isunordered iszero llogb llrint llround logb lrint \
@@ -375,7 +380,9 @@  tgmath3-macros = atan2 cbrt ceil copysign erf erfc exp2 expm1 fdim floor \
 		 nextafter nexttoward remainder remquo rint round scalbn \
 		 scalbln tgamma trunc acos asin atan acosh asinh atanh cos \
 		 sin tan cosh sinh tanh exp log pow sqrt fabs carg cimag conj \
-		 cproj creal roundeven nextup nextdown fminmag fmaxmag llogb \
+		 cproj creal roundeven nextup nextdown fminmag fmaxmag \
+		 fmaximum fmaximum_mag fmaximum_num fmaximum_mag_num \
+		 fminimum fminimum_mag fminimum_num fminimum_mag_num llogb \
 		 fromfp fromfpx ufromfp ufromfpx scalb $(tgmath3-narrow-macros)
 tgmath3-macro-tests = $(addprefix test-tgmath3-,$(tgmath3-macros))
 tests += $(tgmath3-macro-tests)
@@ -682,8 +689,16 @@  CFLAGS-s_finite.c += -fno-builtin-finitel
 CFLAGS-s_floor.c += -fno-builtin-floorl
 CFLAGS-s_fma.c += -fno-builtin-fmal
 CFLAGS-s_fmax.c += -fno-builtin-fmaxl
+CFLAGS-s_fmaximum.c += -fno-builtin-fmaximuml
+CFLAGS-s_fmaximum_mag.c += -fno-builtin-fmaximum_magl
+CFLAGS-s_fmaximum_mag_num.c += -fno-builtin-fmaximum_mag_numl
+CFLAGS-s_fmaximum_num.c += -fno-builtin-fmaximum_numl
 CFLAGS-s_fmaxmag.c += -fno-builtin-fmaxmagl
 CFLAGS-s_fmin.c += -fno-builtin-fminl
+CFLAGS-s_fminimum.c += -fno-builtin-fminimuml
+CFLAGS-s_fminimum_mag.c += -fno-builtin-fminimum_magl
+CFLAGS-s_fminimum_mag_num.c += -fno-builtin-fminimum_mag_numl
+CFLAGS-s_fminimum_num.c += -fno-builtin-fminimum_numl
 CFLAGS-s_fminmag.c += -fno-builtin-fminmagl
 CFLAGS-w_fmod.c += -fno-builtin-fmodl
 CFLAGS-s_fmul.c += -fno-builtin-fmull
diff --git a/math/Versions b/math/Versions
index 1a25b2ce9a..a4b5405ddc 100644
--- a/math/Versions
+++ b/math/Versions
@@ -599,6 +599,20 @@  libm {
     f32fmaf32x; f32fmaf64; f32xfmaf64;
     fsqrt; fsqrtl; dsqrtl;
     f32sqrtf32x; f32sqrtf64; f32xsqrtf64;
+    fmaximum; fmaximumf; fmaximuml; fmaximumf32; fmaximumf64; fmaximumf32x;
+    fmaximum_num; fmaximum_numf; fmaximum_numl;
+    fmaximum_numf32; fmaximum_numf64; fmaximum_numf32x;
+    fmaximum_mag; fmaximum_magf; fmaximum_magl;
+    fmaximum_magf32; fmaximum_magf64; fmaximum_magf32x;
+    fmaximum_mag_num; fmaximum_mag_numf; fmaximum_mag_numl;
+    fmaximum_mag_numf32; fmaximum_mag_numf64; fmaximum_mag_numf32x;
+    fminimum; fminimumf; fminimuml; fminimumf32; fminimumf64; fminimumf32x;
+    fminimum_num; fminimum_numf; fminimum_numl;
+    fminimum_numf32; fminimum_numf64; fminimum_numf32x;
+    fminimum_mag; fminimum_magf; fminimum_magl;
+    fminimum_magf32; fminimum_magf64; fminimum_magf32x;
+    fminimum_mag_num; fminimum_mag_numf; fminimum_mag_numl;
+    fminimum_mag_numf32; fminimum_mag_numf64; fminimum_mag_numf32x;
     # Functions involving _Float64x or _Float128, for some configurations.
     f32fmaf64x; f32fmaf128;
     f32xfmaf64x; f32xfmaf128; f64fmaf64x; f64fmaf128;
@@ -606,5 +620,13 @@  libm {
     f32sqrtf64x; f32sqrtf128;
     f32xsqrtf64x; f32xsqrtf128; f64sqrtf64x; f64sqrtf128;
     f64xsqrtf128;
+    fmaximumf64x; fmaximumf128;
+    fmaximum_numf64x; fmaximum_numf128;
+    fmaximum_magf64x; fmaximum_magf128;
+    fmaximum_mag_numf64x; fmaximum_mag_numf128;
+    fminimumf64x; fminimumf128;
+    fminimum_numf64x; fminimum_numf128;
+    fminimum_magf64x; fminimum_magf128;
+    fminimum_mag_numf64x; fminimum_mag_numf128;
   }
 }
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index dc145b4bcf..ee0c6d7219 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -378,6 +378,32 @@  __MATHCALLX (fmaxmag,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
 __MATHCALLX (fminmag,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
 #endif
 
+#if __GLIBC_USE (ISOC2X)
+/* Return maximum value from X and Y.  */
+__MATHCALLX (fmaximum,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
+
+/* Return minimum value from X and Y.  */
+__MATHCALLX (fminimum,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
+
+/* Return maximum numeric value from X and Y.  */
+__MATHCALLX (fmaximum_num,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
+
+/* Return minimum numeric value from X and Y.  */
+__MATHCALLX (fminimum_num,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
+
+/* Return value with maximum magnitude.  */
+__MATHCALLX (fmaximum_mag,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
+
+/* Return value with minimum magnitude.  */
+__MATHCALLX (fminimum_mag,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
+
+/* Return numeric value with maximum magnitude.  */
+__MATHCALLX (fmaximum_mag_num,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
+
+/* Return numeric value with minimum magnitude.  */
+__MATHCALLX (fminimum_mag_num,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
+#endif
+
 #if __GLIBC_USE (IEC_60559_EXT) || __MATH_DECLARING_FLOATN
 /* Total order operation.  */
 __MATHDECL_1 (int, totalorder,, (const _Mdouble_ *__x,
diff --git a/math/gen-tgmath-tests.py b/math/gen-tgmath-tests.py
index 6d32a4b6e4..d433b484b8 100755
--- a/math/gen-tgmath-tests.py
+++ b/math/gen-tgmath-tests.py
@@ -707,6 +707,15 @@  class Tests(object):
                                 ('_Float32x', 'f32x'),
                                 ('_Float64x', 'f64x')):
                 self.add_tests(prefix + fn, ret, ['r'] * args)
+        # C2X functions.
+        self.add_tests('fmaximum', 'r', ['r', 'r'])
+        self.add_tests('fmaximum_mag', 'r', ['r', 'r'])
+        self.add_tests('fmaximum_num', 'r', ['r', 'r'])
+        self.add_tests('fmaximum_mag_num', 'r', ['r', 'r'])
+        self.add_tests('fminimum', 'r', ['r', 'r'])
+        self.add_tests('fminimum_mag', 'r', ['r', 'r'])
+        self.add_tests('fminimum_num', 'r', ['r', 'r'])
+        self.add_tests('fminimum_mag_num', 'r', ['r', 'r'])
         # Miscellaneous functions.
         self.add_tests('scalb', 's', ['s', 's'])
 
diff --git a/math/libm-test-fmaximum.inc b/math/libm-test-fmaximum.inc
new file mode 100644
index 0000000000..72e12c4dfa
--- /dev/null
+++ b/math/libm-test-fmaximum.inc
@@ -0,0 +1,130 @@ 
+/* Test fmaximum.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "libm-test-driver.c"
+
+static const struct test_ff_f_data fmaximum_test_data[] =
+  {
+    TEST_ff_f (fmaximum, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, 0, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, minus_zero, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, min_subnorm_value, -min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, min_value, -min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, max_value, -max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, 9, 0, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, 0, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, 0, -9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum, minus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, minus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, 9, minus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -9, minus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, 0, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, minus_zero, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, minus_zero, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, 9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, 0, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, 0, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, minus_zero, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, minus_zero, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, 9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, 9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, plus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, minus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, plus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, plus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, minus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, minus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+  };
+
+static void
+fmaximum_test (void)
+{
+  ALL_RM_TEST (fmaximum, 1, fmaximum_test_data, RUN_TEST_LOOP_ff_f, END);
+}
+
+static void
+do_test (void)
+{
+  fmaximum_test ();
+}
+
+/*
+ * Local Variables:
+ * mode:c
+ * End:
+ */
diff --git a/math/libm-test-fmaximum_mag.inc b/math/libm-test-fmaximum_mag.inc
new file mode 100644
index 0000000000..556188fada
--- /dev/null
+++ b/math/libm-test-fmaximum_mag.inc
@@ -0,0 +1,144 @@ 
+/* Test fmaximum_mag.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "libm-test-driver.c"
+
+static const struct test_ff_f_data fmaximum_mag_test_data[] =
+  {
+    TEST_ff_f (fmaximum_mag, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, 0, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, minus_zero, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, min_subnorm_value, -min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, min_value, -min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, max_value, -max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, max_value, min_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, max_value, -min_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -max_value, min_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -max_value, -min_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, min_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, min_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -min_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -min_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, 9, 0, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, 0, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -9, 0, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, 0, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum_mag, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum_mag, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum_mag, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, 0, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, minus_zero, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, minus_zero, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, 9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, 0, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, 0, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, minus_zero, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, minus_zero, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, 9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, 9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, plus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, minus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, plus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, plus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, minus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, minus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+  };
+
+static void
+fmaximum_mag_test (void)
+{
+  ALL_RM_TEST (fmaximum_mag, 1, fmaximum_mag_test_data, RUN_TEST_LOOP_ff_f, END);
+}
+
+static void
+do_test (void)
+{
+  fmaximum_mag_test ();
+}
+
+/*
+ * Local Variables:
+ * mode:c
+ * End:
+ */
diff --git a/math/libm-test-fmaximum_mag_num.inc b/math/libm-test-fmaximum_mag_num.inc
new file mode 100644
index 0000000000..75cc46484a
--- /dev/null
+++ b/math/libm-test-fmaximum_mag_num.inc
@@ -0,0 +1,144 @@ 
+/* Test fmaximum_mag_num.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "libm-test-driver.c"
+
+static const struct test_ff_f_data fmaximum_mag_num_test_data[] =
+  {
+    TEST_ff_f (fmaximum_mag_num, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, 0, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, minus_zero, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, min_subnorm_value, -min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, min_value, -min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, max_value, -max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, max_value, min_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, max_value, -min_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -max_value, min_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -max_value, -min_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, min_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, min_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -min_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -min_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, 9, 0, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, 0, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -9, 0, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, 0, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum_mag_num, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum_mag_num, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum_mag_num, 0, qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, 0, -qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, minus_zero, qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, minus_zero, -qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, 9, qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, 9, -qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -9, qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -9, -qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, 0, snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, 0, -snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, minus_zero, snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, minus_zero, -snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, 9, snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, 9, -snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -9, snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -9, -snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, plus_infty, -qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, minus_infty, -qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, plus_infty, snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, plus_infty, -snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, minus_infty, snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, minus_infty, -snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_mag_num, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_mag_num, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+  };
+
+static void
+fmaximum_mag_num_test (void)
+{
+  ALL_RM_TEST (fmaximum_mag_num, 1, fmaximum_mag_num_test_data, RUN_TEST_LOOP_ff_f, END);
+}
+
+static void
+do_test (void)
+{
+  fmaximum_mag_num_test ();
+}
+
+/*
+ * Local Variables:
+ * mode:c
+ * End:
+ */
diff --git a/math/libm-test-fmaximum_num.inc b/math/libm-test-fmaximum_num.inc
new file mode 100644
index 0000000000..948be9ada2
--- /dev/null
+++ b/math/libm-test-fmaximum_num.inc
@@ -0,0 +1,130 @@ 
+/* Test fmaximum_num.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "libm-test-driver.c"
+
+static const struct test_ff_f_data fmaximum_num_test_data[] =
+  {
+    TEST_ff_f (fmaximum_num, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, 0, minus_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, minus_zero, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, min_subnorm_value, -min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, min_value, -min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, max_value, -max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, 9, 0, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, 0, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, 0, -9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum_num, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum_num, minus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, minus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, 9, minus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -9, minus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmaximum_num, 0, qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, 0, -qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, minus_zero, qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, minus_zero, -qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, 9, qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, 9, -qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -9, qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -9, -qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, 0, snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, 0, -snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, minus_zero, snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, minus_zero, -snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, 9, snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, 9, -snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -9, snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -9, -snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, plus_infty, -qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, minus_infty, -qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, plus_infty, snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, plus_infty, -snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, minus_infty, snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, minus_infty, -snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmaximum_num, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fmaximum_num, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+  };
+
+static void
+fmaximum_num_test (void)
+{
+  ALL_RM_TEST (fmaximum_num, 1, fmaximum_num_test_data, RUN_TEST_LOOP_ff_f, END);
+}
+
+static void
+do_test (void)
+{
+  fmaximum_num_test ();
+}
+
+/*
+ * Local Variables:
+ * mode:c
+ * End:
+ */
diff --git a/math/libm-test-fminimum.inc b/math/libm-test-fminimum.inc
new file mode 100644
index 0000000000..ff37fb115e
--- /dev/null
+++ b/math/libm-test-fminimum.inc
@@ -0,0 +1,129 @@ 
+/* Test fminimum.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "libm-test-driver.c"
+
+static const struct test_ff_f_data fminimum_test_data[] =
+  {
+    TEST_ff_f (fminimum, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -min_subnorm_value, min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -min_value, min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -max_value, max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, 9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, 0, 9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -9, 0, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, 0, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fminimum, plus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, 9, plus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, plus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -9, plus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fminimum, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, 0, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, minus_zero, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, minus_zero, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, 9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, 0, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, 0, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, minus_zero, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, minus_zero, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, 9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, 9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, plus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, minus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, plus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, plus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, minus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, minus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+  };
+
+static void
+fminimum_test (void)
+{
+  ALL_RM_TEST (fminimum, 1, fminimum_test_data, RUN_TEST_LOOP_ff_f, END);
+}
+
+static void
+do_test (void)
+{
+  fminimum_test ();
+}
+
+/*
+ * Local Variables:
+ * mode:c
+ * End:
+ */
diff --git a/math/libm-test-fminimum_mag.inc b/math/libm-test-fminimum_mag.inc
new file mode 100644
index 0000000000..b3e85b38ef
--- /dev/null
+++ b/math/libm-test-fminimum_mag.inc
@@ -0,0 +1,143 @@ 
+/* Test fminimum_mag.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "libm-test-driver.c"
+
+static const struct test_ff_f_data fminimum_mag_test_data[] =
+  {
+    TEST_ff_f (fminimum_mag, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -min_subnorm_value, min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -min_value, min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -max_value, max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, max_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, max_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -max_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -max_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, min_value, max_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, min_value, -max_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -min_value, max_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -min_value, -max_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, 9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, 0, 9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, 0, -9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fminimum_mag, plus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, 9, plus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, plus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -9, plus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, minus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, minus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, 9, minus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -9, minus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fminimum_mag, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, 0, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, minus_zero, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, minus_zero, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, 9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, 0, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, 0, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, minus_zero, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, minus_zero, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, 9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, 9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -snan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, plus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, minus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, plus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, plus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, minus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, minus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+  };
+
+static void
+fminimum_mag_test (void)
+{
+  ALL_RM_TEST (fminimum_mag, 1, fminimum_mag_test_data, RUN_TEST_LOOP_ff_f, END);
+}
+
+static void
+do_test (void)
+{
+  fminimum_mag_test ();
+}
+
+/*
+ * Local Variables:
+ * mode:c
+ * End:
+ */
diff --git a/math/libm-test-fminimum_mag_num.inc b/math/libm-test-fminimum_mag_num.inc
new file mode 100644
index 0000000000..f9e824c4cd
--- /dev/null
+++ b/math/libm-test-fminimum_mag_num.inc
@@ -0,0 +1,143 @@ 
+/* Test fminimum_mag_num.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "libm-test-driver.c"
+
+static const struct test_ff_f_data fminimum_mag_num_test_data[] =
+  {
+    TEST_ff_f (fminimum_mag_num, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, min_subnorm_value, min_subnorm_value, min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -min_subnorm_value, min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, min_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -min_value, min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, max_value, max_value, max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -max_value, max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, max_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, max_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -max_value, min_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -max_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, min_value, max_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, min_value, -max_value, min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -min_value, max_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -min_value, -max_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, 9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, 0, 9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, 0, -9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fminimum_mag_num, plus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, 9, plus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, plus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -9, plus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, minus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, minus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, 9, minus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -9, minus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fminimum_mag_num, 0, qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, 0, -qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, minus_zero, qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, minus_zero, -qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, 9, qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, 9, -qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -9, qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -9, -qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, 0, snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, 0, -snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, minus_zero, snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, minus_zero, -snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, 9, snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, 9, -snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -9, snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -9, -snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, plus_infty, -qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, minus_infty, -qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, plus_infty, snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, plus_infty, -snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, minus_infty, snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, minus_infty, -snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_mag_num, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_mag_num, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+  };
+
+static void
+fminimum_mag_num_test (void)
+{
+  ALL_RM_TEST (fminimum_mag_num, 1, fminimum_mag_num_test_data, RUN_TEST_LOOP_ff_f, END);
+}
+
+static void
+do_test (void)
+{
+  fminimum_mag_num_test ();
+}
+
+/*
+ * Local Variables:
+ * mode:c
+ * End:
+ */
diff --git a/math/libm-test-fminimum_num.inc b/math/libm-test-fminimum_num.inc
new file mode 100644
index 0000000000..74c4df234c
--- /dev/null
+++ b/math/libm-test-fminimum_num.inc
@@ -0,0 +1,129 @@ 
+/* Test fminimum_num.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "libm-test-driver.c"
+
+static const struct test_ff_f_data fminimum_num_test_data[] =
+  {
+    TEST_ff_f (fminimum_num, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, min_subnorm_value, -min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -min_subnorm_value, min_subnorm_value, -min_subnorm_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, min_value, -min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -min_value, min_value, -min_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, max_value, -max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -max_value, max_value, -max_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, 9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, 0, 9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -9, 0, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, 0, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fminimum_num, plus_infty, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, 9, plus_infty, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, plus_infty, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -9, plus_infty, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fminimum_num, 0, qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, 0, -qnan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, minus_zero, qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, minus_zero, -qnan_value, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, 9, qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, 9, -qnan_value, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -9, qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -9, -qnan_value, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, 0, snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, 0, -snan_value, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, minus_zero, snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, minus_zero, -snan_value, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, 9, snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, 9, -snan_value, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -9, snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -9, -snan_value, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -qnan_value, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -qnan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -qnan_value, 9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -qnan_value, -9, -9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -snan_value, 0, 0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -snan_value, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -snan_value, 9, 9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -snan_value, -9, -9, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, plus_infty, -qnan_value, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, minus_infty, -qnan_value, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, plus_infty, snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, plus_infty, -snan_value, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, minus_infty, snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, minus_infty, -snan_value, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -snan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -snan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fminimum_num, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fminimum_num, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+  };
+
+static void
+fminimum_num_test (void)
+{
+  ALL_RM_TEST (fminimum_num, 1, fminimum_num_test_data, RUN_TEST_LOOP_ff_f, END);
+}
+
+static void
+do_test (void)
+{
+  fminimum_num_test ();
+}
+
+/*
+ * Local Variables:
+ * mode:c
+ * End:
+ */
diff --git a/math/s_fmaximum_mag_num_template.c b/math/s_fmaximum_mag_num_template.c
new file mode 100644
index 0000000000..5c9cef21fd
--- /dev/null
+++ b/math/s_fmaximum_mag_num_template.c
@@ -0,0 +1,35 @@ 
+/* Return number with maximum magnitude.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+
+FLOAT
+M_DECL_FUNC (__fmaximum_mag_num) (FLOAT x, FLOAT y)
+{
+  FLOAT ax = M_FABS (x);
+  FLOAT ay = M_FABS (y);
+  if (isgreater (ax, ay))
+    return x;
+  else if (isless (ax, ay))
+    return y;
+  else if (ax == ay)
+    return (M_COPYSIGN (1, x) >= M_COPYSIGN (1, y) ? x : y);
+  else
+    return isnan (y) ? (isnan (x) ? x + y : x) : y;
+}
+declare_mgen_alias (__fmaximum_mag_num, fmaximum_mag_num);
diff --git a/math/s_fmaximum_mag_template.c b/math/s_fmaximum_mag_template.c
new file mode 100644
index 0000000000..7e9a020344
--- /dev/null
+++ b/math/s_fmaximum_mag_template.c
@@ -0,0 +1,35 @@ 
+/* Return value with maximum magnitude.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+
+FLOAT
+M_DECL_FUNC (__fmaximum_mag) (FLOAT x, FLOAT y)
+{
+  FLOAT ax = M_FABS (x);
+  FLOAT ay = M_FABS (y);
+  if (isgreater (ax, ay))
+    return x;
+  else if (isless (ax, ay))
+    return y;
+  else if (ax == ay)
+    return (M_COPYSIGN (1, x) >= M_COPYSIGN (1, y) ? x : y);
+  else
+    return x + y;
+}
+declare_mgen_alias (__fmaximum_mag, fmaximum_mag);
diff --git a/math/s_fmaximum_num_template.c b/math/s_fmaximum_num_template.c
new file mode 100644
index 0000000000..ce0042fd5c
--- /dev/null
+++ b/math/s_fmaximum_num_template.c
@@ -0,0 +1,33 @@ 
+/* Return maximum number of X and Y.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+
+FLOAT
+M_DECL_FUNC (__fmaximum_num) (FLOAT x, FLOAT y)
+{
+  if (isgreater (x, y))
+    return x;
+  else if (isless (x, y))
+    return y;
+  else if (x == y)
+    return (M_COPYSIGN (1, x) >= M_COPYSIGN (1, y) ? x : y);
+  else
+    return isnan (y) ? (isnan (x) ? x + y : x) : y;
+}
+declare_mgen_alias (__fmaximum_num, fmaximum_num);
diff --git a/math/s_fmaximum_template.c b/math/s_fmaximum_template.c
new file mode 100644
index 0000000000..e49c5d3c0f
--- /dev/null
+++ b/math/s_fmaximum_template.c
@@ -0,0 +1,33 @@ 
+/* Return maximum of X and Y.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+
+FLOAT
+M_DECL_FUNC (__fmaximum) (FLOAT x, FLOAT y)
+{
+  if (isgreater (x, y))
+    return x;
+  else if (isless (x, y))
+    return y;
+  else if (x == y)
+    return (M_COPYSIGN (1, x) >= M_COPYSIGN (1, y) ? x : y);
+  else
+    return x + y;
+}
+declare_mgen_alias (__fmaximum, fmaximum);
diff --git a/math/s_fminimum_mag_num_template.c b/math/s_fminimum_mag_num_template.c
new file mode 100644
index 0000000000..f2dc3821ba
--- /dev/null
+++ b/math/s_fminimum_mag_num_template.c
@@ -0,0 +1,35 @@ 
+/* Return number with minimum magnitude.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+
+FLOAT
+M_DECL_FUNC (__fminimum_mag_num) (FLOAT x, FLOAT y)
+{
+  FLOAT ax = M_FABS (x);
+  FLOAT ay = M_FABS (y);
+  if (isless (ax, ay))
+    return x;
+  else if (isgreater (ax, ay))
+    return y;
+  else if (ax == ay)
+    return (M_COPYSIGN (1, x) <= M_COPYSIGN (1, y) ? x : y);
+  else
+    return isnan (y) ? (isnan (x) ? x + y : x) : y;
+}
+declare_mgen_alias (__fminimum_mag_num, fminimum_mag_num);
diff --git a/math/s_fminimum_mag_template.c b/math/s_fminimum_mag_template.c
new file mode 100644
index 0000000000..4a35596ba1
--- /dev/null
+++ b/math/s_fminimum_mag_template.c
@@ -0,0 +1,35 @@ 
+/* Return value with minimum magnitude.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+
+FLOAT
+M_DECL_FUNC (__fminimum_mag) (FLOAT x, FLOAT y)
+{
+  FLOAT ax = M_FABS (x);
+  FLOAT ay = M_FABS (y);
+  if (isless (ax, ay))
+    return x;
+  else if (isgreater (ax, ay))
+    return y;
+  else if (ax == ay)
+    return (M_COPYSIGN (1, x) <= M_COPYSIGN (1, y) ? x : y);
+  else
+    return x + y;
+}
+declare_mgen_alias (__fminimum_mag, fminimum_mag);
diff --git a/math/s_fminimum_num_template.c b/math/s_fminimum_num_template.c
new file mode 100644
index 0000000000..cdc245da32
--- /dev/null
+++ b/math/s_fminimum_num_template.c
@@ -0,0 +1,33 @@ 
+/* Return minimum number of X and Y.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+
+FLOAT
+M_DECL_FUNC (__fminimum_num) (FLOAT x, FLOAT y)
+{
+  if (isless (x, y))
+    return x;
+  else if (isgreater (x, y))
+    return y;
+  else if (x == y)
+    return (M_COPYSIGN (1, x) <= M_COPYSIGN (1, y) ? x : y);
+  else
+    return isnan (y) ? (isnan (x) ? x + y : x) : y;
+}
+declare_mgen_alias (__fminimum_num, fminimum_num);
diff --git a/math/s_fminimum_template.c b/math/s_fminimum_template.c
new file mode 100644
index 0000000000..9da7beb674
--- /dev/null
+++ b/math/s_fminimum_template.c
@@ -0,0 +1,33 @@ 
+/* Return minimum of X and Y.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+
+FLOAT
+M_DECL_FUNC (__fminimum) (FLOAT x, FLOAT y)
+{
+  if (isless (x, y))
+    return x;
+  else if (isgreater (x, y))
+    return y;
+  else if (x == y)
+    return (M_COPYSIGN (1, x) <= M_COPYSIGN (1, y) ? x : y);
+  else
+    return x + y;
+}
+declare_mgen_alias (__fminimum, fminimum);
diff --git a/math/test-tgmath.c b/math/test-tgmath.c
index 6ec7760c62..f9b5fc640f 100644
--- a/math/test-tgmath.c
+++ b/math/test-tgmath.c
@@ -48,7 +48,7 @@  volatile int count_cdouble;
 volatile int count_cfloat;
 volatile int count_cldouble;
 
-#define NCALLS     132
+#define NCALLS     156
 #define NCALLS_INT 4
 #define NCCALLS    47
 
@@ -290,6 +290,14 @@  F(compile_test) (void)
   a = fmin (fmin (x, a), fmin (c, b));
   b = fmaxmag (fmaxmag (a, x), fmaxmag (c, b));
   a = fminmag (fminmag (x, a), fminmag (c, b));
+  b = fmaximum (fmaximum (a, x), fmaximum (c, b));
+  a = fminimum (fminimum (x, a), fminimum (c, b));
+  b = fmaximum_num (fmaximum_num (a, x), fmaximum_num (c, b));
+  a = fminimum_num (fminimum_num (x, a), fminimum_num (c, b));
+  b = fmaximum_mag (fmaximum_mag (a, x), fmaximum_mag (c, b));
+  a = fminimum_mag (fminimum_mag (x, a), fminimum_mag (c, b));
+  b = fmaximum_mag_num (fmaximum_mag_num (a, x), fmaximum_mag_num (c, b));
+  a = fminimum_mag_num (fminimum_mag_num (x, a), fminimum_mag_num (c, b));
   b = fma (sin (a), sin (x), sin (c));
 
 #ifdef TEST_INT
@@ -393,6 +401,14 @@  F(compile_test) (void)
       a = fmin (y, y);
       a = fmaxmag (y, y);
       a = fminmag (y, y);
+      a = fmaximum (y, y);
+      a = fminimum (y, y);
+      a = fmaximum_num (y, y);
+      a = fminimum_num (y, y);
+      a = fmaximum_mag (y, y);
+      a = fminimum_mag (y, y);
+      a = fmaximum_mag_num (y, y);
+      a = fminimum_mag_num (y, y);
       a = fma (y, y, y);
 
 #ifdef TEST_INT
@@ -943,6 +959,70 @@  TYPE
   return x + y;
 }
 
+TYPE
+(F(fminimum)) (TYPE x, TYPE y)
+{
+  ++count;
+  P ();
+  return x + y;
+}
+
+TYPE
+(F(fmaximum)) (TYPE x, TYPE y)
+{
+  ++count;
+  P ();
+  return x + y;
+}
+
+TYPE
+(F(fminimum_num)) (TYPE x, TYPE y)
+{
+  ++count;
+  P ();
+  return x + y;
+}
+
+TYPE
+(F(fmaximum_num)) (TYPE x, TYPE y)
+{
+  ++count;
+  P ();
+  return x + y;
+}
+
+TYPE
+(F(fminimum_mag)) (TYPE x, TYPE y)
+{
+  ++count;
+  P ();
+  return x + y;
+}
+
+TYPE
+(F(fmaximum_mag)) (TYPE x, TYPE y)
+{
+  ++count;
+  P ();
+  return x + y;
+}
+
+TYPE
+(F(fminimum_mag_num)) (TYPE x, TYPE y)
+{
+  ++count;
+  P ();
+  return x + y;
+}
+
+TYPE
+(F(fmaximum_mag_num)) (TYPE x, TYPE y)
+{
+  ++count;
+  P ();
+  return x + y;
+}
+
 TYPE
 (F(fma)) (TYPE x, TYPE y, TYPE z)
 {
diff --git a/math/tgmath.h b/math/tgmath.h
index 5fdc7982b2..9868353c46 100644
--- a/math/tgmath.h
+++ b/math/tgmath.h
@@ -929,6 +929,38 @@ 
 # define fminmag(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fminmag)
 #endif
 
+#if __GLIBC_USE (ISOC2X)
+/* Return maximum value from X and Y.  */
+# define fmaximum(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmaximum)
+
+/* Return minimum value from X and Y.  */
+# define fminimum(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fminimum)
+
+/* Return maximum numeric value from X and Y.  */
+# define fmaximum_num(Val1, Val2)			\
+  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmaximum_num)
+
+/* Return minimum numeric value from X and Y.  */
+# define fminimum_num(Val1, Val2)			\
+  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fminimum_num)
+
+/* Return value with maximum magnitude.  */
+# define fmaximum_mag(Val1, Val2)			\
+  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmaximum_mag)
+
+/* Return value with minimum magnitude.  */
+# define fminimum_mag(Val1, Val2)			\
+  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fminimum_mag)
+
+/* Return numeric value with maximum magnitude.  */
+# define fmaximum_mag_num(Val1, Val2)				\
+  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmaximum_mag_num)
+
+/* Return numeric value with minimum magnitude.  */
+# define fminimum_mag_num(Val1, Val2)				\
+  __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fminimum_mag_num)
+#endif
+
 
 /* Absolute value, conjugates, and projection.  */
 
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
index 03a66134c4..d4ffd3762b 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
@@ -128,6 +128,14 @@  libm {
     __f64fmaieee128;
     __f32sqrtieee128;
     __f64sqrtieee128;
+    __fmaximumieee128;
+    __fmaximum_numieee128;
+    __fmaximum_magieee128;
+    __fmaximum_mag_numieee128;
+    __fminimumieee128;
+    __fminimum_numieee128;
+    __fminimum_magieee128;
+    __fminimum_mag_numieee128;
   }
 }
 libc {
diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
index 6b21680033..1d01846476 100644
--- a/sysdeps/ieee754/ldbl-opt/Makefile
+++ b/sysdeps/ieee754/ldbl-opt/Makefile
@@ -45,7 +45,9 @@  libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
 		 nextup nextdown totalorder totalordermag getpayload \
 		 canonicalize setpayload setpayloadsig llogb fmaxmag fminmag \
 		 roundeven fromfp ufromfp fromfpx ufromfpx fadd dadd \
-		 fdiv ddiv ffma dfma fmul dmul fsqrt dsqrt fsub dsub
+		 fdiv ddiv ffma dfma fmul dmul fsqrt dsqrt fsub dsub \
+		 fmaximum fmaximum_mag fmaximum_num fmaximum_mag_num \
+		 fminimum fminimum_mag fminimum_num fminimum_mag_num
 libnldbl-routines = $(libnldbl-calls:%=nldbl-%)
 libnldbl-inhibit-o = $(object-suffixes)
 libnldbl-static-only-routines = $(libnldbl-routines)
@@ -108,8 +110,16 @@  CFLAGS-nldbl-finite.c = -fno-builtin-finitel
 CFLAGS-nldbl-floor.c = -fno-builtin-floorl
 CFLAGS-nldbl-fma.c = -fno-builtin-fmal
 CFLAGS-nldbl-fmax.c = -fno-builtin-fmaxl
+CFLAGS-nldbl-fmaximum.c += -fno-builtin-fmaximuml
+CFLAGS-nldbl-fmaximum_mag.c += -fno-builtin-fmaximum_magl
+CFLAGS-nldbl-fmaximum_mag_num.c += -fno-builtin-fmaximum_mag_numl
+CFLAGS-nldbl-fmaximum_num.c += -fno-builtin-fmaximum_numl
 CFLAGS-nldbl-fmaxmag.c = -fno-builtin-fmaxmagl
 CFLAGS-nldbl-fmin.c = -fno-builtin-fminl
+CFLAGS-nldbl-fminimum.c += -fno-builtin-fminimuml
+CFLAGS-nldbl-fminimum_mag.c += -fno-builtin-fminimum_magl
+CFLAGS-nldbl-fminimum_mag_num.c += -fno-builtin-fminimum_mag_numl
+CFLAGS-nldbl-fminimum_num.c += -fno-builtin-fminimum_numl
 CFLAGS-nldbl-fminmag.c = -fno-builtin-fminmagl
 CFLAGS-nldbl-fmod.c = -fno-builtin-fmodl
 CFLAGS-nldbl-fmul.c = -fno-builtin-fmull
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum.c b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum.c
new file mode 100644
index 0000000000..f26de00184
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum.c
@@ -0,0 +1,26 @@ 
+/* Compatibility routine for IEEE double as long double for fmaximum.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmaximuml (double x, double y)
+{
+  return fmaximum (x, y);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag.c b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag.c
new file mode 100644
index 0000000000..5c6f9e6fbb
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag.c
@@ -0,0 +1,26 @@ 
+/* Compatibility routine for IEEE double as long double for fmaximum_mag.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmaximum_magl (double x, double y)
+{
+  return fmaximum_mag (x, y);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag_num.c b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag_num.c
new file mode 100644
index 0000000000..66c84e3ec0
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_mag_num.c
@@ -0,0 +1,26 @@ 
+/* Compatibility routine for IEEE double as long double for fmaximum_mag_num.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmaximum_mag_numl (double x, double y)
+{
+  return fmaximum_mag_num (x, y);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_num.c b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_num.c
new file mode 100644
index 0000000000..72fba4a477
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-fmaximum_num.c
@@ -0,0 +1,26 @@ 
+/* Compatibility routine for IEEE double as long double for fmaximum_num.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmaximum_numl (double x, double y)
+{
+  return fmaximum_num (x, y);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fminimum.c b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum.c
new file mode 100644
index 0000000000..9247a814fe
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum.c
@@ -0,0 +1,26 @@ 
+/* Compatibility routine for IEEE double as long double for fminimum.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fminimuml (double x, double y)
+{
+  return fminimum (x, y);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag.c b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag.c
new file mode 100644
index 0000000000..175f6d7d92
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag.c
@@ -0,0 +1,26 @@ 
+/* Compatibility routine for IEEE double as long double for fminimum_mag.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fminimum_magl (double x, double y)
+{
+  return fminimum_mag (x, y);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag_num.c b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag_num.c
new file mode 100644
index 0000000000..b37b4a5e68
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_mag_num.c
@@ -0,0 +1,26 @@ 
+/* Compatibility routine for IEEE double as long double for fminimum_mag_num.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fminimum_mag_numl (double x, double y)
+{
+  return fminimum_mag_num (x, y);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_num.c b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_num.c
new file mode 100644
index 0000000000..2cbd5a8188
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-fminimum_num.c
@@ -0,0 +1,26 @@ 
+/* Compatibility routine for IEEE double as long double for fminimum_num.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fminimum_numl (double x, double y)
+{
+  return fminimum_num (x, y);
+}
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index 51e1bc00fd..abf91bd142 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1113,5 +1113,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/powerpc/nofpu/Makefile b/sysdeps/powerpc/nofpu/Makefile
index 80c762ebdf..3b51ff6d18 100644
--- a/sysdeps/powerpc/nofpu/Makefile
+++ b/sysdeps/powerpc/nofpu/Makefile
@@ -50,4 +50,8 @@  CFLAGS-e_log2l.c += -fno-builtin-fabsl
 CFLAGS-e_remainderl.c += -fno-builtin-fabsl
 CFLAGS-s_fmaxmagl.c += -fno-builtin-fabsl
 CFLAGS-s_fminmagl.c += -fno-builtin-fabsl
+CFLAGS-s_fmaximum_magl.c += -fno-builtin-fabsl
+CFLAGS-s_fmaximum_mag_numl.c += -fno-builtin-fabsl
+CFLAGS-s_fminimum_magl.c += -fno-builtin-fabsl
+CFLAGS-s_fminimum_mag_numl.c += -fno-builtin-fabsl
 endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index 9bf30560a0..1cef7d3db7 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1078,5 +1078,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index a1ad3c7682..59d51021fa 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1135,6 +1135,70 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 __clog10l F
diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
index 32aa436456..f2169f8f57 100644
--- a/sysdeps/unix/sysv/linux/arc/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
@@ -707,5 +707,53 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index 6567ac7730..44666ad7cd 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -481,6 +481,54 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 _LIB_VERSION D 0x4
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index 6567ac7730..44666ad7cd 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -481,6 +481,54 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 _LIB_VERSION D 0x4
diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist
index e76270cf1d..225a5e9b81 100644
--- a/sysdeps/unix/sysv/linux/csky/libm.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libm.abilist
@@ -773,5 +773,53 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index 8c80c9f2af..35d316a720 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -792,6 +792,54 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index 51ebd7f227..ef99b3e104 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1120,5 +1120,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist
index a817771484..31933a7ff5 100644
--- a/sysdeps/unix/sysv/linux/ia64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist
@@ -1050,5 +1050,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 6567ac7730..44666ad7cd 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -481,6 +481,54 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 _LIB_VERSION D 0x4
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index 3503533664..58316c96ae 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -832,5 +832,53 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index 3115cd6afe..b5e5da0272 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -793,5 +793,53 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index 3115cd6afe..b5e5da0272 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -793,5 +793,53 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 82995a9c3b..4113d3170d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -792,6 +792,54 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index df8eaa2dba..18fe9cc57a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1078,5 +1078,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index df148c1990..3a2b34ecc2 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -793,5 +793,53 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index ff9046d243..740cc8f55b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -838,6 +838,54 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 __clog10l F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index 24cfb00ce6..16fb30566b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -837,6 +837,54 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 __clog10l F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index 29d4892722..ad4b98c09a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -831,6 +831,54 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 __clog10l F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 07753c0cce..955765051c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1218,6 +1218,14 @@  GLIBC_2.35 __f32fmaieee128 F
 GLIBC_2.35 __f32sqrtieee128 F
 GLIBC_2.35 __f64fmaieee128 F
 GLIBC_2.35 __f64sqrtieee128 F
+GLIBC_2.35 __fmaximum_mag_numieee128 F
+GLIBC_2.35 __fmaximum_magieee128 F
+GLIBC_2.35 __fmaximum_numieee128 F
+GLIBC_2.35 __fmaximumieee128 F
+GLIBC_2.35 __fminimum_mag_numieee128 F
+GLIBC_2.35 __fminimum_magieee128 F
+GLIBC_2.35 __fminimum_numieee128 F
+GLIBC_2.35 __fminimumieee128 F
 GLIBC_2.35 dfmal F
 GLIBC_2.35 dsqrtl F
 GLIBC_2.35 f32fmaf128 F
@@ -1242,5 +1250,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
index ed5bd3bf6b..45ca5c677a 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
@@ -962,5 +962,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
index e592d9da6e..4838edf991 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
@@ -1059,5 +1059,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 6f55647398..1f5bd7754d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1079,6 +1079,70 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 __clog10l F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 237a880c6a..0b18481f39 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1079,6 +1079,70 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 __clog10l F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index bdd8edfa13..f525a9e77e 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -792,6 +792,54 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index bdd8edfa13..f525a9e77e 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -792,6 +792,54 @@  GLIBC_2.35 f32xfmaf64 F
 GLIBC_2.35 f32xsqrtf64 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index 76ab323332..727d1ce707 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1086,6 +1086,70 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.4 __clog10l F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index d1c2fe6714..0f57574523 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1078,5 +1078,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 13e1d9f0c8..574789e061 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1111,5 +1111,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 40b5f7f9b0..1dc89b304d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1111,5 +1111,69 @@  GLIBC_2.35 f64xfmaf128 F
 GLIBC_2.35 f64xsqrtf128 F
 GLIBC_2.35 ffma F
 GLIBC_2.35 ffmal F
+GLIBC_2.35 fmaximum F
+GLIBC_2.35 fmaximum_mag F
+GLIBC_2.35 fmaximum_mag_num F
+GLIBC_2.35 fmaximum_mag_numf F
+GLIBC_2.35 fmaximum_mag_numf128 F
+GLIBC_2.35 fmaximum_mag_numf32 F
+GLIBC_2.35 fmaximum_mag_numf32x F
+GLIBC_2.35 fmaximum_mag_numf64 F
+GLIBC_2.35 fmaximum_mag_numf64x F
+GLIBC_2.35 fmaximum_mag_numl F
+GLIBC_2.35 fmaximum_magf F
+GLIBC_2.35 fmaximum_magf128 F
+GLIBC_2.35 fmaximum_magf32 F
+GLIBC_2.35 fmaximum_magf32x F
+GLIBC_2.35 fmaximum_magf64 F
+GLIBC_2.35 fmaximum_magf64x F
+GLIBC_2.35 fmaximum_magl F
+GLIBC_2.35 fmaximum_num F
+GLIBC_2.35 fmaximum_numf F
+GLIBC_2.35 fmaximum_numf128 F
+GLIBC_2.35 fmaximum_numf32 F
+GLIBC_2.35 fmaximum_numf32x F
+GLIBC_2.35 fmaximum_numf64 F
+GLIBC_2.35 fmaximum_numf64x F
+GLIBC_2.35 fmaximum_numl F
+GLIBC_2.35 fmaximumf F
+GLIBC_2.35 fmaximumf128 F
+GLIBC_2.35 fmaximumf32 F
+GLIBC_2.35 fmaximumf32x F
+GLIBC_2.35 fmaximumf64 F
+GLIBC_2.35 fmaximumf64x F
+GLIBC_2.35 fmaximuml F
+GLIBC_2.35 fminimum F
+GLIBC_2.35 fminimum_mag F
+GLIBC_2.35 fminimum_mag_num F
+GLIBC_2.35 fminimum_mag_numf F
+GLIBC_2.35 fminimum_mag_numf128 F
+GLIBC_2.35 fminimum_mag_numf32 F
+GLIBC_2.35 fminimum_mag_numf32x F
+GLIBC_2.35 fminimum_mag_numf64 F
+GLIBC_2.35 fminimum_mag_numf64x F
+GLIBC_2.35 fminimum_mag_numl F
+GLIBC_2.35 fminimum_magf F
+GLIBC_2.35 fminimum_magf128 F
+GLIBC_2.35 fminimum_magf32 F
+GLIBC_2.35 fminimum_magf32x F
+GLIBC_2.35 fminimum_magf64 F
+GLIBC_2.35 fminimum_magf64x F
+GLIBC_2.35 fminimum_magl F
+GLIBC_2.35 fminimum_num F
+GLIBC_2.35 fminimum_numf F
+GLIBC_2.35 fminimum_numf128 F
+GLIBC_2.35 fminimum_numf32 F
+GLIBC_2.35 fminimum_numf32x F
+GLIBC_2.35 fminimum_numf64 F
+GLIBC_2.35 fminimum_numf64x F
+GLIBC_2.35 fminimum_numl F
+GLIBC_2.35 fminimumf F
+GLIBC_2.35 fminimumf128 F
+GLIBC_2.35 fminimumf32 F
+GLIBC_2.35 fminimumf32x F
+GLIBC_2.35 fminimumf64 F
+GLIBC_2.35 fminimumf64x F
+GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F