From a3b68738db26a050a1cb47d2898a0071f1d284a2 Mon Sep 17 00:00:00 2001 From: Ilya Maykov Date: Thu, 4 Aug 2016 11:58:48 -0700 Subject: [PATCH] Better AVX2 detection, try 2 (only using intrinsic functions) (#420) * Better AVX2 detection, try 2 (only using intrinsic functions) * Slight change to AVX2 detection per jedisct1's feedback --- configure.ac | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index ffe754c3..f2cb6ddf 100644 --- a/configure.ac +++ b/configure.ac @@ -398,7 +398,13 @@ AS_IF([test "x$EMSCRIPTEN" = "x" -a "$host_os" != "pnacl"], [ #endif #pragma GCC target("avx2") #include -]], [[ __m256i x = _mm256_abs_epi8(_mm256_setzero_si256()); ]])], +]], [[ +// the code below is intentionally crafted to make sure the compiler +// can't optimize the AVX2 instructions away. +__m256 x = _mm256_set1_ps(3.14); +__m256 y = _mm256_permutevar8x32_ps(x, _mm256_set1_epi32(42)); +return _mm256_movemask_ps(_mm256_cmp_ps(x, y, _CMP_NEQ_OQ)); +]])], [AC_MSG_RESULT(yes) AC_DEFINE([HAVE_AVX2INTRIN_H], [1], [AVX2 is available]) AX_CHECK_COMPILE_FLAG([-mavx2], [CFLAGS_AVX2="-mavx2"])