[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