[Mesa-dev] [PATCH 07/13] i965: Use standard SSE intrinsics instead of gcc built-ins.
--- src/mesa/drivers/dri/i965/intel_tex_subimage.c | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/mesa/drivers/dri/i965/intel_tex_subimage.c b/src/mesa/drivers/dri/i965/intel_tex_subimage.c index 5d79750..fe909e4 100644 --- a/src/mesa/drivers/dri/i965/intel_tex_subimage.c +++ b/src/mesa/drivers/dri/i965/intel_tex_subimage.c @@ -42,6 +42,10 @@ #include "intel_mipmap_tree.h" #include "intel_blit.h" +#ifdef __SSSE3__ +#include +#endif + #define FILE_DEBUG_FLAG DEBUG_TEXTURE #define ALIGN_DOWN(a, b) ROUND_DOWN_TO(a, b) @@ -174,13 +178,11 @@ err: static const uint8_t rgba8_permutation[16] = { 2,1,0,3, 6,5,4,7, 10,9,8,11, 14,13,12,15 }; -typedef char v16 __attribute__((vector_size(16))); - /* NOTE: dst must be 16 byte aligned */ #define rgba8_copy_16(dst, src) \ - *(v16*)(dst) = __builtin_ia32_pshufb128( \ - (v16) __builtin_ia32_loadups((float*)(src)), \ - *(v16*) rgba8_permutation \ + *(__m128i *)(dst) = _mm_shuffle_epi8(\ + (__m128i) _mm_loadu_ps((float*)(src)), \ + *(__m128i *) rgba8_permutation\ ) #endif -- 1.8.3.2 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 07/13] i965: Use standard SSE intrinsics instead of gcc built-ins.
On Sun, Jun 15, 2014 at 1:18 PM, Matt Turner wrote: > --- > src/mesa/drivers/dri/i965/intel_tex_subimage.c | 12 +++- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/intel_tex_subimage.c > b/src/mesa/drivers/dri/i965/intel_tex_subimage.c > index 5d79750..fe909e4 100644 > --- a/src/mesa/drivers/dri/i965/intel_tex_subimage.c > +++ b/src/mesa/drivers/dri/i965/intel_tex_subimage.c > @@ -42,6 +42,10 @@ > #include "intel_mipmap_tree.h" > #include "intel_blit.h" > > +#ifdef __SSSE3__ > +#include > +#endif > + > #define FILE_DEBUG_FLAG DEBUG_TEXTURE > > #define ALIGN_DOWN(a, b) ROUND_DOWN_TO(a, b) > @@ -174,13 +178,11 @@ err: > static const uint8_t rgba8_permutation[16] = > { 2,1,0,3, 6,5,4,7, 10,9,8,11, 14,13,12,15 }; > > -typedef char v16 __attribute__((vector_size(16))); > - > /* NOTE: dst must be 16 byte aligned */ > #define rgba8_copy_16(dst, src) \ > - *(v16*)(dst) = __builtin_ia32_pshufb128( \ > - (v16) __builtin_ia32_loadups((float*)(src)), \ > - *(v16*) rgba8_permutation \ > + *(__m128i *)(dst) = _mm_shuffle_epi8(\ > + (__m128i) _mm_loadu_ps((float*)(src)), \ > + *(__m128i *) rgba8_permutation\ > ) > #endif > > -- > 1.8.3.2 > Reviewed-by: Frank Henigman ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev