blob: 3b148ce75172996b3105294c2e9990b8172e9af7 [file] [log] [blame]
! Verify the GOMP_MAP_FIRSTPRIVATE_INT optimziation on various types.
! { dg-do run }
program test
implicit none
integer (kind=1) :: i1i, i1o
integer (kind=2) :: i2i, i2o
integer (kind=4) :: i4i, i4o
integer (kind=8) :: i8i, i8o
integer (kind=16) :: i16i, i16o
logical (kind=1) :: l1i, l1o
logical (kind=2) :: l2i, l2o
logical (kind=4) :: l4i, l4o
logical (kind=8) :: l8i, l8o
logical (kind=16) :: l16i, l16o
real (kind=4) :: r4i, r4o
real (kind=8) :: r8i, r8o
complex (kind=4) :: c4i, c4o
complex (kind=8) :: c8i, c8o
character (kind=1) :: ch1i, ch1o
character (kind=4) :: ch4i, ch4o
i1i = 1
i2i = 2
i4i = 3
i8i = 4
i16i = 5
l1i = .true.
l2i = .false.
l4i = .true.
l8i = .true.
l16i = .false.
r4i = .5
r8i = .25
c4i = (2, -2)
c8i = (4, -4)
ch1i = "a"
ch4i = "b"
!$acc parallel firstprivate(i1i, i2i, i4i, i8i, i16i) &
!$acc copyout(i1o, i2o, i4o, i8o, i16o) &
!$acc firstprivate(l1i, l2i, l4i, l8i, l16i) &
!$acc copyout(l1o, l2o, l4o, l8o, l16o) &
!$acc firstprivate(r4i, r8i) copyout(r4o, r8o) &
!$acc firstprivate(c4i, c8i) copyout(c4o, c8o) &
!$acc firstprivate(ch1i, ch4i) &
!$acc copyout(ch1o, ch4o)
i1o = i1i
i2o = i2i
i4o = i4i
i8o = i8i
i16o = i16i
l1o = l1i
l2o = l2i
l4o = l4i
l8o = l8i
l16o = l16i
r4o = r4i
r8o = r8i
c4o = c4i
c8o = c8i
ch1o = ch1i
ch4o = ch4i
!$acc end parallel
if (i1i /= i1o) stop 1
if (i2i /= i2o) stop 2
if (i4i /= i4o) stop 3
if (i8i /= i8o) stop 4
if (i16i /= i16o) stop 5
if (l1i .neqv. l1o) stop 6
if (l2i .neqv. l2o) stop 7
if (l4i .neqv. l4o) stop 8
if (l8i .neqv. l8o) stop 9
if (l16i .neqv. l16o) stop 10
if (r4i /= r4o) stop 11
if (r8i /= r8o) stop 12
if (c4i /= c4o) stop 13
if (c8i /= c8o) stop 14
if (ch1i /= ch1o) stop 15
if (ch4i /= ch4o) stop 16
call subtest(i1i, i2i, i4i, i8i, i16i, i1o, i2o, i4o, i8o, i16o, &
l1i, l2i, l4i, l8i, l16i, l1o, l2o, l4o, l8o, l16o, &
r4i, r8i, r4o, r8o, c4i, c8i, c4o, c8o, &
ch1i, ch4i, ch1o, ch4o)
end program test
subroutine subtest(i1i, i2i, i4i, i8i, i16i, i1o, i2o, i4o, i8o, i16o, &
l1i, l2i, l4i, l8i, l16i, l1o, l2o, l4o, l8o, l16o, &
r4i, r8i, r4o, r8o, c4i, c8i, c4o, c8o, &
ch1i, ch4i, ch1o, ch4o)
implicit none
integer (kind=1) :: i1i, i1o
integer (kind=2) :: i2i, i2o
integer (kind=4) :: i4i, i4o
integer (kind=8) :: i8i, i8o
integer (kind=16) :: i16i, i16o
logical (kind=1) :: l1i, l1o
logical (kind=2) :: l2i, l2o
logical (kind=4) :: l4i, l4o
logical (kind=8) :: l8i, l8o
logical (kind=16) :: l16i, l16o
real (kind=4) :: r4i, r4o
real (kind=8) :: r8i, r8o
complex (kind=4) :: c4i, c4o
complex (kind=8) :: c8i, c8o
character (kind=1) :: ch1i, ch1o
character (kind=4) :: ch4i, ch4o
i1i = -i1i
i2i = -i2i
i4i = -i4i
i8i = -i8i
i16i = -i16i
l1i = .not. l1i
l2i = .not. l2i
l4i = .not. l4i
l8i = .not. l8i
l16i = .not. l16i
r4i = -r4i
r8i = -r8i
c4i = -c4i
c8i = -c8i
ch1i = "z"
ch4i = "y"
!$acc parallel firstprivate(i1i, i2i, i4i, i8i, i16i) &
!$acc copyout(i1o, i2o, i4o, i8o, i16o) &
!$acc firstprivate(l1i, l2i, l4i, l8i, l16i) &
!$acc copyout(l1o, l2o, l4o, l8o, l16o) &
!$acc firstprivate(r4i, r8i) copyout(r4o, r8o) &
!$acc firstprivate(c4i, c8i) copyout(c4o, c8o) &
!$acc firstprivate(ch1i, ch4i) &
!$acc copyout(ch1o, ch4o)
i1o = i1i
i2o = i2i
i4o = i4i
i8o = i8i
i16o = i16i
l1o = l1i
l2o = l2i
l4o = l4i
l8o = l8i
l16o = l16i
r4o = r4i
r8o = r8i
c4o = c4i
c8o = c8i
ch1o = ch1i
ch4o = ch4i
!$acc end parallel
if (i1i /= i1o) stop 17
if (i2i /= i2o) stop 18
if (i4i /= i4o) stop 19
if (i8i /= i8o) stop 20
if (i16i /= i16o) stop 21
if (l1i .neqv. l1o) stop 22
if (l2i .neqv. l2o) stop 23
if (l4i .neqv. l4o) stop 24
if (l8i .neqv. l8o) stop 25
if (l16i .neqv. l16o) stop 26
if (r4i /= r4o) stop 27
if (r8i /= r8o) stop 28
if (c4i /= c4o) stop 29
if (c8i /= c8o) stop 30
if (ch1i /= ch1o) stop 31
if (ch4i /= ch4o) stop 32
end subroutine subtest