brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · d718437 Raw
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