i386.exp (check_effective_target_ssse3): New.
authorUros Bizjak <ubizjak@gmail.com>
Tue, 22 May 2007 08:15:13 +0000 (10:15 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 22 May 2007 08:15:13 +0000 (10:15 +0200)
* 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.

From-SVN: r124939

22 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/i386.exp
gcc/testsuite/gcc.target/i386/sse4a-extract.c
gcc/testsuite/gcc.target/i386/sse4a-insert.c
gcc/testsuite/gcc.target/i386/sse4a-montsd.c
gcc/testsuite/gcc.target/i386/sse4a-montss.c
gcc/testsuite/gcc.target/i386/ssse3-pabsb.c
gcc/testsuite/gcc.target/i386/ssse3-pabsd.c
gcc/testsuite/gcc.target/i386/ssse3-pabsw.c
gcc/testsuite/gcc.target/i386/ssse3-palignr.c
gcc/testsuite/gcc.target/i386/ssse3-phaddd.c
gcc/testsuite/gcc.target/i386/ssse3-phaddsw.c
gcc/testsuite/gcc.target/i386/ssse3-phaddw.c
gcc/testsuite/gcc.target/i386/ssse3-phsubd.c
gcc/testsuite/gcc.target/i386/ssse3-phsubsw.c
gcc/testsuite/gcc.target/i386/ssse3-phsubw.c
gcc/testsuite/gcc.target/i386/ssse3-pmaddubsw.c
gcc/testsuite/gcc.target/i386/ssse3-pmulhrsw.c
gcc/testsuite/gcc.target/i386/ssse3-pshufb.c
gcc/testsuite/gcc.target/i386/ssse3-psignb.c
gcc/testsuite/gcc.target/i386/ssse3-psignd.c
gcc/testsuite/gcc.target/i386/ssse3-psignw.c

index c37b3439b8a7754fd06e4eed35b7fe20b0e1be76..13cc9a5445aa550a78d95161ed56891695ef0950 100644 (file)
@@ -1,3 +1,29 @@
+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.
index f6c6210d84db3e3569c4999e4f953b63b01fa4be..c2e1336e1f3638fa32b8db53b8d25beae6ff2295 100644 (file)
@@ -24,6 +24,32 @@ if { ![istarget i?86*-*-*] && ![istarget x86_64-*-*] } then {
 # 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 {
index 20817a9cf52ff76d98a4f0135b470763b9f02bf6..2c8d25341159a5ac12f8a12689d719b6770a471b 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target sse4a } */
 /* { dg-options "-O2 -msse4a" } */
 #include <ammintrin.h>
 #include <stdlib.h>
index 3e44bba141bbb5973dcef301a4f51424d8b83488..8e014d6c0468ddd3eb8e568ad0bd0ab5a235e59b 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target sse4a } */
 /* { dg-options "-O2 -msse4a" } */
 #include <ammintrin.h>
 #include <stdlib.h>
index e9be98e3bb8271e45ea53d798f775f5953b706a0..26fa6b37696327eae8e568a531663961c15306f0 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target sse4a } */
 /* { dg-options "-O2 -msse4a" } */
 #include <ammintrin.h>
 #include <stdlib.h>
index 28ecb1cf3c0d61e284d2c66d2f5cc3abbf25fc6b..782c76adf52bdff138cc96b34d54e7ffeed9bc1a 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target sse4a } */
 /* { dg-options "-O2 -msse4a" } */
 #include <ammintrin.h>
 #include <stdlib.h>
index 343cc15c6b76363d85a7a43a4fb3b135fd1e487f..c5b67f10ccf490cdf90b774f8a89847e7b011e7c 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index 0b0d1f7f74fb51a1f5f0e5b368d230ac9fe99971..75a06568ba5d80cab54d421e5f5d55246214ad35 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index e7aed4acc7178f61bf868769433a0ea483e46015..bc06904484d50df7e78834b505d862130b7651a4 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index 683d24fdf496db859e467d2666dc40dac5f84256..7ec58f11a447ac2ea2740dff421a455a17fc8c47 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <string.h>
index f408c7a5745bd45821c667aa6d33f22fefe47a87..575ff1180402b15f5c39d9df469aaeb68022124d 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index d64d708eff217bc21169f8a101d8dbaffbcdf19c..10d3e4708c94d9059cef16c7c5c2e177fa3f855a 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index 9595a3691794f5663e9b0eec6b02ac1970a20589..c7197c452127a09fff9c635c6247826f1648e0f7 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index 1fe524ba9db0da8fe51e8a5e950eb77943e914f8..f640b40bee99122157c77ee4ae7090f85d48b24b 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index 92a7c1ecb4f4c585ca32552bf7ff55aec5571ff1..80dc959b1515f10c63b926f2d613c3d3f9c70f10 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index a793c8c62f4ef3e75391fb0f1c094e19e56c4ee4..67a01c0dd535e9ef0f2aaf3f0d000f782c2e872b 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index 4ecee10bb5dcff7b77437a05eb1475801d896705..d3408483faafd21cc49c453c3b9822edafa6843f 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index 1bd4c2f226ccd6121b098e55301d5e609a208717..7aa5775f6343b81c4a9470ceae57f2f1682915c8 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index a06301f657ddf6dcb23cb5f601ecfe40d96c7d8d..96cd90bacf33a9b9cfc5d13ca4c602152989adfb 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index 17a7d36a3adac90e47f5bc362f785907fa29d03a..193070f12c96841cc202731fb67bcb646bad5796 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index 156c66544e9d1de46901ef5e6e902f15289219b3..706be9799d4d57537d0d937d2e31389b473adb09 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>
index aca3612492c6639e92e6a5d34e32ba7d0de12822..a36be771ae9b04908df7d65101220984203b236f 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-require-effective-target ssse3 } */
 /* { dg-options "-O2 -mssse3" } */
 #include <tmmintrin.h>
 #include <stdlib.h>