xref: /llvm-project/offload/test/offloading/fortran/target-nested-target-data.f90 (revision 372344995568cae076477a8b0e98fcdec7c49379)
1*37234499Sagozillon! Offloading test for target nested inside a target data region
288234488SEthan Luis McDonough! REQUIRES: flang, amdgpu
3330d8983SJohannes Doerfert
4330d8983SJohannes Doerfert! RUN: %libomptarget-compile-fortran-run-and-check-generic
5330d8983SJohannes Doerfertprogram main
6330d8983SJohannes Doerfert   integer :: A(10), B(10), C(10)
7330d8983SJohannes Doerfert
8330d8983SJohannes Doerfert   do I = 1, 10
9330d8983SJohannes Doerfert      A(I) = 1
10330d8983SJohannes Doerfert      B(I) = 2
11330d8983SJohannes Doerfert   end do
12330d8983SJohannes Doerfert   !$omp target data map(to: A, B) map(alloc: C)
13330d8983SJohannes Doerfert   !$omp target map(from: C)
14330d8983SJohannes Doerfert   do I = 1, 10
15330d8983SJohannes Doerfert      C(I) = A(I) + B(I) ! assigns 3, A:1 + B:2
16330d8983SJohannes Doerfert   end do
17330d8983SJohannes Doerfert   !$omp end target
18330d8983SJohannes Doerfert   !$omp target update from(C) ! updates C device -> host
19330d8983SJohannes Doerfert   !$omp end target data
20330d8983SJohannes Doerfert
21330d8983SJohannes Doerfert   print *, C ! should be all 3's
22330d8983SJohannes Doerfert
23330d8983SJohannes Doerfertend program
24330d8983SJohannes Doerfert
25330d8983SJohannes Doerfert! CHECK: 3 3 3 3 3 3 3 3 3 3
26