[llvm-branch-commits] [flang] [flang][OpenMP] Map simple `do concurrent` loops to OpenMP host constructs (PR #127633)
Kareem Ergawy via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Mar 10 22:06:57 PDT 2025
================
@@ -0,0 +1,45 @@
+! Tests that if `do concurrent` is not perfectly nested in its parent loop, that
+! we skip converting the not-perfectly nested `do concurrent` loop.
+
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -fdo-concurrent-to-openmp=host %s -o - \
+! RUN: | FileCheck %s
+
+program main
+ integer, parameter :: n = 10
+ integer, parameter :: m = 20
+ integer, parameter :: l = 30
+ integer x;
+ integer :: a(n, m, l)
+
+ do concurrent(i=1:n)
+ x = 10
+ do concurrent(j=1:m, k=1:l)
+ a(i,j,k) = i * j + k
+ end do
+ end do
+end
+
+! CHECK: %[[ORIG_K_ALLOC:.*]] = fir.alloca i32 {bindc_name = "k"}
+! CHECK: %[[ORIG_K_DECL:.*]]:2 = hlfir.declare %[[ORIG_K_ALLOC]]
+
+! CHECK: %[[ORIG_J_ALLOC:.*]] = fir.alloca i32 {bindc_name = "j"}
+! CHECK: %[[ORIG_J_DECL:.*]]:2 = hlfir.declare %[[ORIG_J_ALLOC]]
+
+! CHECK: omp.parallel {
+
+! CHECK: omp.wsloop {
+! CHECK: omp.loop_nest ({{[^[:space:]]+}}) {{.*}} {
+! CHECK: fir.do_loop %[[J_IV:.*]] = {{.*}} {
----------------
ergawy wrote:
I would like to leave it this way to give a better idea of how the whole nested construct was translated.
https://github.com/llvm/llvm-project/pull/127633
More information about the llvm-branch-commits
mailing list