[Mesa-dev] [PATCHv2] configure.ac: roll up a program for the sse4.1 check

Emil Velikov emil.l.velikov at gmail.com
Sat Nov 15 10:37:22 PST 2014

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: Siavash Eliasi <siavashserver at gmail.com>
Cc: Matt Turner <mattst88 at gmail.com>
Tested-by: David Heidelberg <david at ixit.cz>
Tested-by: Siavash Eliasi <siavashserver at gmail.com>
Reviewed-by: Matt Turner <mattst88 at gmail.com>
Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
 configure.ac | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 91e111b..8aa070d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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

More information about the mesa-dev mailing list