Skip to content

Commit 03485a0

Browse files
authored
[openmp][flang] Add tests for map clause (#70394)
This patch adds basic tests for map clause on target construct for commonblocks. There will be more tests to add, which will be added in future patches. Currently failing tests are added in a separate folder with XFAIL. They should be moved as they are fixed.
1 parent 547a507 commit 03485a0

File tree

3 files changed

+138
-0
lines changed

3 files changed

+138
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
! REQUIRES: flang, amdgcn-amd-amdhsa
2+
! UNSUPPORTED: nvptx64-nvidia-cuda
3+
! UNSUPPORTED: nvptx64-nvidia-cuda-LTO
4+
! UNSUPPORTED: aarch64-unknown-linux-gnu
5+
! UNSUPPORTED: aarch64-unknown-linux-gnu-LTO
6+
! UNSUPPORTED: x86_64-pc-linux-gnu
7+
! UNSUPPORTED: x86_64-pc-linux-gnu-LTO
8+
9+
! RUN: %libomptarget-compile-fortran-run-and-check-generic
10+
! XFAIL: *
11+
12+
program main
13+
use omp_lib
14+
integer :: devices(2), var1
15+
common var1
16+
var1 = 10
17+
print *, "var1 before target = ", var1
18+
devices(1) = omp_get_device_num()
19+
!$omp target map(tofrom:devices) map(tofrom:var1)
20+
var1 = 20
21+
devices(2) = omp_get_device_num()
22+
!$omp end target
23+
print *, "var1 after target = ", var1
24+
print *, "devices: ", devices
25+
end program
26+
27+
! CHECK: var1 before target = 10
28+
! CHECK: var1 after target = 20
29+
! CHECK: devices: 1 0
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
! REQUIRES: flang, amdgcn-amd-amdhsa
2+
! UNSUPPORTED: nvptx64-nvidia-cuda
3+
! UNSUPPORTED: nvptx64-nvidia-cuda-LTO
4+
! UNSUPPORTED: aarch64-unknown-linux-gnu
5+
! UNSUPPORTED: aarch64-unknown-linux-gnu-LTO
6+
! UNSUPPORTED: x86_64-pc-linux-gnu
7+
! UNSUPPORTED: x86_64-pc-linux-gnu-LTO
8+
9+
! RUN: %libomptarget-compile-fortran-run-and-check-generic
10+
! XFAIL: *
11+
12+
program main
13+
use omp_lib
14+
integer :: tmp, var4
15+
common var4
16+
var4 = 24
17+
tmp = 12
18+
print *, "var4 before target = ", var4
19+
!$omp target map(tofrom:var4)
20+
var4 = tmp
21+
!$omp end target
22+
print *, "var4 after target = ", var4
23+
end program
24+
25+
! CHECK: var4 before target = 24
26+
! CHECK: var4 after target = 12
27+
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
! Basic offloading test with a target region
2+
! REQUIRES: flang, amdgcn-amd-amdhsa
3+
! UNSUPPORTED: nvptx64-nvidia-cuda
4+
! UNSUPPORTED: nvptx64-nvidia-cuda-LTO
5+
! UNSUPPORTED: aarch64-unknown-linux-gnu
6+
! UNSUPPORTED: aarch64-unknown-linux-gnu-LTO
7+
! UNSUPPORTED: x86_64-pc-linux-gnu
8+
! UNSUPPORTED: x86_64-pc-linux-gnu-LTO
9+
10+
! RUN: %libomptarget-compile-fortran-run-and-check-generic
11+
12+
! Testing simple variables in common block.
13+
program main
14+
call check_device
15+
call commonblock_simple_with_implicit_type
16+
call commonblock_simple_with_integer
17+
call commonblock_simple_with_real
18+
end program main
19+
20+
!-----
21+
22+
subroutine check_device
23+
use omp_lib
24+
integer :: devices(2)
25+
devices(1) = omp_get_device_num()
26+
!$omp target map(tofrom:devices)
27+
devices(2) = omp_get_device_num()
28+
!$omp end target
29+
print *, "devices: ", devices
30+
end subroutine check_device
31+
32+
!CHECK: devices: 1 0
33+
34+
!-----
35+
36+
subroutine commonblock_simple_with_implicit_type
37+
use omp_lib
38+
common var1
39+
var1 = 10
40+
print *, "var1 before target = ", var1
41+
!$omp target map(tofrom:var1)
42+
var1 = 20
43+
!$omp end target
44+
print *, "var1 after target = ", var1
45+
end subroutine
46+
47+
! CHECK: var1 before target = 10
48+
! CHECK: var1 after target = 20
49+
50+
! -----
51+
52+
subroutine commonblock_simple_with_integer
53+
use omp_lib
54+
integer :: var2
55+
common var2
56+
var2 = 10
57+
print *, "var2 before target = ", var2
58+
!$omp target map(tofrom:var2)
59+
var2 = 20
60+
!$omp end target
61+
print *, "var2 after target = ", var2
62+
end subroutine
63+
64+
! CHECK: var2 before target = 10
65+
! CHECK: var2 after target = 20
66+
67+
! -----
68+
69+
subroutine commonblock_simple_with_real
70+
use omp_lib
71+
real :: var3
72+
common var3
73+
var3 = 12.5
74+
print *, "var3 before target = ", var3
75+
!$omp target map(tofrom:var3)
76+
var3 = 14.5
77+
!$omp end target
78+
print *, "var3 after target = ", var3
79+
end subroutine
80+
81+
! CHECK: var3 before target = 12.5
82+
! CHECK: var3 after target = 14.5

0 commit comments

Comments
 (0)