diff options
author | Jan Sjodin <jan_sjodin@yahoo.com> | 2022-09-29 09:26:25 -0500 |
---|---|---|
committer | Jan Sjodin <jan_sjodin@yahoo.com> | 2022-10-07 07:03:03 -0500 |
commit | 4627cef1134f99f3802a5ebfe26188d2c66da22f (patch) | |
tree | 34a9e93965e5a15627bc1bfea4e77ad90da69321 /llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp | |
parent | 14e2592ff6112d1869ba1533d058822200162bf1 (diff) | |
download | llvm-4627cef1134f99f3802a5ebfe26188d2c66da22f.zip llvm-4627cef1134f99f3802a5ebfe26188d2c66da22f.tar.gz llvm-4627cef1134f99f3802a5ebfe26188d2c66da22f.tar.bz2 |
[OpenMP][OMPIRBuilder] Migrate emitOffloadingArraysArgument from clang
This patch moves the emitOffloadingArraysArgument function and
supporting data structures to OpenMPIRBuilder. This will later be used
in flang as well. The TargetDataInfo class was split up into generic
information and clang-specific data, which remain in clang. Further
migration will be done in in the future.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D134662
Diffstat (limited to 'llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp')
-rw-r--r-- | llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp | 51 |
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 |