[llvm] [HLSL] Add descriptor table metadata parsing (PR #142492)

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 18 13:33:27 PDT 2025


================
@@ -174,6 +174,94 @@ static bool parseRootDescriptors(LLVMContext *Ctx,
   return false;
 }
 
+static bool parseDescriptorRange(LLVMContext *Ctx,
+                                 mcdxbc::RootSignatureDesc &RSD,
+                                 mcdxbc::DescriptorTable &Table,
+                                 MDNode *RangeDescriptorNode) {
+
+  if (RangeDescriptorNode->getNumOperands() != 6)
+    return reportError(Ctx, "Invalid format for Descriptor Range");
+
+  dxbc::RTS0::v2::DescriptorRange Range;
+
+  std::optional<StringRef> ElementText =
+      extractMdStringValue(RangeDescriptorNode, 0);
+
+  if (!ElementText.has_value())
+    return reportError(Ctx, "Descriptor Range, first element is not a string.");
+
+  Range.RangeType =
+      StringSwitch<uint32_t>(*ElementText)
+          .Case("CBV", llvm::to_underlying(dxbc::DescriptorRangeType::CBV))
+          .Case("SRV", llvm::to_underlying(dxbc::DescriptorRangeType::SRV))
+          .Case("UAV", llvm::to_underlying(dxbc::DescriptorRangeType::UAV))
+          .Case("Sampler",
+                llvm::to_underlying(dxbc::DescriptorRangeType::Sampler))
+          .Default(-1u);
+
+  if (Range.RangeType == -1u)
----------------
bogner wrote:

Clearer to use `~0U` rather than `-1U`, and this way avoids some warnings from MSVC in any case.

https://github.com/llvm/llvm-project/pull/142492


More information about the llvm-commits mailing list