[Pixman] [PATCH] Make pixman-mmx.c compile on x86-32 without optimization

Knut Petersen Knut_Petersen at t-online.de
Mon Jul 9 07:15:22 PDT 2012


That compiles cleanly here.

Tested-by: Knut Petersen <knut_petersen at t-online.de>

> From: Søren Sandmann Pedersen <ssp at redhat.com>
>
> When not optimizing, write _mm_shuffle_pi16() as a statement
> expression with inline assembly. That way we avoid
> __builtin_ia32_pshufw(), which is only available when compiling with
> -msse, while still allowing the non-optimizing gcc to understand that
> the second argument is a compile time constant.
>
> Cc: mattst88 at gmail.com
> ---
>   pixman/pixman-mmx.c |   13 +++++++++++--
>   1 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
> index 5441d6b..74a5e87 100644
> --- a/pixman/pixman-mmx.c
> +++ b/pixman/pixman-mmx.c
> @@ -105,8 +105,17 @@ _mm_shuffle_pi16 (__m64 __A, int8_t const __N)
>       return ret;
>   }
>   #  else
> -#   define _mm_shuffle_pi16(A, N) \
> -    ((__m64) __builtin_ia32_pshufw ((__v4hi)(__m64)(A), (int)(N)))
> +#   define _mm_shuffle_pi16(A, N)					\
> +    ({									\
> +	__m64 ret;							\
> +									\
> +	asm ("pshufw %2, %1, %0\n\t"					\
> +	     : "=y" (ret)						\
> +	     : "y" (A), "K" ((const int8_t)N)				\
> +	);								\
> +									\
> +	ret;								\
> +    })
>   #  endif
>   # endif
>   #endif




More information about the Pixman mailing list