about summary refs log tree commit diff
path: root/sysdeps/x86_64/fpu/multiarch/s_sin.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/x86_64/fpu/multiarch/s_sin.c')
-rw-r--r--sysdeps/x86_64/fpu/multiarch/s_sin.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/sysdeps/x86_64/fpu/multiarch/s_sin.c b/sysdeps/x86_64/fpu/multiarch/s_sin.c
index a7c35dc858..1ba9dbc50c 100644
--- a/sysdeps/x86_64/fpu/multiarch/s_sin.c
+++ b/sysdeps/x86_64/fpu/multiarch/s_sin.c
@@ -1,17 +1,26 @@
-#ifdef HAVE_FMA4_SUPPORT
+#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 __cos_fma4 (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 : __cos_sse2);
+libm_ifunc (__cos, HAS_FMA4 ? __cos_fma4 : HAS_AVX ? __cos_avx : __cos_sse2);
 weak_alias (__cos, cos)
 
-libm_ifunc (__sin, HAS_FMA4 ? __sin_fma4 : __sin_sse2);
+libm_ifunc (__sin, HAS_FMA4 ? __sin_fma4 : HAS_AVX ? __sin_avx : __sin_sse2);
 weak_alias (__sin, sin)
 
 # define __cos __cos_sse2