aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp')
-rw-r--r--llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
index 9bfe98a..bcf885d 100644
--- a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+++ b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
@@ -5312,4 +5312,55 @@ TEST_F(OpenMPIRBuilderTest, CreateTaskgroupWithTasks) {
verifyDFSOrder(F, RefOrder);
}
+TEST_F(OpenMPIRBuilderTest, EmitOffloadingArraysArguments) {
+ OpenMPIRBuilder OMPBuilder(*M);
+ OMPBuilder.initialize();
+
+ IRBuilder<> Builder(BB);
+
+ OpenMPIRBuilder::TargetDataRTArgs RTArgs;
+ OpenMPIRBuilder::TargetDataInfo Info(true, false);
+
+ auto VoidPtrTy = Type::getInt8PtrTy(Builder.getContext());
+ auto VoidPtrPtrTy = VoidPtrTy->getPointerTo(0);
+ auto Int64Ty = Type::getInt64Ty(Builder.getContext());
+ auto Int64PtrTy = Type::getInt64PtrTy(Builder.getContext());
+ auto Array4VoidPtrTy = ArrayType::get(VoidPtrTy, 4);
+ auto Array4Int64PtrTy = ArrayType::get(Int64Ty, 4);
+
+ Info.RTArgs.BasePointersArray =
+ ConstantPointerNull::get(Array4VoidPtrTy->getPointerTo(0));
+ Info.RTArgs.PointersArray =
+ ConstantPointerNull::get(Array4VoidPtrTy->getPointerTo());
+ Info.RTArgs.SizesArray =
+ ConstantPointerNull::get(Array4Int64PtrTy->getPointerTo());
+ Info.RTArgs.MapTypesArray =
+ ConstantPointerNull::get(Array4Int64PtrTy->getPointerTo());
+ Info.RTArgs.MapNamesArray =
+ ConstantPointerNull::get(Array4VoidPtrTy->getPointerTo());
+ Info.RTArgs.MappersArray =
+ ConstantPointerNull::get(Array4VoidPtrTy->getPointerTo());
+ Info.NumberOfPtrs = 4;
+
+ OMPBuilder.emitOffloadingArraysArgument(Builder, RTArgs, Info, false, false);
+
+ EXPECT_NE(RTArgs.BasePointersArray, nullptr);
+ EXPECT_NE(RTArgs.PointersArray, nullptr);
+ EXPECT_NE(RTArgs.SizesArray, nullptr);
+ EXPECT_NE(RTArgs.MapTypesArray, nullptr);
+ EXPECT_NE(RTArgs.MappersArray, nullptr);
+ EXPECT_NE(RTArgs.MapNamesArray, nullptr);
+ EXPECT_EQ(RTArgs.MapTypesArrayEnd, nullptr);
+
+ EXPECT_EQ(RTArgs.BasePointersArray->getType(), VoidPtrPtrTy);
+ RTArgs.BasePointersArray->getType()->dump();
+ VoidPtrTy->dump();
+ EXPECT_EQ(RTArgs.PointersArray->getType(), VoidPtrPtrTy);
+ EXPECT_EQ(RTArgs.SizesArray->getType(), Int64PtrTy);
+ RTArgs.SizesArray->getType()->dump();
+ Int64PtrTy->dump();
+ EXPECT_EQ(RTArgs.MapTypesArray->getType(), Int64PtrTy);
+ EXPECT_EQ(RTArgs.MappersArray->getType(), VoidPtrPtrTy);
+ EXPECT_EQ(RTArgs.MapNamesArray->getType(), VoidPtrPtrTy);
+}
} // namespace