diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-23 22:03:31 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-23 22:03:31 +0000 |
commit | 3ec9142faed847df200c16d74b6e50d8b06cfcae (patch) | |
tree | e0fad812df82165ae67ab41e9dae40c59e15dad9 /gcc | |
parent | 8813304d12d261bcb757d96a68b80d77d31fb989 (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/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/pr18425.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-13.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-17.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-18.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-19.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-20.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-48a.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-56a.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-7.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-77.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-77a.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-78.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-86.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-87.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-88.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect.exp | 7 | ||||
-rw-r--r-- | gcc/testsuite/lib/target-supports.exp | 67 |
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'" } |