[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