aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2010-07-23 13:33:19 +0200
committerUros Bizjak <uros@gcc.gnu.org>2010-07-23 13:33:19 +0200
commit1d8ec041a5b143de07f9cc375c57e49a355ee027 (patch)
tree864361e650ba529aa3cdf3faf3469f92fb3c0727 /gcc
parenta23c4464d8013c09b319c70dc906770622f0349a (diff)
downloadgcc-1d8ec041a5b143de07f9cc375c57e49a355ee027.zip
gcc-1d8ec041a5b143de07f9cc375c57e49a355ee027.tar.gz
gcc-1d8ec041a5b143de07f9cc375c57e49a355ee027.tar.bz2
target-supports.exp (check_avx_hw_available): New procedure.
* lib/target-supports.exp (check_avx_hw_available): New procedure. (check_effective_target_avx_runtime): New procedure. (check_effective_target_sse2_runtime): Add check_effective_target_sse2. (check_effective_target_sse_runtime): Add check_effective_target_sse. * gcc.dg/compat/pr38736_main.c: Use avx_runtime effective target. * gcc.dg/compat/vector-1b_main.c: Ditto. Remove cpuid.h include and __get_cpuid test. * gcc.dg/compat/vector-2b_main.c: Ditto. * gcc.target/i386/avx-check.h (main): Also check bit_OSXSAVE. * gcc.dg/20020418-1.c: Do not require sse2 effective target for compile-time only test. * gcc.dg/pr32716.c: Ditto. * gcc.dg/pr34856.c: Ditto. * gcc.dg/pr36997.c: Ditto. * gcc.dg/prefetch-loop-arrays-1.c: Ditto. * gfortran.dg/pr28158.f90: Ditto. * gfortran.dg/pr30667.f: Ditto. * gcc.dg/vect/vect.exp: Use check_effective_target_sse2_runtime for i?86-*-* and x86_64-*-* targets to disable execution on targets without sse2 runtime support. * g++.dg/vect/vect.exp: Ditto. * gfortran.dg/vect/vect.exp: Ditto. * gcc.dg/pr36584.c: Remove now redundant sse2 effective target check. * gcc.dg/pr37544.c: Ditto. * gcc.dg/pr40550.c: Ditto. * gcc.dg/compat/union-m128-1_main.c: Ditto. * gcc.dg/compat/vector-1a_main.c: Ditto. * gcc.dg/compat/vector-2a_main.c: Ditto. * gcc.dg/torture/pr16104-1.c: Ditto. * gcc.dg/torture/pr35771-1.c: Ditto. * gcc.dg/torture/pr35771-2.c: Ditto. * gcc.dg/torture/pr35771-3.c: Ditto. * gcc.dg/torture/stackalign/alloca-2.c: Ditto. * gcc.dg/torture/stackalign/alloca-3.c: Ditto. * gcc.dg/torture/stackalign/push-1.c: Ditto. * gcc.dg/torture/stackalign/vararg-3.c: Ditto. * g++.dg/other/i386-1.C: Ditto. * g++.dg/other/pr40446.C: Ditto. From-SVN: r162456
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog46
-rw-r--r--gcc/testsuite/g++.dg/other/i386-1.C1
-rw-r--r--gcc/testsuite/g++.dg/other/pr40446.C1
-rw-r--r--gcc/testsuite/g++.dg/vect/vect.exp5
-rw-r--r--gcc/testsuite/gcc.dg/20020418-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/compat/pr38736_main.c2
-rw-r--r--gcc/testsuite/gcc.dg/compat/union-m128-1_main.c1
-rw-r--r--gcc/testsuite/gcc.dg/compat/vector-1a_main.c1
-rw-r--r--gcc/testsuite/gcc.dg/compat/vector-1b_main.c14
-rw-r--r--gcc/testsuite/gcc.dg/compat/vector-2a_main.c1
-rw-r--r--gcc/testsuite/gcc.dg/compat/vector-2b_main.c14
-rw-r--r--gcc/testsuite/gcc.dg/pr32176.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr34856.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr36584.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr36997.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr37544.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr40550.c1
-rw-r--r--gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr16104-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr35771-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr35771-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr35771-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/alloca-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/push-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/vararg-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect.exp5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-check.h2
-rw-r--r--gcc/testsuite/gfortran.dg/pr28158.f901
-rw-r--r--gcc/testsuite/gfortran.dg/pr30667.f1
-rw-r--r--gcc/testsuite/gfortran.dg/vect/vect.exp5
-rw-r--r--gcc/testsuite/lib/target-supports.exp52
32 files changed, 99 insertions, 69 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 571426b..6bc8dd2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,49 @@
+2010-06-23 Uros Bizjak <ubizjak@gmail.com>
+
+ * lib/target-supports.exp (check_avx_hw_available): New procedure.
+ (check_effective_target_avx_runtime): New procedure.
+ (check_effective_target_sse2_runtime): Add check_effective_target_sse2.
+ (check_effective_target_sse_runtime): Add check_effective_target_sse.
+
+ * gcc.dg/compat/pr38736_main.c: Use avx_runtime effective target.
+ * gcc.dg/compat/vector-1b_main.c: Ditto. Remove cpuid.h include
+ and __get_cpuid test.
+ * gcc.dg/compat/vector-2b_main.c: Ditto.
+
+ * gcc.target/i386/avx-check.h (main): Also check bit_OSXSAVE.
+
+ * gcc.dg/20020418-1.c: Do not require sse2 effective target
+ for compile-time only test.
+ * gcc.dg/pr32716.c: Ditto.
+ * gcc.dg/pr34856.c: Ditto.
+ * gcc.dg/pr36997.c: Ditto.
+ * gcc.dg/prefetch-loop-arrays-1.c: Ditto.
+ * gfortran.dg/pr28158.f90: Ditto.
+ * gfortran.dg/pr30667.f: Ditto.
+
+ * gcc.dg/vect/vect.exp: Use check_effective_target_sse2_runtime for
+ i?86-*-* and x86_64-*-* targets to disable execution on targets
+ without sse2 runtime support.
+ * g++.dg/vect/vect.exp: Ditto.
+ * gfortran.dg/vect/vect.exp: Ditto.
+
+ * gcc.dg/pr36584.c: Remove now redundant sse2 effective target check.
+ * gcc.dg/pr37544.c: Ditto.
+ * gcc.dg/pr40550.c: Ditto.
+ * gcc.dg/compat/union-m128-1_main.c: Ditto.
+ * gcc.dg/compat/vector-1a_main.c: Ditto.
+ * gcc.dg/compat/vector-2a_main.c: Ditto.
+ * gcc.dg/torture/pr16104-1.c: Ditto.
+ * gcc.dg/torture/pr35771-1.c: Ditto.
+ * gcc.dg/torture/pr35771-2.c: Ditto.
+ * gcc.dg/torture/pr35771-3.c: Ditto.
+ * gcc.dg/torture/stackalign/alloca-2.c: Ditto.
+ * gcc.dg/torture/stackalign/alloca-3.c: Ditto.
+ * gcc.dg/torture/stackalign/push-1.c: Ditto.
+ * gcc.dg/torture/stackalign/vararg-3.c: Ditto.
+ * g++.dg/other/i386-1.C: Ditto.
+ * g++.dg/other/pr40446.C: Ditto.
+
2010-07-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* gcc.dg/pr43058.c: Use dg-timeout-factor 4.
diff --git a/gcc/testsuite/g++.dg/other/i386-1.C b/gcc/testsuite/g++.dg/other/i386-1.C
index 5104868..ec572ec 100644
--- a/gcc/testsuite/g++.dg/other/i386-1.C
+++ b/gcc/testsuite/g++.dg/other/i386-1.C
@@ -1,6 +1,5 @@
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2" } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
#include <xmmintrin.h>
diff --git a/gcc/testsuite/g++.dg/other/pr40446.C b/gcc/testsuite/g++.dg/other/pr40446.C
index b4be0d0..72cd196 100644
--- a/gcc/testsuite/g++.dg/other/pr40446.C
+++ b/gcc/testsuite/g++.dg/other/pr40446.C
@@ -1,7 +1,6 @@
// PR middle-end/40446
// { dg-do run { target i?86-*-* x86_64-*-* } }
// { dg-options "-O1 -msse2" }
-// { dg-require-effective-target sse2 }
// { dg-require-effective-target sse2_runtime }
#include <emmintrin.h>
diff --git a/gcc/testsuite/g++.dg/vect/vect.exp b/gcc/testsuite/g++.dg/vect/vect.exp
index 18e8355..fe17342 100644
--- a/gcc/testsuite/g++.dg/vect/vect.exp
+++ b/gcc/testsuite/g++.dg/vect/vect.exp
@@ -75,11 +75,8 @@ if [istarget "powerpc-*paired*"] {
} elseif { [istarget "spu-*-*"] } {
set dg-do-what-default run
} elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } {
- if { ![check_effective_target_sse2] } then {
- return
- }
lappend DEFAULT_VECTCFLAGS "-msse2"
- if { [check_sse2_hw_available] && [check_sse_os_support_available] } {
+ if { [check_effective_target_sse2_runtime] } {
set dg-do-what-default run
} else {
set dg-do-what-default compile
diff --git a/gcc/testsuite/gcc.dg/20020418-1.c b/gcc/testsuite/gcc.dg/20020418-1.c
index 285af2b..7314ec0 100644
--- a/gcc/testsuite/gcc.dg/20020418-1.c
+++ b/gcc/testsuite/gcc.dg/20020418-1.c
@@ -2,7 +2,6 @@
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-options "-O2 -msse -ffast-math" { target i?86-*-* x86_64-*-* } } */
-/* { dg-require-effective-target sse { target i?86-*-* x86_64-*-* } } */
void bar (float *a, float *b);
diff --git a/gcc/testsuite/gcc.dg/compat/pr38736_main.c b/gcc/testsuite/gcc.dg/compat/pr38736_main.c
index 88c3586..8f22108 100644
--- a/gcc/testsuite/gcc.dg/compat/pr38736_main.c
+++ b/gcc/testsuite/gcc.dg/compat/pr38736_main.c
@@ -1,6 +1,6 @@
/* PR target/38736 */
/* { dg-skip-if "attribute ((aligned))" { ! { i?86-*-* x86_64-*-* } } } */
-/* { dg-require-effective-target avx } */
+/* { dg-require-effective-target avx_runtime } */
/* Test compatibility of attribute ((aligned)) with and without -mavx. */
diff --git a/gcc/testsuite/gcc.dg/compat/union-m128-1_main.c b/gcc/testsuite/gcc.dg/compat/union-m128-1_main.c
index 602acf8..59e68d9 100644
--- a/gcc/testsuite/gcc.dg/compat/union-m128-1_main.c
+++ b/gcc/testsuite/gcc.dg/compat/union-m128-1_main.c
@@ -1,6 +1,5 @@
/* { dg-skip-if "test SSE2 support" { ! { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-O" } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
/* Test function argument passing. PR target/15301. */
diff --git a/gcc/testsuite/gcc.dg/compat/vector-1a_main.c b/gcc/testsuite/gcc.dg/compat/vector-1a_main.c
index 11b4511..608f5dd 100644
--- a/gcc/testsuite/gcc.dg/compat/vector-1a_main.c
+++ b/gcc/testsuite/gcc.dg/compat/vector-1a_main.c
@@ -1,5 +1,4 @@
/* { dg-skip-if "test SSE2 vector" { ! { i?86-*-* x86_64-*-* } } } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
/* Test compatibility of vector types: layout between separately-compiled
diff --git a/gcc/testsuite/gcc.dg/compat/vector-1b_main.c b/gcc/testsuite/gcc.dg/compat/vector-1b_main.c
index fb5a5a9..427e8ca 100644
--- a/gcc/testsuite/gcc.dg/compat/vector-1b_main.c
+++ b/gcc/testsuite/gcc.dg/compat/vector-1b_main.c
@@ -1,12 +1,10 @@
/* { dg-skip-if "test AVX vector" { ! { i?86-*-* x86_64-*-* } } } */
-/* { dg-require-effective-target avx } */
+/* { dg-require-effective-target avx_runtime } */
/* Test compatibility of vector types: layout between separately-compiled
modules, parameter passing, and function return. This test uses
vectors of integer values. */
-#include "cpuid.h"
-
extern void vector_1_x (void);
extern void exit (int);
int fails;
@@ -14,14 +12,6 @@ int fails;
int
main ()
{
- unsigned int eax, ebx, ecx, edx;
-
- if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
- return 0;
-
- /* Run AVX vector test only if host has AVX support. */
- if (ecx & bit_AVX)
- vector_1_x ();
-
+ vector_1_x ();
exit (0);
}
diff --git a/gcc/testsuite/gcc.dg/compat/vector-2a_main.c b/gcc/testsuite/gcc.dg/compat/vector-2a_main.c
index 8457e5a..e957faf 100644
--- a/gcc/testsuite/gcc.dg/compat/vector-2a_main.c
+++ b/gcc/testsuite/gcc.dg/compat/vector-2a_main.c
@@ -1,5 +1,4 @@
/* { dg-skip-if "test SSE2 support" { ! { i?86-*-* x86_64-*-* } } } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
/* Test compatibility of vector types: layout between separately-compiled
diff --git a/gcc/testsuite/gcc.dg/compat/vector-2b_main.c b/gcc/testsuite/gcc.dg/compat/vector-2b_main.c
index c5a9300..2c19576 100644
--- a/gcc/testsuite/gcc.dg/compat/vector-2b_main.c
+++ b/gcc/testsuite/gcc.dg/compat/vector-2b_main.c
@@ -1,12 +1,10 @@
/* { dg-skip-if "test AVX support" { ! { i?86-*-* x86_64-*-* } } } */
-/* { dg-require-effective-target avx } */
+/* { dg-require-effective-target avx_runtime } */
/* Test compatibility of vector types: layout between separately-compiled
modules, parameter passing, and function return. This test uses
vectors of floating points values. */
-#include "cpuid.h"
-
extern void vector_2_x (void);
extern void exit (int);
int fails;
@@ -14,14 +12,6 @@ int fails;
int
main ()
{
- unsigned int eax, ebx, ecx, edx;
-
- if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
- return 0;
-
- /* Run AVX vector test only if host has AVX support. */
- if (ecx & bit_AVX)
- vector_2_x ();
-
+ vector_2_x ();
exit (0);
}
diff --git a/gcc/testsuite/gcc.dg/pr32176.c b/gcc/testsuite/gcc.dg/pr32176.c
index e0e63a3..6646db0 100644
--- a/gcc/testsuite/gcc.dg/pr32176.c
+++ b/gcc/testsuite/gcc.dg/pr32176.c
@@ -3,7 +3,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fprefetch-loop-arrays -w" } */
/* { dg-options "-O2 -fprefetch-loop-arrays -march=i686 -msse" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
-/* { dg-require-effective-target sse { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
void foo (void)
{
diff --git a/gcc/testsuite/gcc.dg/pr34856.c b/gcc/testsuite/gcc.dg/pr34856.c
index 76499f7..6bfc704 100644
--- a/gcc/testsuite/gcc.dg/pr34856.c
+++ b/gcc/testsuite/gcc.dg/pr34856.c
@@ -1,7 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-options "-O2 -msse2" { target { i?86-*-* x86_64-*-* } } } */
-/* { dg-require-effective-target sse2 { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-O2 -maltivec" { target { powerpc*-*-linux* && powerpc_altivec_ok } } } */
typedef unsigned __attribute__ ((__mode__ (__pointer__))) uintptr_t;
diff --git a/gcc/testsuite/gcc.dg/pr36584.c b/gcc/testsuite/gcc.dg/pr36584.c
index 2af71ae..c0b005d 100644
--- a/gcc/testsuite/gcc.dg/pr36584.c
+++ b/gcc/testsuite/gcc.dg/pr36584.c
@@ -1,7 +1,6 @@
/* { dg-do run } */
/* { dg-options "-O2 -lm" } */
/* { dg-options "-O2 -msse2 -mfpmath=sse" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
-/* { dg-require-effective-target sse2 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-require-effective-target sse2_runtime { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
extern double fabs (double);
diff --git a/gcc/testsuite/gcc.dg/pr36997.c b/gcc/testsuite/gcc.dg/pr36997.c
index 51b06a7..f87962e 100644
--- a/gcc/testsuite/gcc.dg/pr36997.c
+++ b/gcc/testsuite/gcc.dg/pr36997.c
@@ -1,6 +1,5 @@
/* { dg-do compile { target x86_64-*-* i?86-*-* } } */
/* { dg-options "-std=c99 -msse2" } */
-/* { dg-require-effective-target sse2 } */
typedef int __m64 __attribute__ ((__vector_size__ (8), __may_alias__));
__m64 _mm_add_si64 (__m64 __m1, __m64 __m2)
diff --git a/gcc/testsuite/gcc.dg/pr37544.c b/gcc/testsuite/gcc.dg/pr37544.c
index dec321b..99979ce 100644
--- a/gcc/testsuite/gcc.dg/pr37544.c
+++ b/gcc/testsuite/gcc.dg/pr37544.c
@@ -1,7 +1,6 @@
/* { dg-do run } */
/* { dg-options "-O2" } */
/* { dg-options "-O2 -msse2 -mtune=core2 -mfpmath=387" { target { i?86-*-* x86_64-*-* } } } */
-/* { dg-require-effective-target sse2 { target { i?86-*-* x86_64-*-* } } } */
/* { dg-require-effective-target sse2_runtime { target { i?86-*-* x86_64-*-* } } } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/pr40550.c b/gcc/testsuite/gcc.dg/pr40550.c
index 2e47729..0895113 100644
--- a/gcc/testsuite/gcc.dg/pr40550.c
+++ b/gcc/testsuite/gcc.dg/pr40550.c
@@ -1,6 +1,5 @@
/* { dg-do run } */
/* { dg-options "-msse" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
-/* { dg-require-effective-target sse { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-require-effective-target sse_runtime { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
typedef float v2sf __attribute__ ((vector_size (2 * sizeof(float))));
diff --git a/gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c b/gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
index 6c6f0b3..59cebc5 100644
--- a/gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
+++ b/gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
@@ -2,7 +2,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fprefetch-loop-arrays -w" } */
/* { dg-options "-O2 -fprefetch-loop-arrays -march=i686 -msse -w" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
-/* { dg-require-effective-target sse { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
__extension__ typedef __SIZE_TYPE__ size_t;
diff --git a/gcc/testsuite/gcc.dg/torture/pr16104-1.c b/gcc/testsuite/gcc.dg/torture/pr16104-1.c
index d4aed81..ad5eda6 100644
--- a/gcc/testsuite/gcc.dg/torture/pr16104-1.c
+++ b/gcc/testsuite/gcc.dg/torture/pr16104-1.c
@@ -1,7 +1,6 @@
/* PR rtl-optimization/16104 */
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2" } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/torture/pr35771-1.c b/gcc/testsuite/gcc.dg/torture/pr35771-1.c
index 4e95700..b3fd554 100644
--- a/gcc/testsuite/gcc.dg/torture/pr35771-1.c
+++ b/gcc/testsuite/gcc.dg/torture/pr35771-1.c
@@ -1,6 +1,5 @@
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2" } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
diff --git a/gcc/testsuite/gcc.dg/torture/pr35771-2.c b/gcc/testsuite/gcc.dg/torture/pr35771-2.c
index ae5bb00..a033cae 100644
--- a/gcc/testsuite/gcc.dg/torture/pr35771-2.c
+++ b/gcc/testsuite/gcc.dg/torture/pr35771-2.c
@@ -1,6 +1,5 @@
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2" } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
diff --git a/gcc/testsuite/gcc.dg/torture/pr35771-3.c b/gcc/testsuite/gcc.dg/torture/pr35771-3.c
index 556f786..fcbe86c 100644
--- a/gcc/testsuite/gcc.dg/torture/pr35771-3.c
+++ b/gcc/testsuite/gcc.dg/torture/pr35771-3.c
@@ -1,6 +1,5 @@
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2" } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c b/gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c
index 54232bf..139b74e 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c
@@ -1,7 +1,6 @@
/* PR middle-end/37009 */
/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-msse2" } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
#include <emmintrin.h>
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/alloca-3.c b/gcc/testsuite/gcc.dg/torture/stackalign/alloca-3.c
index 8a91121..31cb0c4 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/alloca-3.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/alloca-3.c
@@ -1,7 +1,6 @@
/* PR middle-end/37009 */
/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-msse2" } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
#include <emmintrin.h>
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/push-1.c b/gcc/testsuite/gcc.dg/torture/stackalign/push-1.c
index c58d1ec..dd5dffc 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/push-1.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/push-1.c
@@ -1,7 +1,6 @@
/* PR middle-end/37010 */
/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-msse2 -mpreferred-stack-boundary=2" } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
#include <emmintrin.h>
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/vararg-3.c b/gcc/testsuite/gcc.dg/torture/stackalign/vararg-3.c
index 734cf71..5b49685 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/vararg-3.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/vararg-3.c
@@ -1,7 +1,6 @@
/* PR middle-end/37009 */
/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-msse2" } */
-/* { dg-require-effective-target sse2 } */
/* { dg-require-effective-target sse2_runtime } */
#include <stdarg.h>
diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc/testsuite/gcc.dg/vect/vect.exp
index eecb13a..a68d8c6 100644
--- a/gcc/testsuite/gcc.dg/vect/vect.exp
+++ b/gcc/testsuite/gcc.dg/vect/vect.exp
@@ -67,11 +67,8 @@ if [istarget "powerpc-*paired*"] {
} elseif { [istarget "spu-*-*"] } {
set dg-do-what-default run
} elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } {
- if { ![check_effective_target_sse2] } then {
- return
- }
lappend DEFAULT_VECTCFLAGS "-msse2"
- if { [check_sse2_hw_available] && [check_sse_os_support_available] } {
+ if { [check_effective_target_sse2_runtime] } {
set dg-do-what-default run
} else {
set dg-do-what-default compile
diff --git a/gcc/testsuite/gcc.target/i386/avx-check.h b/gcc/testsuite/gcc.target/i386/avx-check.h
index 7736fc9..b15584a 100644
--- a/gcc/testsuite/gcc.target/i386/avx-check.h
+++ b/gcc/testsuite/gcc.target/i386/avx-check.h
@@ -20,7 +20,7 @@ main ()
return 0;
/* Run AVX test only if host has AVX support. */
- if (ecx & bit_AVX)
+ if ((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE))
{
do_test ();
#ifdef DEBUG
diff --git a/gcc/testsuite/gfortran.dg/pr28158.f90 b/gcc/testsuite/gfortran.dg/pr28158.f90
index d1cb9a4..4556ecd 100644
--- a/gcc/testsuite/gfortran.dg/pr28158.f90
+++ b/gcc/testsuite/gfortran.dg/pr28158.f90
@@ -1,7 +1,6 @@
! { dg-do compile { target i?86-*-* x86_64-*-* } }
! { dg-require-effective-target ilp32 }
! { dg-options "-O -msse -mfpmath=sse" }
-! { dg-require-effective-target sse }
subroutine yhalf(z)
complex cdexpj,z
z=cdexpj((0.d0,1.d0)*z)
diff --git a/gcc/testsuite/gfortran.dg/pr30667.f b/gcc/testsuite/gfortran.dg/pr30667.f
index 99e536b..0f1af29 100644
--- a/gcc/testsuite/gfortran.dg/pr30667.f
+++ b/gcc/testsuite/gfortran.dg/pr30667.f
@@ -1,7 +1,6 @@
! { dg-do compile { target i?86-*-* x86_64-*-* } }
! { dg-require-effective-target ilp32 }
! { dg-options "-O2 -msse -ftree-vectorize" }
-! { dg-require-effective-target sse }
subroutine cblank_cvb(a,ndim)
character*(*) a
character*1 blank
diff --git a/gcc/testsuite/gfortran.dg/vect/vect.exp b/gcc/testsuite/gfortran.dg/vect/vect.exp
index 2a09df5..5783e92 100644
--- a/gcc/testsuite/gfortran.dg/vect/vect.exp
+++ b/gcc/testsuite/gfortran.dg/vect/vect.exp
@@ -68,11 +68,8 @@ if [istarget "powerpc-*paired*"] {
} elseif { [istarget "spu-*-*"] } {
set dg-do-what-default run
} elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } {
- if { ![check_effective_target_sse2] } then {
- return
- }
lappend DEFAULT_VECTCFLAGS "-msse2"
- if { [check_sse2_hw_available] && [check_sse_os_support_available] } {
+ if { [check_effective_target_sse2_runtime] } {
set dg-do-what-default run
} else {
set dg-do-what-default compile
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 9c1369a..9fb18d1 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -953,7 +953,7 @@ proc check_sse_hw_available { } {
#include "cpuid.h"
int main ()
{
- unsigned int eax, ebx, ecx, edx = 0;
+ unsigned int eax, ebx, ecx, edx;
if (__get_cpuid (1, &eax, &ebx, &ecx, &edx))
return !(edx & bit_SSE);
return 1;
@@ -976,7 +976,7 @@ proc check_sse2_hw_available { } {
#include "cpuid.h"
int main ()
{
- unsigned int eax, ebx, ecx, edx = 0;
+ unsigned int eax, ebx, ecx, edx;
if (__get_cpuid (1, &eax, &ebx, &ecx, &edx))
return !(edx & bit_SSE2);
return 1;
@@ -986,24 +986,60 @@ proc check_sse2_hw_available { } {
}]
}
+# Return 1 if the target supports executing AVX instructions, 0
+# otherwise. Cache the result.
+
+proc check_avx_hw_available { } {
+ return [check_cached_effective_target avx_hw_available {
+ # If this is not the right target then we can skip the test.
+ if { !([istarget x86_64-*-*] || [istarget i?86-*-*]) } {
+ expr 0
+ } else {
+ check_runtime_nocache avx_hw_available {
+ #include "cpuid.h"
+ int main ()
+ {
+ unsigned int eax, ebx, ecx, edx;
+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx))
+ return ((ecx & (bit_AVX | bit_OSXSAVE))
+ != (bit_AVX | bit_OSXSAVE));
+ return 1;
+ }
+ } ""
+ }
+ }]
+}
+
# Return 1 if the target supports running SSE executables, 0 otherwise.
proc check_effective_target_sse_runtime { } {
- if { [check_sse_hw_available] && [check_sse_os_support_available] } {
+ if { [check_effective_target_sse]
+ && [check_sse_hw_available]
+ && [check_sse_os_support_available] } {
return 1
- } else {
- return 0
}
+ return 0
}
# Return 1 if the target supports running SSE2 executables, 0 otherwise.
proc check_effective_target_sse2_runtime { } {
- if { [check_sse2_hw_available] && [check_sse_os_support_available] } {
+ if { [check_effective_target_sse2]
+ && [check_sse2_hw_available]
+ && [check_sse_os_support_available] } {
return 1
- } else {
- return 0
}
+ return 0
+}
+
+# Return 1 if the target supports running AVX executables, 0 otherwise.
+
+proc check_effective_target_avx_runtime { } {
+ if { [check_effective_target_avx]
+ && [check_avx_hw_available] } {
+ return 1
+ }
+ return 0
}
# Return 1 if the target supports executing VSX instructions, 0