! 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({{.*}}) { ! 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({{.*}}) { ! 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