123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- ! { dg-do run }
- ! { dg-additional-options "-cpp" }
- function is_mapped (n) result (rc)
- use openacc
- integer, intent (in) :: n
- logical rc
- #if ACC_MEM_SHARED
- integer i
- rc = .TRUE.
- i = n
- #else
- rc = acc_is_present (n, sizeof (n))
- #endif
- end function is_mapped
- program main
- integer i, j
- logical is_mapped
- i = -1
- j = -2
- !$acc data copyin (i, j)
- if (is_mapped (i) .eqv. .FALSE.) stop 1
- if (is_mapped (j) .eqv. .FALSE.) stop 2
- if (i .ne. -1 .or. j .ne. -2) stop 3
- i = 2
- j = 1
- if (i .ne. 2 .or. j .ne. 1) stop 4
- !$acc end data
- if (i .ne. 2 .or. j .ne. 1) stop 5
- i = -1
- j = -2
- !$acc data copyout (i, j)
- if (is_mapped (i) .eqv. .FALSE.) stop 6
- if (is_mapped (j) .eqv. .FALSE.) stop 7
- if (i .ne. -1 .or. j .ne. -2) stop 8
- i = 2
- j = 1
- if (i .ne. 2 .or. j .ne. 1) stop 9
- !$acc parallel present (i, j)
- i = 4
- j = 2
- !$acc end parallel
- !$acc end data
- if (i .ne. 4 .or. j .ne. 2) stop 10
- i = -1
- j = -2
- !$acc data create (i, j)
- if (is_mapped (i) .eqv. .FALSE.) stop 11
- if (is_mapped (j) .eqv. .FALSE.) stop 12
- if (i .ne. -1 .or. j .ne. -2) stop 13
- i = 2
- j = 1
- if (i .ne. 2 .or. j .ne. 1) stop 14
- !$acc end data
- if (i .ne. 2 .or. j .ne. 1) stop 15
- i = -1
- j = -2
- !$acc data present_or_copyin (i, j)
- if (is_mapped (i) .eqv. .FALSE.) stop 16
- if (is_mapped (j) .eqv. .FALSE.) stop 17
- if (i .ne. -1 .or. j .ne. -2) stop 18
- i = 2
- j = 1
- if (i .ne. 2 .or. j .ne. 1) stop 19
- !$acc end data
- if (i .ne. 2 .or. j .ne. 1) stop 20
- i = -1
- j = -2
- !$acc data present_or_copyout (i, j)
- if (is_mapped (i) .eqv. .FALSE.) stop 21
- if (is_mapped (j) .eqv. .FALSE.) stop 22
- if (i .ne. -1 .or. j .ne. -2) stop 23
- i = 2
- j = 1
- if (i .ne. 2 .or. j .ne. 1) stop 24
- !$acc parallel present (i, j)
- i = 4
- j = 2
- !$acc end parallel
- !$acc end data
- if (i .ne. 4 .or. j .ne. 2) stop 25
- i = -1
- j = -2
- !$acc data present_or_copy (i, j)
- if (is_mapped (i) .eqv. .FALSE.) stop 26
- if (is_mapped (j) .eqv. .FALSE.) stop 27
- if (i .ne. -1 .or. j .ne. -2) stop 28
- i = 2
- j = 1
- if (i .ne. 2 .or. j .ne. 1) stop 29
- !$acc end data
- #if ACC_MEM_SHARED
- if (i .ne. 2 .or. j .ne. 1) stop 30
- #else
- if (i .ne. -1 .or. j .ne. -2) stop 31
- #endif
- i = -1
- j = -2
- !$acc data present_or_create (i, j)
- if (is_mapped (i) .eqv. .FALSE.) stop 32
- if (is_mapped (j) .eqv. .FALSE.) stop 33
- i = 2
- j = 1
- if (i .ne. 2 .or. j .ne. 1) stop 34
- !$acc end data
- if (i .ne. 2 .or. j .ne. 1) stop 35
- i = -1
- j = -2
- !$acc data copyin (i, j)
- !$acc data present (i, j)
- if (is_mapped (i) .eqv. .FALSE.) stop 36
- if (is_mapped (j) .eqv. .FALSE.) stop 37
- if (i .ne. -1 .or. j .ne. -2) stop 38
- i = 2
- j = 1
- if (i .ne. 2 .or. j .ne. 1) stop 39
- !$acc end data
- !$acc end data
- if (i .ne. 2 .or. j .ne. 1) stop 40
- i = -1
- j = -2
- !$acc data copyin (i, j)
- !$acc data present (i, j)
- if (is_mapped (i) .eqv. .FALSE.) stop 41
- if (is_mapped (j) .eqv. .FALSE.) stop 42
- if (i .ne. -1 .or. j .ne. -2) stop 43
- i = 2
- j = 1
- if (i .ne. 2 .or. j .ne. 1) stop 44
- !$acc end data
- !$acc end data
- if (i .ne. 2 .or. j .ne. 1) stop 45
- i = -1
- j = -2
- !$acc data
- #if !ACC_MEM_SHARED
- if (is_mapped (i) .eqv. .TRUE.) stop 46
- if (is_mapped (j) .eqv. .TRUE.) stop 47
- #endif
- if (i .ne. -1 .or. j .ne. -2) stop 48
- i = 2
- j = 1
- if (i .ne. 2 .or. j .ne. 1) stop 49
- !$acc end data
- if (i .ne. 2 .or. j .ne. 1) stop 50
- end program main
|