(check_effective_target_sse4a): Ditto.
* gcc.target/i386/ssse3-phsubw.c: Require effective target ssse3.
* gcc.target/i386/ssse3-phaddd.c: Require effective target ssse3.
* gcc.target/i386/ssse3-pabsb.c: Require effective target ssse3.
* gcc.target/i386/ssse3-psignb.c: Require effective target ssse3.
* gcc.target/i386/ssse3-phaddsw.c: Require effective target ssse3.
* gcc.target/i386/ssse3-pabsd.c: Require effective target ssse3.
* gcc.target/i386/ssse3-psignd.c: Require effective target ssse3.
* gcc.target/i386/ssse3-pmaddubsw.c: Require effective target ssse3.
* gcc.target/i386/ssse3-pmulhrsw.c: Require effective target ssse3.
* gcc.target/i386/ssse3-phaddw.c: Require effective target ssse3.
* gcc.target/i386/ssse3-phsubd.c: Require effective target ssse3.
* gcc.target/i386/ssse3-pabsw.c: Require effective target ssse3.
* gcc.target/i386/ssse3-psignw.c: Require effective target ssse3.
* gcc.target/i386/ssse3-pshufb.c: Require effective target ssse3.
* gcc.target/i386/ssse3-phsubsw.c: Require effective target ssse3.
* gcc.target/i386/ssse3-palignr.c: Require effective target ssse3.
* gcc.target/i386/sse4a-insert.c: Require effective target sse4a.
* gcc.target/i386/sse4a-extract.c: Require effective target sse4a.
* gcc.target/i386/sse4a-montss.c: Require effective target sse4a.
* gcc.target/i386/sse4a-montsd.c: Require effective target sse4a.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124939
138bc75d-0d04-0410-961f-
82ee72b054a4
+2007-05-22 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/i386.exp (check_effective_target_ssse3): New.
+ (check_effective_target_sse4a): Ditto.
+
+ * gcc.target/i386/ssse3-phsubw.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-phaddd.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-pabsb.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-psignb.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-phaddsw.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-pabsd.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-psignd.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-pmaddubsw.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-pmulhrsw.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-phaddw.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-phsubd.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-pabsw.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-psignw.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-pshufb.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-phsubsw.c: Require effective target ssse3.
+ * gcc.target/i386/ssse3-palignr.c: Require effective target ssse3.
+ * gcc.target/i386/sse4a-insert.c: Require effective target sse4a.
+ * gcc.target/i386/sse4a-extract.c: Require effective target sse4a.
+ * gcc.target/i386/sse4a-montss.c: Require effective target sse4a.
+ * gcc.target/i386/sse4a-montsd.c: Require effective target sse4a.
+
2007-05-21 Mark Mitchell <mark@codesourcery.com>
* g++.dg/ext/cleanup-1.C: New test.
# Load support procs.
load_lib gcc-dg.exp
+# Return 1 if ssse3 instructions can be compiled.
+proc check_effective_target_ssse3 { } {
+ return [check_no_compiler_messages ssse3 object {
+ typedef long long __m128i __attribute__ ((__vector_size__ (16)));
+ typedef int __v4si __attribute__ ((__vector_size__ (16)));
+
+ __m128i _mm_abs_epi32 (__m128i __X)
+ {
+ return (__m128i) __builtin_ia32_pabsd128 ((__v4si)__X);
+ }
+ } "-O2 -mssse3" ]
+}
+
+# Return 1 if sse4a instructions can be compiled.
+proc check_effective_target_sse4a { } {
+ return [check_no_compiler_messages sse4a object {
+ typedef long long __m128i __attribute__ ((__vector_size__ (16)));
+ typedef long long __v2di __attribute__ ((__vector_size__ (16)));
+
+ __m128i _mm_insert_si64 (__m128i __X,__m128i __Y)
+ {
+ return (__m128i) __builtin_ia32_insertq ((__v2di)__X, (__v2di)__Y);
+ }
+ } "-O2 -msse4a" ]
+}
+
# If a testcase doesn't have special options, use these.
global DEFAULT_CFLAGS
if ![info exists DEFAULT_CFLAGS] then {
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target sse4a } */
/* { dg-options "-O2 -msse4a" } */
#include <ammintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target sse4a } */
/* { dg-options "-O2 -msse4a" } */
#include <ammintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target sse4a } */
/* { dg-options "-O2 -msse4a" } */
#include <ammintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target sse4a } */
/* { dg-options "-O2 -msse4a" } */
#include <ammintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <string.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
/* { dg-options "-O2 -mssse3" } */
#include <tmmintrin.h>
#include <stdlib.h>