aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/goacc/parallel-kernels-clauses.f95
blob: 70b84f115496dbb7198d9584482905db79dae93c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
! { dg-do compile } 
! { dg-additional-options "-fmax-errors=100" } 

! test clauses added in OpenACC ver 2.0

program test
  implicit none
  integer :: i, a(10), b(5:7)
  integer, parameter :: acc_async_noval = -1 
  integer, parameter :: acc_async_sync = -2
  logical :: l

  ! async
  !$acc kernels async(i)
  !$acc end kernels
  !$acc parallel async(i)
  !$acc end parallel

  !$acc kernels async(0, 1) { dg-error "Failed to match clause" }
  !$acc parallel async(0, 1) { dg-error "Failed to match clause" }

  !$acc kernels async
  !$acc end kernels
  !$acc parallel async
  !$acc end parallel

  !$acc kernels async(acc_async_noval)
  !$acc end kernels
  !$acc parallel async(acc_async_noval)
  !$acc end parallel

  !$acc kernels async(acc_async_sync)
  !$acc end kernels
  !$acc parallel async(acc_async_sync)
  !$acc end parallel

  !$acc kernels async() { dg-error "Invalid character" }
  !$acc parallel async() { dg-error "Invalid character" }

  !$acc kernels async("a") { dg-error "Failed to match clause" }
  !$acc parallel async("a") { dg-error "Failed to match clause" }

  !$acc kernels async(.true.) { dg-error "Failed to match clause" }
  !$acc parallel async(.true.) { dg-error "Failed to match clause" }

  ! default(none)
  !$acc kernels default(none)
  !$acc end kernels
  !$acc parallel default(none)
  !$acc end parallel

  !$acc kernels default (none)
  !$acc end kernels
  !$acc parallel default (none)
  !$acc end parallel

  !$acc kernels default ( none )
  !$acc end kernels
  !$acc parallel default ( none )
  !$acc end parallel

  !$acc kernels default { dg-error "Expected '\\(' after 'default'" }
  !$acc parallel default { dg-error "Expected '\\(' after 'default'" }

  !$acc kernels default() { dg-error "Expected NONE or PRESENT in DEFAULT clause" }
  !$acc parallel default() { dg-error "Expected NONE or PRESENT in DEFAULT clause" }

  !$acc kernels default(i) { dg-error "Expected NONE or PRESENT in DEFAULT clause" }
  !$acc parallel default(i) { dg-error "Expected NONE or PRESENT in DEFAULT clause" }

  !$acc kernels default(1) { dg-error "Expected NONE or PRESENT in DEFAULT clause" }
  !$acc parallel default(1) { dg-error "Expected NONE or PRESENT in DEFAULT clause" }

  ! Wait
  !$acc kernels wait (l) ! { dg-error "INTEGER" }
  !$acc end kernels
  !$acc kernels wait (.true.) ! { dg-error "INTEGER" }
  !$acc end kernels
  !$acc kernels wait (i, 1) 
  !$acc end kernels
  !$acc kernels wait (a) ! { dg-error "INTEGER" }
  !$acc end kernels
  !$acc kernels wait (b(5:6)) ! { dg-error "INTEGER" }
  !$acc end kernels

  !$acc parallel wait (l) ! { dg-error "INTEGER" }
  !$acc end parallel
  !$acc parallel wait (.true.) ! { dg-error "INTEGER" }
  !$acc end parallel
  !$acc parallel wait (i, 1) 
  !$acc end parallel
  !$acc parallel wait (a) ! { dg-error "INTEGER" }
  !$acc end parallel
  !$acc parallel wait (b(5:6)) ! { dg-error "INTEGER" }
  !$acc end parallel
end