+dnl Check for fully workin SSE2 intrinsics
+dnl We need support for -mmmx, we need <emmintrin.h>, and we also need a
+dnl working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
+AC_CACHE_CHECK([if \$CC groks SSE2 intrinsics],
+ [ac_cv_c_sse2_intrinsics],
+ [CFLAGS="${CFLAGS_save} -O -msse2"
+ AC_TRY_COMPILE([#include <emmintrin.h>
+ #include <stdint.h>
+ uint64_t frobzor;],
+ [__m128i a, b, c;
+ a = b = c = _mm_set1_epi64((__m64)frobzor);
+ a = _mm_slli_epi16(a, 3);
+ a = _mm_adds_epi16(a, b);
+ c = _mm_srli_epi16(c, 8);
+ c = _mm_slli_epi16(c, 3);
+ b = _mm_adds_epi16(b, c);
+ a = _mm_unpacklo_epi8(a, b);
+ frobzor = (uint64_t)_mm_movepi64_pi64(a);],
+ [ac_cv_c_sse2_intrinsics=yes],
+ [ac_cv_c_sse2_intrinsics=no])])
+if test "${ac_cv_c_sse2_intrinsics}" != "no"; then
+ AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, Define if SSE2 intrinsics are available.)
+ dnl VLC_ADD_CFLAGS([i420_rgb_sse2],[-msse2])
+fi
+
+AC_CACHE_CHECK([if \$CC groks MMX inline assembly],
+ [ac_cv_mmx_inline],
+ [CFLAGS="${CFLAGS_save}"
+ AC_TRY_COMPILE(,[void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));],
+ ac_cv_mmx_inline=yes, ac_cv_mmx_inline=no)])
+if test "${ac_cv_mmx_inline}" != "no"; then
+ AC_DEFINE(CAN_COMPILE_MMX, 1, Define if \$CC groks MMX inline assembly.)
+ ACCEL_MODULES="${ACCEL_MODULES} ${MMX_MODULES}"
+fi
+