From 0f869709401ddaf2fac3bb2fcd58f998a69fc8f4 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Tue, 22 May 2007 10:15:13 +0200 Subject: [PATCH] i386.exp (check_effective_target_ssse3): New. * 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 --- gcc/testsuite/ChangeLog | 26 +++++++++++++++++++ gcc/testsuite/gcc.target/i386/i386.exp | 26 +++++++++++++++++++ gcc/testsuite/gcc.target/i386/sse4a-extract.c | 1 + gcc/testsuite/gcc.target/i386/sse4a-insert.c | 1 + gcc/testsuite/gcc.target/i386/sse4a-montsd.c | 1 + gcc/testsuite/gcc.target/i386/sse4a-montss.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-pabsb.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-pabsd.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-pabsw.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-palignr.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-phaddd.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-phaddsw.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-phaddw.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-phsubd.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-phsubsw.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-phsubw.c | 1 + .../gcc.target/i386/ssse3-pmaddubsw.c | 1 + .../gcc.target/i386/ssse3-pmulhrsw.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-pshufb.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-psignb.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-psignd.c | 1 + gcc/testsuite/gcc.target/i386/ssse3-psignw.c | 1 + 22 files changed, 72 insertions(+) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c37b3439b8a..13cc9a5445a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,29 @@ +2007-05-22 Uros Bizjak + + * 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 * g++.dg/ext/cleanup-1.C: New test. diff --git a/gcc/testsuite/gcc.target/i386/i386.exp b/gcc/testsuite/gcc.target/i386/i386.exp index f6c6210d84d..c2e1336e1f3 100644 --- a/gcc/testsuite/gcc.target/i386/i386.exp +++ b/gcc/testsuite/gcc.target/i386/i386.exp @@ -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 { diff --git a/gcc/testsuite/gcc.target/i386/sse4a-extract.c b/gcc/testsuite/gcc.target/i386/sse4a-extract.c index 20817a9cf52..2c8d2534115 100644 --- a/gcc/testsuite/gcc.target/i386/sse4a-extract.c +++ b/gcc/testsuite/gcc.target/i386/sse4a-extract.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target sse4a } */ /* { dg-options "-O2 -msse4a" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/sse4a-insert.c b/gcc/testsuite/gcc.target/i386/sse4a-insert.c index 3e44bba141b..8e014d6c046 100644 --- a/gcc/testsuite/gcc.target/i386/sse4a-insert.c +++ b/gcc/testsuite/gcc.target/i386/sse4a-insert.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target sse4a } */ /* { dg-options "-O2 -msse4a" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/sse4a-montsd.c b/gcc/testsuite/gcc.target/i386/sse4a-montsd.c index e9be98e3bb8..26fa6b37696 100644 --- a/gcc/testsuite/gcc.target/i386/sse4a-montsd.c +++ b/gcc/testsuite/gcc.target/i386/sse4a-montsd.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target sse4a } */ /* { dg-options "-O2 -msse4a" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/sse4a-montss.c b/gcc/testsuite/gcc.target/i386/sse4a-montss.c index 28ecb1cf3c0..782c76adf52 100644 --- a/gcc/testsuite/gcc.target/i386/sse4a-montss.c +++ b/gcc/testsuite/gcc.target/i386/sse4a-montss.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target sse4a } */ /* { dg-options "-O2 -msse4a" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-pabsb.c b/gcc/testsuite/gcc.target/i386/ssse3-pabsb.c index 343cc15c6b7..c5b67f10ccf 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-pabsb.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-pabsb.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-pabsd.c b/gcc/testsuite/gcc.target/i386/ssse3-pabsd.c index 0b0d1f7f74f..75a06568ba5 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-pabsd.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-pabsd.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-pabsw.c b/gcc/testsuite/gcc.target/i386/ssse3-pabsw.c index e7aed4acc71..bc06904484d 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-pabsw.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-pabsw.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-palignr.c b/gcc/testsuite/gcc.target/i386/ssse3-palignr.c index 683d24fdf49..7ec58f11a44 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-palignr.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-palignr.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-phaddd.c b/gcc/testsuite/gcc.target/i386/ssse3-phaddd.c index f408c7a5745..575ff118040 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-phaddd.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-phaddd.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-phaddsw.c b/gcc/testsuite/gcc.target/i386/ssse3-phaddsw.c index d64d708eff2..10d3e4708c9 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-phaddsw.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-phaddsw.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-phaddw.c b/gcc/testsuite/gcc.target/i386/ssse3-phaddw.c index 9595a369179..c7197c45212 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-phaddw.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-phaddw.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-phsubd.c b/gcc/testsuite/gcc.target/i386/ssse3-phsubd.c index 1fe524ba9db..f640b40bee9 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-phsubd.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-phsubd.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-phsubsw.c b/gcc/testsuite/gcc.target/i386/ssse3-phsubsw.c index 92a7c1ecb4f..80dc959b151 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-phsubsw.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-phsubsw.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-phsubw.c b/gcc/testsuite/gcc.target/i386/ssse3-phsubw.c index a793c8c62f4..67a01c0dd53 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-phsubw.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-phsubw.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-pmaddubsw.c b/gcc/testsuite/gcc.target/i386/ssse3-pmaddubsw.c index 4ecee10bb5d..d3408483faa 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-pmaddubsw.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-pmaddubsw.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-pmulhrsw.c b/gcc/testsuite/gcc.target/i386/ssse3-pmulhrsw.c index 1bd4c2f226c..7aa5775f634 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-pmulhrsw.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-pmulhrsw.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-pshufb.c b/gcc/testsuite/gcc.target/i386/ssse3-pshufb.c index a06301f657d..96cd90bacf3 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-pshufb.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-pshufb.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-psignb.c b/gcc/testsuite/gcc.target/i386/ssse3-psignb.c index 17a7d36a3ad..193070f12c9 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-psignb.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-psignb.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-psignd.c b/gcc/testsuite/gcc.target/i386/ssse3-psignd.c index 156c66544e9..706be9799d4 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-psignd.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-psignd.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include diff --git a/gcc/testsuite/gcc.target/i386/ssse3-psignw.c b/gcc/testsuite/gcc.target/i386/ssse3-psignw.c index aca3612492c..a36be771ae9 100644 --- a/gcc/testsuite/gcc.target/i386/ssse3-psignw.c +++ b/gcc/testsuite/gcc.target/i386/ssse3-psignw.c @@ -1,4 +1,5 @@ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-effective-target ssse3 } */ /* { dg-options "-O2 -mssse3" } */ #include #include -- 2.30.2