[Mesa-dev] [PATCH 07/13] i965: Use standard SSE intrinsics instead of gcc built-ins.

2014-06-15 Thread Matt Turner
---
 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 tmmintrin.h
+#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.

2014-06-15 Thread Frank Henigman
On Sun, Jun 15, 2014 at 1:18 PM, Matt Turner matts...@gmail.com 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 tmmintrin.h
 +#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 fjhenig...@google.com
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev