167 lines · plain
1! Offloading test checking the use of the depend clause on the target construct2! REQUIRES: flang, amdgcn-amd-amdhsa3! UNSUPPORTED: nvptx64-nvidia-cuda4! UNSUPPORTED: nvptx64-nvidia-cuda-LTO5! UNSUPPORTED: aarch64-unknown-linux-gnu6! UNSUPPORTED: aarch64-unknown-linux-gnu-LTO7! UNSUPPORTED: x86_64-unknown-linux-gnu8! UNSUPPORTED: x86_64-unknown-linux-gnu-LTO9 10! RUN: %libomptarget-compile-fortran-run-and-check-generic11subroutine defaultmap_allocatable_present()12 implicit none13 integer, dimension(:), allocatable :: arr14 integer :: N = 1615 integer :: i16 17 allocate(arr(N))18 19!$omp target enter data map(to: arr)20 21!$omp target defaultmap(present: allocatable)22 do i = 1,N23 arr(i) = N + 4024 end do25!$omp end target26 27!$omp target exit data map(from: arr)28 29 print *, arr30 deallocate(arr)31 32 return33end subroutine34 35subroutine defaultmap_scalar_tofrom()36 implicit none37 integer :: scalar_int38 scalar_int = 1039 40 !$omp target defaultmap(tofrom: scalar)41 scalar_int = 2042 !$omp end target43 44 print *, scalar_int45 return46end subroutine47 48subroutine defaultmap_all_default()49 implicit none50 integer, dimension(:), allocatable :: arr51 integer :: aggregate(16)52 integer :: N = 1653 integer :: i, scalar_int54 55 allocate(arr(N))56 57 scalar_int = 1058 aggregate = scalar_int59 60 !$omp target defaultmap(default: all)61 scalar_int = 2062 do i = 1,N63 arr(i) = scalar_int + aggregate(i)64 end do65 !$omp end target66 67 print *, scalar_int68 print *, arr69 70 deallocate(arr)71 return72end subroutine73 74subroutine defaultmap_pointer_to()75 implicit none76 integer, dimension(:), pointer :: arr_ptr(:)77 integer :: scalar_int, i78 allocate(arr_ptr(10))79 arr_ptr = 1080 scalar_int = 2081 82 !$omp target defaultmap(to: pointer)83 do i = 1,1084 arr_ptr(i) = scalar_int + 2085 end do86 !$omp end target87 88 print *, arr_ptr89 deallocate(arr_ptr)90 return91end subroutine92 93subroutine defaultmap_scalar_from()94 implicit none95 integer :: scalar_test96 scalar_test = 1097 !$omp target defaultmap(from: scalar)98 scalar_test = 2099 !$omp end target100 101 print *, scalar_test102 return103end subroutine104 105subroutine defaultmap_aggregate_to()106 implicit none107 integer :: aggregate_arr(16)108 integer :: i, scalar_test = 0109 aggregate_arr = 0110 !$omp target map(tofrom: scalar_test) defaultmap(to: aggregate)111 do i = 1,16112 aggregate_arr(i) = i113 scalar_test = scalar_test + aggregate_arr(i)114 enddo115 !$omp end target116 117 print *, scalar_test118 print *, aggregate_arr119 return120end subroutine121 122subroutine defaultmap_dtype_aggregate_to()123 implicit none124 type :: dtype125 real(4) :: i126 real(4) :: j127 integer(4) :: array_i(10)128 integer(4) :: k129 integer(4) :: array_j(10)130 end type dtype131 132 type(dtype) :: aggregate_type133 134 aggregate_type%k = 20135 aggregate_type%array_i = 30136 137 !$omp target defaultmap(to: aggregate)138 aggregate_type%k = 40139 aggregate_type%array_i(1) = 50140 !$omp end target141 142 print *, aggregate_type%k143 print *, aggregate_type%array_i(1)144 return145end subroutine146 147program map_present148 implicit none149! CHECK: 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56150 call defaultmap_allocatable_present()151! CHECK: 20152 call defaultmap_scalar_tofrom()153! CHECK: 10154! CHECK: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30155 call defaultmap_all_default()156! CHECK: 10 10 10 10 10 10 10 10 10 10157 call defaultmap_pointer_to()158! CHECK: 20159 call defaultmap_scalar_from()160! CHECK: 136161! CHECK: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0162 call defaultmap_aggregate_to()163! CHECK: 20164! CHECK: 30165 call defaultmap_dtype_aggregate_to()166end program167