[Mlir-commits] [mlir] d243d55 - [mlir][OpenMP] Rename omp.taskloop to omp.taskloop.wrapper (#188071)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Tue Apr 7 11:00:06 PDT 2026


Author: Tom Eccles
Date: 2026-04-07T17:59:59Z
New Revision: d243d55ce4db80a983c8b07647a95d9279cd1fc4

URL: https://github.com/llvm/llvm-project/commit/d243d55ce4db80a983c8b07647a95d9279cd1fc4
DIFF: https://github.com/llvm/llvm-project/commit/d243d55ce4db80a983c8b07647a95d9279cd1fc4.diff

LOG: [mlir][OpenMP] Rename omp.taskloop to omp.taskloop.wrapper (#188071)

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

Added: 
    

Modified: 
    flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
    flang/lib/Lower/OpenMP/OpenMP.cpp
    flang/test/Integration/OpenMP/taskloop-alloca-placement.f90
    flang/test/Lower/OpenMP/if-clause.f90
    flang/test/Lower/OpenMP/implicit-dsa.f90
    flang/test/Lower/OpenMP/masked_taskloop.f90
    flang/test/Lower/OpenMP/parallel-masked-taskloop.f90
    flang/test/Lower/OpenMP/taskloop-cancel.f90
    flang/test/Lower/OpenMP/taskloop-collapse.f90
    flang/test/Lower/OpenMP/taskloop-grainsize.f90
    flang/test/Lower/OpenMP/taskloop-inreduction.f90
    flang/test/Lower/OpenMP/taskloop-numtasks.f90
    flang/test/Lower/OpenMP/taskloop-reduction.f90
    flang/test/Lower/OpenMP/taskloop.f90
    mlir/docs/Dialects/OpenMPDialect/_index.md
    mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.h
    mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
    mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
    mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
    mlir/test/Conversion/OpenMPToLLVM/convert-to-llvmir.mlir
    mlir/test/Dialect/OpenMP/invalid.mlir
    mlir/test/Dialect/OpenMP/ops.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-bounds-cast.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-cancel.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-cancellation-point.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-collapse.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-context-alloca.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-final.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-grainsize.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-if.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-mergeable.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-no-context-struct.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-nogroup.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-num_tasks.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-outer-bounds.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-priority.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop-untied.mlir
    mlir/test/Target/LLVMIR/openmp-taskloop.mlir
    mlir/test/Target/LLVMIR/openmp-todo.mlir

Removed: 
    


################################################################################
diff  --git a/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp b/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
index 78ae47534a32e..457a2abba3ca0 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 21295c9dd7379..bc215064bbee2 100644
--- a/flang/lib/Lower/OpenMP/OpenMP.cpp
+++ b/flang/lib/Lower/OpenMP/OpenMP.cpp
@@ -3297,16 +3297,16 @@ static mlir::omp::TaskloopContextOp genStandaloneTaskloop(
 
   mlir::OpBuilder::InsertionGuard guard(firOpBuilder);
   firOpBuilder.setInsertionPointToStart(&taskLoopContextOp.getRegion().front());
-  mlir::omp::TaskloopOperands wrapperClauseOps;
+  mlir::omp::TaskloopWrapperOperands wrapperClauseOps;
   EntryBlockArgs wrapperEntryBlockArgs;
-  auto taskLoopOp = genWrapperOp<mlir::omp::TaskloopOp>(
+  auto taskLoopWrapperOp = genWrapperOp<mlir::omp::TaskloopWrapperOp>(
       converter, loc, wrapperClauseOps, wrapperEntryBlockArgs);
 
   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;
 }
@@ -3603,7 +3603,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 3a06178b766d0..d7bccb133e02c 100644
--- a/mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.h
+++ b/mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.h
@@ -41,7 +41,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 818c5063ef03f..76294cb86574f 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 6427fd55c0e5c..dd2846f2cdb42 100644
--- a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+++ b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
@@ -3380,10 +3380,11 @@ void TaskloopContextOp::build(OpBuilder &builder, OperationState &state,
       makeArrayAttr(ctx, clauses.reductionSyms), clauses.untied);
 }
 
-TaskloopOp TaskloopContextOp::getLoopOp() {
-  return cast<TaskloopOp>(
-      *llvm::find_if(getRegion().front(),
-                     [](mlir::Operation &op) { return isa<TaskloopOp>(op); }));
+TaskloopWrapperOp TaskloopContextOp::getLoopOp() {
+  return cast<TaskloopWrapperOp>(
+      *llvm::find_if(getRegion().front(), [](mlir::Operation &op) {
+        return isa<TaskloopWrapperOp>(op);
+      }));
 }
 
 LogicalResult TaskloopContextOp::verify() {
@@ -3420,37 +3421,39 @@ 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 "
-                            "the region, but "
-                         << count << " were found";
+    return emitOpError()
+           << "expected exactly 1 TaskloopWrapperOp directly nested in "
+              "the region, but "
+           << count << " were found";
 
   return success();
 }
 
 //===----------------------------------------------------------------------===//
-// 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::getTaskloopContext() {
+TaskloopContextOp TaskloopWrapperOp::getTaskloopContext() {
   return dyn_cast<TaskloopContextOp>(getOperation()->getParentOp());
 }
 
-LogicalResult TaskloopOp::verify() {
+LogicalResult TaskloopWrapperOp::verify() {
   TaskloopContextOp context = getTaskloopContext();
   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()
@@ -4412,7 +4415,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";
   }
@@ -4454,7 +4457,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 cba7656eaf9a9..2e15f4de4545d 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
@@ -2855,16 +2855,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();
@@ -2880,7 +2881,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();
 
@@ -2896,7 +2897,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);
@@ -3128,7 +3129,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);
@@ -7540,7 +7541,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)
@@ -7639,8 +7640,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 d4370d9382275..c7f2416b4c293 100644
--- a/mlir/test/Dialect/OpenMP/invalid.mlir
+++ b/mlir/test/Dialect/OpenMP/invalid.mlir
@@ -2051,7 +2051,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)
@@ -2069,7 +2069,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
       }
@@ -2087,7 +2087,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
       }
@@ -2104,7 +2104,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
       }
@@ -2122,7 +2122,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
       }
@@ -2139,7 +2139,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
       }
@@ -2168,7 +2168,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
       }
@@ -2196,7 +2196,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
       }
@@ -2212,7 +2212,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
       }
@@ -2228,7 +2228,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
       }
@@ -2243,7 +2243,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
       }
@@ -2257,7 +2257,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
@@ -2270,7 +2270,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
@@ -2970,7 +2970,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
   }
@@ -2979,8 +2979,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
     }
@@ -2990,14 +2990,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
       }
@@ -3011,7 +3011,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
@@ -3026,7 +3026,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 c241162e9378e..869f163cb4014 100644
--- a/mlir/test/Dialect/OpenMP/ops.mlir
+++ b/mlir/test/Dialect/OpenMP/ops.mlir
@@ -2390,7 +2390,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)
@@ -2636,8 +2636,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
@@ -2650,8 +2650,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
@@ -2662,8 +2662,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
@@ -2674,8 +2674,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
@@ -2686,8 +2686,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
@@ -2700,8 +2700,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
@@ -2713,8 +2713,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
@@ -2725,8 +2725,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
@@ -2738,8 +2738,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
@@ -2750,8 +2750,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
@@ -2763,8 +2763,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
@@ -2776,8 +2776,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
@@ -2789,8 +2789,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
@@ -2801,8 +2801,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
@@ -2813,8 +2813,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
@@ -2825,8 +2825,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
@@ -2837,8 +2837,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
@@ -2849,8 +2849,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-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

diff  --git a/mlir/test/Target/LLVMIR/openmp-taskloop-cancel.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-cancel.mlir
index 8150dc0d7cffc..a254403775b5b 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 e8216bc9473a2..d8723b4a52c6b 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 34e74f43109d0..43d95f915fcbd 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
@@ -76,7 +76,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
@@ -136,7 +136,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
@@ -196,7 +196,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
@@ -258,7 +258,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
@@ -316,7 +316,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 03a1c6a9d9b4d..8cee203c9f595 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-outer-bounds.mlir b/mlir/test/Target/LLVMIR/openmp-taskloop-outer-bounds.mlir
index 529dab65cfa9a..7e0b6d6f00c49 100644
--- a/mlir/test/Target/LLVMIR/openmp-taskloop-outer-bounds.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-taskloop-outer-bounds.mlir
@@ -23,7 +23,7 @@ llvm.func @_QPtest() {
   %ub = llvm.load %ub.addr : !llvm.ptr -> i32
   %step = llvm.load %step.addr : !llvm.ptr -> i32
   omp.taskloop.context private(@_QFtestEi_private_i32 %i -> %arg0 : !llvm.ptr) {
-    omp.taskloop {
+    omp.taskloop.wrapper {
       omp.loop_nest (%iv) : i32 = (%lb) to (%ub) inclusive step (%step) {
         llvm.store %iv, %arg0 : i32, !llvm.ptr
         omp.yield

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 c0034f10d9834..81ec361239ce0 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 1bdd03ae37942..e0872226531e6 100644
--- a/mlir/test/Target/LLVMIR/openmp-todo.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-todo.mlir
@@ -334,7 +334,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
       }
@@ -359,7 +359,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
       }
@@ -384,7 +384,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
       }


        


More information about the Mlir-commits mailing list