aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-23 22:03:31 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-23 22:03:31 +0000
commit3ec9142faed847df200c16d74b6e50d8b06cfcae (patch)
treee0fad812df82165ae67ab41e9dae40c59e15dad9 /gcc
parent8813304d12d261bcb757d96a68b80d77d31fb989 (diff)
* gcc.dg/vect/pr18425.c: Use effective target vect_long.
* gcc.dg/vect/vect-13.c, gcc.dg/vect/vect-17.c, gcc.dg/vect/vect-18.c, gcc.dg/vect/vect-19.c, gcc.dg/vect/vect-20.c, gcc.dg/vect/vect-48a.c, gcc.dg/vect/vect-56a.c, gcc.dg/vect/vect-7.c, gcc.dg/vect/vect-77.c, gcc.dg/vect/vect-77a.c, gcc.dg/vect/vect-78.c, gcc.dg/vect/vect-86.c, gcc.dg/vect/vect-87.c, gcc.dg/vect/vect-88.c: XFAIL for alpha. * gcc.dg/vect/vect.exp: Add check for alpha. * lib/target-supports.exp (check_alpha_max_hw_available): New. (check_effective_target_vect_int): Enable for alpha. (check_effective_target_vect_long): New. (is-effective-target): Add it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91105 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog15
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr18425.c10
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-13.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-17.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-18.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-19.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-20.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-48a.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-56a.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-7.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-77.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-77a.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-78.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-86.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-87.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-88.c3
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect.exp7
-rw-r--r--gcc/testsuite/lib/target-supports.exp67
18 files changed, 109 insertions, 26 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 91a04a829f0..b395dd02d5c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,18 @@
+2004-11-23 Richard Henderson <rth@redhat.com>
+
+ * gcc.dg/vect/pr18425.c: Use effective target vect_long.
+ * gcc.dg/vect/vect-13.c, gcc.dg/vect/vect-17.c, gcc.dg/vect/vect-18.c,
+ gcc.dg/vect/vect-19.c, gcc.dg/vect/vect-20.c, gcc.dg/vect/vect-48a.c,
+ gcc.dg/vect/vect-56a.c, gcc.dg/vect/vect-7.c, gcc.dg/vect/vect-77.c,
+ gcc.dg/vect/vect-77a.c, gcc.dg/vect/vect-78.c, gcc.dg/vect/vect-86.c,
+ gcc.dg/vect/vect-87.c, gcc.dg/vect/vect-88.c: XFAIL for alpha.
+
+ * gcc.dg/vect/vect.exp: Add check for alpha.
+ * lib/target-supports.exp (check_alpha_max_hw_available): New.
+ (check_effective_target_vect_int): Enable for alpha.
+ (check_effective_target_vect_long): New.
+ (is-effective-target): Add it.
+
2004-11-23 Uros Bizjak <uros@kss-loka.si>
* gcc.dg/pr18614-1.c: New test.
diff --git a/gcc/testsuite/gcc.dg/vect/pr18425.c b/gcc/testsuite/gcc.dg/vect/pr18425.c
index 758182a5b82..2fa1b799434 100644
--- a/gcc/testsuite/gcc.dg/vect/pr18425.c
+++ b/gcc/testsuite/gcc.dg/vect/pr18425.c
@@ -1,10 +1,7 @@
/* { dg-do compile } */
-/* { dg-require-effective-target vect_int } */
-
-#include <stdarg.h>
-#include "tree-vect.h"
-
-#define N 16
+/* ??? Using "long" isn't quite right; we're testing vectors of pointers here.
+ But since no extant target supports sizeof(long) != sizeof(void*)... */
+/* { dg-require-effective-target vect_long } */
char ** _M_allocate();
void
@@ -16,5 +13,4 @@ _M_fill_insert(unsigned int __n)
*__new_start = __tmp;
}
-
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-13.c b/gcc/testsuite/gcc.dg/vect/vect-13.c
index 38a489c2894..94048276ccb 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-13.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-13.c
@@ -38,4 +38,4 @@ int main (void)
/* These fail to vectorize on targets that don't have or model a vector
max operation. */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail i?86-*-* x86_64-*-* sparc*-*-* } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail i?86-*-* x86_64-*-* sparc*-*-* alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-17.c b/gcc/testsuite/gcc.dg/vect/vect-17.c
index e28d21cefe5..50f11331c0b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-17.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-17.c
@@ -126,4 +126,4 @@ int main (void)
/* These fail to vectorize on targets that don't have or model vector
bitwise operations. */
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {xfail i?86-*-* x86_64-*-*} } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {xfail i?86-*-* x86_64-*-* alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-18.c b/gcc/testsuite/gcc.dg/vect/vect-18.c
index 62f39d42810..991deb44bb4 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-18.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-18.c
@@ -125,4 +125,4 @@ int main (void)
/* These fail to vectorize on targets that don't have or model vector
bitwise operations. */
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {xfail i?86-*-* x86_64-*-*} } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {xfail i?86-*-* x86_64-*-* alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-19.c b/gcc/testsuite/gcc.dg/vect/vect-19.c
index b323115c9e2..49c8a5ce8ba 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-19.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-19.c
@@ -125,4 +125,4 @@ int main (void)
/* These fail to vectorize on targets that don't have or model vector
bitwise operations. */
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {xfail i?86-*-* x86_64-*-*} } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {xfail i?86-*-* x86_64-*-* alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-20.c b/gcc/testsuite/gcc.dg/vect/vect-20.c
index 1f98606557f..e2674af3b00 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-20.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-20.c
@@ -97,4 +97,4 @@ int main (void)
/* These fail to vectorize on targets that don't have or model vector
bitwise operations. */
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {xfail i?86-*-* x86_64-*-*} } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {xfail i?86-*-* x86_64-*-* alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-48a.c b/gcc/testsuite/gcc.dg/vect/vect-48a.c
index 5fcb17c452f..401da6c998a 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-48a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-48a.c
@@ -53,4 +53,4 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-56a.c b/gcc/testsuite/gcc.dg/vect/vect-56a.c
index eba18213fb6..1cd117eb0b3 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-56a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-56a.c
@@ -51,4 +51,4 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-7.c b/gcc/testsuite/gcc.dg/vect/vect-7.c
index 4d33bad908b..ae751cbd42c 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-7.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-7.c
@@ -45,4 +45,5 @@ int main (void)
return main1 ();
}
-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+/* Fails for targets that don't vectorize PLUS. */
+/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-77.c b/gcc/testsuite/gcc.dg/vect/vect-77.c
index 9bd431bf32f..a49a284348e 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-77.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-77.c
@@ -41,5 +41,4 @@ int main (void)
/* These are not yet vectorized on targets that do not model alignment-handling
mechanisms. */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail i?86-*-* x86_64-*-* sparc*-*-* } } } */
-
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail i?86-*-* x86_64-*-* sparc*-*-* alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-77a.c b/gcc/testsuite/gcc.dg/vect/vect-77a.c
index 5d8b7d0d0e3..5e10d28c976 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-77a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-77a.c
@@ -43,5 +43,4 @@ int main (void)
/* This fails to vectorize for 64-bit powerpc but there's no way to
specify that in an xfail list. */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* } } } */
-
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-78.c b/gcc/testsuite/gcc.dg/vect/vect-78.c
index 35be16dbe28..3a0bb3885bf 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-78.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-78.c
@@ -40,6 +40,4 @@ int main (void)
return 0;
}
-
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail i?86-*-* x86_64-*-* sparc*-*-* } } } */
-
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail i?86-*-* x86_64-*-* sparc*-*-* alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-86.c b/gcc/testsuite/gcc.dg/vect/vect-86.c
index 9caa887b9fc..e90349d74c7 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-86.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-86.c
@@ -45,4 +45,5 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+/* Fails for targets that don't vectorize PLUS. */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-87.c b/gcc/testsuite/gcc.dg/vect/vect-87.c
index 546178f8788..afc8a9ed594 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-87.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-87.c
@@ -49,4 +49,5 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+/* Fails for targets that don't vectorize PLUS. */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-88.c b/gcc/testsuite/gcc.dg/vect/vect-88.c
index 59984eaba42..d492eacc897 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-88.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-88.c
@@ -49,4 +49,5 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+/* Fails for targets that don't vectorize PLUS. */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail alpha*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc/testsuite/gcc.dg/vect/vect.exp
index 03281c8d37a..a3aa89ae5c3 100644
--- a/gcc/testsuite/gcc.dg/vect/vect.exp
+++ b/gcc/testsuite/gcc.dg/vect/vect.exp
@@ -58,6 +58,13 @@ if [istarget "powerpc*-*-*"] {
} elseif [istarget "sparc*-*-*"] {
lappend DEFAULT_VECTCFLAGS "-mcpu=ultrasparc" "-mvis"
set dg-do-what-default run
+} elseif [istarget "alpha*-*-*"] {
+ lappend DEFAULT_VECTCFLAGS "-mmax"
+ if [check_alpha_max_hw_available] {
+ set dg-do-what-default run
+ } else {
+ set dg-do-what-default compile
+ }
} else {
return
}
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index e26cd362bb5..4ea6e3f95cf 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -368,6 +368,46 @@ proc check_vmx_hw_available { } {
return $vmx_hw_available_saved
}
+proc check_alpha_max_hw_available { } {
+ global alpha_max_hw_available_saved
+ global tool
+
+ if [info exists alpha_max_hw_available_saved] {
+ verbose "check_alpha_max_hw_available returning saved $alpha_max_hw_available_saved" 2
+ } else {
+ set alpha_max_hw_available_saved 0
+
+ # Set up, compile, and execute a test program probing bit 8 of the
+ # architecture mask, which indicates presence of MAX instructions.
+ set src max[pid].c
+ set exe max[pid].x
+
+ set f [open $src "w"]
+ puts $f "int main() { return __builtin_alpha_amask(1<<8) != 0; }"
+ close $f
+
+ verbose "check_alpha_max_hw_available compiling testfile $src" 2
+ set lines [${tool}_target_compile $src $exe executable ""]
+ file delete $src
+
+ if [string match "" $lines] then {
+ # No error message, compilation succeeded.
+ set result [${tool}_load "./$exe" "" ""]
+ set status [lindex $result 0]
+ remote_file build delete $exe
+ verbose "check_alpha_max_hw_available testfile status is <$status>" 2
+
+ if { $status == "pass" } then {
+ set alpha_max_hw_available_saved 1
+ }
+ } else {
+ verbose "check_alpha_max_hw_availalble testfile compilation failed" 2
+ }
+ }
+
+ return $alpha_max_hw_available_saved
+}
+
# Return 1 if we're generating 32-bit code using default options, 0
# otherwise.
@@ -406,7 +446,8 @@ proc check_effective_target_vect_int { } {
if { [istarget i?86-*-*]
|| [istarget powerpc*-*-*]
|| [istarget x86_64-*-*]
- || [istarget sparc*-*-*] } {
+ || [istarget sparc*-*-*]
+ || [istarget alpha*-*-*] } {
set et_vect_int_saved 1
}
}
@@ -415,6 +456,29 @@ proc check_effective_target_vect_int { } {
return $et_vect_int_saved
}
+# Return 1 if the target supports hardware vectors of long, 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_vect_long { } {
+ global et_vect_long_saved
+
+ if [info exists et_vect_long_saved] {
+ verbose "check_effective_target_vect_long: using cached result" 2
+ } else {
+ set et_vect_long_saved 0
+ if { [istarget i?86-*-*]
+ || [istarget powerpc*-*-*]
+ || [istarget x86_64-*-*]
+ || ([istarget sparc*-*-*] && [check_effective_target_ilp32]) } {
+ set et_vect_long_saved 1
+ }
+ }
+
+ verbose "check_effective_target_vect_long: returning $et_vect_long_saved" 2
+ return $et_vect_long_saved
+}
+
# Return 1 if the target supports hardware vectors of float, 0 otherwise.
#
# This won't change for different subtargets so cache the result.
@@ -473,6 +537,7 @@ proc is-effective-target { arg } {
"named_sections" { set selected [check_named_sections_available] }
"gc_sections" { set selected [check_gc_sections_available] }
"vect_int" { set selected [check_effective_target_vect_int] }
+ "vect_long" { set selected [check_effective_target_vect_long] }
"vect_float" { set selected [check_effective_target_vect_float] }
"vect_double" { set selected [check_effective_target_vect_double] }
default { error "unknown effective target selector `$arg'" }