[Pixman] [PATCH] configure.ac: fix test for SSE2/SSSE3 assembler support
Oded Gabbay
oded.gabbay at gmail.com
Wed Dec 9 05:31:59 PST 2015
From: Jonathan Gray <jsg at jsg.id.au>
This patch was originally sent to mesa but it applies to pixman as well.
Change the __m128i variables to be volatile so gcc 4.9 won't optimize
all of them out with -O1 or greater. The _mm_set1_epi32/pinsrd calls
still get optimized out but now there is at least one SSE2/SSSE3
instruction generated via _mm_max_epu32/pmaxud. When all of the
SSE2/SSSE3 instructions got optimized out the configure test would
incorrectly pass when the compiler supported the intrinsics and the
assembler didn't support the instructions.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91806
Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
Reviewed-by: Emil Velikov <emil.velikov at collabora.com>
Signed-off-by: Oded Gabbay <oded.gabbay at gmail.com>
---
configure.ac | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index 3a66909..6323b98 100644
--- a/configure.ac
+++ b/configure.ac
@@ -430,7 +430,7 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <xmmintrin.h>
#include <emmintrin.h>
int main () {
- __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
+ volatile __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
c = _mm_xor_si128 (a, b);
return 0;
}]])], have_sse2_intrinsics=yes)
@@ -474,7 +474,7 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <emmintrin.h>
#include <tmmintrin.h>
int main () {
- __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
+ volatile __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
c = _mm_maddubs_epi16 (a, b);
return 0;
}]])], have_ssse3_intrinsics=yes)
--
2.5.0
More information about the Pixman
mailing list