PATCH: Add SSE4.1 support

H. J. Lu hjl@lucon.org
Tue May 22 18:10:00 GMT 2007


On Tue, May 22, 2007 at 10:52:11AM +0200, Uros Bizjak wrote:
> Following that change, please update following files in the testsuite:
> 
> gcc.target/i386/sse-12.c
> gcc.target/i386/sse-13.c
> gcc.target/i386/sse-14.c
> g++.dg/other/i386-2.C
> 

I am testing the following patch. I will check it on after bootstrap
and test are finished without regressions on Linux/ia32 and
Linux/Intel64.

Thanks.

H.J.
----
2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>

	* g++.dg/other/i386-2.C: Add -msse4.1. Include <smmintrin.h>.
	* gcc.target/i386/sse-12.c: Likewise.
	* gcc.target/i386/sse-13.c: Likewise.
	* gcc.target/i386/sse-14.c: Likewise.

	* gcc.target/i386/sse-13.c (__builtin_ia32_pblendw128): New.
	Redefined to test with immediate operand.
	(__builtin_ia32_blendps): Likewise.
	(__builtin_ia32_blendpd): Likewise.
	(__builtin_ia32_dpps): Likewise.
	(__builtin_ia32_dpps): Likewise.
	(__builtin_ia32_insertps128): Likewise.
	(__builtin_ia32_vec_ext_v4sf): Likewise.
	(__builtin_ia32_vec_set_v16qi): Likewise.
	(__builtin_ia32_vec_set_v4si): Likewise.
	(__builtin_ia32_vec_set_v2di): Likewise.
	(__builtin_ia32_vec_ext_v16qi): Likewise.
	(__builtin_ia32_vec_ext_v4si): Likewise.
	(__builtin_ia32_vec_ext_v2di): Likewise.
	(__builtin_ia32_roundpd): Likewise.
	(__builtin_ia32_roundsd): Likewise.
	(__builtin_ia32_roundps): Likewise.
	(__builtin_ia32_roundss): Likewise.
	(__builtin_ia32_mpsadbw128): Likewise.

--- gcc/testsuite/g++.dg/other/i386-2.C.sse41	2007-05-22 06:39:41.000000000 -0700
+++ gcc/testsuite/g++.dg/other/i386-2.C	2007-05-22 10:31:26.000000000 -0700
@@ -1,9 +1,10 @@
 /* Test that {,x,e,p,t,a}mmintrin.h, mm3dnow.h and mm_malloc.h are
    usable with -O -pedantic-errors.  */
 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-O -pedantic-errors -march=k8 -m3dnow -mssse3 -msse4a" } */
+/* { dg-options "-O -pedantic-errors -march=k8 -m3dnow -mssse3 -msse4.1 -msse4a" } */
 
 #include <ammintrin.h>
+#include <smmintrin.h>
 #include <tmmintrin.h>
 #include <mm3dnow.h>
 
--- gcc/testsuite/gcc.target/i386/sse-12.c.sse41	2007-05-22 06:39:41.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse-12.c	2007-05-22 10:31:05.000000000 -0700
@@ -1,9 +1,10 @@
 /* Test that {,x,e,p,t,a}mmintrin.h, mm3dnow.h and mm_malloc.h are
    usable with -O -std=c89 -pedantic-errors.  */
 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -m3dnow -mssse3 -msse4a" } */
+/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -m3dnow -mssse3 -msse4.1 -msse4a" } */
 
 #include <ammintrin.h>
+#include <smmintrin.h>
 #include <tmmintrin.h>
 #include <mm3dnow.h>
 
--- gcc/testsuite/gcc.target/i386/sse-13.c.sse41	2007-05-20 09:09:13.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse-13.c	2007-05-22 10:49:48.000000000 -0700
@@ -1,5 +1,5 @@
 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-O2 -mssse3 -msse4a" } */
+/* { dg-options "-O2 -mssse3 -msse4.1 -msse4a" } */
 
 /* Test that the intrinsics compile with optimization.  All of them are
    defined as inline functions in mmintrin.h that reference the proper
@@ -15,6 +15,26 @@
 #define __builtin_ia32_extrqi(X, I, L)  __builtin_ia32_extrqi(X, 1, 1)
 #define __builtin_ia32_insertqi(X, Y, I, L) __builtin_ia32_insertqi(X, Y, 1, 1)
 
+/* smmintrin.h */
+#define __builtin_ia32_pblendw128(X, Y, M) __builtin_ia32_pblendw128 (X, Y, 1)
+#define __builtin_ia32_blendps(X, Y, M) __builtin_ia32_blendps(X, Y, 1)
+#define __builtin_ia32_blendpd(X, Y, M) __builtin_ia32_blendpd(X, Y, 1)
+#define __builtin_ia32_dpps(X, Y, M) __builtin_ia32_dpps(X, Y, 1)
+#define __builtin_ia32_dppd(X, Y, M) __builtin_ia32_dppd(X, Y, 1)
+#define __builtin_ia32_insertps128(D, S, N) __builtin_ia32_insertps128(D, S, 1)
+#define __builtin_ia32_vec_ext_v4sf(X, N) __builtin_ia32_vec_ext_v4sf(X, 1)
+#define __builtin_ia32_vec_set_v16qi(D, S, N) __builtin_ia32_vec_set_v16qi(D, S, 1)
+#define __builtin_ia32_vec_set_v4si(D, S, N) __builtin_ia32_vec_set_v4si(D, S, 1)
+#define __builtin_ia32_vec_set_v2di(D, S, N) __builtin_ia32_vec_set_v2di(D, S, 1)
+#define __builtin_ia32_vec_ext_v16qi(X, N) __builtin_ia32_vec_ext_v16qi(X, 1)
+#define __builtin_ia32_vec_ext_v4si(X, N) __builtin_ia32_vec_ext_v4si(X, 1)
+#define __builtin_ia32_vec_ext_v2di(X, N) __builtin_ia32_vec_ext_v2di(X, 1)
+#define __builtin_ia32_roundpd(V, M) __builtin_ia32_roundpd(V, 1)
+#define __builtin_ia32_roundsd(D, V, M) __builtin_ia32_roundsd(D, V, 1)
+#define __builtin_ia32_roundps(V, M) __builtin_ia32_roundps(V, 1)
+#define __builtin_ia32_roundss(D, V, M) __builtin_ia32_roundss(D, V, 1)
+#define __builtin_ia32_mpsadbw128(X, Y, M) __builtin_ia32_mpsadbw128(X, Y, 1)
+
 /* tmmintrin.h */
 #define __builtin_ia32_palignr128(X, Y, N) __builtin_ia32_palignr128(X, Y, 8)
 #define __builtin_ia32_palignr(X, Y, N) __builtin_ia32_palignr(X, Y, 8)
@@ -47,4 +67,5 @@
 #define __builtin_ia32_shufps(A, B, N) __builtin_ia32_shufps(A, B, 0)
 
 #include <ammintrin.h>
+#include <smmintrin.h>
 #include <tmmintrin.h>
--- gcc/testsuite/gcc.target/i386/sse-14.c.sse41	2007-05-22 06:39:41.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse-14.c	2007-05-22 10:31:18.000000000 -0700
@@ -1,5 +1,5 @@
 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-O0 -mssse3 -msse4a" } */
+/* { dg-options "-O0 -mssse3 -msse4.1 -msse4a" } */
 
 /* Test that the intrinsics compile without optimization.  All of them are
    defined as inline functions in mmintrin.h that reference the proper
@@ -10,5 +10,6 @@
 #define __inline
 
 #include <ammintrin.h>
+#include <smmintrin.h>
 #include <tmmintrin.h>
 



More information about the Gcc-patches mailing list