xref: /llvm-project/flang/test/Lower/OpenMP/target-spmd.f90 (revision 8fe11a26ae8f12622ddec83a7b80637080843a8b)
1*8fe11a26SSergio Afonso! RUN: %flang_fc1 -emit-hlfir -fopenmp %s -o - | FileCheck %s
2*8fe11a26SSergio Afonso
3*8fe11a26SSergio Afonso! CHECK-LABEL: func.func @_QPdistribute_parallel_do_generic() {
4*8fe11a26SSergio Afonsosubroutine distribute_parallel_do_generic()
5*8fe11a26SSergio Afonso  ! CHECK: omp.target
6*8fe11a26SSergio Afonso  ! CHECK-NOT: host_eval({{.*}})
7*8fe11a26SSergio Afonso  ! CHECK-SAME: {
8*8fe11a26SSergio Afonso  !$omp target
9*8fe11a26SSergio Afonso  !$omp teams
10*8fe11a26SSergio Afonso  !$omp distribute parallel do
11*8fe11a26SSergio Afonso  do i = 1, 10
12*8fe11a26SSergio Afonso    call foo(i)
13*8fe11a26SSergio Afonso  end do
14*8fe11a26SSergio Afonso  !$omp end distribute parallel do
15*8fe11a26SSergio Afonso  call bar() !< Prevents this from being SPMD.
16*8fe11a26SSergio Afonso  !$omp end teams
17*8fe11a26SSergio Afonso  !$omp end target
18*8fe11a26SSergio Afonso
19*8fe11a26SSergio Afonso  ! CHECK: omp.target
20*8fe11a26SSergio Afonso  ! CHECK-NOT: host_eval({{.*}})
21*8fe11a26SSergio Afonso  ! CHECK-SAME: {
22*8fe11a26SSergio Afonso  !$omp target teams
23*8fe11a26SSergio Afonso  !$omp distribute parallel do
24*8fe11a26SSergio Afonso  do i = 1, 10
25*8fe11a26SSergio Afonso    call foo(i)
26*8fe11a26SSergio Afonso  end do
27*8fe11a26SSergio Afonso  !$omp end distribute parallel do
28*8fe11a26SSergio Afonso  call bar() !< Prevents this from being SPMD.
29*8fe11a26SSergio Afonso  !$omp end target teams
30*8fe11a26SSergio Afonso
31*8fe11a26SSergio Afonso  ! CHECK: omp.target
32*8fe11a26SSergio Afonso  ! CHECK-NOT: host_eval({{.*}})
33*8fe11a26SSergio Afonso  ! CHECK-SAME: {
34*8fe11a26SSergio Afonso  !$omp target teams
35*8fe11a26SSergio Afonso  !$omp distribute parallel do
36*8fe11a26SSergio Afonso  do i = 1, 10
37*8fe11a26SSergio Afonso    call foo(i)
38*8fe11a26SSergio Afonso  end do
39*8fe11a26SSergio Afonso  !$omp end distribute parallel do
40*8fe11a26SSergio Afonso
41*8fe11a26SSergio Afonso  !$omp distribute parallel do
42*8fe11a26SSergio Afonso  do i = 1, 10
43*8fe11a26SSergio Afonso    call foo(i)
44*8fe11a26SSergio Afonso  end do
45*8fe11a26SSergio Afonso  !$omp end distribute parallel do
46*8fe11a26SSergio Afonso  !$omp end target teams
47*8fe11a26SSergio Afonsoend subroutine distribute_parallel_do_generic
48*8fe11a26SSergio Afonso
49*8fe11a26SSergio Afonso! CHECK-LABEL: func.func @_QPdistribute_parallel_do_spmd() {
50*8fe11a26SSergio Afonsosubroutine distribute_parallel_do_spmd()
51*8fe11a26SSergio Afonso  ! CHECK: omp.target
52*8fe11a26SSergio Afonso  ! CHECK-SAME: host_eval({{.*}})
53*8fe11a26SSergio Afonso  !$omp target
54*8fe11a26SSergio Afonso  !$omp teams
55*8fe11a26SSergio Afonso  !$omp distribute parallel do
56*8fe11a26SSergio Afonso  do i = 1, 10
57*8fe11a26SSergio Afonso    call foo(i)
58*8fe11a26SSergio Afonso  end do
59*8fe11a26SSergio Afonso  !$omp end distribute parallel do
60*8fe11a26SSergio Afonso  !$omp end teams
61*8fe11a26SSergio Afonso  !$omp end target
62*8fe11a26SSergio Afonso
63*8fe11a26SSergio Afonso  ! CHECK: omp.target
64*8fe11a26SSergio Afonso  ! CHECK-SAME: host_eval({{.*}})
65*8fe11a26SSergio Afonso  !$omp target teams
66*8fe11a26SSergio Afonso  !$omp distribute parallel do
67*8fe11a26SSergio Afonso  do i = 1, 10
68*8fe11a26SSergio Afonso    call foo(i)
69*8fe11a26SSergio Afonso  end do
70*8fe11a26SSergio Afonso  !$omp end distribute parallel do
71*8fe11a26SSergio Afonso  !$omp end target teams
72*8fe11a26SSergio Afonsoend subroutine distribute_parallel_do_spmd
73*8fe11a26SSergio Afonso
74*8fe11a26SSergio Afonso! CHECK-LABEL: func.func @_QPdistribute_parallel_do_simd_generic() {
75*8fe11a26SSergio Afonsosubroutine distribute_parallel_do_simd_generic()
76*8fe11a26SSergio Afonso  ! CHECK: omp.target
77*8fe11a26SSergio Afonso  ! CHECK-NOT: host_eval({{.*}})
78*8fe11a26SSergio Afonso  ! CHECK-SAME: {
79*8fe11a26SSergio Afonso  !$omp target
80*8fe11a26SSergio Afonso  !$omp teams
81*8fe11a26SSergio Afonso  !$omp distribute parallel do simd
82*8fe11a26SSergio Afonso  do i = 1, 10
83*8fe11a26SSergio Afonso    call foo(i)
84*8fe11a26SSergio Afonso  end do
85*8fe11a26SSergio Afonso  !$omp end distribute parallel do simd
86*8fe11a26SSergio Afonso  call bar() !< Prevents this from being SPMD.
87*8fe11a26SSergio Afonso  !$omp end teams
88*8fe11a26SSergio Afonso  !$omp end target
89*8fe11a26SSergio Afonso
90*8fe11a26SSergio Afonso  ! CHECK: omp.target
91*8fe11a26SSergio Afonso  ! CHECK-NOT: host_eval({{.*}})
92*8fe11a26SSergio Afonso  ! CHECK-SAME: {
93*8fe11a26SSergio Afonso  !$omp target teams
94*8fe11a26SSergio Afonso  !$omp distribute parallel do simd
95*8fe11a26SSergio Afonso  do i = 1, 10
96*8fe11a26SSergio Afonso    call foo(i)
97*8fe11a26SSergio Afonso  end do
98*8fe11a26SSergio Afonso  !$omp end distribute parallel do simd
99*8fe11a26SSergio Afonso  call bar() !< Prevents this from being SPMD.
100*8fe11a26SSergio Afonso  !$omp end target teams
101*8fe11a26SSergio Afonso
102*8fe11a26SSergio Afonso  ! CHECK: omp.target
103*8fe11a26SSergio Afonso  ! CHECK-NOT: host_eval({{.*}})
104*8fe11a26SSergio Afonso  ! CHECK-SAME: {
105*8fe11a26SSergio Afonso  !$omp target teams
106*8fe11a26SSergio Afonso  !$omp distribute parallel do simd
107*8fe11a26SSergio Afonso  do i = 1, 10
108*8fe11a26SSergio Afonso    call foo(i)
109*8fe11a26SSergio Afonso  end do
110*8fe11a26SSergio Afonso  !$omp end distribute parallel do simd
111*8fe11a26SSergio Afonso
112*8fe11a26SSergio Afonso  !$omp distribute parallel do simd
113*8fe11a26SSergio Afonso  do i = 1, 10
114*8fe11a26SSergio Afonso    call foo(i)
115*8fe11a26SSergio Afonso  end do
116*8fe11a26SSergio Afonso  !$omp end distribute parallel do simd
117*8fe11a26SSergio Afonso  !$omp end target teams
118*8fe11a26SSergio Afonsoend subroutine distribute_parallel_do_simd_generic
119*8fe11a26SSergio Afonso
120*8fe11a26SSergio Afonso! CHECK-LABEL: func.func @_QPdistribute_parallel_do_simd_spmd() {
121*8fe11a26SSergio Afonsosubroutine distribute_parallel_do_simd_spmd()
122*8fe11a26SSergio Afonso  ! CHECK: omp.target
123*8fe11a26SSergio Afonso  ! CHECK-SAME: host_eval({{.*}})
124*8fe11a26SSergio Afonso  !$omp target
125*8fe11a26SSergio Afonso  !$omp teams
126*8fe11a26SSergio Afonso  !$omp distribute parallel do simd
127*8fe11a26SSergio Afonso  do i = 1, 10
128*8fe11a26SSergio Afonso    call foo(i)
129*8fe11a26SSergio Afonso  end do
130*8fe11a26SSergio Afonso  !$omp end distribute parallel do simd
131*8fe11a26SSergio Afonso  !$omp end teams
132*8fe11a26SSergio Afonso  !$omp end target
133*8fe11a26SSergio Afonso
134*8fe11a26SSergio Afonso  ! CHECK: omp.target
135*8fe11a26SSergio Afonso  ! CHECK-SAME: host_eval({{.*}})
136*8fe11a26SSergio Afonso  !$omp target teams
137*8fe11a26SSergio Afonso  !$omp distribute parallel do simd
138*8fe11a26SSergio Afonso  do i = 1, 10
139*8fe11a26SSergio Afonso    call foo(i)
140*8fe11a26SSergio Afonso  end do
141*8fe11a26SSergio Afonso  !$omp end distribute parallel do simd
142*8fe11a26SSergio Afonso  !$omp end target teams
143*8fe11a26SSergio Afonsoend subroutine distribute_parallel_do_simd_spmd
144*8fe11a26SSergio Afonso
145*8fe11a26SSergio Afonso! CHECK-LABEL: func.func @_QPteams_distribute_parallel_do_spmd() {
146*8fe11a26SSergio Afonsosubroutine teams_distribute_parallel_do_spmd()
147*8fe11a26SSergio Afonso  ! CHECK: omp.target
148*8fe11a26SSergio Afonso  ! CHECK-SAME: host_eval({{.*}})
149*8fe11a26SSergio Afonso  !$omp target
150*8fe11a26SSergio Afonso  !$omp teams distribute parallel do
151*8fe11a26SSergio Afonso  do i = 1, 10
152*8fe11a26SSergio Afonso    call foo(i)
153*8fe11a26SSergio Afonso  end do
154*8fe11a26SSergio Afonso  !$omp end teams distribute parallel do
155*8fe11a26SSergio Afonso  !$omp end target
156*8fe11a26SSergio Afonsoend subroutine teams_distribute_parallel_do_spmd
157*8fe11a26SSergio Afonso
158*8fe11a26SSergio Afonso! CHECK-LABEL: func.func @_QPteams_distribute_parallel_do_simd_spmd() {
159*8fe11a26SSergio Afonsosubroutine teams_distribute_parallel_do_simd_spmd()
160*8fe11a26SSergio Afonso  ! CHECK: omp.target
161*8fe11a26SSergio Afonso  ! CHECK-SAME: host_eval({{.*}})
162*8fe11a26SSergio Afonso  !$omp target
163*8fe11a26SSergio Afonso  !$omp teams distribute parallel do simd
164*8fe11a26SSergio Afonso  do i = 1, 10
165*8fe11a26SSergio Afonso    call foo(i)
166*8fe11a26SSergio Afonso  end do
167*8fe11a26SSergio Afonso  !$omp end teams distribute parallel do simd
168*8fe11a26SSergio Afonso  !$omp end target
169*8fe11a26SSergio Afonsoend subroutine teams_distribute_parallel_do_simd_spmd
170*8fe11a26SSergio Afonso
171*8fe11a26SSergio Afonso! CHECK-LABEL: func.func @_QPtarget_teams_distribute_parallel_do_spmd() {
172*8fe11a26SSergio Afonsosubroutine target_teams_distribute_parallel_do_spmd()
173*8fe11a26SSergio Afonso  ! CHECK: omp.target
174*8fe11a26SSergio Afonso  ! CHECK-SAME: host_eval({{.*}})
175*8fe11a26SSergio Afonso  !$omp target teams distribute parallel do
176*8fe11a26SSergio Afonso  do i = 1, 10
177*8fe11a26SSergio Afonso    call foo(i)
178*8fe11a26SSergio Afonso  end do
179*8fe11a26SSergio Afonso  !$omp end target teams distribute parallel do
180*8fe11a26SSergio Afonsoend subroutine target_teams_distribute_parallel_do_spmd
181*8fe11a26SSergio Afonso
182*8fe11a26SSergio Afonso! CHECK-LABEL: func.func @_QPtarget_teams_distribute_parallel_do_simd_spmd() {
183*8fe11a26SSergio Afonsosubroutine target_teams_distribute_parallel_do_simd_spmd()
184*8fe11a26SSergio Afonso  ! CHECK: omp.target
185*8fe11a26SSergio Afonso  ! CHECK-SAME: host_eval({{.*}})
186*8fe11a26SSergio Afonso  !$omp target teams distribute parallel do simd
187*8fe11a26SSergio Afonso  do i = 1, 10
188*8fe11a26SSergio Afonso    call foo(i)
189*8fe11a26SSergio Afonso  end do
190*8fe11a26SSergio Afonso  !$omp end target teams distribute parallel do simd
191*8fe11a26SSergio Afonsoend subroutine target_teams_distribute_parallel_do_simd_spmd
192