aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/goacc/compute_construct-clauses.f95
blob: bce902bbcc6f3847969d653410b94f5af7ff7543 (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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
! { dg-do compile } 
! { dg-additional-options "-fmax-errors=100" } 

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 serial async(i)
  !$acc end serial

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

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

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

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

  !$acc kernels async() { dg-error "Invalid character" }
  !$acc parallel async() { dg-error "Invalid character" }
  !$acc serial 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 serial 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" }
  !$acc serial 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 serial default(none)
  !$acc end serial

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

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

  !$acc kernels default { dg-error "Expected '\\(' after 'default'" }
  !$acc parallel default { dg-error "Expected '\\(' after 'default'" }
  !$acc serial 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 serial 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 serial 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" }
  !$acc serial 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

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

end