blob: 849900993319afdf2c441f94d818858efd27b6dc [file] [log] [blame] [edit]
! This test checks lowering of SIMD constructs with ordered regions.
! RUN: bbc -fopenmp -emit-hlfir %s -o - | FileCheck %s
! RUN: %flang_fc1 -fopenmp -emit-hlfir %s -o - | FileCheck %s
! Test that ordered regions inside SIMD have par_level_simd attribute
subroutine ordered_simd(n)
integer :: n, a(n), b(n), c(n), i
! CHECK-LABEL: func @_QPordered_simd
! CHECK: omp.simd linear({{.*}}) private({{.*}}) {
! CHECK: omp.loop_nest (%{{.*}}) : i32 = (%{{.*}}) to (%{{.*}}) inclusive step (%{{.*}}) {
! CHECK: omp.ordered.region par_level_simd {
! CHECK: omp.terminator
! CHECK: }
! CHECK: omp.yield
! CHECK: }
! CHECK: } {linear_var_types = [i32]}
!$omp simd
do i = 1, n
a(i) = b(i) * 10
!$omp ordered simd
print *, a(i)
!$omp end ordered
c(i) = a(i) * 2
end do
!$omp end simd
end subroutine
! Test that ordered regions inside DO SIMD have par_level_simd attribute
subroutine ws_ordered_simd(n)
integer :: n, a(n), b(n), c(n), i
! CHECK-LABEL: func @_QPws_ordered_simd
! CHECK: omp.wsloop ordered(0) {
! CHECK: omp.simd linear({{.*}}) private({{.*}}) {
! CHECK: omp.loop_nest (%{{.*}}) : i32 = (%{{.*}}) to (%{{.*}}) inclusive step (%{{.*}}) {
! CHECK: omp.ordered.region par_level_simd {
! CHECK: omp.terminator
! CHECK: }
! CHECK: omp.yield
! CHECK: }
! CHECK: } {linear_var_types = [i32], omp.composite}
! CHECK: } {omp.composite}
!$omp do simd ordered
do i = 1, n
a(i) = b(i) * 10
!$omp ordered simd
print *, a(i)
!$omp end ordered
c(i) = a(i) * 2
end do
!$omp end do simd
end subroutine