diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2023-10-23 14:53:29 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2023-10-25 11:24:29 +0200 |
commit | 047841a68ebf5f991e842961f9e54f3c10b94f2c (patch) | |
tree | 926b328223b6414036d0d216d7563d18bc73a458 /gcc | |
parent | a5e919027fdb1900a6f2d64f763c99dbaf98aee6 (diff) | |
download | gcc-047841a68ebf5f991e842961f9e54f3c10b94f2c.zip gcc-047841a68ebf5f991e842961f9e54f3c10b94f2c.tar.gz gcc-047841a68ebf5f991e842961f9e54f3c10b94f2c.tar.bz2 |
Extend test suite coverage for OpenACC 'self' clause for compute constructs
... on top of what was provided in recent
commit 3a3596389c2e539cb8fd5dc5784a4e2afe193a2a
"OpenACC 2.7: Implement self clause for compute constructs".
gcc/testsuite/
* c-c++-common/goacc/if-clause-2.c: Enhance.
* c-c++-common/goacc/self-clause-1.c: Likewise.
* c-c++-common/goacc/self-clause-2.c: Likewise.
* gfortran.dg/goacc/if.f95: Likewise.
* gfortran.dg/goacc/kernels-tree.f95: Likewise.
* gfortran.dg/goacc/parallel-tree.f95: Likewise.
* gfortran.dg/goacc/self.f95: Likewise.
libgomp/
* testsuite/libgomp.oacc-c-c++-common/if-1.c: Enhance.
* testsuite/libgomp.oacc-c-c++-common/self-1.c: Likewise.
* testsuite/libgomp.oacc-fortran/if-1.f90: Likewise.
* testsuite/libgomp.oacc-c-c++-common/if-self-1.c: New.
* testsuite/libgomp.oacc-fortran/self-1.f90: Likewise.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/c-c++-common/goacc/if-clause-2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/goacc/self-clause-1.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/goacc/self-clause-2.c | 20 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/goacc/if.f95 | 10 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95 | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95 | 3 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/goacc/self.f95 | 8 |
7 files changed, 49 insertions, 5 deletions
diff --git a/gcc/testsuite/c-c++-common/goacc/if-clause-2.c b/gcc/testsuite/c-c++-common/goacc/if-clause-2.c index a480725..7147552 100644 --- a/gcc/testsuite/c-c++-common/goacc/if-clause-2.c +++ b/gcc/testsuite/c-c++-common/goacc/if-clause-2.c @@ -1,3 +1,5 @@ +/* See also 'self-clause-2.c'. */ + /* { dg-additional-options "-fdump-tree-gimple" } */ /* { dg-additional-options "--param=openacc-kernels=decompose" } { dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" } */ diff --git a/gcc/testsuite/c-c++-common/goacc/self-clause-1.c b/gcc/testsuite/c-c++-common/goacc/self-clause-1.c index fe892be..28de3dc 100644 --- a/gcc/testsuite/c-c++-common/goacc/self-clause-1.c +++ b/gcc/testsuite/c-c++-common/goacc/self-clause-1.c @@ -5,6 +5,8 @@ f (int b) { struct { int i; } *p; +#pragma acc parallel self(0) self(b) /* { dg-error "too many 'self' clauses" } */ + ; #pragma acc parallel self self(b) /* { dg-error "too many 'self' clauses" } */ ; #pragma acc parallel self(*p) @@ -12,6 +14,8 @@ f (int b) { dg-error {could not convert '\* p' from 'f\(int\)::<unnamed struct>' to 'bool'} {} { target c++ } .-2 } */ ; +#pragma acc kernels self(0) self(b) /* { dg-error "too many 'self' clauses" } */ + ; #pragma acc kernels self self(b) /* { dg-error "too many 'self' clauses" } */ ; #pragma acc kernels self(*p) @@ -19,6 +23,8 @@ f (int b) { dg-error {could not convert '\* p' from 'f\(int\)::<unnamed struct>' to 'bool'} {} { target c++ } .-2 } */ ; +#pragma acc serial self(0) self(b) /* { dg-error "too many 'self' clauses" } */ + ; #pragma acc serial self self(b) /* { dg-error "too many 'self' clauses" } */ ; #pragma acc serial self(*p) diff --git a/gcc/testsuite/c-c++-common/goacc/self-clause-2.c b/gcc/testsuite/c-c++-common/goacc/self-clause-2.c index d932ac9..769694b 100644 --- a/gcc/testsuite/c-c++-common/goacc/self-clause-2.c +++ b/gcc/testsuite/c-c++-common/goacc/self-clause-2.c @@ -1,3 +1,5 @@ +/* See also 'if-clause-2.c'. */ + /* { dg-additional-options "-fdump-tree-gimple" } */ void @@ -15,3 +17,21 @@ f (short c) /* { dg-final { scan-tree-dump-times {(?n)#pragma omp target oacc_serial map\(tofrom:c \[len: [0-9]+\]\) self\(_[0-9]+\)$} 1 "gimple" } } */ ++c; } + +/* The same, but with implicit 'true' condition-argument. */ + +void +g (short d) +{ +#pragma acc parallel self copy(d) + /* { dg-final { scan-tree-dump-times {(?n)#pragma omp target oacc_parallel map\(tofrom:d \[len: [0-9]+\]\) self\(1\)$} 1 "gimple" } } */ + ++d; + +#pragma acc kernels self copy(d) + /* { dg-final { scan-tree-dump-times {(?n)#pragma omp target oacc_kernels map\(tofrom:d \[len: [0-9]+\]\) self\(1\)$} 1 "gimple" } } */ + ++d; + +#pragma acc serial self copy(d) + /* { dg-final { scan-tree-dump-times {(?n)#pragma omp target oacc_serial map\(tofrom:d \[len: [0-9]+\]\) self\(1\)$} 1 "gimple" } } */ + ++d; +} diff --git a/gcc/testsuite/gfortran.dg/goacc/if.f95 b/gcc/testsuite/gfortran.dg/goacc/if.f95 index 56f3711..753ef82 100644 --- a/gcc/testsuite/gfortran.dg/goacc/if.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/if.f95 @@ -1,3 +1,5 @@ +! See also 'self.f95'. + ! { dg-do compile } program test @@ -12,12 +14,14 @@ program test !$acc end parallel !$acc parallel if (1) ! { dg-error "scalar LOGICAL expression" } !$acc end parallel - !$acc kernels if (i) ! { dg-error "scalar LOGICAL expression" } - !$acc end kernels + !$acc kernels if ! { dg-error "Expected '\\(' after 'if'" } !$acc kernels if () ! { dg-error "Invalid character" } + !$acc kernels if (i) ! { dg-error "scalar LOGICAL expression" } + !$acc end kernels !$acc kernels if (1) ! { dg-error "scalar LOGICAL expression" } !$acc end kernels + !$acc data if ! { dg-error "Expected '\\(' after 'if'" } !$acc data if () ! { dg-error "Invalid character" } !$acc data if (i) ! { dg-error "scalar LOGICAL expression" } @@ -36,12 +40,14 @@ program test !$acc end parallel !$acc parallel if (i.gt.1) !$acc end parallel + !$acc kernels if (x) !$acc end kernels !$acc kernels if (.true.) !$acc end kernels !$acc kernels if (i.gt.1) !$acc end kernels + !$acc data if (x) !$acc end data !$acc data if (.true.) diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95 index ceb07fb..1ba04a8 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95 @@ -12,6 +12,7 @@ program test logical :: l = .true. !$acc kernels if(l) async num_gangs(i) num_workers(i) vector_length(i) & + !$acc self & !$acc copy(i), copyin(j), copyout(k), create(m) & !$acc no_create(n) & !$acc present(o), pcopy(p), pcopyin(r), pcopyout(s), pcreate(t) & @@ -27,7 +28,7 @@ end program test ! { dg-final { scan-tree-dump-times "num_gangs" 1 "original" } } ! { dg-final { scan-tree-dump-times "num_workers" 1 "original" } } ! { dg-final { scan-tree-dump-times "vector_length" 1 "original" } } - +! { dg-final { scan-tree-dump-times "self\\(1\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "map\\(tofrom:i\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "map\\(to:j\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "map\\(from:k\\)" 1 "original" } } @@ -42,4 +43,4 @@ end program test ! { dg-final { scan-tree-dump-times "map\\(force_deviceptr:u\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times {(?n)#pragma omp target oacc_data_kernels if\((?:D\.|_)[0-9]+\)$} 1 "omp_oacc_kernels_decompose" } } -! { dg-final { scan-tree-dump-times {(?n)#pragma omp target oacc_parallel_kernels_gang_single num_gangs\(1\) if\((?:D\.|_)[0-9]+\) async\(-1\)$} 1 "omp_oacc_kernels_decompose" } } +! { dg-final { scan-tree-dump-times {(?n)#pragma omp target oacc_parallel_kernels_gang_single num_gangs\(1\) if\((?:D\.|_)[0-9]+\) self\(1\) async\(-1\)$} 1 "omp_oacc_kernels_decompose" } } diff --git a/gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95 b/gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95 index 6110d93..0d4ec11 100644 --- a/gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95 @@ -14,6 +14,7 @@ program test logical :: l = .true. !$acc parallel if(l) async num_gangs(i) num_workers(i) vector_length(i) & + !$acc self & !$acc reduction(max:q), copy(i), copyin(j), copyout(k), create(m) & !$acc no_create(n) & !$acc present(o), pcopy(p), pcopyin(r), pcopyout(s), pcreate(t) & @@ -33,7 +34,7 @@ end program test ! { dg-final { scan-tree-dump-times "num_gangs" 1 "original" } } ! { dg-final { scan-tree-dump-times "num_workers" 1 "original" } } ! { dg-final { scan-tree-dump-times "vector_length" 1 "original" } } - +! { dg-final { scan-tree-dump-times "self\\(1\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "reduction\\(max:q\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "map\\(tofrom:i\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "map\\(to:j\\)" 1 "original" } } diff --git a/gcc/testsuite/gfortran.dg/goacc/self.f95 b/gcc/testsuite/gfortran.dg/goacc/self.f95 index 4817f16..aa0f6fe 100644 --- a/gcc/testsuite/gfortran.dg/goacc/self.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/self.f95 @@ -1,3 +1,5 @@ +! See also 'if.f95'. + ! { dg-do compile } program test @@ -29,6 +31,8 @@ program test !$acc kernels self (.false.) self (.false.) { dg-error "Duplicated 'self' clause" } !$acc serial self (.false.) self (.false.) { dg-error "Duplicated 'self' clause" } + !$acc parallel self + !$acc end parallel !$acc parallel self (x) !$acc end parallel !$acc parallel self (.true.) @@ -36,6 +40,8 @@ program test !$acc parallel self (i.gt.1) !$acc end parallel + !$acc kernels self + !$acc end kernels !$acc kernels self (x) !$acc end kernels !$acc kernels self (.true.) @@ -43,6 +49,8 @@ program test !$acc kernels self (i.gt.1) !$acc end kernels + !$acc serial self + !$acc end serial !$acc serial self (x) !$acc end serial !$acc serial self (.true.) |