mirror of
https://sourceware.org/git/glibc.git
synced 2025-11-15 15:21:18 +03:00
m68k: Remove the SVID error handling from fmodf
The m68k provided an optimized version through __m81_u(fmodf) (mathimpl.h), and gcc does not implement it through a builtin (different than i386). Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
This commit is contained in:
6
sysdeps/m68k/m680x0/fpu/Versions
Normal file
6
sysdeps/m68k/m680x0/fpu/Versions
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
libm {
|
||||||
|
GLIBC_2.43 {
|
||||||
|
# No SVID compatible error handling.
|
||||||
|
fmodf;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,42 @@
|
|||||||
#ifndef FUNC
|
/* Floating-point remainder function.
|
||||||
# define FUNC __ieee754_fmodf
|
Copyright (C) 2014-2025 Free Software Foundation, Inc.
|
||||||
# define FUNC_FINITE __fmodf
|
This file is part of the GNU C Library.
|
||||||
#endif
|
|
||||||
#define float_type float
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
#include <e_fmod.c>
|
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-alias-finite.h>
|
||||||
|
#include <libm-alias-float.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include "mathimpl.h"
|
||||||
|
#include "sysdeps/ieee754/flt-32/math_config.h"
|
||||||
|
|
||||||
|
float
|
||||||
|
__fmodf (float x, float y)
|
||||||
|
{
|
||||||
|
uint32_t hx = asuint (x);
|
||||||
|
uint32_t hy = asuint (y);
|
||||||
|
|
||||||
|
/* fmod(+-Inf,y) or fmod(x,0) */
|
||||||
|
if (__glibc_unlikely ((is_inf (hx) || y == 0.0f)
|
||||||
|
&& !is_nan (hy)
|
||||||
|
&& !is_nan (hx)))
|
||||||
|
return __math_invalidf (x);
|
||||||
|
|
||||||
|
return __m81_u(fmodf)(x, y);
|
||||||
|
}
|
||||||
|
strong_alias (__fmodf, __ieee754_fmodf)
|
||||||
|
versioned_symbol (libm, __fmodf, fmodf, GLIBC_2_43);
|
||||||
|
libm_alias_float_other (__fmod, fmod)
|
||||||
|
libm_alias_finite (__ieee754_fmodf, __fmodf)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
#define FUNC __ieee754_remainderf
|
#define FUNC __ieee754_remainderf
|
||||||
#define FUNC_FINITE __remainderf
|
#define FUNC_FINITE __remainderf
|
||||||
#include <e_fmodf.c>
|
#define float_type float
|
||||||
|
#include <e_fmod.c>
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
/* m68k provides an optimized __ieee752_fmodf. */
|
|
||||||
#include <math-svid-compat.h>
|
|
||||||
#ifdef SHARED
|
|
||||||
# undef SHLIB_COMPAT
|
|
||||||
# define SHLIB_COMPAT(a, b, c) 1
|
|
||||||
# undef LIBM_SVID_COMPAT
|
|
||||||
# define LIBM_SVID_COMPAT 1
|
|
||||||
# undef compat_symbol
|
|
||||||
# define compat_symbol(a, b, c, d)
|
|
||||||
# include <math/w_fmodf_compat.c>
|
|
||||||
libm_alias_float (__fmod_compat, fmod)
|
|
||||||
#else
|
|
||||||
#include <math-type-macros-float.h>
|
|
||||||
#include <w_fmod_template.c>
|
|
||||||
#endif
|
|
||||||
@@ -986,3 +986,4 @@ GLIBC_2.42 rsqrtf32 F
|
|||||||
GLIBC_2.42 rsqrtf32x F
|
GLIBC_2.42 rsqrtf32x F
|
||||||
GLIBC_2.42 rsqrtf64 F
|
GLIBC_2.42 rsqrtf64 F
|
||||||
GLIBC_2.42 rsqrtl F
|
GLIBC_2.42 rsqrtl F
|
||||||
|
GLIBC_2.43 fmodf F
|
||||||
|
|||||||
Reference in New Issue
Block a user