[PATCH] D102008: [OpenMP]Add support for workshare loop modifier in lowering
Mats Petersson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri May 14 05:40:19 PDT 2021
Leporacanthicus updated this revision to Diff 345413.
Leporacanthicus added a comment.
Remove the code that add in modifiers to the scheduling type,
as per review comments.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D102008/new/
https://reviews.llvm.org/D102008
Files:
llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
Index: llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
===================================================================
--- llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+++ llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
@@ -1721,7 +1721,7 @@
omp::OMPScheduleType SchedType = GetParam();
uint32_t ChunkSize = 1;
- switch (SchedType) {
+ switch (SchedType & ~omp::OMPScheduleType::ModifierMask) {
case omp::OMPScheduleType::DynamicChunked:
case omp::OMPScheduleType::GuidedChunked:
ChunkSize = 7;
@@ -1794,8 +1794,9 @@
EXPECT_EQ(InitCall->getCalledFunction()->getName(),
"__kmpc_dispatch_init_4u");
EXPECT_EQ(InitCall->getNumArgOperands(), 7U);
- EXPECT_EQ(InitCall->getArgOperand(6),
- ConstantInt::get(Type::getInt32Ty(Ctx), ChunkSize));
+ EXPECT_EQ(InitCall->getArgOperand(6), ConstantInt::get(LCTy, ChunkSize));
+ ConstantInt *SchedVal = cast<ConstantInt>(InitCall->getArgOperand(2));
+ EXPECT_EQ(SchedVal->getValue(), static_cast<uint64_t>(SchedType));
ConstantInt *OrigLowerBound =
dyn_cast<ConstantInt>(LowerBoundStore->getValueOperand());
@@ -1827,12 +1828,23 @@
EXPECT_FALSE(verifyModule(*M, &errs()));
}
-INSTANTIATE_TEST_CASE_P(OpenMPWSLoopSchedulingTypes,
- OpenMPIRBuilderTestWithParams,
- ::testing::Values(omp::OMPScheduleType::DynamicChunked,
- omp::OMPScheduleType::GuidedChunked,
- omp::OMPScheduleType::Auto,
- omp::OMPScheduleType::Runtime));
+INSTANTIATE_TEST_CASE_P(
+ OpenMPWSLoopSchedulingTypes, OpenMPIRBuilderTestWithParams,
+ ::testing::Values(omp::OMPScheduleType::DynamicChunked,
+ omp::OMPScheduleType::GuidedChunked,
+ omp::OMPScheduleType::Auto, omp::OMPScheduleType::Runtime,
+ omp::OMPScheduleType::DynamicChunked |
+ omp::OMPScheduleType::ModifierMonotonic,
+ omp::OMPScheduleType::DynamicChunked |
+ omp::OMPScheduleType::ModifierNonmonotonic,
+ omp::OMPScheduleType::GuidedChunked |
+ omp::OMPScheduleType::ModifierMonotonic,
+ omp::OMPScheduleType::GuidedChunked |
+ omp::OMPScheduleType::ModifierNonmonotonic,
+ omp::OMPScheduleType::Auto |
+ omp::OMPScheduleType::ModifierMonotonic,
+ omp::OMPScheduleType::Runtime |
+ omp::OMPScheduleType::ModifierMonotonic));
TEST_F(OpenMPIRBuilderTest, MasterDirective) {
using InsertPointTy = OpenMPIRBuilder::InsertPointTy;
Index: llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
===================================================================
--- llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -1431,10 +1431,8 @@
Value *ThreadNum = getOrCreateThreadID(SrcLoc);
- OMPScheduleType DynamicSchedType =
- SchedType | OMPScheduleType::ModifierNonmonotonic;
Constant *SchedulingType =
- ConstantInt::get(I32Type, static_cast<int>(DynamicSchedType));
+ ConstantInt::get(I32Type, static_cast<int>(SchedType));
// Call the "init" function.
Builder.CreateCall(DynamicInit,
Index: llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
===================================================================
--- llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
+++ llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
@@ -117,10 +117,12 @@
Runtime = 37,
Auto = 38, // auto
+ ModifierMonotonic =
+ (1 << 29), // Set if the monotonic schedule modifier was present */
ModifierNonmonotonic =
- (1 << 30), /**< Set if the nonmonotonic schedule modifier was present */
-
- LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue */ ModifierNonmonotonic)
+ (1 << 30), // Set if the nonmonotonic schedule modifier was present */
+ ModifierMask = ModifierMonotonic | ModifierNonmonotonic,
+ LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue */ ModifierMask)
};
} // end namespace omp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D102008.345413.patch
Type: text/x-patch
Size: 4194 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210514/ca705198/attachment.bin>
More information about the llvm-commits
mailing list