diff options
Diffstat (limited to 'pixman')
-rw-r--r-- | pixman/configure.ac | 2 | ||||
-rw-r--r-- | pixman/pixman/pixman-mmx.c | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/pixman/configure.ac b/pixman/configure.ac index 1cf9eb4e5..56ef10ebf 100644 --- a/pixman/configure.ac +++ b/pixman/configure.ac @@ -565,7 +565,7 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ #ifndef __arm__ #error "IWMMXT is only available on ARM" #endif -#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)) +#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)) #error "Need GCC >= 4.6 for IWMMXT intrinsics" #endif #include <mmintrin.h> diff --git a/pixman/pixman/pixman-mmx.c b/pixman/pixman/pixman-mmx.c index 72cbddb2c..2a72efaac 100644 --- a/pixman/pixman/pixman-mmx.c +++ b/pixman/pixman/pixman-mmx.c @@ -73,6 +73,7 @@ _mm_mulhi_pu16 (__m64 __A, __m64 __B) return __A; } +# ifdef __OPTIMIZE__ extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_shuffle_pi16 (__m64 __A, int8_t const __N) { @@ -85,6 +86,10 @@ _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))) +# endif # endif #ifndef _MSC_VER |