]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sysdeps/x86_64/fpu/multiarch/s_sin.c
Prefer https to http for gnu.org and fsf.org URLs
[thirdparty/glibc.git] / sysdeps / x86_64 / fpu / multiarch / s_sin.c
index a0c2521c983df9e3fd5a2f3b0e5f85a3e060a0e9..8091414a65cb3c9510e484fe323d91a954cc499b 100644 (file)
@@ -1,33 +1,39 @@
-#if defined HAVE_FMA4_SUPPORT || defined HAVE_AVX_SUPPORT
-# include <init-arch.h>
-# include <math.h>
-# undef NAN
-
-extern double __cos_sse2 (double);
-extern double __sin_sse2 (double);
-extern double __cos_avx (double);
-extern double __sin_avx (double);
-# ifdef HAVE_FMA4_SUPPORT
-extern double __cos_fma4 (double);
-extern double __sin_fma4 (double);
-# else
-#  undef HAS_FMA4
-#  define HAS_FMA4 0
-#  define __cos_fma4 ((void *) 0)
-#  define __sin_fma4 ((void *) 0)
-# endif
-
-libm_ifunc (__cos, (HAS_FMA4 ? __cos_fma4 :
-                   HAS_AVX ? __cos_avx : __cos_sse2));
-weak_alias (__cos, cos)
-
-libm_ifunc (__sin, (HAS_FMA4 ? __sin_fma4 :
-                   HAS_AVX ? __sin_avx : __sin_sse2));
-weak_alias (__sin, sin)
-
-# define __cos __cos_sse2
-# define __sin __sin_sse2
-#endif
+/* Multiple versions of sin and cos.
+   Copyright (C) 2017-2019 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-alias-double.h>
+
+extern double __redirect_sin (double);
+extern double __redirect_cos (double);
+
+#define SYMBOL_NAME sin
+#include "ifunc-avx-fma4.h"
+
+libc_ifunc_redirected (__redirect_sin, __sin, IFUNC_SELECTOR ());
+libm_alias_double (__sin, sin)
+
+#undef SYMBOL_NAME
+#define SYMBOL_NAME cos
+#include "ifunc-avx-fma4.h"
+
+libc_ifunc_redirected (__redirect_cos, __cos, IFUNC_SELECTOR ());
+libm_alias_double (__cos, cos)
+
+#define __cos __cos_sse2
+#define __sin __sin_sse2
 #include <sysdeps/ieee754/dbl-64/s_sin.c>