From ce92e4eec5fe053cabcf049f8c747c069dc09dfc Mon Sep 17 00:00:00 2001 From: Thirumalai-Shaktivel 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 4ce47b1c05d9b..21a0988ac784b 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 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 0d8dbbe3a8a71..7a36aaad27724 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 Dependencies, bool Mergeable, Value *EventHandle) { + SmallVector 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 060113c412324..c4e72b16cc221 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 5f8bdf8afdf78..fc21a008bf7ca 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 8f3e466cfbbeb..6bbf34502b497 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@below {{not yet implemented: Unhandled clause priority in omp.task operation}} - // expected-error@below {{LLVM Translation failed for operation: omp.task}} - omp.task priority(%x : i32) { - omp.terminator - } - llvm.return -} - -// ----- - llvm.func @task_untied() { // expected-error@below {{not yet implemented: Unhandled clause untied in omp.task operation}} // expected-error@below {{LLVM Translation failed for operation: omp.task}} From 81adf56f3cda3595c7eba4bd169dcc05ce2d48f2 Mon Sep 17 00:00:00 2001 From: Thirumalai-Shaktivel 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 c4e72b16cc221..e8009e7d4a186 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 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 7a36aaad27724..44e7a7228109c 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 fc21a008bf7ca..f8ace7ad62d8c 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 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 44e7a7228109c..494cfad04a942 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 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 494cfad04a942..6a979c5c1698d 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); }