[AMDGPU] Test codegen'ing True16 additions.
[llvm-project.git] / flang / test / Lower / OpenMP / master.f90
blob7db1be4f005b57133a5f6bdecf1fbd363b2b5f23
1 !RUN: %flang_fc1 -emit-hlfir -fopenmp %s -o - | FileCheck %s
3 !===============================================================================
4 ! parallel construct with function call which has master construct internally
5 !===============================================================================
6 !CHECK-LABEL: func @_QPomp_master
7 subroutine omp_master()
9 !CHECK: omp.master {
10 !$omp master
12 !CHECK: fir.call @_QPmaster() {{.*}}: () -> ()
13 call master()
15 !CHECK: omp.terminator
16 !$omp end master
18 end subroutine omp_master
20 !CHECK-LABEL: func @_QPparallel_function_master
21 subroutine parallel_function_master()
23 !CHECK: omp.parallel {
24 !$omp parallel
26 !CHECK: fir.call @_QPfoo() {{.*}}: () -> ()
27 call foo()
29 !CHECK: omp.terminator
30 !$omp end parallel
32 end subroutine parallel_function_master
34 !===============================================================================
35 ! master construct nested inside parallel construct
36 !===============================================================================
38 !CHECK-LABEL: func @_QPomp_parallel_master
39 subroutine omp_parallel_master()
41 !CHECK: omp.parallel {
42 !$omp parallel
43 !CHECK: fir.call @_QPparallel() {{.*}}: () -> ()
44 call parallel()
46 !CHECK: omp.master {
47 !$omp master
49 !CHECK: fir.call @_QPparallel_master() {{.*}}: () -> ()
50 call parallel_master()
52 !CHECK: omp.terminator
53 !$omp end master
55 !CHECK: omp.terminator
56 !$omp end parallel
58 end subroutine omp_parallel_master
60 !===============================================================================
61 ! master construct nested inside parallel construct with conditional flow
62 !===============================================================================
64 !CHECK-LABEL: func @_QPomp_master_parallel
65 subroutine omp_master_parallel()
66 integer :: alpha, beta, gama
67 alpha = 4
68 beta = 5
69 gama = 6
71 !CHECK: omp.master {
72 !$omp master
74 !CHECK: %{{.*}} = fir.load %{{.*}}
75 !CHECK: %{{.*}} = fir.load %{{.*}}
76 !CHECK: %[[RESULT:.*]] = arith.cmpi sge, %{{.*}}, %{{.*}}
77 !CHECK: fir.if %[[RESULT]] {
78 if (alpha .ge. gama) then
80 !CHECK: omp.parallel {
81 !$omp parallel
82 !CHECK: fir.call @_QPinside_if_parallel() {{.*}}: () -> ()
83 call inside_if_parallel()
85 !CHECK: omp.terminator
86 !$omp end parallel
88 !CHECK: %{{.*}} = fir.load %{{.*}}
89 !CHECK: %{{.*}} = fir.load %{{.*}}
90 !CHECK: %{{.*}} = arith.addi %{{.*}}, %{{.*}}
91 !CHECK: hlfir.assign %{{.*}} to %{{.*}}#0 : i32, !fir.ref<i32>
92 beta = alpha + gama
93 end if
94 !CHECK: else
96 !CHECK: omp.terminator
97 !$omp end master
99 end subroutine omp_master_parallel