1subroutine parloop 2 integer, parameter :: n = 100 3 integer i, j, k, a 4 5 !$acc parallel loop tile(10) 6 do i = 1, n 7 end do 8 9 !$acc parallel loop tile(*) 10 do i = 1, n 11 end do 12 13 !$acc parallel loop tile(10, *) 14 do i = 1, n 15 do j = 1, n 16 end do 17 end do 18 19 !$acc parallel loop tile(10, *, i) ! { dg-error "" } 20 do i = 1, n 21 do j = 1, n 22 do k = 1, n 23 end do 24 end do 25 end do 26 27 !$acc parallel loop tile ! { dg-error "Failed to match clause" } 28 do i = 1, n 29 end do 30 31 !$acc parallel loop tile() ! { dg-error "Syntax error" } 32 do i = 1, n 33 end do 34 35 !$acc parallel loop tile(,1) ! { dg-error "Syntax error" } 36 do i = 1, n 37 end do 38 39 !$acc parallel loop tile(,,) ! { dg-error "Syntax error" } 40 do i = 1, n 41 end do 42 43 !$acc parallel loop tile(1.1) ! { dg-error "requires a scalar INTEGER" } 44 do i = 1, n 45 end do 46 47 !$acc parallel loop tile(-3) ! { dg-warning "must be positive" } 48 do i = 1, n 49 end do 50 51 !$acc parallel loop tile(10, -3) ! { dg-warning "must be positive" } 52 do i = 1, n 53 do j = 1, n 54 end do 55 end do 56 57 !$acc parallel loop tile(-100, 10, 5) ! { dg-warning "must be positive" } 58 do i = 1, n 59 do j = 1, n 60 do k = 1, n 61 end do 62 end do 63 end do 64 65 !$acc parallel loop tile(10, .true.) ! { dg-error "requires a scalar" } 66 do i = 1, n 67 do j = 1, n 68 end do 69 end do 70 71 !$acc parallel loop tile(1, a) ! { dg-error "constant expression" } 72 do i = 1, n 73 do j = 1, n 74 end do 75 end do 76 77 !$acc parallel loop tile(a, 1) ! { dg-error "constant expression" } 78 do i = 1, n 79 do j = 1, n 80 end do 81 end do 82 83 !$acc parallel loop tile(2, 3) collapse (2) ! { dg-error "Incompatible use" } 84 do i = 1, n 85 do j = 1, n 86 end do 87 end do 88end subroutine parloop 89 90subroutine par 91 integer, parameter :: n = 100 92 integer i, j, k 93 94 !$acc parallel 95 !$acc loop tile ! { dg-error "Failed to match clause" } 96 do i = 1, n 97 end do 98 99 !$acc loop tile() ! { dg-error "Syntax error" } 100 do i = 1, n 101 end do 102 103 !$acc loop tile(1) 104 do i = 1, n 105 end do 106 107 !$acc loop tile(*) 108 do i = 1, n 109 end do 110 111 !$acc loop tile(2) 112 do i = 1, n 113 do j = 1, n 114 end do 115 end do 116 117 !$acc loop tile(-2) ! { dg-warning "must be positive" } 118 do i = 1, n 119 end do 120 121 !$acc loop tile(i) ! { dg-error "constant expression" } 122 do i = 1, n 123 end do 124 125 !$acc loop tile(2, 2, 1) 126 do i = 1, n 127 do j = 1, n 128 do k = 1, n 129 end do 130 end do 131 end do 132 133 !$acc parallel loop tile(2, 2) 134 do i = 1, n 135 do j = i+1, n, j ! { dg-error "rectangular iteration space" } 136 end do 137 end do 138 139 !$acc loop vector tile(*) 140 do i = 1, n 141 end do 142 143 !$acc loop worker tile(*) 144 do i = 1, n 145 end do 146 147 !$acc loop gang tile(*) 148 do i = 1, n 149 end do 150 151 !$acc loop vector gang tile(*) 152 do i = 1, n 153 end do 154 155 !$acc loop vector worker tile(*) 156 do i = 1, n 157 end do 158 159 !$acc loop gang worker tile(*) 160 do i = 1, n 161 end do 162 163 !$acc loop tile(2, 3) collapse (2) ! { dg-error "Incompatible use" } 164 do i = 1, n 165 do j = 1, n 166 end do 167 end do 168 !$acc end parallel 169end subroutine par 170 171subroutine kern 172 integer, parameter :: n = 100 173 integer i, j, k 174 175 !$acc kernels 176 !$acc loop tile ! { dg-error "Failed to match clause" } 177 do i = 1, n 178 end do 179 180 !$acc loop tile() ! { dg-error "Syntax error" } 181 do i = 1, n 182 end do 183 184 !$acc loop tile(1) 185 do i = 1, n 186 end do 187 188 !$acc loop tile(*) 189 do i = 1, n 190 end do 191 192 !$acc loop tile(2) 193 do i = 1, n 194 do j = 1, n 195 end do 196 end do 197 198 !$acc loop tile(-2) ! { dg-warning "must be positive" } 199 do i = 1, n 200 end do 201 202 !$acc loop tile(i) ! { dg-error "constant expression" } 203 do i = 1, n 204 end do 205 206 !$acc loop tile(2, 2, 1) 207 do i = 1, n 208 do j = 1, n 209 do k = 1, n 210 end do 211 end do 212 end do 213 214 !$acc parallel loop tile(2, 2) 215 do i = 1, n 216 do j = 1, n 217 end do 218 end do 219 220 !$acc loop vector tile(*) 221 do i = 1, n 222 end do 223 224 !$acc loop worker tile(*) 225 do i = 1, n 226 end do 227 228 !$acc loop gang tile(*) 229 do i = 1, n 230 end do 231 232 !$acc loop vector gang tile(*) 233 do i = 1, n 234 end do 235 236 !$acc loop vector worker tile(*) 237 do i = 1, n 238 end do 239 240 !$acc loop gang worker tile(*) 241 do i = 1, n 242 end do 243 244 !$acc loop tile(2, 3) collapse (2) ! { dg-error "Incompatible use" } 245 do i = 1, n 246 do j = 1, n 247 end do 248 end do 249 !$acc end kernels 250end subroutine kern 251 252subroutine kernsloop 253 integer, parameter :: n = 100 254 integer i, j, k, a 255 256 !$acc kernels loop tile(10) 257 do i = 1, n 258 end do 259 260 !$acc kernels loop tile(*) 261 do i = 1, n 262 end do 263 264 !$acc kernels loop tile(10, *) 265 do i = 1, n 266 do j = 1, n 267 end do 268 end do 269 270 !$acc kernels loop tile(10, *, i) ! { dg-error "" } 271 do i = 1, n 272 do j = 1, n 273 do k = 1, n 274 end do 275 end do 276 end do 277 278 !$acc kernels loop tile ! { dg-error "Failed to match clause" } 279 do i = 1, n 280 end do 281 282 !$acc kernels loop tile() ! { dg-error "Syntax error" } 283 do i = 1, n 284 end do 285 286 !$acc kernels loop tile(,1) ! { dg-error "Syntax error" } 287 do i = 1, n 288 end do 289 290 !$acc kernels loop tile(,,) ! { dg-error "Syntax error" } 291 do i = 1, n 292 end do 293 294 !$acc kernels loop tile(1.1) ! { dg-error "requires a scalar INTEGER" } 295 do i = 1, n 296 end do 297 298 !$acc kernels loop tile(-3) ! { dg-warning "must be positive" } 299 do i = 1, n 300 end do 301 302 !$acc kernels loop tile(10, -3) ! { dg-warning "must be positive" } 303 do i = 1, n 304 do j = 1, n 305 end do 306 end do 307 308 !$acc kernels loop tile(-100, 10, 5) ! { dg-warning "must be positive" } 309 do i = 1, n 310 do j = 1, n 311 do k = 1, n 312 end do 313 end do 314 end do 315 316 !$acc kernels loop tile(10, .true.) ! { dg-error "requires a scalar" } 317 do i = 1, n 318 do j = 1, n 319 end do 320 end do 321 322 !$acc kernels loop tile(1, a) ! { dg-error "constant expression" } 323 do i = 1, n 324 do j = 1, n 325 end do 326 end do 327 328 !$acc kernels loop tile(a, 1) ! { dg-error "constant expression" } 329 do i = 1, n 330 do j = 1, n 331 end do 332 end do 333 334 !$acc kernels loop tile(2, 3) collapse (2) ! { dg-error "Incompatible use" } 335 do i = 1, n 336 do j = 1, n 337 end do 338 end do 339end subroutine kernsloop 340