summary refs log tree commit diff stats
path: root/configure
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2016-08-29 11:46:15 -0700
committerPaolo Bonzini <pbonzini@redhat.com>2016-09-13 19:13:30 +0200
commit5e33a8722254f99cbce6ede73adb4b735d94f58f (patch)
tree9e9e7dd4e52a73a95f31c2e16d6373cacb4e705d /configure
parenta1febc4950f2c6232c002f401d7cd409f6fa6a88 (diff)
downloadfocaccia-qemu-5e33a8722254f99cbce6ede73adb4b735d94f58f.tar.gz
focaccia-qemu-5e33a8722254f99cbce6ede73adb4b735d94f58f.zip
cutils: Rearrange buffer_is_zero acceleration
Allow selection of several acceleration functions
based on the size and alignment of the buffer.
Do not require ifunc support for AVX2 acceleration.

Signed-off-by: Richard Henderson <rth@twiddle.net>
Message-Id: <1472496380-19706-5-git-send-email-rth@twiddle.net>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure21
1 files changed, 6 insertions, 15 deletions
diff --git a/configure b/configure
index 331c36fb84..7e09b79fe5 100755
--- a/configure
+++ b/configure
@@ -1794,28 +1794,19 @@ fi
 ##########################################
 # avx2 optimization requirement check
 
-
-if test "$static" = "no" ; then
-  cat > $TMPC << EOF
+cat > $TMPC << EOF
 #pragma GCC push_options
 #pragma GCC target("avx2")
 #include <cpuid.h>
 #include <immintrin.h>
-
 static int bar(void *a) {
-    return _mm256_movemask_epi8(_mm256_cmpeq_epi8(*(__m256i *)a, (__m256i){0}));
+    __m256i x = *(__m256i *)a;
+    return _mm256_testz_si256(x, x);
 }
-static void *bar_ifunc(void) {return (void*) bar;}
-int foo(void *a) __attribute__((ifunc("bar_ifunc")));
-int main(int argc, char *argv[]) { return foo(argv[0]);}
+int main(int argc, char *argv[]) { return bar(argv[0]); }
 EOF
-  if compile_object "" ; then
-      if has readelf; then
-          if readelf --syms $TMPO 2>/dev/null |grep -q "IFUNC.*foo"; then
-              avx2_opt="yes"
-          fi
-      fi
-  fi
+if compile_object "" ; then
+  avx2_opt="yes"
 fi
 
 #########################################