| ! { dg-do run } |
| |
| program test |
| implicit none |
| integer, allocatable :: a1(:) |
| integer, allocatable :: b1(:) |
| integer, allocatable :: c1(:) |
| integer, allocatable :: b2(:,:) |
| integer, allocatable :: c3(:,:,:) |
| |
| allocate (a1(5)) |
| if (.not.allocated (a1)) STOP 49 |
| |
| a1 = 10 |
| |
| !$acc parallel copy(a1(1:5)) |
| a1(1) = 1 |
| a1(2) = 2 |
| a1(3) = 3 |
| a1(4) = 4 |
| a1(5) = 5 |
| !$acc end parallel |
| |
| if (a1(1) .ne. 1) STOP 1 |
| if (a1(2) .ne. 2) STOP 2 |
| if (a1(3) .ne. 3) STOP 3 |
| if (a1(4) .ne. 4) STOP 4 |
| if (a1(5) .ne. 5) STOP 5 |
| |
| deallocate(a1) |
| |
| allocate (a1(0:4)) |
| if (.not.allocated (a1)) STOP 50 |
| |
| a1 = 10 |
| |
| !$acc parallel copy(a1(0:4)) |
| a1(0) = 1 |
| a1(1) = 2 |
| a1(2) = 3 |
| a1(3) = 4 |
| a1(4) = 5 |
| !$acc end parallel |
| |
| if (a1(0) .ne. 1) STOP 6 |
| if (a1(1) .ne. 2) STOP 7 |
| if (a1(2) .ne. 3) STOP 8 |
| if (a1(3) .ne. 4) STOP 9 |
| if (a1(4) .ne. 5) STOP 10 |
| |
| deallocate(a1) |
| |
| allocate (b2(5,5)) |
| if (.not.allocated (b2)) STOP 51 |
| |
| b2 = 11 |
| |
| !$acc parallel copy(b2(1:5,1:5)) |
| b2(1,1) = 1 |
| b2(2,2) = 2 |
| b2(3,3) = 3 |
| b2(4,4) = 4 |
| b2(5,5) = 5 |
| !$acc end parallel |
| |
| if (b2(1,1) .ne. 1) STOP 11 |
| if (b2(2,2) .ne. 2) STOP 12 |
| if (b2(3,3) .ne. 3) STOP 13 |
| if (b2(4,4) .ne. 4) STOP 14 |
| if (b2(5,5) .ne. 5) STOP 15 |
| |
| deallocate(b2) |
| |
| allocate (b2(0:4,0:4)) |
| if (.not.allocated (b2)) STOP 52 |
| |
| b2 = 11 |
| |
| !$acc parallel copy(b2(0:4,0:4)) |
| b2(0,0) = 1 |
| b2(1,1) = 2 |
| b2(2,2) = 3 |
| b2(3,3) = 4 |
| b2(4,4) = 5 |
| !$acc end parallel |
| |
| if (b2(0,0) .ne. 1) STOP 16 |
| if (b2(1,1) .ne. 2) STOP 17 |
| if (b2(2,2) .ne. 3) STOP 18 |
| if (b2(3,3) .ne. 4) STOP 19 |
| if (b2(4,4) .ne. 5) STOP 20 |
| |
| deallocate(b2) |
| |
| allocate (c3(5,5,5)) |
| if (.not.allocated (c3)) STOP 53 |
| |
| c3 = 12 |
| |
| !$acc parallel copy(c3(1:5,1:5,1:5)) |
| c3(1,1,1) = 1 |
| c3(2,2,2) = 2 |
| c3(3,3,3) = 3 |
| c3(4,4,4) = 4 |
| c3(5,5,5) = 5 |
| !$acc end parallel |
| |
| if (c3(1,1,1) .ne. 1) STOP 21 |
| if (c3(2,2,2) .ne. 2) STOP 22 |
| if (c3(3,3,3) .ne. 3) STOP 23 |
| if (c3(4,4,4) .ne. 4) STOP 24 |
| if (c3(5,5,5) .ne. 5) STOP 25 |
| |
| deallocate(c3) |
| |
| allocate (c3(0:4,0:4,0:4)) |
| if (.not.allocated (c3)) STOP 54 |
| |
| c3 = 12 |
| |
| !$acc parallel copy(c3(0:4,0:4,0:4)) |
| c3(0,0,0) = 1 |
| c3(1,1,1) = 2 |
| c3(2,2,2) = 3 |
| c3(3,3,3) = 4 |
| c3(4,4,4) = 5 |
| !$acc end parallel |
| |
| if (c3(0,0,0) .ne. 1) STOP 26 |
| if (c3(1,1,1) .ne. 2) STOP 27 |
| if (c3(2,2,2) .ne. 3) STOP 28 |
| if (c3(3,3,3) .ne. 4) STOP 29 |
| if (c3(4,4,4) .ne. 5) STOP 30 |
| |
| deallocate(c3) |
| |
| allocate (a1(5)) |
| if (.not.allocated (a1)) STOP 55 |
| |
| allocate (b1(5)) |
| if (.not.allocated (b1)) STOP 56 |
| |
| allocate (c1(5)) |
| if (.not.allocated (c1)) STOP 57 |
| |
| a1 = 10 |
| b1 = 3 |
| c1 = 7 |
| |
| !$acc parallel copyin(a1(1:5)) create(c1(1:5)) copyout(b1(1:5)) |
| c1(1) = a1(1) |
| c1(2) = a1(2) |
| c1(3) = a1(3) |
| c1(4) = a1(4) |
| c1(5) = a1(5) |
| |
| b1(1) = c1(1) |
| b1(2) = c1(2) |
| b1(3) = c1(3) |
| b1(4) = c1(4) |
| b1(5) = c1(5) |
| !$acc end parallel |
| |
| if (b1(1) .ne. 10) STOP 31 |
| if (b1(2) .ne. 10) STOP 32 |
| if (b1(3) .ne. 10) STOP 33 |
| if (b1(4) .ne. 10) STOP 34 |
| if (b1(5) .ne. 10) STOP 35 |
| |
| deallocate(a1) |
| deallocate(b1) |
| deallocate(c1) |
| |
| allocate (a1(0:4)) |
| if (.not.allocated (a1)) STOP 58 |
| |
| allocate (b1(0:4)) |
| if (.not.allocated (b1)) STOP 59 |
| |
| allocate (c1(0:4)) |
| if (.not.allocated (c1)) STOP 60 |
| |
| a1 = 10 |
| b1 = 3 |
| c1 = 7 |
| |
| !$acc parallel copyin(a1(0:4)) create(c1(0:4)) copyout(b1(0:4)) |
| c1(0) = a1(0) |
| c1(1) = a1(1) |
| c1(2) = a1(2) |
| c1(3) = a1(3) |
| c1(4) = a1(4) |
| |
| b1(0) = c1(0) |
| b1(1) = c1(1) |
| b1(2) = c1(2) |
| b1(3) = c1(3) |
| b1(4) = c1(4) |
| !$acc end parallel |
| |
| if (b1(0) .ne. 10) STOP 36 |
| if (b1(1) .ne. 10) STOP 37 |
| if (b1(2) .ne. 10) STOP 38 |
| if (b1(3) .ne. 10) STOP 39 |
| if (b1(4) .ne. 10) STOP 40 |
| |
| deallocate(a1) |
| deallocate(b1) |
| deallocate(c1) |
| |
| allocate (a1(5)) |
| if (.not.allocated (a1)) STOP 61 |
| |
| a1 = 10 |
| |
| !$acc parallel copy(a1(2:3)) |
| a1(2) = 2 |
| a1(3) = 3 |
| !$acc end parallel |
| |
| if (a1(1) .ne. 10) STOP 41 |
| if (a1(2) .ne. 2) STOP 42 |
| if (a1(3) .ne. 3) STOP 43 |
| if (a1(4) .ne. 10) STOP 44 |
| if (a1(5) .ne. 10) STOP 45 |
| |
| deallocate(a1) |
| |
| end program test |