[Pixman] [PATCH v2] configura.ac: fix test for SSE2 & SSSE3 assembler support

Oded Gabbay oded.gabbay at gmail.com
Tue Dec 15 05:04:30 PST 2015


On Tue, Dec 15, 2015 at 3:02 PM, Oded Gabbay <oded.gabbay at gmail.com> wrote:
> This patch modifies the SSE2 & SSSE3 tests in configure.ac to use a
> global variable to initialize vector variables. In addition, we now
> return the value of the computation instead of 0.
>
> This is done so gcc 4.9 (and lower) won't optimize the SSE assembly
> instructions (when using -O1 and higher), because then the configure test
> might incorrectly pass even though the assembler doesn't support the
> SSE instructions (the test will pass because the compiler does support
> the intrinsics).
>
> v2: instead of using volatile, use a global variable as input
>
> Signed-off-by: Oded Gabbay <oded.gabbay at gmail.com>
> ---
>  configure.ac | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 3a66909..ae4d3c6 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -429,10 +429,11 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
>  #include <mmintrin.h>
>  #include <xmmintrin.h>
>  #include <emmintrin.h>
> +int param;
>  int main () {
> -    __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
> +    __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c;
>         c = _mm_xor_si128 (a, b);
> -    return 0;
> +    return _mm_cvtsi128_si32(c);
>  }]])], have_sse2_intrinsics=yes)
>  CFLAGS=$xserver_save_CFLAGS
>
> @@ -473,10 +474,11 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
>  #include <xmmintrin.h>
>  #include <emmintrin.h>
>  #include <tmmintrin.h>
> +int param;
>  int main () {
> -    __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
> +    __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c;
>      c = _mm_maddubs_epi16 (a, b);
> -    return 0;
> +    return _mm_cvtsi128_si32(c);
>  }]])], have_ssse3_intrinsics=yes)
>  CFLAGS=$xserver_save_CFLAGS
>
> --
> 2.5.0
>

Sorry for the spam, this is the correct version.
Oded


More information about the Pixman mailing list