xref: /llvm-project/offload/test/offloading/fortran/basic-target-region-3D-array.f90 (revision 372344995568cae076477a8b0e98fcdec7c49379)
1! Basic offloading test of a regular array explicitly passed within a target
2! region
3! REQUIRES: flang
4! REQUIRES: gpu
5! UNSUPPORTED: nvptx64-nvidia-cuda-LTO
6
7! RUN: %libomptarget-compile-fortran-run-and-check-generic
8program main
9    integer :: x(2,2,2)
10    integer :: i, j, k
11    integer :: i2 = 2, j2 = 2, k2 = 2
12    integer :: counter = 1
13    do i = 1, 2
14        do j = 1, 2
15          do k = 1, 2
16            x(i, j, k) = 0
17          end do
18        end do
19    end do
20
21i = 1
22j = 1
23k = 1
24
25!$omp target map(tofrom:x, counter) map(to: i, j, k, i2, j2, k2)
26    do while (i <= i2)
27      j = 1
28        do while (j <= j2)
29          k = 1
30          do while (k <= k2)
31            x(i, j, k) = counter
32            counter = counter + 1
33            k = k + 1
34          end do
35          j = j + 1
36        end do
37        i = i + 1
38    end do
39!$omp end target
40
41     do i = 1, 2
42        do j = 1, 2
43          do k = 1, 2
44            print *, x(i, j, k)
45          end do
46        end do
47    end do
48end program main
49
50! CHECK: 1
51! CHECK: 2
52! CHECK: 3
53! CHECK: 4
54! CHECK: 5
55! CHECK: 6
56! CHECK: 7
57! CHECK: 8
58