xref: /llvm-project/offload/test/offloading/fortran/target-map-all-common-block-members.f90 (revision 372344995568cae076477a8b0e98fcdec7c49379)
1*37234499Sagozillon! Offloading test checking interaction of mapping all the members of a common
2*37234499Sagozillon! block to a target region
3aec735cfSagozillon! REQUIRES: flang, amdgcn-amd-amdhsa
4aec735cfSagozillon! UNSUPPORTED: nvptx64-nvidia-cuda
5aec735cfSagozillon! UNSUPPORTED: nvptx64-nvidia-cuda-LTO
6aec735cfSagozillon! UNSUPPORTED: aarch64-unknown-linux-gnu
7aec735cfSagozillon! UNSUPPORTED: aarch64-unknown-linux-gnu-LTO
81a0cf245SJan Patrick Lehr! UNSUPPORTED: x86_64-unknown-linux-gnu
91a0cf245SJan Patrick Lehr! UNSUPPORTED: x86_64-unknown-linux-gnu-LTO
10aec735cfSagozillon
11aec735cfSagozillon! RUN: %libomptarget-compile-fortran-run-and-check-generic
12aec735cfSagozillonprogram main
13aec735cfSagozillon    implicit none
14aec735cfSagozillon    common /var_common/ var1, var2, var3
15aec735cfSagozillon    integer :: var1, var2, var3
16aec735cfSagozillon
17aec735cfSagozillon    call modify_1
18aec735cfSagozillon
19aec735cfSagozillon  !$omp target map(tofrom: var1, var2, var3)
20aec735cfSagozillon    var3 = var3 * 10
21aec735cfSagozillon    var2 = var2 * 10
22aec735cfSagozillon    var1 = var1 * 10
23aec735cfSagozillon  !$omp end target
24aec735cfSagozillon
25aec735cfSagozillon  call modify_2
26aec735cfSagozillon
27aec735cfSagozillon  print *, var1
28aec735cfSagozillon  print *, var2
29aec735cfSagozillon  print *, var3
30aec735cfSagozillonend program
31aec735cfSagozillon
32aec735cfSagozillonsubroutine modify_1
33aec735cfSagozillon  common /var_common/ var1, var2, var3
34aec735cfSagozillon  integer :: var1, var2, var3
35aec735cfSagozillon!$omp target map(tofrom: var2, var1, var3)
36aec735cfSagozillon  var3 = var3 + 40
37aec735cfSagozillon  var2 = var2 + 20
38aec735cfSagozillon  var1 = var1 + 30
39aec735cfSagozillon!$omp end target
40aec735cfSagozillonend
41aec735cfSagozillon
42aec735cfSagozillonsubroutine modify_2
43aec735cfSagozillon  common /var_common/ var1, var2, var3
44aec735cfSagozillon  integer :: var1, var2, var3
45aec735cfSagozillon!$omp target map(tofrom: var2, var3, var1)
46aec735cfSagozillon  var3 = var3 + 20
47aec735cfSagozillon  var1 = var1 + 10
48aec735cfSagozillon  var2 = var2 + 15
49aec735cfSagozillon!$omp end target
50aec735cfSagozillonend
51aec735cfSagozillon
52aec735cfSagozillon!CHECK: 310
53aec735cfSagozillon!CHECK: 215
54aec735cfSagozillon!CHECK: 420
55