about summary refs log tree commit diff
path: root/sysdeps/x86_64/configure
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2014-07-14 07:58:27 -0700
committerH.J. Lu <hjl.tools@gmail.com>2014-07-14 07:58:27 -0700
commitf2fef657d8736c32fb600771949f59852558b11a (patch)
treea9e954223fa5cbd9e53f143e0f50c6f6276ebe0c /sysdeps/x86_64/configure
parentf6c44d475104e931bab2b4ffa499961088de673c (diff)
downloadglibc-f2fef657d8736c32fb600771949f59852558b11a.tar.gz
glibc-f2fef657d8736c32fb600771949f59852558b11a.tar.xz
glibc-f2fef657d8736c32fb600771949f59852558b11a.zip
Enable AVX2 optimized memset only if -mavx2 works
	* config.h.in (HAVE_AVX2_SUPPORT): New #undef.
	* sysdeps/i386/configure.ac: Set HAVE_AVX2_SUPPORT and
	config-cflags-avx2.
	* sysdeps/x86_64/configure.ac: Likewise.
	* sysdeps/i386/configure: Regenerated.
	* sysdeps/x86_64/configure: Likewise.
	* sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
	memset-avx2 only if config-cflags-avx2 is yes.
	* sysdeps/x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list):
	Tests for memset_chk and memset only if HAVE_AVX2_SUPPORT is
	defined.
	* sysdeps/x86_64/multiarch/memset.S: Define multiple versions
	only if HAVE_AVX2_SUPPORT is defined.
	* sysdeps/x86_64/multiarch/memset_chk.S: Likewise.
Diffstat (limited to 'sysdeps/x86_64/configure')
-rw-r--r--sysdeps/x86_64/configure26
1 files changed, 26 insertions, 0 deletions
diff --git a/sysdeps/x86_64/configure b/sysdeps/x86_64/configure
index 45d868d93d..7d4dadd4fd 100644
--- a/sysdeps/x86_64/configure
+++ b/sysdeps/x86_64/configure
@@ -249,6 +249,32 @@ if test $libc_cv_asm_mpx == yes; then
 
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX2 support" >&5
+$as_echo_n "checking for AVX2 support... " >&6; }
+if ${libc_cv_cc_avx2+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if { ac_try='${CC-cc} -mavx2 -xc /dev/null -S -o /dev/null'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  libc_cv_cc_avx2=yes
+else
+  libc_cv_cc_avx2=no
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_avx2" >&5
+$as_echo "$libc_cv_cc_avx2" >&6; }
+if test $libc_cv_cc_avx2 = yes; then
+  $as_echo "#define HAVE_AVX2_SUPPORT 1" >>confdefs.h
+
+fi
+config_vars="$config_vars
+config-cflags-avx2 = $libc_cv_cc_avx2"
+
 $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
 
 # work around problem with autoconf and empty lines at the end of files