diff options
authorEmil Velikov <>2014-11-15 18:37:22 +0000
committerEmil Velikov <>2014-11-15 20:34:34 +0000
commit1a6ae840413d7fb6d2e83f6a83081d5246c7ac9e (patch)
parent3bc42a09e2d13c42e15423a17b5c571049a11224 (diff) roll up a program for the sse4.1 check
So when checking/building sse code we have three possibilities: 1 Old compiler, throws an error when using -msse* 2 New compiler, user disables sse* (-mno-sse*) 3 New compiler, user doesn't disable sse The original code, added code for #1 but not #2. Later on we patched around the lack of handling #2 by wrapping the code in __SSE4_1__. Yet it lead to a missing/undefined symbol in case of #1 or #2, which might cause an issue for #2 when using the i965 driver. A bit later we "fixed" the undefined symbol by using #1, rather than updating it to handle #2. With this commit we set things straight :) To top it all up, conventions state that in case of conflicting (-enable-foo -disable-foo) options, the latter one takes precedence. Thus we need to make sure to prepend -msse4.1 to CFLAGS in our test. v2: Clean the #includes. Suggested by Ilia, Matt & Siavash. Cc: "10.3 10.4" <> Tested-by: David Heidelberg <> Tested-by: Siavash Eliasi <> Reviewed-by: Matt Turner <> Signed-off-by: Emil Velikov <>
1 files changed, 10 insertions, 1 deletions
diff --git a/ b/
index 91e111b8eae..8aa070d2125 100644
--- a/
+++ b/
@@ -252,7 +252,16 @@ AC_SUBST([VISIBILITY_CXXFLAGS])
dnl Optional flags, check for compiler support
+CFLAGS="-msse4.1 $CFLAGS"
+#include <smmintrin.h>
+int main () {
+ __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
+ c = _mm_max_epu32(a, b);
+ return 0;
+}]])], SSE41_SUPPORTED=1)
if test "x$SSE41_SUPPORTED" = x1; then