[llvm] 966667f - [NFC][HLSL] Refactor DXILResourceTest for upcoming PR (#134952)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 10 12:56:38 PDT 2025
Author: Ashley Coleman
Date: 2025-04-10T13:56:34-06:00
New Revision: 966667f5419d6cdd8d02fdf9ad2e39c0a2f94fe1
URL: https://github.com/llvm/llvm-project/commit/966667f5419d6cdd8d02fdf9ad2e39c0a2f94fe1
DIFF: https://github.com/llvm/llvm-project/commit/966667f5419d6cdd8d02fdf9ad2e39c0a2f94fe1.diff
LOG: [NFC][HLSL] Refactor DXILResourceTest for upcoming PR (#134952)
Local changes were getting pretty large and complex so this is an NFC
refactor PR to simplify the upcoming changes
Added:
Modified:
llvm/unittests/Analysis/DXILResourceTest.cpp
Removed:
################################################################################
diff --git a/llvm/unittests/Analysis/DXILResourceTest.cpp b/llvm/unittests/Analysis/DXILResourceTest.cpp
index 66549067a354c..6f25983801fc3 100644
--- a/llvm/unittests/Analysis/DXILResourceTest.cpp
+++ b/llvm/unittests/Analysis/DXILResourceTest.cpp
@@ -64,7 +64,12 @@ testing::AssertionResult MDTupleEq(const char *LHSExpr, const char *RHSExpr,
<< "Which is:\n"
<< " " << RHSRepr;
}
+
#define EXPECT_MDEQ(X, Y) EXPECT_PRED_FORMAT2(MDTupleEq, X, Y)
+
+#define EXPECT_PROPS_EQ(X, Y, Z) \
+ EXPECT_EQ(X, (std::pair<uint32_t, uint32_t>{Y, Z}))
+
} // namespace
TEST(DXILResource, AnnotationsAndMetadata) {
@@ -88,326 +93,337 @@ TEST(DXILResource, AnnotationsAndMetadata) {
MDBuilder TestMD(Context, Int32Ty, Int1Ty);
// ByteAddressBuffer Buffer;
- ResourceTypeInfo RTI(llvm::TargetExtType::get(
- Context, "dx.RawBuffer", Int8Ty, {/*IsWriteable=*/0, /*IsROV=*/0}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::SRV);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::RawBuffer);
-
- ResourceInfo RI(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GlobalVariable *GV = RI.createSymbol(M, RTI.createElementStruct(), "Buffer");
- std::pair<uint32_t, uint32_t> Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x0000000bU);
- EXPECT_EQ(Props.second, 0U);
- MDTuple *MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(0, GV, "Buffer", 0, 0, 1, 11, 0, nullptr));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.RawBuffer", Int8Ty, {/*IsWriteable=*/0, /*IsROV=*/0}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::SRV);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::RawBuffer);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "Buffer");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x0000000bU, 0U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "Buffer", 0, 0, 1, 11, 0, nullptr));
+ }
// RWByteAddressBuffer BufferOut : register(u3, space2);
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(
- Context, "dx.RawBuffer", Int8Ty, {/*IsWriteable=*/1, /*IsROV=*/0}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
- EXPECT_EQ(RTI.getUAV().GloballyCoherent, false);
- EXPECT_EQ(RTI.getUAV().HasCounter, false);
- EXPECT_EQ(RTI.getUAV().IsROV, false);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::RawBuffer);
-
- RI = ResourceInfo(
- /*RecordID=*/1, /*Space=*/2, /*LowerBound=*/3, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "BufferOut");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x0000100bU);
- EXPECT_EQ(Props.second, 0U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(1, GV, "BufferOut", 2, 3, 1, 11, false, false,
- false, nullptr));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.RawBuffer", Int8Ty, {/*IsWriteable=*/1, /*IsROV=*/0}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
+ EXPECT_EQ(RTI.getUAV().GloballyCoherent, false);
+ EXPECT_EQ(RTI.getUAV().HasCounter, false);
+ EXPECT_EQ(RTI.getUAV().IsROV, false);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::RawBuffer);
+
+ ResourceInfo RI(
+ /*RecordID=*/1, /*Space=*/2, /*LowerBound=*/3, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "BufferOut");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x0000100bU, 0U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(1, GV, "BufferOut", 2, 3, 1, 11, false, false, false,
+ nullptr));
+ }
// struct BufType0 { int i; float f; double d; };
// StructuredBuffer<BufType0> Buffer0 : register(t0);
- StructType *BufType0 =
- StructType::create(Context, {Int32Ty, FloatTy, DoubleTy}, "BufType0");
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(
- Context, "dx.RawBuffer", BufType0, {/*IsWriteable=*/0, /*IsROV=*/0}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::SRV);
- ASSERT_EQ(RTI.isStruct(), true);
- EXPECT_EQ(RTI.getStruct(DL).Stride, 16u);
- EXPECT_EQ(RTI.getStruct(DL).AlignLog2, Log2(Align(8)));
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::StructuredBuffer);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "Buffer0");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x0000030cU);
- EXPECT_EQ(Props.second, 0x00000010U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD,
- TestMD.get(0, GV, "Buffer0", 0, 0, 1, 12, 0, TestMD.get(1, 16)));
+ {
+ StructType *BufType0 =
+ StructType::create(Context, {Int32Ty, FloatTy, DoubleTy}, "BufType0");
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.RawBuffer", BufType0, {/*IsWriteable=*/0, /*IsROV=*/0}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::SRV);
+ ASSERT_EQ(RTI.isStruct(), true);
+ EXPECT_EQ(RTI.getStruct(DL).Stride, 16u);
+ EXPECT_EQ(RTI.getStruct(DL).AlignLog2, Log2(Align(8)));
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::StructuredBuffer);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "Buffer0");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x0000030cU, 0x00000010U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI), TestMD.get(0, GV, "Buffer0", 0, 0, 1,
+ 12, 0, TestMD.get(1, 16)));
+ }
// StructuredBuffer<float3> Buffer1 : register(t1);
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(
- Context, "dx.RawBuffer", Floatx3Ty, {/*IsWriteable=*/0, /*IsROV=*/0}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::SRV);
- ASSERT_EQ(RTI.isStruct(), true);
- EXPECT_EQ(RTI.getStruct(DL).Stride, 12u);
- EXPECT_EQ(RTI.getStruct(DL).AlignLog2, 0u);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::StructuredBuffer);
-
- RI = ResourceInfo(
- /*RecordID=*/1, /*Space=*/0, /*LowerBound=*/1, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "Buffer1");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x0000000cU);
- EXPECT_EQ(Props.second, 0x0000000cU);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD,
- TestMD.get(1, GV, "Buffer1", 0, 1, 1, 12, 0, TestMD.get(1, 12)));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.RawBuffer", Floatx3Ty, {/*IsWriteable=*/0, /*IsROV=*/0}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::SRV);
+ ASSERT_EQ(RTI.isStruct(), true);
+ EXPECT_EQ(RTI.getStruct(DL).Stride, 12u);
+ EXPECT_EQ(RTI.getStruct(DL).AlignLog2, 0u);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::StructuredBuffer);
+
+ ResourceInfo RI(
+ /*RecordID=*/1, /*Space=*/0, /*LowerBound=*/1, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "Buffer1");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x0000000cU, 0x0000000cU);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI), TestMD.get(1, GV, "Buffer1", 0, 1, 1,
+ 12, 0, TestMD.get(1, 12)));
+ }
// Texture2D<float4> ColorMapTexture : register(t2);
- RTI = ResourceTypeInfo(
- llvm::TargetExtType::get(Context, "dx.Texture", Floatx4Ty,
- {/*IsWriteable=*/0, /*IsROV=*/0, /*IsSigned=*/0,
- llvm::to_underlying(ResourceKind::Texture2D)}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::SRV);
- ASSERT_EQ(RTI.isTyped(), true);
- EXPECT_EQ(RTI.getTyped().ElementTy, ElementType::F32);
- EXPECT_EQ(RTI.getTyped().ElementCount, 4u);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Texture2D);
-
- RI = ResourceInfo(
- /*RecordID=*/2, /*Space=*/0, /*LowerBound=*/2, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "ColorMapTexture");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x00000002U);
- EXPECT_EQ(Props.second, 0x00000409U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(2, GV, "ColorMapTexture", 0, 2, 1, 2, 0,
- TestMD.get(0, 9)));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.Texture", Floatx4Ty,
+ {/*IsWriteable=*/0, /*IsROV=*/0, /*IsSigned=*/0,
+ llvm::to_underlying(ResourceKind::Texture2D)}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::SRV);
+ ASSERT_EQ(RTI.isTyped(), true);
+ EXPECT_EQ(RTI.getTyped().ElementTy, ElementType::F32);
+ EXPECT_EQ(RTI.getTyped().ElementCount, 4u);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Texture2D);
+
+ ResourceInfo RI(
+ /*RecordID=*/2, /*Space=*/0, /*LowerBound=*/2, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "ColorMapTexture");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x00000002U, 0x00000409U);
+ EXPECT_MDEQ(
+ RI.getAsMetadata(M, RTI),
+ TestMD.get(2, GV, "ColorMapTexture", 0, 2, 1, 2, 0, TestMD.get(0, 9)));
+ }
// Texture2DMS<float, 8> DepthBuffer : register(t0);
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(
- Context, "dx.MSTexture", FloatTy,
- {/*IsWriteable=*/0, /*SampleCount=*/8,
- /*IsSigned=*/0, llvm::to_underlying(ResourceKind::Texture2DMS)}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::SRV);
- ASSERT_EQ(RTI.isTyped(), true);
- EXPECT_EQ(RTI.getTyped().ElementTy, ElementType::F32);
- EXPECT_EQ(RTI.getTyped().ElementCount, 1u);
- ASSERT_EQ(RTI.isMultiSample(), true);
- EXPECT_EQ(RTI.getMultiSampleCount(), 8u);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Texture2DMS);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "DepthBuffer");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x00000003U);
- EXPECT_EQ(Props.second, 0x00080109U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(
- MD, TestMD.get(0, GV, "DepthBuffer", 0, 0, 1, 3, 8, TestMD.get(0, 9)));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.MSTexture", FloatTy,
+ {/*IsWriteable=*/0, /*SampleCount=*/8,
+ /*IsSigned=*/0, llvm::to_underlying(ResourceKind::Texture2DMS)}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::SRV);
+ ASSERT_EQ(RTI.isTyped(), true);
+ EXPECT_EQ(RTI.getTyped().ElementTy, ElementType::F32);
+ EXPECT_EQ(RTI.getTyped().ElementCount, 1u);
+ ASSERT_EQ(RTI.isMultiSample(), true);
+ EXPECT_EQ(RTI.getMultiSampleCount(), 8u);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Texture2DMS);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "DepthBuffer");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x00000003U, 0x00080109U);
+ EXPECT_MDEQ(
+ RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "DepthBuffer", 0, 0, 1, 3, 8, TestMD.get(0, 9)));
+ }
// FeedbackTexture2D<SAMPLER_FEEDBACK_MIN_MIP> feedbackMinMip;
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(
- Context, "dx.FeedbackTexture", {},
- {llvm::to_underlying(SamplerFeedbackType::MinMip),
- llvm::to_underlying(ResourceKind::FeedbackTexture2D)}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
- ASSERT_EQ(RTI.isFeedback(), true);
- EXPECT_EQ(RTI.getFeedbackType(), SamplerFeedbackType::MinMip);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::FeedbackTexture2D);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "feedbackMinMip");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x00001011U);
- EXPECT_EQ(Props.second, 0U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(0, GV, "feedbackMinMip", 0, 0, 1, 17, false, false,
- false, TestMD.get(2, 0)));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.FeedbackTexture", {},
+ {llvm::to_underlying(SamplerFeedbackType::MinMip),
+ llvm::to_underlying(ResourceKind::FeedbackTexture2D)}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
+ ASSERT_EQ(RTI.isFeedback(), true);
+ EXPECT_EQ(RTI.getFeedbackType(), SamplerFeedbackType::MinMip);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::FeedbackTexture2D);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "feedbackMinMip");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x00001011U, 0U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "feedbackMinMip", 0, 0, 1, 17, false, false,
+ false, TestMD.get(2, 0)));
+ }
// FeedbackTexture2DArray<SAMPLER_FEEDBACK_MIP_REGION_USED> feedbackMipRegion;
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(
- Context, "dx.FeedbackTexture", {},
- {llvm::to_underlying(SamplerFeedbackType::MipRegionUsed),
- llvm::to_underlying(ResourceKind::FeedbackTexture2DArray)}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
- ASSERT_EQ(RTI.isFeedback(), true);
- EXPECT_EQ(RTI.getFeedbackType(), SamplerFeedbackType::MipRegionUsed);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::FeedbackTexture2DArray);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "feedbackMipRegion");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x00001012U);
- EXPECT_EQ(Props.second, 0x00000001U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(0, GV, "feedbackMipRegion", 0, 0, 1, 18, false,
- false, false, TestMD.get(2, 1)));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.FeedbackTexture", {},
+ {llvm::to_underlying(SamplerFeedbackType::MipRegionUsed),
+ llvm::to_underlying(ResourceKind::FeedbackTexture2DArray)}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
+ ASSERT_EQ(RTI.isFeedback(), true);
+ EXPECT_EQ(RTI.getFeedbackType(), SamplerFeedbackType::MipRegionUsed);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::FeedbackTexture2DArray);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "feedbackMipRegion");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x00001012U, 0x00000001U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "feedbackMipRegion", 0, 0, 1, 18, false,
+ false, false, TestMD.get(2, 1)));
+ }
// globallycoherent RWTexture2D<int2> OutputTexture : register(u0, space2);
- RTI = ResourceTypeInfo(
- llvm::TargetExtType::get(Context, "dx.Texture", Int32x2Ty,
- {/*IsWriteable=*/1,
- /*IsROV=*/0, /*IsSigned=*/1,
- llvm::to_underlying(ResourceKind::Texture2D)}),
- /*GloballyCoherent=*/true, /*HasCounter=*/false);
-
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
- EXPECT_EQ(RTI.getUAV().GloballyCoherent, true);
- EXPECT_EQ(RTI.getUAV().HasCounter, false);
- EXPECT_EQ(RTI.getUAV().IsROV, false);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Texture2D);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/2, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "OutputTexture");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x00005002U);
- EXPECT_EQ(Props.second, 0x00000204U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(0, GV, "OutputTexture", 2, 0, 1, 2, true, false,
- false, TestMD.get(0, 4)));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.Texture", Int32x2Ty,
+ {/*IsWriteable=*/1,
+ /*IsROV=*/0, /*IsSigned=*/1,
+ llvm::to_underlying(ResourceKind::Texture2D)}),
+ /*GloballyCoherent=*/true, /*HasCounter=*/false);
+
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
+ EXPECT_EQ(RTI.getUAV().GloballyCoherent, true);
+ EXPECT_EQ(RTI.getUAV().HasCounter, false);
+ EXPECT_EQ(RTI.getUAV().IsROV, false);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Texture2D);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/2, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "OutputTexture");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x00005002U, 0x00000204U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "OutputTexture", 2, 0, 1, 2, true, false,
+ false, TestMD.get(0, 4)));
+ }
// RasterizerOrderedBuffer<float4> ROB;
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(
- Context, "dx.TypedBuffer", Floatx4Ty,
- {/*IsWriteable=*/1, /*IsROV=*/1, /*IsSigned=*/0}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
- EXPECT_EQ(RTI.getUAV().GloballyCoherent, false);
- EXPECT_EQ(RTI.getUAV().HasCounter, false);
- EXPECT_EQ(RTI.getUAV().IsROV, true);
- ASSERT_EQ(RTI.isTyped(), true);
- EXPECT_EQ(RTI.getTyped().ElementTy, ElementType::F32);
- EXPECT_EQ(RTI.getTyped().ElementCount, 4u);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::TypedBuffer);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "ROB");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x0000300aU);
- EXPECT_EQ(Props.second, 0x00000409U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(0, GV, "ROB", 0, 0, 1, 10, false, false, true,
- TestMD.get(0, 9)));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.TypedBuffer", Floatx4Ty,
+ {/*IsWriteable=*/1, /*IsROV=*/1, /*IsSigned=*/0}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
+ EXPECT_EQ(RTI.getUAV().GloballyCoherent, false);
+ EXPECT_EQ(RTI.getUAV().HasCounter, false);
+ EXPECT_EQ(RTI.getUAV().IsROV, true);
+ ASSERT_EQ(RTI.isTyped(), true);
+ EXPECT_EQ(RTI.getTyped().ElementTy, ElementType::F32);
+ EXPECT_EQ(RTI.getTyped().ElementCount, 4u);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::TypedBuffer);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV = RI.createSymbol(M, RTI.createElementStruct(), "ROB");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x0000300aU, 0x00000409U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "ROB", 0, 0, 1, 10, false, false, true,
+ TestMD.get(0, 9)));
+ }
// RWStructuredBuffer<ParticleMotion> g_OutputBuffer : register(u2);
- StructType *BufType1 = StructType::create(
- Context, {Floatx3Ty, FloatTy, Int32Ty}, "ParticleMotion");
- RTI = ResourceTypeInfo(
- llvm::TargetExtType::get(Context, "dx.RawBuffer", BufType1,
- {/*IsWriteable=*/1, /*IsROV=*/0}),
- /*GloballyCoherent=*/false, /*HasCounter=*/true);
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
- EXPECT_EQ(RTI.getUAV().GloballyCoherent, false);
- EXPECT_EQ(RTI.getUAV().HasCounter, true);
- EXPECT_EQ(RTI.getUAV().IsROV, false);
- ASSERT_EQ(RTI.isStruct(), true);
- EXPECT_EQ(RTI.getStruct(DL).Stride, 20u);
- EXPECT_EQ(RTI.getStruct(DL).AlignLog2, Log2(Align(4)));
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::StructuredBuffer);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/2, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "g_OutputBuffer");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x0000920cU);
- EXPECT_EQ(Props.second, 0x00000014U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(0, GV, "g_OutputBuffer", 0, 2, 1, 12, false, true,
- false, TestMD.get(1, 20)));
+ {
+ StructType *BufType1 = StructType::create(
+ Context, {Floatx3Ty, FloatTy, Int32Ty}, "ParticleMotion");
+ ResourceTypeInfo RTI(
+ llvm::TargetExtType::get(Context, "dx.RawBuffer", BufType1,
+ {/*IsWriteable=*/1, /*IsROV=*/0}),
+ /*GloballyCoherent=*/false, /*HasCounter=*/true);
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
+ EXPECT_EQ(RTI.getUAV().GloballyCoherent, false);
+ EXPECT_EQ(RTI.getUAV().HasCounter, true);
+ EXPECT_EQ(RTI.getUAV().IsROV, false);
+ ASSERT_EQ(RTI.isStruct(), true);
+ EXPECT_EQ(RTI.getStruct(DL).Stride, 20u);
+ EXPECT_EQ(RTI.getStruct(DL).AlignLog2, Log2(Align(4)));
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::StructuredBuffer);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/2, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "g_OutputBuffer");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x0000920cU, 0x00000014U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "g_OutputBuffer", 0, 2, 1, 12, false, true,
+ false, TestMD.get(1, 20)));
+ }
// RWTexture2DMSArray<uint, 8> g_rw_t2dmsa;
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(
- Context, "dx.MSTexture", Int32Ty,
- {/*IsWriteable=*/1, /*SampleCount=*/8, /*IsSigned=*/0,
- llvm::to_underlying(ResourceKind::Texture2DMSArray)}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
- EXPECT_EQ(RTI.getUAV().GloballyCoherent, false);
- EXPECT_EQ(RTI.getUAV().HasCounter, false);
- EXPECT_EQ(RTI.getUAV().IsROV, false);
- ASSERT_EQ(RTI.isTyped(), true);
- EXPECT_EQ(RTI.getTyped().ElementTy, ElementType::U32);
- EXPECT_EQ(RTI.getTyped().ElementCount, 1u);
- ASSERT_EQ(RTI.isMultiSample(), true);
- EXPECT_EQ(RTI.getMultiSampleCount(), 8u);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Texture2DMSArray);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "g_rw_t2dmsa");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x00001008U);
- EXPECT_EQ(Props.second, 0x00080105U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(0, GV, "g_rw_t2dmsa", 0, 0, 1, 8, false, false,
- false, TestMD.get(0, 5)));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.MSTexture", Int32Ty,
+ {/*IsWriteable=*/1, /*SampleCount=*/8, /*IsSigned=*/0,
+ llvm::to_underlying(ResourceKind::Texture2DMSArray)}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::UAV);
+ EXPECT_EQ(RTI.getUAV().GloballyCoherent, false);
+ EXPECT_EQ(RTI.getUAV().HasCounter, false);
+ EXPECT_EQ(RTI.getUAV().IsROV, false);
+ ASSERT_EQ(RTI.isTyped(), true);
+ EXPECT_EQ(RTI.getTyped().ElementTy, ElementType::U32);
+ EXPECT_EQ(RTI.getTyped().ElementCount, 1u);
+ ASSERT_EQ(RTI.isMultiSample(), true);
+ EXPECT_EQ(RTI.getMultiSampleCount(), 8u);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Texture2DMSArray);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "g_rw_t2dmsa");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x00001008U, 0x00080105U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "g_rw_t2dmsa", 0, 0, 1, 8, false, false,
+ false, TestMD.get(0, 5)));
+ }
// cbuffer cb0 { float4 g_X; float4 g_Y; }
- StructType *CBufType0 =
- StructType::create(Context, {Floatx4Ty, Floatx4Ty}, "cb0");
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(Context, "dx.CBuffer",
+ {
+ StructType *CBufType0 =
+ StructType::create(Context, {Floatx4Ty, Floatx4Ty}, "cb0");
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(Context, "dx.CBuffer",
CBufType0, {/*Size=*/32}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::CBuffer);
- EXPECT_EQ(RTI.getCBufferSize(DL), 32u);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::CBuffer);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x0000000dU);
- EXPECT_EQ(Props.second, 0x00000020U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(0, GV, "", 0, 0, 1, 32, nullptr));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::CBuffer);
+ EXPECT_EQ(RTI.getCBufferSize(DL), 32u);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::CBuffer);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV = RI.createSymbol(M, RTI.createElementStruct(), "");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x0000000dU, 0x00000020U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "", 0, 0, 1, 32, nullptr));
+ }
// SamplerState ColorMapSampler : register(s0);
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(
- Context, "dx.Sampler", {},
- {llvm::to_underlying(dxil::SamplerType::Default)}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::Sampler);
- EXPECT_EQ(RTI.getSamplerType(), dxil::SamplerType::Default);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Sampler);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "ColorMapSampler");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x0000000eU);
- EXPECT_EQ(Props.second, 0U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(0, GV, "ColorMapSampler", 0, 0, 1, 0, nullptr));
-
- RTI = ResourceTypeInfo(llvm::TargetExtType::get(
- Context, "dx.Sampler", {},
- {llvm::to_underlying(dxil::SamplerType::Comparison)}));
- EXPECT_EQ(RTI.getResourceClass(), ResourceClass::Sampler);
- EXPECT_EQ(RTI.getSamplerType(), dxil::SamplerType::Comparison);
- EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Sampler);
-
- RI = ResourceInfo(
- /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
- RTI.getHandleTy());
- GV = RI.createSymbol(M, RTI.createElementStruct(), "CmpSampler");
- Props = RI.getAnnotateProps(M, RTI);
- EXPECT_EQ(Props.first, 0x0000800eU);
- EXPECT_EQ(Props.second, 0U);
- MD = RI.getAsMetadata(M, RTI);
- EXPECT_MDEQ(MD, TestMD.get(0, GV, "CmpSampler", 0, 0, 1, 1, nullptr));
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.Sampler", {},
+ {llvm::to_underlying(dxil::SamplerType::Default)}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::Sampler);
+ EXPECT_EQ(RTI.getSamplerType(), dxil::SamplerType::Default);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Sampler);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "ColorMapSampler");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x0000000eU, 0U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "ColorMapSampler", 0, 0, 1, 0, nullptr));
+ }
+
+ {
+ ResourceTypeInfo RTI(llvm::TargetExtType::get(
+ Context, "dx.Sampler", {},
+ {llvm::to_underlying(dxil::SamplerType::Comparison)}));
+ EXPECT_EQ(RTI.getResourceClass(), ResourceClass::Sampler);
+ EXPECT_EQ(RTI.getSamplerType(), dxil::SamplerType::Comparison);
+ EXPECT_EQ(RTI.getResourceKind(), ResourceKind::Sampler);
+
+ ResourceInfo RI(
+ /*RecordID=*/0, /*Space=*/0, /*LowerBound=*/0, /*Size=*/1,
+ RTI.getHandleTy());
+ GlobalVariable *GV =
+ RI.createSymbol(M, RTI.createElementStruct(), "CmpSampler");
+ EXPECT_PROPS_EQ(RI.getAnnotateProps(M, RTI), 0x0000800eU, 0U);
+ EXPECT_MDEQ(RI.getAsMetadata(M, RTI),
+ TestMD.get(0, GV, "CmpSampler", 0, 0, 1, 1, nullptr));
+ }
}
More information about the llvm-commits
mailing list