about summary refs log tree commit diff
path: root/sysdeps/x86_64/fpu/multiarch/e_exp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/x86_64/fpu/multiarch/e_exp.c')
-rw-r--r--sysdeps/x86_64/fpu/multiarch/e_exp.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp.c b/sysdeps/x86_64/fpu/multiarch/e_exp.c
index fc1096b54c..3c650287c5 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_exp.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_exp.c
@@ -1,11 +1,20 @@
-#ifdef HAVE_FMA4_SUPPORT
+#if defined HAVE_FMA4_SUPPORT || defined HAVE_AVX_SUPPORT
 # include <init-arch.h>
 # include <math_private.h>
 
 extern double __ieee754_exp_sse2 (double);
+extern double __ieee754_exp_avx (double);
+# ifdef HAVE_FMA4_SUPPORT
 extern double __ieee754_exp_fma4 (double);
+# else
+#  undef HAS_FMA4
+#  define HAS_FMA4 0
+#  define __ieee754_exp_fma4 ((void *) 0)
+# endif
 
-libm_ifunc (__ieee754_exp, HAS_FMA4 ? __ieee754_exp_fma4 : __ieee754_exp_sse2);
+libm_ifunc (__ieee754_exp,
+	    HAS_FMA4 ? __ieee754_exp_fma4
+	    : (HAS_AVX ? __ieee754_exp_avx : __ieee754_exp_sse2));
 strong_alias (__ieee754_exp, __exp_finite)
 
 # define __ieee754_exp __ieee754_exp_sse2