[PATCH 2/3] x86: Remove feraiseexcept optimization
Adhemerval Zanella
adhemerval.zanella@linaro.org
Fri Mar 27 19:34:03 GMT 2020
Ping.
On 09/03/2020 15:32, Adhemerval Zanella wrote:
> Similar to fenvinline.h removal, this kind of optimization is better
> implemented by the compiler. Also newer code avoid setting exceptions
> directly (for instance the code to make new logf, log2f and powf
> implementatation to now support SVID compat).
>
> Checked on x86_64-linux-gnu and i686-linux-gnu.
> ---
> sysdeps/x86/fpu/bits/fenv.h | 54 ---------------------------
> sysdeps/x86/fpu/include/bits/fenv.h | 57 -----------------------------
> 2 files changed, 111 deletions(-)
> delete mode 100644 sysdeps/x86/fpu/include/bits/fenv.h
>
> diff --git a/sysdeps/x86/fpu/bits/fenv.h b/sysdeps/x86/fpu/bits/fenv.h
> index eb78eb4b2d..6cfa5678eb 100644
> --- a/sysdeps/x86/fpu/bits/fenv.h
> +++ b/sysdeps/x86/fpu/bits/fenv.h
> @@ -114,57 +114,3 @@ femode_t;
> /* Default floating-point control modes. */
> # define FE_DFL_MODE ((const femode_t *) -1L)
> #endif
> -
> -
> -#ifdef __USE_EXTERN_INLINES
> -__BEGIN_DECLS
> -
> -/* Optimized versions. */
> -#ifndef _LIBC
> -extern int __REDIRECT_NTH (__feraiseexcept_renamed, (int), feraiseexcept);
> -#endif
> -__extern_always_inline void
> -__NTH (__feraiseexcept_invalid_divbyzero (int __excepts))
> -{
> - if ((FE_INVALID & __excepts) != 0)
> - {
> - /* One example of an invalid operation is 0.0 / 0.0. */
> - float __f = 0.0;
> -
> -# ifdef __SSE_MATH__
> - __asm__ __volatile__ ("divss %0, %0 " : : "x" (__f));
> -# else
> - __asm__ __volatile__ ("fdiv %%st, %%st(0); fwait"
> - : "=t" (__f) : "0" (__f));
> -# endif
> - (void) &__f;
> - }
> - if ((FE_DIVBYZERO & __excepts) != 0)
> - {
> - float __f = 1.0;
> - float __g = 0.0;
> -
> -# ifdef __SSE_MATH__
> - __asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g));
> -# else
> - __asm__ __volatile__ ("fdivp %%st, %%st(1); fwait"
> - : "=t" (__f) : "0" (__f), "u" (__g) : "st(1)");
> -# endif
> - (void) &__f;
> - }
> -}
> -__extern_inline int
> -__NTH (feraiseexcept (int __excepts))
> -{
> - if (__builtin_constant_p (__excepts)
> - && (__excepts & ~(FE_INVALID | FE_DIVBYZERO)) == 0)
> - {
> - __feraiseexcept_invalid_divbyzero (__excepts);
> - return 0;
> - }
> -
> - return __feraiseexcept_renamed (__excepts);
> -}
> -
> -__END_DECLS
> -#endif
> diff --git a/sysdeps/x86/fpu/include/bits/fenv.h b/sysdeps/x86/fpu/include/bits/fenv.h
> deleted file mode 100644
> index dd3f61e9f3..0000000000
> --- a/sysdeps/x86/fpu/include/bits/fenv.h
> +++ /dev/null
> @@ -1,57 +0,0 @@
> -/* Wrapper for x86 bits/fenv.h for use when building glibc.
> - Copyright (C) 1997-2020 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/>. */
> -
> -#ifndef _BITS_FENV_H
> -
> -#if defined _LIBC && defined __USE_EXTERN_INLINES
> -# if defined SHARED && !defined NO_HIDDEN && IS_IN (libm)
> -extern int __REDIRECT_NTH (__feraiseexcept_renamed, (int), __GI_feraiseexcept);
> -# else
> -extern int __REDIRECT_NTH (__feraiseexcept_renamed, (int), feraiseexcept);
> -# endif
> -#endif
> -
> -#include_next <bits/fenv.h>
> -
> -# ifndef _ISOMAC
> -
> -/* Ensure __feraiseexcept calls in glibc are optimized the same as
> - feraiseexcept calls. */
> -
> -#ifdef __USE_EXTERN_INLINES
> -__BEGIN_DECLS
> -
> -extern int __REDIRECT_NTH (____feraiseexcept_renamed, (int), __feraiseexcept);
> -__extern_inline int
> -__NTH (__feraiseexcept (int __excepts))
> -{
> - if (__builtin_constant_p (__excepts)
> - && (__excepts & ~(FE_INVALID | FE_DIVBYZERO)) == 0)
> - {
> - __feraiseexcept_invalid_divbyzero (__excepts);
> - return 0;
> - }
> -
> - return ____feraiseexcept_renamed (__excepts);
> -}
> -
> -__END_DECLS
> -#endif
> -
> -# endif /* _ISOMAC */
> -#endif /* bits/fenv.h */
>
More information about the Libc-alpha
mailing list