[Mlir-commits] [llvm] [mlir] [Flang] [OpenMP] Add LLVM lowering support for PRIORITY in TASK (PR #120710)
Thirumalai Shaktivel
llvmlistbot at llvm.org
Thu Dec 26 01:39:52 PST 2024
https://github.com/Thirumalai-Shaktivel updated https://github.com/llvm/llvm-project/pull/120710
>From ce92e4eec5fe053cabcf049f8c747c069dc09dfc Mon Sep 17 00:00:00 2001
From: Thirumalai-Shaktivel <thirumalaishaktivel at gmail.com>
Date: Fri, 20 Dec 2024 10:10:11 +0000
Subject: [PATCH 1/5] [Flang] [OpenMP] Add LLVM lowering support for PRIORITY
in TASK
Implementation details:
The PRIORITY clause is recognized by setting the flags = 32 to the
`__kmpc_omp_task_alloc` runtime call. Also, Store the priority-value
to the `kmp_task_t` struct
---
.../llvm/Frontend/OpenMP/OMPIRBuilder.h | 4 ++-
llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp | 33 +++++++++++++++--
.../OpenMP/OpenMPToLLVMIRTranslation.cpp | 9 +++--
mlir/test/Target/LLVMIR/openmp-llvm.mlir | 36 +++++++++++++++++++
mlir/test/Target/LLVMIR/openmp-todo.mlir | 11 ------
5 files changed, 77 insertions(+), 16 deletions(-)
diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h b/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
index 4ce47b1c05d9b0..21a0988ac784b9 100644
--- a/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+++ b/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
@@ -1264,12 +1264,14 @@ class OpenMPIRBuilder {
/// \param EventHandle If present, signifies the event handle as part of
/// the detach clause
/// \param Mergeable If the given task is `mergeable`
+ /// \param priority `priority-value' specifies the execution order of the
+ /// tasks that is generated by the construct
InsertPointOrErrorTy
createTask(const LocationDescription &Loc, InsertPointTy AllocaIP,
BodyGenCallbackTy BodyGenCB, bool Tied = true,
Value *Final = nullptr, Value *IfCondition = nullptr,
SmallVector<DependData> Dependencies = {}, bool Mergeable = false,
- Value *EventHandle = nullptr);
+ Value *EventHandle = nullptr, Value *Priority = nullptr);
/// Generator for the taskgroup construct
///
diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
index 0d8dbbe3a8a718..7a36aaad277249 100644
--- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -1818,7 +1818,8 @@ static Value *emitTaskDependencies(
OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createTask(
const LocationDescription &Loc, InsertPointTy AllocaIP,
BodyGenCallbackTy BodyGenCB, bool Tied, Value *Final, Value *IfCondition,
- SmallVector<DependData> Dependencies, bool Mergeable, Value *EventHandle) {
+ SmallVector<DependData> Dependencies, bool Mergeable, Value *EventHandle,
+ Value *Priority) {
if (!updateToLocation(Loc))
return InsertPointTy();
@@ -1864,7 +1865,7 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createTask(
Builder, AllocaIP, ToBeDeleted, TaskAllocaIP, "global.tid", false));
OI.PostOutlineCB = [this, Ident, Tied, Final, IfCondition, Dependencies,
- Mergeable, EventHandle, TaskAllocaBB,
+ Mergeable, Priority, EventHandle, TaskAllocaBB,
ToBeDeleted](Function &OutlinedFn) mutable {
// Replace the Stale CI by appropriate RTL function call.
assert(OutlinedFn.getNumUses() == 1 &&
@@ -1892,6 +1893,8 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createTask(
// Task is not final iff (Flags & 2) == 0.
// Task is mergeable iff (Flags & 4) == 4.
// Task is not mergeable iff (Flags & 4) == 0.
+ // Task is priority iff (Flags & 32) == 32.
+ // Task is not priority iff (Flags & 32) == 0.
// TODO: Handle the other flags.
Value *Flags = Builder.getInt32(Tied);
if (Final) {
@@ -1902,6 +1905,8 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createTask(
if (Mergeable)
Flags = Builder.CreateOr(Builder.getInt32(4), Flags);
+ if (Priority)
+ Flags = Builder.CreateOr(Builder.getInt32(32), Flags);
// Argument - `sizeof_kmp_task_t` (TaskSize)
// Tasksize refers to the size in bytes of kmp_task_t data structure
@@ -1958,6 +1963,30 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createTask(
SharedsSize);
}
+ if (Priority) {
+ //
+ // The return type of "__kmpc_omp_task_alloc" is "kmp_task_t *",
+ // we populate the priority information into the "kmp_task_t" here
+ //
+ // The struct "kmp_task_t" definition is available in kmp.h
+ // kmp_task_t = { shareds, routine, part_id, data1, data2 }
+ // data2 is used for priority
+ //
+ Type *Int32Ty = Builder.getInt32Ty();
+ // kmp_task_t* => { ptr }
+ Type *taskPtr = StructType::get(VoidPtr);
+ Value *taskGEP = Builder.CreateInBoundsGEP(
+ taskPtr, TaskData,
+ {ConstantInt::get(Int32Ty, 0), ConstantInt::get(Int32Ty, 0)});
+ // kmp_task_t => { ptr, ptr, i32, ptr, ptr }
+ Type *taskStructType = StructType::get(
+ VoidPtr, VoidPtr, Builder.getInt32Ty(), VoidPtr, VoidPtr);
+ Value *priorityData = Builder.CreateInBoundsGEP(
+ taskStructType, taskGEP,
+ {ConstantInt::get(Int32Ty, 0), ConstantInt::get(Int32Ty, 4)});
+ Builder.CreateStore(Priority, priorityData);
+ }
+
Value *DepArray = nullptr;
if (Dependencies.size()) {
InsertPointTy OldIP = Builder.saveIP();
diff --git a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
index 060113c4123241..c4e72b16cc221b 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
@@ -257,7 +257,6 @@ static LogicalResult checkImplementationStatus(Operation &op) {
.Case([&](omp::TaskOp op) {
checkAllocate(op, result);
checkInReduction(op, result);
- checkPriority(op, result);
checkUntied(op, result);
})
.Case([&](omp::TaskgroupOp op) {
@@ -273,6 +272,11 @@ static LogicalResult checkImplementationStatus(Operation &op) {
checkLinear(op, result);
checkOrder(op, result);
})
+ .Case([&](omp::TaskloopOp op) {
+ // TODO: Add other clauses check
+ checkPriority(op, result);
+ checkUntied(op, result);
+ })
.Case([&](omp::ParallelOp op) { checkAllocate(op, result); })
.Case([&](omp::SimdOp op) {
checkAligned(op, result);
@@ -1775,7 +1779,8 @@ convertOmpTaskOp(omp::TaskOp taskOp, llvm::IRBuilderBase &builder,
moduleTranslation.lookupValue(taskOp.getFinal()),
moduleTranslation.lookupValue(taskOp.getIfExpr()), dds,
taskOp.getMergeable(),
- moduleTranslation.lookupValue(taskOp.getEventHandle()));
+ moduleTranslation.lookupValue(taskOp.getEventHandle()),
+ moduleTranslation.lookupValue(taskOp.getPriority()));
if (failed(handleError(afterIP, *taskOp)))
return failure();
diff --git a/mlir/test/Target/LLVMIR/openmp-llvm.mlir b/mlir/test/Target/LLVMIR/openmp-llvm.mlir
index 5f8bdf8afdf783..fc21a008bf7caa 100644
--- a/mlir/test/Target/LLVMIR/openmp-llvm.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-llvm.mlir
@@ -2834,6 +2834,42 @@ llvm.func @omp_taskgroup_task(%x: i32, %y: i32, %zaddr: !llvm.ptr) {
// -----
+llvm.func @test_01() attributes {sym_visibility = "private"}
+llvm.func @test_02() attributes {sym_visibility = "private"}
+// CHECK-LABEL: define void @_QPomp_task_priority() {
+llvm.func @_QPomp_task_priority() {
+ %0 = llvm.mlir.constant(1 : i64) : i64
+ %1 = llvm.alloca %0 x i32 {bindc_name = "x"} : (i64) -> !llvm.ptr
+ %2 = llvm.mlir.constant(4 : i32) : i32
+ %3 = llvm.mlir.constant(true) : i1
+ %4 = llvm.load %1 : !llvm.ptr -> i32
+// CHECK: %[[Gid_01:.*]] = call i32 @__kmpc_global_thread_num(ptr {{.*}})
+// CHECK: %[[I_01:.*]] = call ptr @__kmpc_omp_task_alloc(ptr {{.*}}, i32 %[[Gid_01:.*]], i32 33, i64 40, i64 0, ptr @{{.*}})
+// CHECK: %[[I_02:.*]] = getelementptr inbounds { ptr }, ptr %[[I_01:.*]], i32 0, i32 0
+// CHECK: %[[I_03:.*]] = getelementptr inbounds { ptr, ptr, i32, ptr, ptr }, ptr %[[I_02:.*]], i32 0, i32 4
+// CHECK: store i32 %[[I_00:.*]], ptr %[[I_03:.*]], align 4
+// CHECK: %{{.*}} = call i32 @__kmpc_omp_task(ptr {{.*}}, i32 %[[Gid_01:.*]], ptr %[[I_01:.*]])
+ omp.task priority(%4 : i32) {
+ llvm.call @test_01() : () -> ()
+ omp.terminator
+ }
+// CHECK: %[[Gid_02:.*]] = call i32 @__kmpc_global_thread_num(ptr {{.*}})
+// CHECK: %[[I_04:.*]] = call ptr @__kmpc_omp_task_alloc(ptr {{.*}}, i32 %[[Gid_02:.*]], i32 35, i64 40, i64 0, ptr @{{.*}})
+// CHECK: %[[I_05:.*]] = getelementptr inbounds { ptr }, ptr %[[I_04:.*]], i32 0, i32 0
+// CHECK: %[[I_06:.*]] = getelementptr inbounds { ptr, ptr, i32, ptr, ptr }, ptr %[[I_05:.*]], i32 0, i32 4
+// CHECK: store i32 4, ptr %[[I_06:.*]], align 4
+// CHECK: %{{.*}} = call i32 @__kmpc_omp_task(ptr {{.*}}, i32 %[[Gid_02:.*]], ptr %[[I_04:.*]])
+ omp.task final(%3) priority(%2 : i32) {
+ llvm.call @test_02() : () -> ()
+ omp.terminator
+ }
+ llvm.return
+// CHECK: ret void
+// CHECK: }
+}
+
+// -----
+
// CHECK-LABEL: @omp_opaque_pointers
// CHECK-SAME: (ptr %[[ARG0:.*]], ptr %[[ARG1:.*]], i32 %[[EXPR:.*]])
llvm.func @omp_opaque_pointers(%arg0 : !llvm.ptr, %arg1: !llvm.ptr, %expr: i32) -> () {
diff --git a/mlir/test/Target/LLVMIR/openmp-todo.mlir b/mlir/test/Target/LLVMIR/openmp-todo.mlir
index 8f3e466cfbbeb6..6bbf34502b4970 100644
--- a/mlir/test/Target/LLVMIR/openmp-todo.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-todo.mlir
@@ -429,17 +429,6 @@ llvm.func @task_in_reduction(%x : !llvm.ptr) {
// -----
-llvm.func @task_priority(%x : i32) {
- // expected-error at below {{not yet implemented: Unhandled clause priority in omp.task operation}}
- // expected-error at below {{LLVM Translation failed for operation: omp.task}}
- omp.task priority(%x : i32) {
- omp.terminator
- }
- llvm.return
-}
-
-// -----
-
llvm.func @task_untied() {
// expected-error at below {{not yet implemented: Unhandled clause untied in omp.task operation}}
// expected-error at below {{LLVM Translation failed for operation: omp.task}}
>From 81adf56f3cda3595c7eba4bd169dcc05ce2d48f2 Mon Sep 17 00:00:00 2001
From: Thirumalai-Shaktivel <thirumalaishaktivel at gmail.com>
Date: Fri, 20 Dec 2024 11:19:04 +0000
Subject: [PATCH 2/5] fix: Remove the duplicate check
---
.../LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
index c4e72b16cc221b..e8009e7d4a1868 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
@@ -267,16 +267,15 @@ static LogicalResult checkImplementationStatus(Operation &op) {
checkDepend(op, result);
checkNowait(op, result);
})
+ .Case([&](omp::TaskloopOp op) {
+ // TODO: Add other clauses check
+ checkPriority(op, result);
+ })
.Case([&](omp::WsloopOp op) {
checkAllocate(op, result);
checkLinear(op, result);
checkOrder(op, result);
})
- .Case([&](omp::TaskloopOp op) {
- // TODO: Add other clauses check
- checkPriority(op, result);
- checkUntied(op, result);
- })
.Case([&](omp::ParallelOp op) { checkAllocate(op, result); })
.Case([&](omp::SimdOp op) {
checkAligned(op, result);
>From 4309b80a834606ae9667b49d0f4bc005ac55c715 Mon Sep 17 00:00:00 2001
From: Thirumalai-Shaktivel <thirumalaishaktivel at gmail.com>
Date: Thu, 26 Dec 2024 04:56:47 +0000
Subject: [PATCH 3/5] Add another GEP to get the actual priority location
---
llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp | 19 ++++++++++-------
mlir/test/Target/LLVMIR/openmp-llvm.mlir | 26 ++++++++++++-----------
2 files changed, 25 insertions(+), 20 deletions(-)
diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
index 7a36aaad277249..44e7a7228109c4 100644
--- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -1973,18 +1973,21 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createTask(
// data2 is used for priority
//
Type *Int32Ty = Builder.getInt32Ty();
+ Constant *zero = ConstantInt::get(Int32Ty, 0);
// kmp_task_t* => { ptr }
- Type *taskPtr = StructType::get(VoidPtr);
+ Type *TaskPtr = StructType::get(VoidPtr);
Value *taskGEP = Builder.CreateInBoundsGEP(
- taskPtr, TaskData,
- {ConstantInt::get(Int32Ty, 0), ConstantInt::get(Int32Ty, 0)});
+ TaskPtr, TaskData, {zero, zero});
// kmp_task_t => { ptr, ptr, i32, ptr, ptr }
- Type *taskStructType = StructType::get(
+ Type *TaskStructType = StructType::get(
VoidPtr, VoidPtr, Builder.getInt32Ty(), VoidPtr, VoidPtr);
- Value *priorityData = Builder.CreateInBoundsGEP(
- taskStructType, taskGEP,
- {ConstantInt::get(Int32Ty, 0), ConstantInt::get(Int32Ty, 4)});
- Builder.CreateStore(Priority, priorityData);
+ Value *PriorityData = Builder.CreateInBoundsGEP(
+ TaskStructType, taskGEP, {zero, ConstantInt::get(Int32Ty, 4)});
+ // kmp_cmplrdata_t => { ptr, ptr }
+ Type *CmplrStructType = StructType::get(VoidPtr, VoidPtr);
+ Value *CmplrData = Builder.CreateInBoundsGEP(
+ CmplrStructType, PriorityData, {zero, zero});
+ Builder.CreateStore(Priority, CmplrData);
}
Value *DepArray = nullptr;
diff --git a/mlir/test/Target/LLVMIR/openmp-llvm.mlir b/mlir/test/Target/LLVMIR/openmp-llvm.mlir
index fc21a008bf7caa..f8ace7ad62d8cb 100644
--- a/mlir/test/Target/LLVMIR/openmp-llvm.mlir
+++ b/mlir/test/Target/LLVMIR/openmp-llvm.mlir
@@ -2843,22 +2843,24 @@ llvm.func @_QPomp_task_priority() {
%2 = llvm.mlir.constant(4 : i32) : i32
%3 = llvm.mlir.constant(true) : i1
%4 = llvm.load %1 : !llvm.ptr -> i32
-// CHECK: %[[Gid_01:.*]] = call i32 @__kmpc_global_thread_num(ptr {{.*}})
-// CHECK: %[[I_01:.*]] = call ptr @__kmpc_omp_task_alloc(ptr {{.*}}, i32 %[[Gid_01:.*]], i32 33, i64 40, i64 0, ptr @{{.*}})
-// CHECK: %[[I_02:.*]] = getelementptr inbounds { ptr }, ptr %[[I_01:.*]], i32 0, i32 0
-// CHECK: %[[I_03:.*]] = getelementptr inbounds { ptr, ptr, i32, ptr, ptr }, ptr %[[I_02:.*]], i32 0, i32 4
-// CHECK: store i32 %[[I_00:.*]], ptr %[[I_03:.*]], align 4
-// CHECK: %{{.*}} = call i32 @__kmpc_omp_task(ptr {{.*}}, i32 %[[Gid_01:.*]], ptr %[[I_01:.*]])
+// CHECK: %[[GID_01:.*]] = call i32 @__kmpc_global_thread_num(ptr {{.*}})
+// CHECK: %[[I_01:.*]] = call ptr @__kmpc_omp_task_alloc(ptr {{.*}}, i32 %[[GID_01]], i32 33, i64 40, i64 0, ptr @{{.*}})
+// CHECK: %[[I_02:.*]] = getelementptr inbounds { ptr }, ptr %[[I_01]], i32 0, i32 0
+// CHECK: %[[I_03:.*]] = getelementptr inbounds { ptr, ptr, i32, ptr, ptr }, ptr %[[I_02]], i32 0, i32 4
+// CHECK: %[[I_04:.*]] = getelementptr inbounds { ptr, ptr }, ptr %[[I_03]], i32 0, i32 0
+// CHECK: store i32 {{.*}}, ptr %[[I_04]], align 4
+// CHECK: %{{.*}} = call i32 @__kmpc_omp_task(ptr {{.*}}, i32 %[[GID_01]], ptr %[[I_01]])
omp.task priority(%4 : i32) {
llvm.call @test_01() : () -> ()
omp.terminator
}
-// CHECK: %[[Gid_02:.*]] = call i32 @__kmpc_global_thread_num(ptr {{.*}})
-// CHECK: %[[I_04:.*]] = call ptr @__kmpc_omp_task_alloc(ptr {{.*}}, i32 %[[Gid_02:.*]], i32 35, i64 40, i64 0, ptr @{{.*}})
-// CHECK: %[[I_05:.*]] = getelementptr inbounds { ptr }, ptr %[[I_04:.*]], i32 0, i32 0
-// CHECK: %[[I_06:.*]] = getelementptr inbounds { ptr, ptr, i32, ptr, ptr }, ptr %[[I_05:.*]], i32 0, i32 4
-// CHECK: store i32 4, ptr %[[I_06:.*]], align 4
-// CHECK: %{{.*}} = call i32 @__kmpc_omp_task(ptr {{.*}}, i32 %[[Gid_02:.*]], ptr %[[I_04:.*]])
+// CHECK: %[[GID_02:.*]] = call i32 @__kmpc_global_thread_num(ptr {{.*}})
+// CHECK: %[[I_05:.*]] = call ptr @__kmpc_omp_task_alloc(ptr {{.*}}, i32 %[[GID_02]], i32 35, i64 40, i64 0, ptr @{{.*}})
+// CHECK: %[[I_06:.*]] = getelementptr inbounds { ptr }, ptr %[[I_05]], i32 0, i32 0
+// CHECK: %[[I_07:.*]] = getelementptr inbounds { ptr, ptr, i32, ptr, ptr }, ptr %[[I_06]], i32 0, i32 4
+// CHECK: %[[I_08:.*]] = getelementptr inbounds { ptr, ptr }, ptr %[[I_07]], i32 0, i32 0
+// CHECK: store i32 4, ptr %[[I_08]], align 4
+// CHECK: %{{.*}} = call i32 @__kmpc_omp_task(ptr {{.*}}, i32 %[[GID_02]], ptr %[[I_05]])
omp.task final(%3) priority(%2 : i32) {
llvm.call @test_02() : () -> ()
omp.terminator
>From 287a709170bdfd15e7de11c1dd11f71be5ca0921 Mon Sep 17 00:00:00 2001
From: Thirumalai-Shaktivel <thirumalaishaktivel at gmail.com>
Date: Thu, 26 Dec 2024 04:59:48 +0000
Subject: [PATCH 4/5] Fix Variable name to follow the guidelines
---
llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
index 44e7a7228109c4..494cfad04a942c 100644
--- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -1973,20 +1973,20 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createTask(
// data2 is used for priority
//
Type *Int32Ty = Builder.getInt32Ty();
- Constant *zero = ConstantInt::get(Int32Ty, 0);
+ Constant *Zero = ConstantInt::get(Int32Ty, 0);
// kmp_task_t* => { ptr }
Type *TaskPtr = StructType::get(VoidPtr);
- Value *taskGEP = Builder.CreateInBoundsGEP(
- TaskPtr, TaskData, {zero, zero});
+ Value *TaskGEP = Builder.CreateInBoundsGEP(
+ TaskPtr, TaskData, {Zero, Zero});
// kmp_task_t => { ptr, ptr, i32, ptr, ptr }
Type *TaskStructType = StructType::get(
VoidPtr, VoidPtr, Builder.getInt32Ty(), VoidPtr, VoidPtr);
Value *PriorityData = Builder.CreateInBoundsGEP(
- TaskStructType, taskGEP, {zero, ConstantInt::get(Int32Ty, 4)});
+ TaskStructType, TaskGEP, {Zero, ConstantInt::get(Int32Ty, 4)});
// kmp_cmplrdata_t => { ptr, ptr }
Type *CmplrStructType = StructType::get(VoidPtr, VoidPtr);
Value *CmplrData = Builder.CreateInBoundsGEP(
- CmplrStructType, PriorityData, {zero, zero});
+ CmplrStructType, PriorityData, {Zero, Zero});
Builder.CreateStore(Priority, CmplrData);
}
>From 870261892b8e9c2f0056a96f53169a2977ca160d Mon Sep 17 00:00:00 2001
From: Thirumalai-Shaktivel <thirumalaishaktivel at gmail.com>
Date: Thu, 26 Dec 2024 09:38:47 +0000
Subject: [PATCH 5/5] Fix formatting
---
llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
index 494cfad04a942c..6a979c5c1698dd 100644
--- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -1976,8 +1976,8 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createTask(
Constant *Zero = ConstantInt::get(Int32Ty, 0);
// kmp_task_t* => { ptr }
Type *TaskPtr = StructType::get(VoidPtr);
- Value *TaskGEP = Builder.CreateInBoundsGEP(
- TaskPtr, TaskData, {Zero, Zero});
+ Value *TaskGEP =
+ Builder.CreateInBoundsGEP(TaskPtr, TaskData, {Zero, Zero});
// kmp_task_t => { ptr, ptr, i32, ptr, ptr }
Type *TaskStructType = StructType::get(
VoidPtr, VoidPtr, Builder.getInt32Ty(), VoidPtr, VoidPtr);
@@ -1985,8 +1985,8 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createTask(
TaskStructType, TaskGEP, {Zero, ConstantInt::get(Int32Ty, 4)});
// kmp_cmplrdata_t => { ptr, ptr }
Type *CmplrStructType = StructType::get(VoidPtr, VoidPtr);
- Value *CmplrData = Builder.CreateInBoundsGEP(
- CmplrStructType, PriorityData, {Zero, Zero});
+ Value *CmplrData = Builder.CreateInBoundsGEP(CmplrStructType,
+ PriorityData, {Zero, Zero});
Builder.CreateStore(Priority, CmplrData);
}
More information about the Mlir-commits
mailing list