This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Patch to refine PowerPC testsuite conditions


This patch cleans up the conditions under which various PowerPC tests
are run.

There is one test, gcc.target/powerpc/980827-1.c, which has an asm
using floating-point registers and so cannot work with -msoft-float or
on E500 targets.  An effective-target keyword powerpc_fprs is added
for this test.

Many tests use -maltivec but vary in whether and how they restrict
this to targets supporting -maltivec.  (E500 targets cannot support
AltiVec because the instructions conflict, and Aix does not support
AltiVec.)  Some tests are XFAILed on powerpc-*-eabispe*,
powerpc-*-aix* or both, but this is not done consistently, the tests
should be skipped rather than XFAILed, and targets can have both E500
and non-E500 multilibs (so the skipping should depend on the
properties of the multilib under test, not just on the target name
being *-spe).  Thus, an effective-target keyword powerpc_altivec_ok is
added, and used for all such tests not explicitly specifying a
particular CPU.

The test gcc.dg/20020103-1.c fails on various PowerPC targets (bug
11594).  As a known failure with a bug open, it should be XFAILed in
order to reduce the number of unexpected FAILs appearing in test
results.  (Conversely, all XFAILs should have corresponding open bugs
in Bugzilla.)

Tested powerpc-none-eabispe and powerpc64-unknown-linux-gnu.  OK to
commit?

Note, in order to build the compiler and libraries for 
powerpc-none-eabispe, it is necessary to apply the patch in bug 27075.  
It's also necessary to configure with --disable-symvers to avoid 
GCC_NO_EXECUTABLES problems (powerpc-*-eabi* are generic targets which 
cannot link without extra options such as -msim).  Even with that patch 
and configure option, the target isn't in a very good state, with a lot of 
ICEs showing up in a testsuite run.

2006-05-11  Joseph S. Myers  <joseph@codesourcery.com>

	* lib/target-supports.exp (check_effective_target_powerpc_fprs,
	check_effective_target_powerpc_altivec_ok): New.
	* g++.dg/eh/simd-2.C, g++.dg/ext/altivec-1.C,
	g++.dg/ext/altivec-10.C, g++.dg/ext/altivec-11.C,
	g++.dg/ext/altivec-12.C, g++.dg/ext/altivec-13.C,
	g++.dg/ext/altivec-2.C, g++.dg/ext/altivec-3.C,
	g++.dg/ext/altivec-4.C, g++.dg/ext/altivec-5.C,
	g++.dg/ext/altivec-6.C, g++.dg/ext/altivec-7.C,
	g++.dg/ext/altivec-8.C, g++.dg/ext/altivec-9.C,
	g++.dg/ext/altivec-types-1.C, g++.dg/ext/altivec-types-2.C,
	g++.dg/ext/altivec-types-3.C, g++.dg/ext/altivec-types-4.C,
	gcc.dg/dfp/altivec-types.c, gcc.dg/simd-3.c,
	gcc.dg/vect/vect-82_64.c, gcc.dg/vect/vect-83_64.c,
	gcc.dg/vmx/vmx.exp, gcc.target/powerpc/980827-1.c,
	gcc.target/powerpc/altivec-1.c, gcc.target/powerpc/altivec-10.c,
	gcc.target/powerpc/altivec-11.c, gcc.target/powerpc/altivec-12.c,
	gcc.target/powerpc/altivec-13.c, gcc.target/powerpc/altivec-14.c,
	gcc.target/powerpc/altivec-15.c, gcc.target/powerpc/altivec-16.c,
	gcc.target/powerpc/altivec-17.c, gcc.target/powerpc/altivec-18.c,
	gcc.target/powerpc/altivec-19.c, gcc.target/powerpc/altivec-2.c,
	gcc.target/powerpc/altivec-21.c, gcc.target/powerpc/altivec-22.c,
	gcc.target/powerpc/altivec-3.c, gcc.target/powerpc/altivec-4.c,
	gcc.target/powerpc/altivec-5.c, gcc.target/powerpc/altivec-6.c,
	gcc.target/powerpc/altivec-7.c, gcc.target/powerpc/altivec-8.c,
	gcc.target/powerpc/altivec-9.c,
	gcc.target/powerpc/altivec-consts.c,
	gcc.target/powerpc/altivec-pr22085.c,
	gcc.target/powerpc/altivec-splat.c,
	gcc.target/powerpc/altivec-types-1.c,
	gcc.target/powerpc/altivec-types-2.c,
	gcc.target/powerpc/altivec-types-3.c,
	gcc.target/powerpc/altivec-types-4.c,
	gcc.target/powerpc/altivec-varargs-1.c,
	gcc.target/powerpc/altivec-vec-merge.c,
	gcc.target/powerpc/ppc-vector-memcpy.c,
	gcc.target/powerpc/ppc-vector-memset.c,
	gcc.target/powerpc/ppc64-abi-2.c, gcc.target/powerpc/pr16155.c,
	gcc.target/powerpc/pr16286.c, gcc.target/powerpc/pr27158.c: Use
	these effective targets.
	* gcc.dg/vmx/pr27006.c: Add missing close brace.
	* gcc.dg/20020103-1.c: XFAIL on powerpc*-*-*.

diff -rupN GCC.orig/gcc/testsuite/g++.dg/eh/simd-2.C GCC/gcc/testsuite/g++.dg/eh/simd-2.C
--- GCC.orig/gcc/testsuite/g++.dg/eh/simd-2.C	2005-12-15 21:25:13.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/eh/simd-2.C	2006-05-10 23:37:00.000000000 +0000
@@ -2,7 +2,7 @@
 // Contributed by Aldy Hernandez (aldy@quesejoda.com).
 // { dg-options "-O" }
 // { dg-options "-O -w" { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
-// { dg-options "-O -w -maltivec" { target powerpc*-*-linux* } }
+// { dg-options "-O -w -maltivec" { target { powerpc*-*-linux* && powerpc_altivec_ok } } }
 // { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } }
 // { dg-do run }
 
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-1.C GCC/gcc/testsuite/g++.dg/ext/altivec-1.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-1.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-1.C	2006-05-10 23:50:12.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-10.C GCC/gcc/testsuite/g++.dg/ext/altivec-10.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-10.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-10.C	2006-05-10 23:49:47.000000000 +0000
@@ -1,7 +1,7 @@
 /* This is a compile-only test for interaction of "-maltivec" and "-save-temps".  */
 /* Author:  Ziemowit Laski  <zlaski@apple.com>.  */
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-save-temps -maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-11.C GCC/gcc/testsuite/g++.dg/ext/altivec-11.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-11.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-11.C	2006-05-10 23:49:43.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test handling of literal constant for dss operation.  */
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-12.C GCC/gcc/testsuite/g++.dg/ext/altivec-12.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-12.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-12.C	2006-05-10 23:49:39.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test vec_dst* functions with float pointer as first argument.  */
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-13.C GCC/gcc/testsuite/g++.dg/ext/altivec-13.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-13.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-13.C	2006-05-10 23:49:35.000000000 +0000
@@ -3,9 +3,9 @@
    AltiVec testsuite.  */
 
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
-                                                                                
+
 #include <altivec.h>
 
 extern vector unsigned char vuc;
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-2.C GCC/gcc/testsuite/g++.dg/ext/altivec-2.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-2.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-2.C	2006-05-10 23:50:09.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -Wall" } */
 
 /* This test checks if AltiVec builtins accept const-qualified
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-3.C GCC/gcc/testsuite/g++.dg/ext/altivec-3.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-3.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-3.C	2006-05-10 23:50:07.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do run { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* Test for correct handling of AltiVec constants passed
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-4.C GCC/gcc/testsuite/g++.dg/ext/altivec-4.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-4.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-4.C	2006-05-10 23:50:04.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* PR c++/14425 */
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-5.C GCC/gcc/testsuite/g++.dg/ext/altivec-5.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-5.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-5.C	2006-05-10 23:50:01.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* PR c++/14426 */
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-6.C GCC/gcc/testsuite/g++.dg/ext/altivec-6.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-6.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-6.C	2006-05-10 23:49:58.000000000 +0000
@@ -1,7 +1,7 @@
 /* Test for correct handling of literal arguments. */
 /* Author: Ziemowit Laski  <zlaski@apple.com>  */
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-7.C GCC/gcc/testsuite/g++.dg/ext/altivec-7.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-7.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-7.C	2006-05-10 23:49:56.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test for AltiVec type overloading and name mangling.  */
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-8.C GCC/gcc/testsuite/g++.dg/ext/altivec-8.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-8.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-8.C	2006-05-10 23:49:53.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 /* Author: Ziemowit Laski  <zlaski@apple.com>  */
 
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-9.C GCC/gcc/testsuite/g++.dg/ext/altivec-9.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-9.C	2005-11-08 16:21:20.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-9.C	2006-05-10 23:49:50.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test for AltiVec function vec_ld, passing a pointer to const vector */
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-types-1.C GCC/gcc/testsuite/g++.dg/ext/altivec-types-1.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-types-1.C	2005-10-28 23:30:23.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-types-1.C	2006-05-10 23:40:57.000000000 +0000
@@ -1,4 +1,5 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* Valid AltiVec vector types should be accepted with no warnings.  */
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-types-2.C GCC/gcc/testsuite/g++.dg/ext/altivec-types-2.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-types-2.C	2005-10-28 23:30:23.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-types-2.C	2006-05-10 23:39:31.000000000 +0000
@@ -1,5 +1,6 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* These should get warnings for 32-bit code.  */
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-types-3.C GCC/gcc/testsuite/g++.dg/ext/altivec-types-3.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-types-3.C	2005-10-28 23:30:23.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-types-3.C	2006-05-10 23:39:46.000000000 +0000
@@ -1,4 +1,5 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-require-effective-target lp64 } */
 /* { dg-options "-maltivec" } */
 
diff -rupN GCC.orig/gcc/testsuite/g++.dg/ext/altivec-types-4.C GCC/gcc/testsuite/g++.dg/ext/altivec-types-4.C
--- GCC.orig/gcc/testsuite/g++.dg/ext/altivec-types-4.C	2005-10-28 23:30:23.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/ext/altivec-types-4.C	2006-05-10 23:40:01.000000000 +0000
@@ -1,5 +1,6 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -mno-warn-altivec-long" } */
 
 /* These should not get warnings for 32-bit code when the warning is
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/20020103-1.c GCC/gcc/testsuite/gcc.dg/20020103-1.c
--- GCC.orig/gcc/testsuite/gcc.dg/20020103-1.c	2005-12-15 21:25:12.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/20020103-1.c	2006-05-11 10:57:43.000000000 +0000
@@ -2,7 +2,7 @@
    spilled to the stack, or regenerated, but not dropped to memory.  */
 /* { dg-do compile { target { { i?86-*-* rs6000-*-* alpha*-*-* x86_64-*-* } || { powerpc*-*-* && ilp32 } } } } */
 /* { dg-options "-O2 -fpic -fno-omit-frame-pointer -fno-asynchronous-unwind-tables" } */
-/* { dg-final { scan-assembler-not "LC\[0-9\]" } } */
+/* { dg-final { scan-assembler-not "LC\[0-9\]" { xfail powerpc*-*-* } } } */
 
 /* Clobber all call-saved registers that can hold a pointer value.  */
 #if defined(__i386__)
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/dfp/altivec-types.c GCC/gcc/testsuite/gcc.dg/dfp/altivec-types.c
--- GCC.orig/gcc/testsuite/gcc.dg/dfp/altivec-types.c	2006-01-14 21:47:06.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/dfp/altivec-types.c	2006-05-10 23:43:37.000000000 +0000
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { powerpc*-*-linux* } } } */
+/* { dg-do compile { target { powerpc*-*-linux* && powerpc_altivec_ok } } } */
 /* { dg-options "-maltivec" } */
 
 /* GNU extension: PowerPC AltiVec Built-in Functions.
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/simd-3.c GCC/gcc/testsuite/gcc.dg/simd-3.c
--- GCC.orig/gcc/testsuite/gcc.dg/simd-3.c	2005-12-15 21:25:12.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/simd-3.c	2006-05-10 23:43:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-maltivec" { target powerpc*-*-* } } */
+/* { dg-options "-maltivec" { target { powerpc*-*-* && powerpc_altivec_ok } } } */
 
 __attribute__ ((vector_size (2))) signed char v1, v2, v3;
 void
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/vect/vect-82_64.c GCC/gcc/testsuite/gcc.dg/vect/vect-82_64.c
--- GCC.orig/gcc/testsuite/gcc.dg/vect/vect-82_64.c	2005-10-28 23:28:50.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/vect/vect-82_64.c	2006-05-11 10:51:55.000000000 +0000
@@ -1,5 +1,5 @@
-/* { dg-do run { target { powerpc*-*-* && lp64 } } } */
-/* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
+/* { dg-do run { target { { powerpc*-*-* && lp64 } && powerpc_altivec_ok } } } */
+/* { dg-do compile { target { { powerpc*-*-* && ilp32 } && powerpc_altivec_ok } } } */
 /* { dg-options "-O2 -ftree-vectorize -mpowerpc64 -fdump-tree-vect-stats -maltivec" } */
 
 #include <stdarg.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/vect/vect-83_64.c GCC/gcc/testsuite/gcc.dg/vect/vect-83_64.c
--- GCC.orig/gcc/testsuite/gcc.dg/vect/vect-83_64.c	2005-10-28 23:28:50.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/vect/vect-83_64.c	2006-05-11 10:52:09.000000000 +0000
@@ -1,5 +1,5 @@
-/* { dg-do run { target { powerpc*-*-* && lp64 } } } */
-/* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
+/* { dg-do run { target { { powerpc*-*-* && lp64 } && powerpc_altivec_ok } } } */
+/* { dg-do compile { target { { powerpc*-*-* && ilp32 } && powerpc_altivec_ok } } } */
 /* { dg-options "-O2 -ftree-vectorize -mpowerpc64 -fdump-tree-vect-stats -maltivec" } */
 
 #include <stdarg.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/vmx/pr27006.c GCC/gcc/testsuite/gcc.dg/vmx/pr27006.c
--- GCC.orig/gcc/testsuite/gcc.dg/vmx/pr27006.c	2006-04-18 02:11:53.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/vmx/pr27006.c	2006-05-10 23:45:45.000000000 +0000
@@ -1,4 +1,4 @@
-/* { dg-do run */
+/* { dg-do run } */
 /* { dg-options "-maltivec" } */
 
 extern void abort ();
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/vmx/vmx.exp GCC/gcc/testsuite/gcc.dg/vmx/vmx.exp
--- GCC.orig/gcc/testsuite/gcc.dg/vmx/vmx.exp	2005-10-28 23:28:42.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/vmx/vmx.exp	2006-05-10 23:55:06.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Copyright (C) 2004, 2006 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,11 +19,10 @@
 # Load support procs.
 load_lib gcc-dg.exp
 
-# Skip these tests for non-PowerPC targets and for Aix, where AltiVec
-# is not yet supported.  Also, skip these tests on the SPE because
-# AltiVec and E500 opcodes conflict.
-if {![istarget powerpc*-*-*] || [istarget powerpc*-*-aix*]
-    || [istarget powerpc*-*eabispe*] } {
+# Skip these tests for non-PowerPC targets and for targets where AltiVec
+# is not supported.
+if {![istarget powerpc*-*-*]
+    || ![check_effective_target_powerpc_altivec_ok] } {
     return
 }
 
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/980827-1.c GCC/gcc/testsuite/gcc.target/powerpc/980827-1.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/980827-1.c	2005-12-15 21:25:11.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/980827-1.c	2006-05-11 10:52:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* { dg-do run { target { *-*-linux* && ilp32 } } } */
+/* { dg-do run { target { { *-*-linux* && ilp32 } && powerpc_fprs } } } */
 /* { dg-options -O2 } */
 
 extern void exit (int);
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-1.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-1.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-1.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-1.c	2006-05-10 23:58:38.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do run { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* Program to test PowerPC AltiVec instructions.  */
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-10.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-10.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-10.c	2005-11-03 22:15:47.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-10.c	2006-05-10 23:59:29.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -mabi=altivec -fno-inline" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-11.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-11.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-11.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-11.c	2006-05-10 23:59:34.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-O2 -maltivec -mabi=altivec" } */
 /* { dg-final { scan-assembler-not "lvx" } } */
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-12.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-12.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-12.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-12.c	2006-05-10 23:59:39.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do run { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* Program to test PowerPC AltiVec instructions.  */
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-13.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-13.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-13.c	2005-11-03 22:15:50.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-13.c	2006-05-10 23:59:45.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 /* Author: Ziemowit Laski  <zlaski@apple.com>  */
 
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-14.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-14.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-14.c	2005-12-15 21:25:11.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-14.c	2006-05-10 23:59:50.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-15.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-15.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-15.c	2005-11-03 22:15:52.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-15.c	2006-05-10 23:59:55.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-16.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-16.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-16.c	2005-11-03 22:15:53.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-16.c	2006-05-11 00:00:01.000000000 +0000
@@ -1,7 +1,7 @@
 /* This is a compile-only test for interaction of "-maltivec" and "-save-temps".  */
 /* Author:  Ziemowit Laski  <zlaski@apple.com>.  */
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-save-temps -maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-17.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-17.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-17.c	2005-11-03 22:15:54.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-17.c	2006-05-11 00:00:06.000000000 +0000
@@ -2,7 +2,7 @@
    typedef name as a vector type specifier.  */
 
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -mabi=altivec" } */
 
 typedef unsigned int ui;
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-18.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-18.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-18.c	2005-11-03 22:15:55.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-18.c	2006-05-11 00:00:13.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -mabi=altivec" } */
 /* { dg-final { scan-assembler "vcmpgtub" { target *-*-linux* } } } */
 /* { dg-final { scan-assembler "vcmpgtsb" { target *-*-darwin* } } } */
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-19.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-19.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-19.c	2005-11-03 22:15:56.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-19.c	2006-05-11 00:00:17.000000000 +0000
@@ -1,4 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 /* { dg-final { scan-assembler "dst" } } */
 
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-2.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-2.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-2.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-2.c	2006-05-10 23:58:43.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* Program to test the vector_size attribute.  This needs to run on a
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-21.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-21.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-21.c	2005-11-03 22:15:59.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-21.c	2006-05-11 00:00:33.000000000 +0000
@@ -1,4 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-22.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-22.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-22.c	2005-12-15 21:25:11.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-22.c	2006-05-11 00:00:39.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-O3 -maltivec" } */
 /* { dg-final { scan-assembler-not "mfcr" } } */
 
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-3.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-3.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-3.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-3.c	2006-05-10 23:58:48.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do run { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include "altivec_check.h"
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-4.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-4.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-4.c	2005-11-03 22:16:02.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-4.c	2006-05-10 23:58:53.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -O0 -Wall" } */
 
 #define vector __attribute__((vector_size(16)))
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-5.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-5.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-5.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-5.c	2006-05-10 23:59:00.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -O2" } */
 
 #define vector __attribute__((vector_size(16)))
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-6.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-6.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-6.c	2005-12-15 21:25:11.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-6.c	2006-05-10 23:59:05.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -O0 -Wall" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-7.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-7.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-7.c	2005-11-03 22:16:05.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-7.c	2006-05-10 23:59:12.000000000 +0000
@@ -1,7 +1,7 @@
 /* Origin: Aldy Hernandez  <aldyh@redhat.com>  */
 
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-8.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-8.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-8.c	2005-11-03 22:16:06.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-8.c	2006-05-10 23:59:19.000000000 +0000
@@ -2,7 +2,7 @@
 /* Test rs6000_legitimate_address.  PRE_INC should be invalid.  */
 
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-9.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-9.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-9.c	2005-11-03 22:16:07.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-9.c	2006-05-10 23:59:24.000000000 +0000
@@ -1,4 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -mabi=altivec -g" } */
 
 /* PR9564 */
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-consts.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-consts.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-consts.c	2005-11-23 14:11:09.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-consts.c	2006-05-10 23:58:29.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do run { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -mabi=altivec -O2" } */
 
 /* Check that "easy" AltiVec constants are correctly synthesized.  */
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-pr22085.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-pr22085.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-pr22085.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-pr22085.c	2006-05-10 23:58:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -fpreprocessed" } */
 
 /* Program to test AltiVec with -fpreprocessed.  */
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-splat.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-splat.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-splat.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-splat.c	2006-05-10 23:58:14.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -mabi=altivec -O2" } */
 
 /* Testcase by Richard Guenther and Steven Bosscher.
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c	2005-11-03 22:16:09.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c	2006-05-10 23:58:06.000000000 +0000
@@ -1,4 +1,5 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* Valid AltiVec vector types should be accepted with no warnings.  */
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-types-2.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-types-2.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-types-2.c	2005-11-03 22:16:10.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-types-2.c	2006-05-10 23:58:02.000000000 +0000
@@ -1,5 +1,6 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* These should get warnings for 32-bit code.  */
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-types-3.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-types-3.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-types-3.c	2005-11-03 22:16:11.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-types-3.c	2006-05-10 23:57:57.000000000 +0000
@@ -1,5 +1,6 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target lp64 } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* These should be rejected for 64-bit code.  */
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-types-4.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-types-4.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-types-4.c	2005-11-03 22:16:12.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-types-4.c	2006-05-10 23:57:53.000000000 +0000
@@ -1,5 +1,6 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -mno-warn-altivec-long" } */
 
 /* These should not get warnings for 32-bit code when the warning is
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c	2006-05-10 23:57:44.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do run { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -mabi=altivec -fno-inline" } */
 
 #include <stdarg.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-vec-merge.c GCC/gcc/testsuite/gcc.target/powerpc/altivec-vec-merge.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/altivec-vec-merge.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/altivec-vec-merge.c	2006-05-10 23:57:36.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do run { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -O2" } */
 
 #include <altivec.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/ppc-vector-memcpy.c GCC/gcc/testsuite/gcc.target/powerpc/ppc-vector-memcpy.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/ppc-vector-memcpy.c	2005-11-03 22:16:45.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/ppc-vector-memcpy.c	2006-05-10 23:57:16.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-O -maltivec" } */
 /* { dg-final { scan-assembler "lvx" } } */
 
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/ppc-vector-memset.c GCC/gcc/testsuite/gcc.target/powerpc/ppc-vector-memset.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/ppc-vector-memset.c	2005-11-03 22:16:46.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/ppc-vector-memset.c	2006-05-10 23:57:08.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-O -maltivec" } */
 /* { dg-final { scan-assembler "stvx" } } */
 
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/ppc64-abi-2.c GCC/gcc/testsuite/gcc.target/powerpc/ppc64-abi-2.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/ppc64-abi-2.c	2005-12-15 21:25:11.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/ppc64-abi-2.c	2006-05-11 10:52:40.000000000 +0000
@@ -1,4 +1,4 @@
-/* { dg-do run { target { powerpc*-*-linux* && lp64 } } } */
+/* { dg-do run { target { { powerpc*-*-linux* && lp64 } && powerpc_altivec_ok } } } */
 /* { dg-options "-O2 -fprofile -mprofile-kernel -maltivec -mabi=altivec" } */
 #include <stdarg.h>
 #include <signal.h>
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/pr16155.c GCC/gcc/testsuite/gcc.target/powerpc/pr16155.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/pr16155.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/pr16155.c	2006-05-10 23:56:40.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec -ansi" } */
 
 /* PR 16155
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/pr16286.c GCC/gcc/testsuite/gcc.target/powerpc/pr16286.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/pr16286.c	2005-11-08 16:21:19.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/pr16286.c	2006-05-10 23:56:33.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-maltivec" } */
 
 /* PR 16286
diff -rupN GCC.orig/gcc/testsuite/gcc.target/powerpc/pr27158.c GCC/gcc/testsuite/gcc.target/powerpc/pr27158.c
--- GCC.orig/gcc/testsuite/gcc.target/powerpc/pr27158.c	2006-05-08 21:32:56.000000000 +0000
+++ GCC/gcc/testsuite/gcc.target/powerpc/pr27158.c	2006-05-10 23:56:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* } } */
-/* { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-options "-O2 -maltivec" } */
 #define REGLIST                                                              \
          "77",  "78",  "79",  "80",  "81",  "82",  "83",  "84",  "85",  "86",\
diff -rupN GCC.orig/gcc/testsuite/lib/target-supports.exp GCC/gcc/testsuite/lib/target-supports.exp
--- GCC.orig/gcc/testsuite/lib/target-supports.exp	2006-05-10 21:58:24.000000000 +0000
+++ GCC/gcc/testsuite/lib/target-supports.exp	2006-05-11 00:04:28.000000000 +0000
@@ -1226,6 +1226,40 @@ proc check_effective_target_arm32 { } {
     return $et_arm32_saved
 }
 
+# Return 1 if this is a PowerPC target with floating-point registers.
+
+proc check_effective_target_powerpc_fprs { } {
+    if { [istarget powerpc*-*-*]
+	 || [istarget rs6000-*-*] } {
+	return [check_no_compiler_messages powerpc_fprs object {
+	    #ifdef __NO_FPRS__
+	    #error no FPRs
+	    #else
+	    int dummy;
+	    #endif
+	}]
+    } else {
+	return 0
+    }
+}
+
+# Return 1 if this is a PowerPC target supporting -maltivec.
+
+proc check_effective_target_powerpc_altivec_ok { } {
+    if { [istarget powerpc*-*-*]
+	 || [istarget rs6000-*-*] } {
+	# AltiVec is not supported on Aix.
+	if { [istarget powerpc*-*-aix*] } {
+	    return 0
+	}
+	return [check_no_compiler_messages powerpc_altivec_ok object {
+	    int dummy;
+	} "-maltivec"]
+    } else {
+	return 0
+    }
+}
+
 # Return 1 if the target supports hardware vector shift operation.
 
 proc check_effective_target_vect_shift { } {

-- 
Joseph S. Myers               http://www.srcf.ucam.org/~jsm28/gcc/
    jsm@polyomino.org.uk (personal mail)
    joseph@codesourcery.com (CodeSourcery mail)
    jsm28@gcc.gnu.org (Bugzilla assignments and CCs)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]