xref: /llvm-project/offload/test/offloading/fortran/basic-target-region-3D-array-section.f90 (revision 372344995568cae076477a8b0e98fcdec7c49379)
1! Basic offloading test of a regular array explicitly passed within a target
2! region
3! REQUIRES: flang, amdgpu
4
5! RUN: %libomptarget-compile-fortran-run-and-check-generic
6program main
7    implicit none
8    integer :: inArray(3,3,3)
9    integer :: outArray(3,3,3)
10    integer :: i, j, k
11    integer :: j2 = 3, k2 = 3
12
13    do i = 1, 3
14      do j = 1, 3
15        do k = 1, 3
16            inArray(i, j, k) = 42
17            outArray(i, j, k) = 0
18        end do
19       end do
20    end do
21
22j = 1
23k = 1
24!$omp target map(tofrom:inArray(1:3, 1:3, 2:2), outArray(1:3, 1:3, 1:3), j, k, j2, k2)
25    do while (j <= j2)
26      k = 1
27      do while (k <= k2)
28        outArray(k, j, 2) = inArray(k, j, 2)
29        k = k + 1
30      end do
31      j = j + 1
32    end do
33!$omp end target
34
35 print *, outArray
36
37end program
38
39! CHECK:  0 0 0 0 0 0 0 0 0 42 42 42 42 42 42 42 42 42 0 0 0 0 0 0 0 0 0
40