[llvm-branch-commits] [flang] [mlir] [mlir][OpenMP] Rename omp.taskloop to omp.taskloop.wrapper (PR #188071)
Tom Eccles via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Mar 25 04:39:20 PDT 2026
https://github.com/tblah updated https://github.com/llvm/llvm-project/pull/188071
>From faec719716ef1da5dbd29fb7a295cd4891be8885 Mon Sep 17 00:00:00 2001
From: Tom Eccles <tom.eccles at arm.com>
Date: Mon, 23 Mar 2026 11:10:30 +0000
Subject: [PATCH 1/4] [mlir][OpenMP] Rename TaskloopOp/omp.taskloop to
TaskloopWrapperOp/omp.taskloop.wrapper
Rename the loop wrapper operation to better distinguish it from the
context op (omp.taskloop.context), which handles outlining and runtime calls.
The new name makes the role of each operation clearer at a glance.
RFC: https://discourse.llvm.org/t/rfc-openmp-alloca-placement-for-openmp-loop-wrappers/89512/7
Patch 3/3
Assisted-by: Copilot, Claude Sonnet 4.6
---
.../lib/Lower/OpenMP/DataSharingProcessor.cpp | 2 +-
flang/lib/Lower/OpenMP/OpenMP.cpp | 6 +-
.../OpenMP/taskloop-alloca-placement.f90 | 2 +-
flang/test/Lower/OpenMP/if-clause.f90 | 6 +-
flang/test/Lower/OpenMP/implicit-dsa.f90 | 10 +--
flang/test/Lower/OpenMP/masked_taskloop.f90 | 2 +-
.../Lower/OpenMP/parallel-masked-taskloop.f90 | 2 +-
flang/test/Lower/OpenMP/taskloop-cancel.f90 | 2 +-
flang/test/Lower/OpenMP/taskloop-collapse.f90 | 2 +-
.../test/Lower/OpenMP/taskloop-grainsize.f90 | 4 +-
.../Lower/OpenMP/taskloop-inreduction.f90 | 2 +-
flang/test/Lower/OpenMP/taskloop-numtasks.f90 | 4 +-
.../test/Lower/OpenMP/taskloop-reduction.f90 | 2 +-
flang/test/Lower/OpenMP/taskloop.f90 | 20 ++---
mlir/docs/Dialects/OpenMPDialect/_index.md | 6 +-
.../mlir/Dialect/OpenMP/OpenMPDialect.h | 2 +-
mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td | 18 ++---
mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp | 29 ++++----
.../OpenMP/OpenMPToLLVMIRTranslation.cpp | 25 ++++---
.../OpenMPToLLVM/convert-to-llvmir.mlir | 4 +-
mlir/test/Dialect/OpenMP/invalid.mlir | 42 +++++------
mlir/test/Dialect/OpenMP/ops.mlir | 74 +++++++++----------
.../Target/LLVMIR/openmp-taskloop-cancel.mlir | 18 ++---
.../openmp-taskloop-cancellation-point.mlir | 12 +--
.../LLVMIR/openmp-taskloop-collapse.mlir | 12 +--
.../openmp-taskloop-context-alloca.mlir | 6 +-
.../Target/LLVMIR/openmp-taskloop-final.mlir | 2 +-
.../LLVMIR/openmp-taskloop-grainsize.mlir | 2 +-
.../Target/LLVMIR/openmp-taskloop-if.mlir | 2 +-
.../LLVMIR/openmp-taskloop-mergeable.mlir | 2 +-
.../openmp-taskloop-no-context-struct.mlir | 6 +-
.../LLVMIR/openmp-taskloop-nogroup.mlir | 2 +-
.../LLVMIR/openmp-taskloop-num_tasks.mlir | 2 +-
.../LLVMIR/openmp-taskloop-priority.mlir | 2 +-
.../Target/LLVMIR/openmp-taskloop-untied.mlir | 4 +-
mlir/test/Target/LLVMIR/openmp-taskloop.mlir | 6 +-
mlir/test/Target/LLVMIR/openmp-todo.mlir | 6 +-
37 files changed, 176 insertions(+), 174 deletions(-)
diff --git a/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp b/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
index 30ac20efa81a8..9dd299d1cdf7e 100644
--- a/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
+++ b/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
@@ -345,7 +345,7 @@ void DataSharingProcessor::insertLastPrivateCompare(mlir::Operation *op) {
return;
if (mlir::isa<mlir::omp::WsloopOp>(op) || mlir::isa<mlir::omp::SimdOp>(op) ||
- mlir::isa<mlir::omp::TaskloopOp>(op)) {
+ mlir::isa<mlir::omp::TaskloopWrapperOp>(op)) {
mlir::omp::LoopRelatedClauseOps result;
llvm::SmallVector<const semantics::Symbol *> iv;
collectLoopRelatedInfo(converter, converter.getCurrentLocation(), eval,
diff --git a/flang/lib/Lower/OpenMP/OpenMP.cpp b/flang/lib/Lower/OpenMP/OpenMP.cpp
index 5f9d00ea3de4c..5708929e12841 100644
--- a/flang/lib/Lower/OpenMP/OpenMP.cpp
+++ b/flang/lib/Lower/OpenMP/OpenMP.cpp
@@ -3285,8 +3285,8 @@ static mlir::omp::TaskloopContextOp genStandaloneTaskloop(
mlir::OpBuilder::InsertionGuard guard(firOpBuilder);
firOpBuilder.setInsertionPointToStart(&taskLoopContextOp.getRegion().front());
- mlir::omp::TaskloopOperands wrapperClauseOps;
- auto taskLoopOp = genWrapperOp<mlir::omp::TaskloopOp>(
+ mlir::omp::TaskloopWrapperOperands wrapperClauseOps;
+ auto taskLoopOp = genWrapperOp<mlir::omp::TaskloopWrapperOp>(
converter, loc, wrapperClauseOps, taskloopArgs);
genLoopNestOp(converter, symTable, semaCtx, eval, loc, queue, item,
@@ -3587,7 +3587,7 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
return wsloopOp;
}
-static mlir::omp::TaskloopOp genCompositeTaskloopSimd(
+static mlir::omp::TaskloopWrapperOp genCompositeTaskloopSimd(
lower::AbstractConverter &converter, lower::SymMap &symTable,
lower::StatementContext &stmtCtx, semantics::SemanticsContext &semaCtx,
lower::pft::Evaluation &eval, mlir::Location loc,
diff --git a/flang/test/Integration/OpenMP/taskloop-alloca-placement.f90 b/flang/test/Integration/OpenMP/taskloop-alloca-placement.f90
index f8ccc3f02edf1..b46cbc8a2fa4f 100644
--- a/flang/test/Integration/OpenMP/taskloop-alloca-placement.f90
+++ b/flang/test/Integration/OpenMP/taskloop-alloca-placement.f90
@@ -20,7 +20,7 @@ subroutine test_taskloop(lb,ub,step,a)
!$omp taskloop shared(a)
! CHECK: omp.taskloop.context private({{.*}}) {
! CHECK: llvm.alloca
-! CHECK: omp.taskloop {
+! CHECK: omp.taskloop.wrapper {
do i = lb,ub,step
! CHECK-NOT: llvm.alloca
a(i) = i
diff --git a/flang/test/Lower/OpenMP/if-clause.f90 b/flang/test/Lower/OpenMP/if-clause.f90
index 46ce7b31d51b9..8947f1cf6d032 100644
--- a/flang/test/Lower/OpenMP/if-clause.f90
+++ b/flang/test/Lower/OpenMP/if-clause.f90
@@ -1586,7 +1586,7 @@ program main
! CHECK: omp.taskloop.context
! CHECK-NOT: if({{.*}})
- ! CHECK: omp.taskloop
+ ! CHECK: omp.taskloop.wrapper
!$omp taskloop
do i = 1, 10
end do
@@ -1594,7 +1594,7 @@ program main
! CHECK: omp.taskloop.context
! CHECK-SAME: if({{.*}})
- ! CHECK: omp.taskloop
+ ! CHECK: omp.taskloop.wrapper
!$omp taskloop if(.true.)
do i = 1, 10
end do
@@ -1602,7 +1602,7 @@ program main
! CHECK: omp.taskloop.context
! CHECK-SAME: if({{.*}})
- ! CHECK: omp.taskloop
+ ! CHECK: omp.taskloop.wrapper
!$omp taskloop if(taskloop: .true.)
do i = 1, 10
end do
diff --git a/flang/test/Lower/OpenMP/implicit-dsa.f90 b/flang/test/Lower/OpenMP/implicit-dsa.f90
index 1a3fb33c8e340..b7bdcd6c70fd8 100644
--- a/flang/test/Lower/OpenMP/implicit-dsa.f90
+++ b/flang/test/Lower/OpenMP/implicit-dsa.f90
@@ -354,7 +354,7 @@ subroutine implicit_dsa_taskloop_test1
integer :: x, y, z
! CHECK: omp.taskloop.context private(
! CHECK-SAME: @[[TASKLOOP_TEST1_Y_PRIVATE]] %[[DECL_Y]]#0 -> %[[ARG0:.*]], @[[TASKLOOP_TEST1_X_FIRSTPRIVATE]] %[[DECL_X]]#0 -> %[[ARG1:.*]], @[[TASKLOOP_TEST1_I_PRIVATE]] %[[DECL_I]]#0 -> %[[ARG2:.*]] : !fir.ref<i32>, !fir.ref<i32>, !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
! CHECK: omp.loop_nest (%{{.*}}) : i32 = (%{{.*}}) to (%{{.*}}) inclusive step (%{{.*}}) {
!$omp taskloop private(y) shared(z)
do i = 1, 100
@@ -367,7 +367,7 @@ subroutine implicit_dsa_taskloop_test1
!$omp end taskloop
! CHECK: omp.taskloop.context private(@[[TASKLOOP_TEST1_I_PRIVATE]] %[[DECL_I]]#0 -> %[[ARG0:.*]] : !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop default(shared)
do i = 1, 100
! CHECK: %[[LOAD_Y:.*]] = fir.load %[[DECL_Y]]#0 : !fir.ref<i32>
@@ -390,7 +390,7 @@ subroutine implicit_dsa_taskloop_test2
! CHECK: omp.parallel {
!$omp parallel
! CHECK: omp.taskloop.context private(@[[TASKLOOP_TEST2_I_PRIVATE]] %[[I_DECL]]#0 -> %[[ARG0:.*]] : !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop
do i = 1, 100
! CHECK: hlfir.assign %{{.*}} to %[[X_DECL]]#0 : i32, !fir.ref<i32>
@@ -399,7 +399,7 @@ subroutine implicit_dsa_taskloop_test2
!$omp end taskloop
! CHECK: omp.taskloop.context private(@[[TASKLOOP_TEST2_X_PRIVATE]] %[[X_DECL]]#0 -> %[[ARG0]], @[[TASKLOOP_TEST2_I_PRIVATE]] %[[I_DECL]]#0 -> %[[ARG1:.*]] : !fir.ref<i32>, !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop private(x)
do i = 1, 10
! CHECK: %[[DECL_PRIV_X:.*]]:2 = hlfir.declare %[[ARG0]] {uniq_name = "_QFimplicit_dsa_taskloop_test2Ex"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
@@ -429,7 +429,7 @@ subroutine implicit_dsa_taskloop_test3
! CHECK: %[[X_PRIV_VAL:.*]]:2 = hlfir.declare %[[ARG0]] {uniq_name = "_QFimplicit_dsa_taskloop_test3Ex"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
!$omp parallel firstprivate(x)
! CHECK: omp.taskloop.context private(@[[TASKLOOP_TEST3_X_FIRSTPRIVATE]] %[[X_PRIV_VAL]]#0 -> %[[ARG1:.*]], @[[TASKLOOP_TEST3_I_PRIVATE]] %[[I_DECL]]#0 -> %[[ARG2:.*]] : !fir.ref<i32>, !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop
! CHECK: %[[X_VAL:.*]]:2 = hlfir.declare %[[ARG1]] {uniq_name = "_QFimplicit_dsa_taskloop_test3Ex"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
do i = 1, 100
diff --git a/flang/test/Lower/OpenMP/masked_taskloop.f90 b/flang/test/Lower/OpenMP/masked_taskloop.f90
index 1285d5c4cb758..1ab87ee5a72f7 100644
--- a/flang/test/Lower/OpenMP/masked_taskloop.f90
+++ b/flang/test/Lower/OpenMP/masked_taskloop.f90
@@ -24,7 +24,7 @@
! CHECK: %[[C1_I32_0:.*]] = arith.constant 1 : i32
! CHECK: omp.taskloop.context private(
! CHECK-SAME: @[[J_FIRSTPRIVATE]] %[[DECL_J]]#0 -> %[[ARG0:.*]], @[[I_PRIVATE]] %[[DECL_I]]#0 -> %[[ARG1:.*]] : !fir.ref<i32>, !fir.ref<i32>) {
-! CHECK: omp.taskloop {
+! CHECK: omp.taskloop.wrapper {
! CHECK: omp.loop_nest (%[[IV:.*]]) : i32 = (%[[C1_I32]]) to (%[[C10_I32]]) inclusive step (%[[C1_I32_0]]) {
! CHECK: %[[VAL1:.*]]:2 = hlfir.declare %[[ARG0]] {uniq_name = "_QFtest_masked_taskloopEj"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
! CHECK: %[[VAL2:.*]]:2 = hlfir.declare %[[ARG1]] {uniq_name = "_QFtest_masked_taskloopEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
diff --git a/flang/test/Lower/OpenMP/parallel-masked-taskloop.f90 b/flang/test/Lower/OpenMP/parallel-masked-taskloop.f90
index dc94513e2f83b..233d6acb77ea7 100644
--- a/flang/test/Lower/OpenMP/parallel-masked-taskloop.f90
+++ b/flang/test/Lower/OpenMP/parallel-masked-taskloop.f90
@@ -17,7 +17,7 @@
! CHECK: %[[C10_I32:.*]] = arith.constant 10 : i32
! CHECK: %[[C1_I32_0:.*]] = arith.constant 1 : i32
! CHECK: omp.taskloop.context private(@[[I_PRIVATE]] %[[DECL_I]]#0 -> %[[ARG0:.*]] : !fir.ref<i32>) {
-! CHECK: omp.taskloop {
+! CHECK: omp.taskloop.wrapper {
! CHECK: omp.loop_nest (%[[ARG1:.*]]) : i32 = (%[[C1_I32]]) to (%[[C10_I32]]) inclusive step (%c1_i32_0) {
! CHECK: %[[VAL1:.*]]:2 = hlfir.declare %[[ARG0]] {uniq_name = "_QFtest_parallel_master_taskloopEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
! CHECK: hlfir.assign %[[ARG1]] to %[[VAL1]]#0 : i32, !fir.ref<i32>
diff --git a/flang/test/Lower/OpenMP/taskloop-cancel.f90 b/flang/test/Lower/OpenMP/taskloop-cancel.f90
index 4109d498862b7..3977648bf8e9c 100644
--- a/flang/test/Lower/OpenMP/taskloop-cancel.f90
+++ b/flang/test/Lower/OpenMP/taskloop-cancel.f90
@@ -13,7 +13,7 @@
! CHECK: %[[C10_I32:.*]] = arith.constant 10 : i32
! CHECK: %[[C1_I32_0:.*]] = arith.constant 1 : i32
! CHECK: omp.taskloop.context private(@[[I_PRIVATE]] %2#0 -> %[[ARG0:.*]] : !fir.ref<i32>) {
-! CHECK: omp.taskloop {
+! CHECK: omp.taskloop.wrapper {
! CHECK: omp.loop_nest (%[[ARG1:.*]]) : i32 = (%[[C1_I32]]) to (%[[C10_I32]]) inclusive step (%[[C1_I32_0]]) {
! CHECK: %[[IDX:.*]]:2 = hlfir.declare %[[ARG0]] {uniq_name = "_QFomp_taskloopEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
! CHECK: hlfir.assign %[[ARG1]] to %[[IDX]]#0 : i32, !fir.ref<i32>
diff --git a/flang/test/Lower/OpenMP/taskloop-collapse.f90 b/flang/test/Lower/OpenMP/taskloop-collapse.f90
index a73f351b6d19d..1f3eb28cc70ac 100644
--- a/flang/test/Lower/OpenMP/taskloop-collapse.f90
+++ b/flang/test/Lower/OpenMP/taskloop-collapse.f90
@@ -23,7 +23,7 @@ subroutine test()
!$omp taskloop collapse(2)
! CHECK: omp.taskloop.context
! CHECK-SAME: private(@_QFtestEsum_firstprivate_i32 %[[DECLARE_SUM]]#0 -> %arg0, @_QFtestEi_private_i32 %[[DECLARE_I]]#0 -> %arg1, @_QFtestEj_private_i32 %[[DECLARE_J]]#0 -> %arg2 : !fir.ref<i32>, !fir.ref<i32>, !fir.ref<i32>)
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
! CHECK-LABEL: omp.loop_nest
! CHECK-SAME: (%[[IV1:.*]], %[[IV2:.*]]) : i32 = (%c1_i32, %c1_i32_1) to (%c10_i32, %c5_i32) inclusive step (%c1_i32_0, %c1_i32_2) collapse(2)
do i = 1, 10
diff --git a/flang/test/Lower/OpenMP/taskloop-grainsize.f90 b/flang/test/Lower/OpenMP/taskloop-grainsize.f90
index 6313cf02d084d..20c8934c5986f 100644
--- a/flang/test/Lower/OpenMP/taskloop-grainsize.f90
+++ b/flang/test/Lower/OpenMP/taskloop-grainsize.f90
@@ -29,7 +29,7 @@ subroutine test_grainsize
integer :: i, x
! CHECK: omp.taskloop.context grainsize(%[[GRAINSIZE]]: i32)
! CHECK-SAME: private(@[[X_FIRSTPRIVATE]] %[[DECL_X]]#0 -> %[[ARG0:.*]], @[[I_PRIVATE]] %[[DECL_I]]#0 -> %[[ARG1:.*]] : !fir.ref<i32>, !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
! CHECK: omp.loop_nest (%[[ARG2:.*]]) : i32 = (%{{.*}}) to (%{{.*}}) inclusive step (%{{.*}}) {
!$omp taskloop grainsize(10)
do i = 1, 1000
@@ -43,7 +43,7 @@ subroutine test_grainsize_strict
integer :: i, x
! CHECK: %[[GRAINSIZE:.*]] = arith.constant 10 : i32
! CHECK: omp.taskloop.context grainsize(strict, %[[GRAINSIZE]]: i32)
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop grainsize(strict:10)
do i = 1, 1000
!CHECK: arith.addi
diff --git a/flang/test/Lower/OpenMP/taskloop-inreduction.f90 b/flang/test/Lower/OpenMP/taskloop-inreduction.f90
index ffe62c4d4f3d2..d4f0b9582fb97 100644
--- a/flang/test/Lower/OpenMP/taskloop-inreduction.f90
+++ b/flang/test/Lower/OpenMP/taskloop-inreduction.f90
@@ -27,7 +27,7 @@ subroutine omp_taskloop_inreduction()
x = 0
! CHECK: omp.taskloop.context in_reduction(@[[ADD_RED_I32]]
! CHECK-SAME: %[[DECL_X]]#0 -> %[[ARG0:.*]] : !fir.ref<i32>) private(@[[PRIVATE_I]] %[[DECL_I]]#0 -> %[[ARG1:.*]] : !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
! CHECK: %[[VAL_ARG1:.*]]:2 = hlfir.declare %[[ARG0]]
! CHECK-SAME: {uniq_name = "_QFomp_taskloop_inreductionEx"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
!$omp taskloop in_reduction(+:x)
diff --git a/flang/test/Lower/OpenMP/taskloop-numtasks.f90 b/flang/test/Lower/OpenMP/taskloop-numtasks.f90
index 6677099ee6963..1c6edecfcb769 100644
--- a/flang/test/Lower/OpenMP/taskloop-numtasks.f90
+++ b/flang/test/Lower/OpenMP/taskloop-numtasks.f90
@@ -29,7 +29,7 @@ subroutine test_num_tasks
integer :: i, x
! CHECK: omp.taskloop.context num_tasks(%[[VAL_NUMTASKS]]: i32)
! CHECK-SAME: private(@[[X_FIRSTPRIVATE]] %[[DECL_X]]#0 -> %[[ARG0:.*]], @[[I_PRIVATE]] %[[DECL_I]]#0 -> %[[ARG1:.*]] : !fir.ref<i32>, !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
! CHECK: omp.loop_nest (%[[ARG2:.*]]) : i32 = (%{{.*}}) to (%{{.*}}) inclusive step (%{{.*}}) {
!$omp taskloop num_tasks(10)
do i = 1, 1000
@@ -43,7 +43,7 @@ subroutine test_num_tasks_strict
integer :: x, i
! CHECK: %[[NUM_TASKS:.*]] = arith.constant 10 : i32
! CHECK: omp.taskloop.context num_tasks(strict, %[[NUM_TASKS]]: i32)
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop num_tasks(strict:10)
do i = 1, 100
!CHECK: arith.addi
diff --git a/flang/test/Lower/OpenMP/taskloop-reduction.f90 b/flang/test/Lower/OpenMP/taskloop-reduction.f90
index 8b7b97fe13cc6..27c5e622ae28e 100644
--- a/flang/test/Lower/OpenMP/taskloop-reduction.f90
+++ b/flang/test/Lower/OpenMP/taskloop-reduction.f90
@@ -27,7 +27,7 @@ subroutine omp_taskloop_reduction()
x = 0
! CHECK: omp.taskloop.context private(@[[PRIVATE_I]]
! CHECK-SAME: %[[DECL_I]]#0 -> %[[ARG0:.*]] : !fir.ref<i32>) reduction(@[[ADD_RED_I32]] %[[DECL_X]]#0 -> %[[ARG1:.*]] : !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
! CHECK: %[[VAL_ARG1:.*]]:2 = hlfir.declare %[[ARG1]]
!$omp taskloop reduction(+:x)
do i = 1, 100
diff --git a/flang/test/Lower/OpenMP/taskloop.f90 b/flang/test/Lower/OpenMP/taskloop.f90
index 8a4c5a8e2a0a4..a8a9dcfa210cd 100644
--- a/flang/test/Lower/OpenMP/taskloop.f90
+++ b/flang/test/Lower/OpenMP/taskloop.f90
@@ -55,7 +55,7 @@
! CHECK: %[[C10_I32:.*]] = arith.constant 10 : i32
! CHECK: %[[C1_I32_0:.*]] = arith.constant 1 : i32
! CHECK: omp.taskloop.context private(@[[RES_FIRSTPRIVATE]] %[[RES_VAL]]#0 -> %[[PRIV_RES:.*]], @[[I_PRIVATE]] %[[I_VAL]]#0 -> %[[PRIV_I:.*]] : !fir.ref<i32>, !fir.ref<i32>) {
-! CHECK: omp.taskloop {
+! CHECK: omp.taskloop.wrapper {
! CHECK: omp.loop_nest (%[[ARG2:.*]]) : i32 = (%[[C1_I32]]) to (%[[C10_I32]]) inclusive step (%[[C1_I32_0]]) {
! CHECK: %[[RES_DECL:.*]]:2 = hlfir.declare %[[PRIV_RES]] {uniq_name = "_QFomp_taskloopEres"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
! CHECK: %[[I_DECL:.*]]:2 = hlfir.declare %[[PRIV_I]] {uniq_name = "_QFomp_taskloopEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
@@ -90,7 +90,7 @@ end subroutine omp_taskloop
subroutine omp_taskloop_private
integer :: res, i
! CHECK: omp.taskloop.context private(@[[RES_PRIVATE_TEST2]] %[[DECL_RES]]#0 -> %[[ARG0:.*]], @[[I_PRIVATE_TEST2]] %[[DECL_I]]#0 -> %[[ARG1:.*]] : !fir.ref<i32>, !fir.ref<i32>) {
-! CHECK: omp.taskloop {
+! CHECK: omp.taskloop.wrapper {
! CHECK: omp.loop_nest (%{{.*}}) : i32 = (%{{.*}}) to (%{{.*}}) inclusive step (%{{.*}}) {
! CHECK: %[[VAL1:.*]]:2 = hlfir.declare %[[ARG0]] {uniq_name = "_QFomp_taskloop_privateEres"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
!$omp taskloop private(res)
@@ -120,7 +120,7 @@ subroutine taskloop_allocate()
integer :: x
! CHECK: omp.taskloop.context allocate(%{{.*}} : i64 -> %[[DECL_X]]#0 : !fir.ref<i32>)
! CHECK-SAME: private(@[[X_PRIVATE_TEST_ALLOCATE]] %[[DECL_X]]#0 -> %[[ARG0:.*]], @[[I_PRIVATE_TEST_ALLOCATE]] %[[DECL_I]]#0 -> %[[ARG1:.*]] : !fir.ref<i32>, !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop allocate(omp_high_bw_mem_alloc: x) private(x)
do i = 1, 100
! CHECK: arith.addi
@@ -139,7 +139,7 @@ end subroutine taskloop_allocate
! CHECK: %[[DECL_I:.*]]:2 = hlfir.declare %[[ALLOCA_I]] {uniq_name = "_QFtaskloop_finalEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
subroutine taskloop_final()
! CHECK: omp.taskloop.context final(%true) private(@[[I_PRIVATE_FINAL]] %[[DECL_I]]#0 -> %[[ARG0:.*]] : !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop final(.true.)
do i = 1, 100
! CHECK: fir.call @_QPfoo()
@@ -161,7 +161,7 @@ subroutine taskloop_final()
subroutine omp_taskloop_if(bar)
logical, intent(inout) :: bar
!CHECK: omp.taskloop.context if(%[[VAL_BAR]]) private(@[[I_PRIVATE_IF_TEST1]] %[[DECL_I]]#0 -> %[[ARG1:.*]] : !fir.ref<i32>) {
- !CHECK: omp.taskloop {
+ !CHECK: omp.taskloop.wrapper {
!$omp taskloop if(bar)
do i = 1, 10
call foo()
@@ -176,7 +176,7 @@ end subroutine omp_taskloop_if
! CHECK-LABEL: func.func @_QPtest_mergeable
subroutine test_mergeable
! CHECK: omp.taskloop.context mergeable
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop mergeable
do i = 1, 10
end do
@@ -193,7 +193,7 @@ end subroutine test_mergeable
subroutine test_priority(n)
integer, intent(inout) :: n
! CHECK: omp.taskloop.context priority(%[[LOAD_VAL]] : i32)
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop priority(n)
do i = 1, 10
end do
@@ -207,7 +207,7 @@ end subroutine test_priority
! CHECK-LABEL: func.func @_QPomp_taskloop_untied
subroutine omp_taskloop_untied()
! CHECK: omp.taskloop.context untied
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop untied
do i = 1, 10
call foo()
@@ -221,7 +221,7 @@ subroutine omp_taskloop_untied()
subroutine omp_taskloop_nogroup()
! CHECK: omp.taskloop.context nogroup
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop nogroup
do i = 1, 10
call foo()
@@ -242,7 +242,7 @@ subroutine omp_taskloop_lastprivate()
integer x
x = 0
! CHECK: omp.taskloop.context private(@[[LAST_PRIVATE_X]] %[[DECL_X]]#0 -> %[[ARG0]], @[[LAST_PRIVATE_I]] %[[DECL_I]]#0 -> %[[ARG1]] : !fir.ref<i32>, !fir.ref<i32>) {
- ! CHECK: omp.taskloop {
+ ! CHECK: omp.taskloop.wrapper {
!$omp taskloop lastprivate(x)
do i = 1, 100
! CHECK: %[[DECL_ARG0:.*]]:2 = hlfir.declare %[[ARG0]] {uniq_name = "_QFomp_taskloop_lastprivateEx"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
diff --git a/mlir/docs/Dialects/OpenMPDialect/_index.md b/mlir/docs/Dialects/OpenMPDialect/_index.md
index 1df80fac2a684..534a7567212b1 100644
--- a/mlir/docs/Dialects/OpenMPDialect/_index.md
+++ b/mlir/docs/Dialects/OpenMPDialect/_index.md
@@ -30,8 +30,8 @@ words separated by underscores.
If the operation corresponds to a directive, clause or other kind of definition
in the OpenMP specification, it must use the same name split into words in the
same way. For example, the `target data` directive would become `TargetDataOp` /
-`omp.target_data`, whereas `taskloop` would become `TaskloopOp` /
-`omp.taskloop`.
+`omp.target_data`, whereas `taskloop` would become `TaskloopWrapperOp` /
+`omp.taskloop.wrapper`.
Operations intended to carry extra information for another particular operation
or clause must be named after that other operation or clause, followed by the
@@ -391,7 +391,7 @@ wrapper or `omp.loop_nest` operation.
This approach splits the representation for a loop nest and the loop-associated
constructs that specify how its iterations are executed, possibly across various
SIMD lanes (`omp.simd`), threads (`omp.wsloop`), teams of threads
-(`omp.distribute`) or tasks (`omp.taskloop`). The ability to directly nest
+(`omp.distribute`) or tasks (`omp.taskloop.wrapper`). The ability to directly nest
multiple loop wrappers to impact the execution of a single loop nest is used to
represent composite constructs in a modular way.
diff --git a/mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.h b/mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.h
index 8b32dcdaf47a8..32afd640eef0d 100644
--- a/mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.h
+++ b/mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.h
@@ -40,7 +40,7 @@
/// Operations implementing LoopWrapperInterface.
#define OMP_LOOP_WRAPPER_OPS \
mlir::omp::WorkshareLoopWrapperOp, mlir::omp::LoopOp, mlir::omp::WsloopOp, \
- mlir::omp::SimdOp, mlir::omp::DistributeOp, mlir::omp::TaskloopOp
+ mlir::omp::SimdOp, mlir::omp::DistributeOp, mlir::omp::TaskloopWrapperOp
/// Operations implementing OutlineableOpenMPOpInterface.
#define OMP_OUTLINEABLE_OPS \
diff --git a/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td b/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
index a4f09f883e2f1..7aaa0dd96835c 100644
--- a/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
+++ b/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
@@ -665,7 +665,7 @@ def LoopNestOp : OpenMP_Op<"loop_nest", traits = [
loop operations intended to serve as a stopgap solution until the long-term
representation of canonical loops is defined. Specifically, this operation
is intended to serve as a unique source for loop information during the
- transition to making `omp.distribute`, `omp.simd`, `omp.taskloop` and
+ transition to making `omp.distribute`, `omp.simd`, `omp.taskloop.wrapper` and
`omp.wsloop` wrapper operations. It is not intended to help with the
addition of support for loop transformations, non-rectangular loops and
non-perfectly nested loops.
@@ -990,7 +990,7 @@ def TaskloopContextOp : OpenMP_Op<"taskloop.context", traits = [
associated loops will be executed in parallel using explicit tasks. The
iterations are distributed across tasks generated by the construct and
scheduled to be executed. The representation of this construct is split
- between omp.taskloop.context and omp.taskloop.
+ between omp.taskloop.context and omp.taskloop.wrapper.
The taskloop construct must be a loop wrapper to support composite
constructs such as taskloop simd. Loop wrappers do not allow intervening
@@ -999,11 +999,11 @@ def TaskloopContextOp : OpenMP_Op<"taskloop.context", traits = [
that we need a way to represent the correct location of allocas for
temporaries created inside of the loop body. In order to achieve this,
the outlining part is represented in this operation: `omp.taskloop.context`,
- and the loop wrapping is represented in `omp.taskloop`. For example:
+ and the loop wrapping is represented in `omp.taskloop.wrapper`. For example:
```
omp.taskloop.context <clauses> {
// task-local stack allocations can go here
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i1, %i2) : index = (%c0, %c0) to (%c10, %c10) step (%c1, %c1) {
%a = load %arrA[%i1, %i2] : memref<?x?xf32>
%b = load %arrB[%i1, %i2] : memref<?x?xf32>
@@ -1058,14 +1058,14 @@ def TaskloopContextOp : OpenMP_Op<"taskloop.context", traits = [
}];
let extraClassDeclaration = [{
- TaskloopOp getLoopOp();
+ TaskloopWrapperOp getLoopOp();
}] # clausesExtraClassDeclaration;
let hasVerifier = 1;
let hasRegionVerifier = 1;
}
-def TaskloopOp : OpenMP_Op<"taskloop", traits = [
+def TaskloopWrapperOp : OpenMP_Op<"taskloop.wrapper", traits = [
DeclareOpInterfaceMethods<ComposableOpInterface>,
DeclareOpInterfaceMethods<LoopWrapperInterface>, NoTerminator,
RecursiveMemoryEffects, SingleBlock
@@ -1079,7 +1079,7 @@ def TaskloopOp : OpenMP_Op<"taskloop", traits = [
associated loops will be executed in parallel using explicit tasks. The
iterations are distributed across tasks generated by the construct and
scheduled to be executed. The representation of this construct is split
- between omp.taskloop.context and omp.taskloop.
+ between omp.taskloop.context and omp.taskloop.wrapper.
This operation is intended to act as the loop wrapper portion of the
taskloop op definition. See the description of omp.taskloop.context for more
@@ -1091,7 +1091,7 @@ def TaskloopOp : OpenMP_Op<"taskloop", traits = [
```
omp.taskloop.context <clauses> {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i1, %i2) : index = (%c0, %c0) to (%c10, %c10) step (%c1, %c1) {
%a = load %arrA[%i1, %i2] : memref<?x?xf32>
%b = load %arrB[%i1, %i2] : memref<?x?xf32>
@@ -1106,7 +1106,7 @@ def TaskloopOp : OpenMP_Op<"taskloop", traits = [
}] # clausesDescription;
let builders = [
- OpBuilder<(ins CArg<"const TaskloopOperands &">:$clauses)>
+ OpBuilder<(ins CArg<"const TaskloopWrapperOperands &">:$clauses)>
];
let assemblyFormat = "$region attr-dict";
diff --git a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
index b6a6a4ed00310..0d5c9f0fddf5a 100644
--- a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+++ b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
@@ -3253,9 +3253,9 @@ void TaskloopContextOp::build(OpBuilder &builder, OperationState &state,
makeArrayAttr(ctx, clauses.reductionSyms), clauses.untied);
}
-TaskloopOp TaskloopContextOp::getLoopOp() {
+TaskloopWrapperOp TaskloopContextOp::getLoopOp() {
for (mlir::Operation &op : getRegion().front())
- if (auto taskloopOp = dyn_cast<TaskloopOp>(&op))
+ if (auto taskloopOp = dyn_cast<TaskloopWrapperOp>(&op))
return taskloopOp;
return nullptr;
}
@@ -3294,10 +3294,11 @@ LogicalResult TaskloopContextOp::verifyRegions() {
if (region.empty())
return emitOpError() << "expected non-empty region";
- auto count = llvm::count_if(
- region.front(), [](mlir::Operation &op) { return isa<TaskloopOp>(op); });
+ auto count = llvm::count_if(region.front(), [](mlir::Operation &op) {
+ return isa<TaskloopWrapperOp>(op);
+ });
if (count != 1)
- return emitOpError() << "expected exactly 1 TaskloopOp directly nested in "
+ return emitOpError() << "expected exactly 1 TaskloopWrapperOp directly nested in "
"the region, but "
<< count << " were found";
@@ -3305,26 +3306,26 @@ LogicalResult TaskloopContextOp::verifyRegions() {
}
//===----------------------------------------------------------------------===//
-// TaskloopOp
+// TaskloopWrapperOp
//===----------------------------------------------------------------------===//
-void TaskloopOp::build(OpBuilder &builder, OperationState &state,
- [[maybe_unused]] const TaskloopOperands &clauses) {
- TaskloopOp::build(builder, state);
+void TaskloopWrapperOp::build(OpBuilder &builder, OperationState &state,
+ const TaskloopWrapperOperands &clauses) {
+ TaskloopWrapperOp::build(builder, state);
}
-TaskloopContextOp TaskloopOp::getContextOp() {
+TaskloopContextOp TaskloopWrapperOp::getContextOp() {
return getOperation()->getParentOfType<TaskloopContextOp>();
}
-LogicalResult TaskloopOp::verify() {
+LogicalResult TaskloopWrapperOp::verify() {
TaskloopContextOp context = getContextOp();
if (!context)
return emitOpError() << "expected to be nested in a taskloop context op";
return success();
}
-LogicalResult TaskloopOp::verifyRegions() {
+LogicalResult TaskloopWrapperOp::verifyRegions() {
if (LoopWrapperInterface nested = getNestedWrapper()) {
if (!isComposite())
return emitError()
@@ -4285,7 +4286,7 @@ LogicalResult CancelOp::verify() {
}
if ((cct == ClauseCancellationConstructType::Taskgroup) &&
(!mlir::isa<omp::TaskOp>(structuralParent) &&
- !mlir::isa<omp::TaskloopOp>(structuralParent->getParentOp()))) {
+ !mlir::isa<omp::TaskloopWrapperOp>(structuralParent->getParentOp()))) {
return emitOpError() << "cancel taskgroup must appear "
<< "inside a task region";
}
@@ -4327,7 +4328,7 @@ LogicalResult CancellationPointOp::verify() {
}
if ((cct == ClauseCancellationConstructType::Taskgroup) &&
(!mlir::isa<omp::TaskOp>(structuralParent) &&
- !mlir::isa<omp::TaskloopOp>(structuralParent->getParentOp()))) {
+ !mlir::isa<omp::TaskloopWrapperOp>(structuralParent->getParentOp()))) {
return emitOpError() << "cancellation point taskgroup must appear "
<< "inside a task region";
}
diff --git a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
index e99277fdeb022..dc71e9c062fce 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
@@ -2841,16 +2841,17 @@ convertOmpTaskOp(omp::TaskOp taskOp, llvm::IRBuilderBase &builder,
/// The correct entry point is convertOmpTaskloopContextOp. This gets called
/// whilst lowering the body of the taskloop context (i.e. the task function)
static LogicalResult
-convertOmpTaskloopOp(omp::TaskloopOp taskloopOp, llvm::IRBuilderBase &builder,
- LLVM::ModuleTranslation &moduleTranslation) {
- mlir::Operation &opInst = *taskloopOp.getOperation();
+convertOmpTaskloopWrapperOp(omp::TaskloopWrapperOp loopWrapperOp,
+ llvm::IRBuilderBase &builder,
+ LLVM::ModuleTranslation &moduleTranslation) {
+ mlir::Operation &opInst = *loopWrapperOp.getOperation();
if (failed(checkImplementationStatus(opInst)))
return failure();
// Recurse into the loop body
- auto continuationBlockOrError =
- convertOmpOpRegions(taskloopOp.getRegion(), "omp.taskloop.region",
- builder, moduleTranslation);
+ auto continuationBlockOrError = convertOmpOpRegions(
+ loopWrapperOp.getRegion(), "omp.taskloop.wrapper.region", builder,
+ moduleTranslation);
if (failed(handleError(continuationBlockOrError, opInst)))
return failure();
@@ -2866,7 +2867,7 @@ convertOmpTaskloopContextOp(omp::TaskloopContextOp contextOp,
LLVM::ModuleTranslation &moduleTranslation) {
using InsertPointTy = llvm::OpenMPIRBuilder::InsertPointTy;
mlir::Operation &opInst = *contextOp.getOperation();
- omp::TaskloopOp taskloopOp = contextOp.getLoopOp();
+ omp::TaskloopWrapperOp loopWrapperOp = contextOp.getLoopOp();
if (failed(checkImplementationStatus(opInst)))
return failure();
@@ -2882,7 +2883,7 @@ convertOmpTaskloopContextOp(omp::TaskloopContextOp contextOp,
assert(builder.GetInsertPoint() == builder.GetInsertBlock()->end());
llvm::BasicBlock *taskloopStartBlock = llvm::BasicBlock::Create(
- builder.getContext(), "omp.taskloop.start",
+ builder.getContext(), "omp.taskloop.wrapper.start",
/*Parent=*/builder.GetInsertBlock()->getParent());
llvm::Instruction *branchToTaskloopStartBlock =
builder.CreateBr(taskloopStartBlock);
@@ -3114,7 +3115,7 @@ convertOmpTaskloopContextOp(omp::TaskloopContextOp contextOp,
return builder.saveIP();
};
- auto loopOp = cast<omp::LoopNestOp>(taskloopOp.getWrappedLoop());
+ auto loopOp = cast<omp::LoopNestOp>(loopWrapperOp.getWrappedLoop());
auto loopInfo = [&]() -> llvm::Expected<llvm::CanonicalLoopInfo *> {
llvm::CanonicalLoopInfo *loopInfo = findCurrentLoopInfo(moduleTranslation);
@@ -7520,7 +7521,7 @@ LogicalResult OpenMPDialectLLVMIRTranslationInterface::convertOperation(
// it around the taskloop context not the inner loop wrapper.
if (isa<omp::TaskloopContextOp>(op))
isOutermostLoopWrapper = true;
- else if (isa<omp::TaskloopOp>(op))
+ else if (isa<omp::TaskloopWrapperOp>(op))
isOutermostLoopWrapper = false;
if (isOutermostLoopWrapper)
@@ -7619,8 +7620,8 @@ LogicalResult OpenMPDialectLLVMIRTranslationInterface::convertOperation(
.Case([&](omp::TaskOp op) {
return convertOmpTaskOp(op, builder, moduleTranslation);
})
- .Case([&](omp::TaskloopOp op) {
- return convertOmpTaskloopOp(op, builder, moduleTranslation);
+ .Case([&](omp::TaskloopWrapperOp op) {
+ return convertOmpTaskloopWrapperOp(op, builder, moduleTranslation);
})
.Case([&](omp::TaskloopContextOp op) {
return convertOmpTaskloopContextOp(op, builder, moduleTranslation);
diff --git a/mlir/test/Conversion/OpenMPToLLVM/convert-to-llvmir.mlir b/mlir/test/Conversion/OpenMPToLLVM/convert-to-llvmir.mlir
index b5df004041a78..2b517d0dad13d 100644
--- a/mlir/test/Conversion/OpenMPToLLVM/convert-to-llvmir.mlir
+++ b/mlir/test/Conversion/OpenMPToLLVM/convert-to-llvmir.mlir
@@ -590,8 +590,8 @@ func.func @omp_taskloop(%arg0: index, %arg1 : memref<i32>) {
omp.parallel {
// CHECK: omp.taskloop.context allocate(%{{.*}} : !llvm.struct<(ptr, ptr, i64)> -> %{{.*}} : !llvm.struct<(ptr, ptr, i64)>) {
omp.taskloop.context allocate(%arg1 : memref<i32> -> %arg1 : memref<i32>) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
// CHECK: omp.loop_nest (%[[IV:.*]]) : i64 = (%[[ARG0]]) to (%[[ARG0]]) step (%[[ARG0]]) {
omp.loop_nest (%iv) : index = (%arg0) to (%arg0) step (%arg0) {
// CHECK-DAG: %[[CAST_IV:.*]] = builtin.unrealized_conversion_cast %[[IV]] : i64 to index
diff --git a/mlir/test/Dialect/OpenMP/invalid.mlir b/mlir/test/Dialect/OpenMP/invalid.mlir
index c543b474b78e2..41e38f13b053d 100644
--- a/mlir/test/Dialect/OpenMP/invalid.mlir
+++ b/mlir/test/Dialect/OpenMP/invalid.mlir
@@ -2031,7 +2031,7 @@ combiner {
func.func @scan_test_2(%lb: i32, %ub: i32, %step: i32) {
%test1f32 = "test.f32"() : () -> (!llvm.ptr)
omp.taskloop.context reduction(mod:inscan, @add_f32 %test1f32 -> %arg1 : !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// expected-error @below {{SCAN directive needs to be enclosed within a parent worksharing loop construct or SIMD construct with INSCAN reduction modifier}}
omp.scan inclusive(%test1f32 : !llvm.ptr)
@@ -2049,7 +2049,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
%testmemref = "test.memref"() : () -> (memref<i32>)
// expected-error @below {{expected equal sizes for allocate and allocator variables}}
"omp.taskloop.context"(%testmemref) ({
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
omp.yield
}
@@ -2067,7 +2067,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
// expected-error @below {{expected as many reduction symbol references as reduction variables}}
"omp.taskloop.context"(%testf32, %testf32_2) ({
^bb0(%arg0: !llvm.ptr, %arg1: !llvm.ptr):
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
omp.yield
}
@@ -2084,7 +2084,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
// expected-error @below {{expected as many reduction symbol references as reduction variables}}
"omp.taskloop.context"(%testf32) ({
^bb0(%arg0: !llvm.ptr):
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
omp.yield
}
@@ -2102,7 +2102,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
// expected-error @below {{expected as many reduction symbol references as reduction variables}}
"omp.taskloop.context"(%testf32, %testf32_2) ({
^bb0(%arg0: !llvm.ptr, %arg1: !llvm.ptr):
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
omp.yield
}
@@ -2119,7 +2119,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
// expected-error @below {{expected as many reduction symbol references as reduction variables}}
"omp.taskloop.context"(%testf32) ({
^bb0(%arg0: !llvm.ptr):
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
omp.yield
}
@@ -2148,7 +2148,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
%testf32_2 = "test.f32"() : () -> (!llvm.ptr)
// expected-error @below {{if a reduction clause is present on the taskloop directive, the nogroup clause must not be specified}}
omp.taskloop.context nogroup reduction(@add_f32 %testf32 -> %arg0, @add_f32 %testf32_2 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
omp.yield
}
@@ -2176,7 +2176,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
%testf32 = "test.f32"() : () -> (!llvm.ptr)
// expected-error @below {{the same list item cannot appear in both a reduction and an in_reduction clause}}
omp.taskloop.context in_reduction(@add_f32 %testf32 -> %arg0 : !llvm.ptr) reduction(@add_f32 %testf32 -> %arg1 : !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
omp.yield
}
@@ -2192,7 +2192,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
%testi64 = "test.i64"() : () -> (i64)
// expected-error @below {{the grainsize clause and num_tasks clause are mutually exclusive and may not appear on the same taskloop directive}}
omp.taskloop.context grainsize(%testi64: i64) num_tasks(%testi64: i64) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
omp.yield
}
@@ -2208,7 +2208,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
%testi64 = "test.i64"() : () -> (i64)
// expected-error @below {{invalid grainsize modifier : 'strict1'}}
omp.taskloop.context grainsize(strict1, %testi64: i64) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
omp.yield
}
@@ -2223,7 +2223,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
%testi64 = "test.i64"() : () -> (i64)
// expected-error @below {{invalid num_tasks modifier : 'default'}}
omp.taskloop.context num_tasks(default, %testi64: i64) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
omp.yield
}
@@ -2237,7 +2237,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
omp.taskloop.context {
// expected-error @below {{op nested in loop wrapper is not another loop wrapper or `omp.loop_nest`}}
- omp.taskloop {
+ omp.taskloop.wrapper {
%0 = arith.constant 0 : i32
}
omp.terminator
@@ -2250,7 +2250,7 @@ func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
func.func @taskloop(%lb: i32, %ub: i32, %step: i32) {
omp.taskloop.context {
// expected-error @below {{only supported nested wrapper is 'omp.simd'}}
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.distribute {
omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {
omp.yield
@@ -2950,7 +2950,7 @@ func.func @omp_distribute_invalid_composite(%lb: index, %ub: index, %step: index
// -----
func.func @omp_taskloop_missing_loop() -> () {
- // expected-error @below {{'omp.taskloop.context' op expected exactly 1 TaskloopOp directly nested in the region, but 0 were found}}
+ // expected-error @below {{'omp.taskloop.context' op expected exactly 1 TaskloopWrapperOp directly nested in the region, but 0 were found}}
omp.taskloop.context {
omp.terminator
}
@@ -2959,8 +2959,8 @@ func.func @omp_taskloop_missing_loop() -> () {
// -----
func.func @omp_taskloop_missing_context(%lb: index, %ub: index, %step: index) -> () {
- // expected-error @below {{'omp.taskloop' op expected to be nested in a taskloop context op}}
- omp.taskloop {
+ // expected-error @below {{'omp.taskloop.wrapper' op expected to be nested in a taskloop context op}}
+ omp.taskloop.wrapper {
omp.loop_nest (%i) : index = (%lb) to (%ub) step (%step) {
omp.yield
}
@@ -2970,14 +2970,14 @@ func.func @omp_taskloop_missing_context(%lb: index, %ub: index, %step: index) ->
// -----
func.func @omp_taskloop_shared_context(%lb: index, %ub: index, %step: index) -> () {
- // expected-error @below {{'omp.taskloop.context' op expected exactly 1 TaskloopOp directly nested in the region, but 2 were found}}
+ // expected-error @below {{'omp.taskloop.context' op expected exactly 1 TaskloopWrapperOp directly nested in the region, but 2 were found}}
omp.taskloop.context {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i) : index = (%lb) to (%ub) step (%step) {
omp.yield
}
}
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i) : index = (%lb) to (%ub) step (%step) {
omp.yield
}
@@ -2991,7 +2991,7 @@ func.func @omp_taskloop_shared_context(%lb: index, %ub: index, %step: index) ->
func.func @omp_taskloop_missing_composite(%lb: index, %ub: index, %step: index) -> () {
omp.taskloop.context {
// expected-error @below {{'omp.composite' attribute missing from composite wrapper}}
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.simd {
omp.loop_nest (%i) : index = (%lb) to (%ub) step (%step) {
omp.yield
@@ -3006,7 +3006,7 @@ func.func @omp_taskloop_missing_composite(%lb: index, %ub: index, %step: index)
func.func @omp_taskloop_invalid_composite(%lb: index, %ub: index, %step: index) -> () {
omp.taskloop.context {
// expected-error @below {{'omp.composite' attribute present in non-composite wrapper}}
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%i) : index = (%lb) to (%ub) step (%step) {
omp.yield
}
diff --git a/mlir/test/Dialect/OpenMP/ops.mlir b/mlir/test/Dialect/OpenMP/ops.mlir
index 6ac804b6d51b2..f6cfad6dba609 100644
--- a/mlir/test/Dialect/OpenMP/ops.mlir
+++ b/mlir/test/Dialect/OpenMP/ops.mlir
@@ -2322,7 +2322,7 @@ func.func @omp_cancel_taskgroup() -> () {
func.func @omp_taskloop_cancel_taskgroup(%lb : index, %ub : index, %step : index) {
omp.taskloop.context {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%iv) : index = (%lb) to (%ub) step (%step) {
// CHECK: omp.cancel cancellation_construct_type(taskgroup)
omp.cancel cancellation_construct_type(taskgroup)
@@ -2568,8 +2568,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context {
omp.taskloop.context {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i) : i32 = (%lb) to (%ub) step (%step) {
// CHECK: omp.yield
omp.yield
@@ -2582,8 +2582,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context if(%{{[^)]+}}) {
omp.taskloop.context if(%testbool) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2594,8 +2594,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context final(%{{[^)]+}}) {
omp.taskloop.context final(%testbool) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2606,8 +2606,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context untied {
omp.taskloop.context untied {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2618,8 +2618,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context mergeable {
omp.taskloop.context mergeable {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2632,8 +2632,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
%testf32_2 = "test.f32"() : () -> (!llvm.ptr)
// CHECK: omp.taskloop.context in_reduction(@add_f32 %{{.+}} -> %{{.+}}, @add_f32 %{{.+}} -> %{{.+}} : !llvm.ptr, !llvm.ptr) {
omp.taskloop.context in_reduction(@add_f32 %testf32 -> %arg0, @add_f32 %testf32_2 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2645,8 +2645,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// Checking byref attribute for in_reduction
// CHECK: omp.taskloop.context in_reduction(byref @add_f32 %{{.+}} -> %{{.+}}, @add_f32 %{{.+}} -> %{{.+}} : !llvm.ptr, !llvm.ptr) {
omp.taskloop.context in_reduction(byref @add_f32 %testf32 -> %arg0, @add_f32 %testf32_2 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2657,8 +2657,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context reduction(byref @add_f32 %{{.+}} -> %{{.+}}, @add_f32 %{{.+}} -> %{{.+}} : !llvm.ptr, !llvm.ptr) {
omp.taskloop.context reduction(byref @add_f32 %testf32 -> %arg0, @add_f32 %testf32_2 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2670,8 +2670,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// check byref attrbute for reduction
// CHECK: omp.taskloop.context reduction(byref @add_f32 %{{.+}} -> %{{.+}}, byref @add_f32 %{{.+}} -> %{{.+}} : !llvm.ptr, !llvm.ptr) {
omp.taskloop.context reduction(byref @add_f32 %testf32 -> %arg0, byref @add_f32 %testf32_2 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2682,8 +2682,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context in_reduction(@add_f32 %{{.+}} -> %{{.+}} : !llvm.ptr) reduction(@add_f32 %{{.+}} -> %{{.+}} : !llvm.ptr) {
omp.taskloop.context in_reduction(@add_f32 %testf32 -> %arg0 : !llvm.ptr) reduction(@add_f32 %testf32_2 -> %arg1 : !llvm.ptr) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2695,8 +2695,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
%testi32 = "test.i32"() : () -> (i32)
// CHECK: omp.taskloop.context priority(%{{[^:]+}}: i32) {
omp.taskloop.context priority(%testi32 : i32) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2708,8 +2708,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
%testmemref = "test.memref"() : () -> (memref<i32>)
// CHECK: omp.taskloop.context allocate(%{{.+}} : memref<i32> -> %{{.+}} : memref<i32>) {
omp.taskloop.context allocate(%testmemref : memref<i32> -> %testmemref : memref<i32>) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2721,8 +2721,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
%testi64 = "test.i64"() : () -> (i64)
// CHECK: omp.taskloop.context grainsize(%{{[^:]+}}: i64) {
omp.taskloop.context grainsize(%testi64: i64) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2733,8 +2733,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context num_tasks(%{{[^:]+}}: i64) {
omp.taskloop.context num_tasks(%testi64: i64) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2745,8 +2745,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context grainsize(strict, %{{[^:]+}}: i64) {
omp.taskloop.context grainsize(strict, %testi64: i64) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2757,8 +2757,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context num_tasks(strict, %{{[^:]+}}: i64) {
omp.taskloop.context num_tasks(strict, %testi64: i64) {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2769,8 +2769,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context nogroup {
omp.taskloop.context nogroup {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
omp.yield
@@ -2781,8 +2781,8 @@ func.func @omp_taskloop(%lb: i32, %ub: i32, %step: i32) -> () {
// CHECK: omp.taskloop.context {
omp.taskloop.context {
- // CHECK: omp.taskloop {
- omp.taskloop {
+ // CHECK: omp.taskloop.wrapper {
+ omp.taskloop.wrapper {
omp.simd {
omp.loop_nest (%i, %j) : i32 = (%lb, %ub) to (%ub, %lb) step (%step, %step) {
// CHECK: omp.yield
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-cancel.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-cancel.mlir
index 49bdd77226fe4..ff351dae11505 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-cancel.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-cancel.mlir
@@ -22,7 +22,7 @@ llvm.func @_QPtest(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm.
%2 = llvm.mlir.constant(1 : i64) : i64
%3 = llvm.alloca %2 x i32 {bindc_name = "i"} : (i64) -> !llvm.ptr
omp.taskloop.context private(@_QFtestEarg_firstprivate_i32 %arg0 -> %arg1, @_QFtestEi_private_i32 %3 -> %arg2 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg3) : i32 = (%0) to (%1) inclusive step (%0) {
llvm.store %arg3, %arg2 : i32, !llvm.ptr
llvm.call @_QPbefore(%arg1) : (!llvm.ptr) -> ()
@@ -51,7 +51,7 @@ llvm.func @_QPtest(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm.
// CHECK: omp.private.copy1: ; preds = %[[VAL_7]]
// CHECK: call void @_copy(ptr %[[VAL_6]], ptr %[[VAL_5]])
// CHECK: br label %[[VAL_9:.*]]
-// CHECK: omp.taskloop.start: ; preds = %[[VAL_8]]
+// CHECK: omp.taskloop.wrapper.start: ; preds = %[[VAL_8]]
// CHECK: br label %[[VAL_10:.*]]
// CHECK: codeRepl: ; preds = %[[VAL_9]]
// CHECK: %[[VAL_11:.*]] = getelementptr { i64, i64, i64, ptr }, ptr %[[STRUCTARG]], i32 0, i32 0
@@ -95,7 +95,7 @@ llvm.func @_QPtest(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm.
// CHECK: br label %[[VAL_37:.*]]
// CHECK: omp.taskloop.context.region: ; preds = %[[VAL_34]]
// CHECK: br label %[[VAL_37_1:.*]]
-// CHECK: omp.taskloop.region: ; preds = %[[VAL_37]]
+// CHECK: omp.taskloop.wrapper.region: ; preds = %[[VAL_37]]
// CHECK: br label %[[VAL_38:.*]]
// CHECK: omp_loop.preheader: ; preds = %[[VAL_37_1]]
// CHECK: %[[VAL_39:.*]] = sub i64 %[[VAL_28]], %[[VAL_26]]
@@ -154,7 +154,7 @@ llvm.func @_QPtest2(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm
%3 = llvm.alloca %2 x i32 {bindc_name = "i"} : (i64) -> !llvm.ptr
omp.taskgroup {
omp.taskloop.context nogroup private(@_QFtestEarg_firstprivate_i32 %arg0 -> %arg1, @_QFtestEi_private_i32 %3 -> %arg2 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg3) : i32 = (%0) to (%1) inclusive step (%0) {
llvm.store %arg3, %arg2 : i32, !llvm.ptr
llvm.call @_QPbefore(%arg1) : (!llvm.ptr) -> ()
@@ -194,7 +194,7 @@ llvm.func @_QPtest2(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm
// CHECK: taskgroup.exit: ; preds = %[[VAL_80:.*]]
// CHECK: call void @__kmpc_end_taskgroup(ptr @1, i32 %[[VAL_69]])
// CHECK: ret void
-// CHECK: omp.taskloop.start: ; preds = %[[VAL_76]]
+// CHECK: omp.taskloop.wrapper.start: ; preds = %[[VAL_76]]
// CHECK: br label %[[VAL_81:.*]]
// CHECK: codeRepl: ; preds = %[[VAL_77]]
// CHECK: %[[VAL_82:.*]] = getelementptr { i64, i64, i64, ptr }, ptr %[[VAL_65]], i32 0, i32 0
@@ -236,7 +236,7 @@ llvm.func @_QPtest2(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm
// CHECK: br label %[[VAL_107:.*]]
// CHECK: omp.taskloop.context.region: ; preds = %[[VAL_104]]
// CHECK: br label %[[VAL_107_1:.*]]
-// CHECK: omp.taskloop.region: ; preds = %[[VAL_107]]
+// CHECK: omp.taskloop.wrapper.region: ; preds = %[[VAL_107]]
// CHECK: br label %[[VAL_108:.*]]
// CHECK: omp_loop.preheader: ; preds = %[[VAL_107_1]]
// CHECK: %[[VAL_109:.*]] = sub i64 %[[VAL_98]], %[[VAL_96]]
@@ -294,7 +294,7 @@ llvm.func @_QPtest3(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm
%2 = llvm.mlir.constant(1 : i64) : i64
%3 = llvm.alloca %2 x i32 {bindc_name = "i"} : (i64) -> !llvm.ptr
omp.taskloop.context private(@_QFtestEarg_firstprivate_i32 %arg0 -> %arg1, @_QFtestEi_private_i32 %3 -> %arg2 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg3) : i32 = (%0) to (%1) inclusive step (%0) {
llvm.store %arg3, %arg2 : i32, !llvm.ptr
llvm.call @_QPbefore(%arg1) : (!llvm.ptr) -> ()
@@ -324,7 +324,7 @@ llvm.func @_QPtest3(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm
// CHECK: omp.private.copy1: ; preds = %[[VAL_143]]
// CHECK: call void @_copy(ptr %[[VAL_142]], ptr %[[VAL_141]])
// CHECK: br label %[[VAL_145:.*]]
-// CHECK: omp.taskloop.start: ; preds = %[[VAL_144]]
+// CHECK: omp.taskloop.wrapper.start: ; preds = %[[VAL_144]]
// CHECK: br label %[[VAL_146:.*]]
// CHECK: codeRepl: ; preds = %[[VAL_145]]
// CHECK: %[[VAL_147:.*]] = getelementptr { i64, i64, i64, ptr }, ptr %[[VAL_135]], i32 0, i32 0
@@ -368,7 +368,7 @@ llvm.func @_QPtest3(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm
// CHECK: br label %[[VAL_173:.*]]
// CHECK: omp.taskloop.context.region: ; preds = %[[VAL_170]]
// CHECK: br label %[[VAL_173_1:.*]]
-// CHECK: omp.taskloop.region: ; preds = %[[VAL_173]]
+// CHECK: omp.taskloop.wrapper.region: ; preds = %[[VAL_173]]
// CHECK: br label %[[VAL_174:.*]]
// CHECK: omp_loop.preheader: ; preds = %[[VAL_173_1]]
// CHECK: %[[VAL_175:.*]] = sub i64 %[[VAL_164]], %[[VAL_162]]
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-cancellation-point.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-cancellation-point.mlir
index 8a4181ad924d7..0d38c5600671a 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-cancellation-point.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-cancellation-point.mlir
@@ -22,7 +22,7 @@ llvm.func @_QPtest(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm.
%2 = llvm.mlir.constant(1 : i64) : i64
%3 = llvm.alloca %2 x i32 {bindc_name = "i"} : (i64) -> !llvm.ptr
omp.taskloop.context private(@_QFtestEarg_firstprivate_i32 %arg0 -> %arg1, @_QFtestEi_private_i32 %3 -> %arg2 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg3) : i32 = (%0) to (%1) inclusive step (%0) {
llvm.store %arg3, %arg2 : i32, !llvm.ptr
llvm.call @_QPbefore(%arg1) : (!llvm.ptr) -> ()
@@ -51,7 +51,7 @@ llvm.func @_QPtest(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm.
// CHECK: omp.private.copy1: ; preds = %[[VAL_7]]
// CHECK: call void @_copy(ptr %[[VAL_6]], ptr %[[VAL_5]])
// CHECK: br label %[[VAL_9:.*]]
-// CHECK: omp.taskloop.start: ; preds = %[[VAL_8]]
+// CHECK: omp.taskloop.wrapper.start: ; preds = %[[VAL_8]]
// CHECK: br label %[[VAL_10:.*]]
// CHECK: codeRepl: ; preds = %[[VAL_9]]
// CHECK: %[[VAL_11:.*]] = getelementptr { i64, i64, i64, ptr }, ptr %[[STRUCTARG]], i32 0, i32 0
@@ -95,7 +95,7 @@ llvm.func @_QPtest(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm.
// CHECK: br label %[[VAL_37:.*]]
// CHECK: omp.taskloop.context.region: ; preds = %[[VAL_34]]
// CHECK: br label %[[VAL_37_1:.*]]
-// CHECK: omp.taskloop.region: ; preds = %[[VAL_37]]
+// CHECK: omp.taskloop.wrapper.region: ; preds = %[[VAL_37]]
// CHECK: br label %[[VAL_38:.*]]
// CHECK: omp_loop.preheader: ; preds = %[[VAL_37_1]]
// CHECK: %[[VAL_39:.*]] = sub i64 %[[VAL_28]], %[[VAL_26]]
@@ -154,7 +154,7 @@ llvm.func @_QPtest2(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm
%3 = llvm.alloca %2 x i32 {bindc_name = "i"} : (i64) -> !llvm.ptr
omp.taskgroup {
omp.taskloop.context nogroup private(@_QFtestEarg_firstprivate_i32 %arg0 -> %arg1, @_QFtestEi_private_i32 %3 -> %arg2 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg3) : i32 = (%0) to (%1) inclusive step (%0) {
llvm.store %arg3, %arg2 : i32, !llvm.ptr
llvm.call @_QPbefore(%arg1) : (!llvm.ptr) -> ()
@@ -194,7 +194,7 @@ llvm.func @_QPtest2(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm
// CHECK: taskgroup.exit: ; preds = %[[VAL_80:.*]]
// CHECK: call void @__kmpc_end_taskgroup(ptr @1, i32 %[[VAL_69]])
// CHECK: ret void
-// CHECK: omp.taskloop.start: ; preds = %[[VAL_76]]
+// CHECK: omp.taskloop.wrapper.start: ; preds = %[[VAL_76]]
// CHECK: br label %[[VAL_81:.*]]
// CHECK: codeRepl: ; preds = %[[VAL_77]]
// CHECK: %[[VAL_82:.*]] = getelementptr { i64, i64, i64, ptr }, ptr %[[VAL_65]], i32 0, i32 0
@@ -236,7 +236,7 @@ llvm.func @_QPtest2(%arg0: !llvm.ptr {fir.bindc_name = "arg", llvm.noalias, llvm
// CHECK: br label %[[VAL_107:.*]]
// CHECK: omp.taskloop.context.region: ; preds = %[[VAL_104]]
// CHECK: br label %[[VAL_107_1:.*]]
-// CHECK: omp.taskloop.region: ; preds = %[[VAL_107]]
+// CHECK: omp.taskloop.wrapper.region: ; preds = %[[VAL_107]]
// CHECK: br label %[[VAL_108:.*]]
// CHECK: omp_loop.preheader: ; preds = %[[VAL_107_1]]
// CHECK: %[[VAL_109:.*]] = sub i64 %[[VAL_98]], %[[VAL_96]]
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-collapse.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-collapse.mlir
index a8c17a29fb7b3..d43a258e3a877 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-collapse.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-collapse.mlir
@@ -21,7 +21,7 @@ llvm.func @_QPtest() {
%c5_i32 = llvm.mlir.constant(5 : i32) : i32
%c10_i32 = llvm.mlir.constant(10 : i32) : i32
omp.taskloop.context private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2, %arg3) : i32 = (%c1_i32, %c1_i32) to (%c10_i32, %c5_i32) inclusive step (%c1_i32, %c1_i32) collapse(2) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
@@ -74,7 +74,7 @@ llvm.func @_QPtest2() {
%c5_i32 = llvm.mlir.constant(5 : i32) : i32
%c10_i32 = llvm.mlir.constant(10 : i32) : i32
omp.taskloop.context private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2, %arg3, %arg4) : i32 = (%c1_i32, %c1_i32, %c2_i32) to (%c10_i32, %c5_i32, %c5_i32) inclusive step (%c1_i32, %c1_i32, %c1_i32) collapse(3) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
@@ -132,7 +132,7 @@ llvm.func @_QPtest3() {
%c10_i32 = llvm.mlir.constant(10 : i32) : i32
%c20_i32 = llvm.mlir.constant(20 : i32) : i32
omp.taskloop.context private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2, %arg3) : i32 = (%c10_i32, %c1_i32) to (%c20_i32, %c5_i32) inclusive step (%c1_i32, %c1_i32) collapse(2) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
@@ -190,7 +190,7 @@ llvm.func @_QPtest4() {
%c10_i32 = llvm.mlir.constant(10 : i32) : i32
%c15_i32 = llvm.mlir.constant(15 : i32) : i32
omp.taskloop.context private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2, %arg3) : i32 = (%c2_i32, %c5_i32) to (%c10_i32, %c15_i32) inclusive step (%c2_i32, %c3_i32) collapse(2) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
@@ -250,7 +250,7 @@ llvm.func @_QPtest5() {
%c10_i32 = llvm.mlir.constant(10 : i32) : i32
%c15_i32 = llvm.mlir.constant(15 : i32) : i32
omp.taskloop.context private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2, %arg3) : i32 = (%cneg2_i32, %c5_i32) to (%c10_i32, %c15_i32) inclusive step (%c2_i32, %c3_i32) collapse(2) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
@@ -306,7 +306,7 @@ llvm.func @_QPtest6() {
%c5_i32 = llvm.mlir.constant(5 : i32) : i32
%c10_i32 = llvm.mlir.constant(10 : i32) : i32
omp.taskloop.context private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2, %arg3) : i32 = (%c10_i32, %c1_i32) to (%c5_i32, %c5_i32) inclusive step (%cneg1_i32, %c1_i32) collapse(2) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-context-alloca.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-context-alloca.mlir
index f73a30a5e664d..555563cde369f 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-context-alloca.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-context-alloca.mlir
@@ -1,6 +1,6 @@
// RUN: mlir-translate -mlir-to-llvmir %s | FileCheck %s
-// Check converting code where there are operations other than omp.taskloop
+// Check converting code where there are operations other than omp.taskloop.wrapper
// inside of omp.taskloop.context.
// The following is a common pattern generated by flang when accessing
@@ -17,7 +17,7 @@ llvm.func @_QPtest_taskloop(%arg0: !llvm.ptr) {
omp.taskloop.context private(@_QFtest_taskloopEi_private_i32 %4 -> %arg1 : !llvm.ptr) {
// test where this alloca ends up
%5 = llvm.alloca %1 x !llvm.struct<(ptr, i64, i32, i8, i8, i8, i8, array<1 x array<3 x i64>>)> {alignment = 8 : i64} : (i32) -> !llvm.ptr
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%1) to (%2) inclusive step (%1) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
"llvm.intr.memcpy"(%5, %arg0, %0) <{arg_attrs = [{llvm.align = 8 : i64}, {llvm.align = 8 : i64}, {}], isVolatile = false}> : (!llvm.ptr, !llvm.ptr, i32) -> ()
@@ -46,4 +46,4 @@ llvm.func @_QPdo_something(!llvm.ptr) attributes {sym_visibility = "private"}
// CHECK: omp.taskloop.context.region: ; preds = %[[VAL_31]]
// This will be folded into the entry block by later optimization passes:
// CHECK-NEXT: %[[VAL_34:.*]] = alloca { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, align 8
-// CHECK-NEXT: br label %[[VAL_35:omp.taskloop.region]]
+// CHECK-NEXT: br label %[[VAL_35:omp.taskloop.wrapper.region]]
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-final.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-final.mlir
index d5d962df33a45..f0132670e4661 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-final.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-final.mlir
@@ -21,7 +21,7 @@ llvm.func @_QPtest() {
%9 = llvm.mlir.constant(1 : i32) : i32
%true = llvm.mlir.constant(true) : i1
omp.taskloop.context final(%true) private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%7) to (%8) inclusive step (%9) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-grainsize.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-grainsize.mlir
index ba96b59c246c5..79bfe52e2d35b 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-grainsize.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-grainsize.mlir
@@ -21,7 +21,7 @@ llvm.func @_QPtest() {
%9 = llvm.mlir.constant(1 : i32) : i32
%c2_i32 = llvm.mlir.constant(2 : i32) : i32
omp.taskloop.context grainsize(%c2_i32: i32) private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%7) to (%8) inclusive step (%9) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-if.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-if.mlir
index 63eb721674b6c..dd720dc3b6488 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-if.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-if.mlir
@@ -23,7 +23,7 @@ llvm.func @_QPtest() {
%c20 = llvm.mlir.constant(20 : i32) : i32
%cmp = llvm.icmp "slt" %a_val, %c20 : i32
omp.taskloop.context if(%cmp) private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%7) to (%8) inclusive step (%9) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-mergeable.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-mergeable.mlir
index d04add975badb..bd981307ad49e 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-mergeable.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-mergeable.mlir
@@ -20,7 +20,7 @@ llvm.func @_QPtest() {
%8 = llvm.mlir.constant(5 : i32) : i32
%9 = llvm.mlir.constant(1 : i32) : i32
omp.taskloop.context mergeable private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%7) to (%8) inclusive step (%9) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-no-context-struct.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-no-context-struct.mlir
index d3f9015f72a9e..f6b9dce82def5 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-no-context-struct.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-no-context-struct.mlir
@@ -14,7 +14,7 @@ llvm.func @_QPtest() {
%4 = llvm.alloca %2 x i32 {bindc_name = "t1"} : (i64) -> !llvm.ptr
%5 = llvm.alloca %2 x i32 {bindc_name = "i"} : (i64) -> !llvm.ptr
omp.taskloop.context private(@_QFtestEt1_private_i32 %4 -> %arg0, @_QFtestEt2_private_i32 %3 -> %arg1, @_QFtestEi_private_i32 %5 -> %arg2 : !llvm.ptr, !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg3) : i32 = (%0) to (%1) inclusive step (%0) {
llvm.store %arg3, %arg2 : i32, !llvm.ptr
omp.yield
@@ -37,7 +37,7 @@ llvm.func @_QPtest() {
// CHECK: br label %[[VAL_7:.*]]
// CHECK: omp.private.copy: ; preds = %[[VAL_5]]
// CHECK: br label %[[VAL_8:.*]]
-// CHECK: omp.taskloop.start: ; preds = %[[VAL_7]]
+// CHECK: omp.taskloop.wrapper.start: ; preds = %[[VAL_7]]
// CHECK: br label %[[VAL_9:.*]]
// CHECK: codeRepl: ; preds = %[[VAL_8]]
// CHECK: %[[VAL_10:.*]] = getelementptr { i64, i64, i64 }, ptr %[[STRUCTARG]], i32 0, i32 0
@@ -79,7 +79,7 @@ llvm.func @_QPtest() {
// CHECK: br label %[[VAL_37:.*]]
// CHECK: omp.taskloop.context.region: ; preds = %[[VAL_35]]
// CHECK: br label %[[VAL_38_1:.*]]
-// CHECK: omp.taskloop.region: ; preds = %[[VAL_37]]
+// CHECK: omp.taskloop.wrapper.region: ; preds = %[[VAL_37]]
// CHECK: br label %[[VAL_38:.*]]
// CHECK: omp_loop.preheader: ; preds = %[[VAL_38_1]]
// CHECK: %[[VAL_39:.*]] = sub i64 %[[VAL_27]], %[[VAL_25]]
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-nogroup.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-nogroup.mlir
index 226831e8fed91..a1773764dcb82 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-nogroup.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-nogroup.mlir
@@ -20,7 +20,7 @@ llvm.func @_QPtest() {
%8 = llvm.mlir.constant(5 : i32) : i32
%9 = llvm.mlir.constant(1 : i32) : i32
omp.taskloop.context nogroup private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%7) to (%8) inclusive step (%9) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-num_tasks.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-num_tasks.mlir
index 23c8bcbe3a96d..e52d0ba559cef 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-num_tasks.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-num_tasks.mlir
@@ -21,7 +21,7 @@ llvm.func @_QPtest() {
%9 = llvm.mlir.constant(1 : i32) : i32
%c2_i32 = llvm.mlir.constant(2: i32) : i32
omp.taskloop.context num_tasks(%c2_i32 : i32) private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%7) to (%8) inclusive step (%9) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-priority.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-priority.mlir
index 875b96a6be1d7..77d0853fb4951 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-priority.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-priority.mlir
@@ -21,7 +21,7 @@ llvm.func @_QPtest() {
%9 = llvm.mlir.constant(1 : i32) : i32
%c1_i32 = llvm.mlir.constant(1 : i32) : i32
omp.taskloop.context priority(%c1_i32 : i32) private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%7) to (%8) inclusive step (%9) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-untied.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-untied.mlir
index d13ea3e69de80..4527fe12eeacc 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-untied.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-untied.mlir
@@ -20,7 +20,7 @@ llvm.func @_QPtest() {
%8 = llvm.mlir.constant(5 : i32) : i32
%9 = llvm.mlir.constant(1 : i32) : i32
omp.taskloop.context untied private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%7) to (%8) inclusive step (%9) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
@@ -50,7 +50,7 @@ llvm.func @_QPtest_tied() {
%8 = llvm.mlir.constant(5 : i32) : i32
%9 = llvm.mlir.constant(1 : i32) : i32
omp.taskloop.context private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%7) to (%8) inclusive step (%9) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop.mlir
index d2bb2fabcbbd3..ba095794e7699 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop.mlir
@@ -20,7 +20,7 @@ llvm.func @_QPtest() {
%8 = llvm.mlir.constant(5 : i32) : i32
%9 = llvm.mlir.constant(1 : i32) : i32
omp.taskloop.context private(@_QFtestEa_firstprivate_i32 %3 -> %arg0, @_QFtestEi_private_i32 %1 -> %arg1 : !llvm.ptr, !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg2) : i32 = (%7) to (%8) inclusive step (%9) {
llvm.store %arg2, %arg1 : i32, !llvm.ptr
%10 = llvm.load %arg0 : !llvm.ptr -> i32
@@ -53,7 +53,7 @@ llvm.func @_QPtest() {
// CHECK: %[[VAL_9:.*]] = load i32, ptr %[[VAL_1]], align 4
// CHECK: store i32 %[[VAL_9]], ptr %[[VAL_6]], align 4
// CHECK: br label %[[VAL_10:.*]]
-// CHECK: omp.taskloop.start: ; preds = %[[VAL_8]]
+// CHECK: omp.taskloop.wrapper.start: ; preds = %[[VAL_8]]
// CHECK: br label %[[VAL_11:.*]]
// CHECK: codeRepl: ; preds = %[[VAL_10]]
// CHECK: %[[VAL_12:.*]] = getelementptr { i64, i64, i64, ptr }, ptr %[[STRUCTARG]], i32 0, i32 0
@@ -97,7 +97,7 @@ llvm.func @_QPtest() {
// CHECK: br label %[[VAL_38:.*]]
// CHECK: omp.taskloop.context.region: ; preds = %[[VAL_35]]
// CHECK: br label %[[VAL_38_1:.*]]
-// CHECK: omp.taskloop.region: ; preds = %[[VAL_38]]
+// CHECK: omp.taskloop.wrapper.region: ; preds = %[[VAL_38]]
// CHECK: br label %[[VAL_39:.*]]
// CHECK: omp_loop.preheader: ; preds = %[[VAL_38_1]]
// CHECK: %[[VAL_40:.*]] = sub i64 %[[VAL_29]], %[[VAL_27]]
diff --git a/mlir/test/Target/LLVMIR/openmp-todo.mlir b/mlir/test/Target/LLVMIR/openmp-todo.mlir
index 79fdacc199c4f..af5da3dc8c3a4 100644
--- a/mlir/test/Target/LLVMIR/openmp-todo.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-todo.mlir
@@ -304,7 +304,7 @@ llvm.func @taskloop_allocate(%lb : i32, %ub : i32, %step : i32, %x : !llvm.ptr)
// expected-error at below {{LLVM Translation failed for operation: omp.taskloop.context}}
// expected-error at below {{not yet implemented: Unhandled clause allocate in omp.taskloop.context operation}}
omp.taskloop.context allocate(%x : !llvm.ptr -> %x : !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {
omp.yield
}
@@ -329,7 +329,7 @@ llvm.func @taskloop_inreduction(%lb : i32, %ub : i32, %step : i32, %x : !llvm.pt
// expected-error at below {{LLVM Translation failed for operation: omp.taskloop.context}}
// expected-error at below {{not yet implemented: Unhandled clause in_reduction in omp.taskloop.context operation}}
omp.taskloop.context in_reduction(@add_reduction_i32 %x -> %arg0 : !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {
omp.yield
}
@@ -354,7 +354,7 @@ llvm.func @taskloop_reduction(%lb : i32, %ub : i32, %step : i32, %x : !llvm.ptr)
// expected-error at below {{LLVM Translation failed for operation: omp.taskloop.context}}
// expected-error at below {{not yet implemented: Unhandled clause reduction in omp.taskloop.context operation}}
omp.taskloop.context reduction(@add_reduction_i32 %x -> %arg0 : !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {
omp.yield
}
>From b90e09d67cf82989425df561e54cae6cccfd314c Mon Sep 17 00:00:00 2001
From: Tom Eccles <tom.eccles at arm.com>
Date: Wed, 25 Mar 2026 11:04:24 +0000
Subject: [PATCH 2/4] [mlir][OpenMP] Rename taskLoopOp/taskloopOp variables to
taskLoopWrapperOp/taskloopWrapperOp
Rename local variables for clarity to better reflect the type they hold.
Assisted-by: Copilot, Claude Sonnet 4.6
---
flang/lib/Lower/OpenMP/OpenMP.cpp | 4 ++--
mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/flang/lib/Lower/OpenMP/OpenMP.cpp b/flang/lib/Lower/OpenMP/OpenMP.cpp
index 5708929e12841..5f78da0f8b1d2 100644
--- a/flang/lib/Lower/OpenMP/OpenMP.cpp
+++ b/flang/lib/Lower/OpenMP/OpenMP.cpp
@@ -3286,14 +3286,14 @@ static mlir::omp::TaskloopContextOp genStandaloneTaskloop(
mlir::OpBuilder::InsertionGuard guard(firOpBuilder);
firOpBuilder.setInsertionPointToStart(&taskLoopContextOp.getRegion().front());
mlir::omp::TaskloopWrapperOperands wrapperClauseOps;
- auto taskLoopOp = genWrapperOp<mlir::omp::TaskloopWrapperOp>(
+ auto taskLoopWrapperOp = genWrapperOp<mlir::omp::TaskloopWrapperOp>(
converter, loc, wrapperClauseOps, taskloopArgs);
genLoopNestOp(converter, symTable, semaCtx, eval, loc, queue, item,
loopNestClauseOps, iv, {{taskLoopContextOp, taskloopArgs}},
llvm::omp::Directive::OMPD_taskloop, dsp);
- firOpBuilder.setInsertionPointAfter(taskLoopOp);
+ firOpBuilder.setInsertionPointAfter(taskLoopWrapperOp);
mlir::omp::TerminatorOp::create(firOpBuilder, loc);
return taskLoopContextOp;
}
diff --git a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
index 0d5c9f0fddf5a..b576378c23caf 100644
--- a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+++ b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
@@ -3255,8 +3255,8 @@ void TaskloopContextOp::build(OpBuilder &builder, OperationState &state,
TaskloopWrapperOp TaskloopContextOp::getLoopOp() {
for (mlir::Operation &op : getRegion().front())
- if (auto taskloopOp = dyn_cast<TaskloopWrapperOp>(&op))
- return taskloopOp;
+ if (auto taskloopWrapperOp = dyn_cast<TaskloopWrapperOp>(&op))
+ return taskloopWrapperOp;
return nullptr;
}
>From c2b7cfaf1194ff0715409afa52d882c98f93a145 Mon Sep 17 00:00:00 2001
From: Tom Eccles <tom.eccles at arm.com>
Date: Wed, 25 Mar 2026 11:32:53 +0000
Subject: [PATCH 3/4] Fix new test a third time
---
mlir/test/Target/LLVMIR/openmp-taskloop-bounds-cast.mlir | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mlir/test/Target/LLVMIR/openmp-taskloop-bounds-cast.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-bounds-cast.mlir
index 41b64e2819699..317616be2c564 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-bounds-cast.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-bounds-cast.mlir
@@ -15,7 +15,7 @@ llvm.func @_QPtest_taskloop_bounds() {
%ub = llvm.mlir.constant(10 : i32) : i32
%step = llvm.mlir.constant(1 : i32) : i32
omp.taskloop.context private(@_QPtest_taskloop_boundsEi_private_i32 %1 -> %arg0 : !llvm.ptr) {
- omp.taskloop {
+ omp.taskloop.wrapper {
omp.loop_nest (%arg1) : i32 = (%lb) to (%ub) inclusive step (%step) {
llvm.store %arg1, %arg0 : i32, !llvm.ptr
omp.yield
>From 34398723f712bbddfcdae576f7519fcff782f3d7 Mon Sep 17 00:00:00 2001
From: Tom Eccles <tom.eccles at arm.com>
Date: Wed, 25 Mar 2026 11:39:06 +0000
Subject: [PATCH 4/4] Fix format
---
mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
index b576378c23caf..e8df18231e92d 100644
--- a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+++ b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
@@ -3298,9 +3298,10 @@ LogicalResult TaskloopContextOp::verifyRegions() {
return isa<TaskloopWrapperOp>(op);
});
if (count != 1)
- return emitOpError() << "expected exactly 1 TaskloopWrapperOp directly nested in "
- "the region, but "
- << count << " were found";
+ return emitOpError()
+ << "expected exactly 1 TaskloopWrapperOp directly nested in "
+ "the region, but "
+ << count << " were found";
return success();
}
More information about the llvm-branch-commits
mailing list