[llvm] 4d80063 - Revert "[DX] Add support for PSV signature elements"

Chris Bieneman via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 16 11:52:44 PDT 2023


Author: Chris Bieneman
Date: 2023-08-16T13:52:26-05:00
New Revision: 4d800633b2683304a5431d002d8ffc40a1815520

URL: https://github.com/llvm/llvm-project/commit/4d800633b2683304a5431d002d8ffc40a1815520
DIFF: https://github.com/llvm/llvm-project/commit/4d800633b2683304a5431d002d8ffc40a1815520.diff

LOG: Revert "[DX] Add support for PSV signature elements"

This reverts commit 8c567e64f808f7a818965c6bc123fedf7db7336f.

Added: 
    

Modified: 
    llvm/include/llvm/BinaryFormat/DXContainer.h
    llvm/include/llvm/BinaryFormat/DXContainerConstants.def
    llvm/include/llvm/MC/DXContainerPSVInfo.h
    llvm/include/llvm/MC/StringTableBuilder.h
    llvm/include/llvm/Object/DXContainer.h
    llvm/include/llvm/ObjectYAML/DXContainerYAML.h
    llvm/lib/BinaryFormat/DXContainer.cpp
    llvm/lib/MC/DXContainerPSVInfo.cpp
    llvm/lib/MC/StringTableBuilder.cpp
    llvm/lib/Object/DXContainer.cpp
    llvm/lib/ObjectYAML/DXContainerEmitter.cpp
    llvm/lib/ObjectYAML/DXContainerYAML.cpp
    llvm/test/ObjectYAML/DXContainer/PSVv1-amplification.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv1-compute.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv1-domain.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv1-geometry.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv1-hull.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv1-mesh.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv1-pixel.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv1-vertex.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv2-amplification.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv2-compute.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv2-domain.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv2-geometry.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv2-hull.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv2-mesh.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv2-pixel.yaml
    llvm/test/ObjectYAML/DXContainer/PSVv2-vertex.yaml
    llvm/tools/obj2yaml/dxcontainer2yaml.cpp
    llvm/unittests/Object/DXContainerTest.cpp

Removed: 
    llvm/test/ObjectYAML/DXContainer/SigElements.yaml


################################################################################
diff  --git a/llvm/include/llvm/BinaryFormat/DXContainer.h b/llvm/include/llvm/BinaryFormat/DXContainer.h
index f92071e32222e1..f202f1bf6dff18 100644
--- a/llvm/include/llvm/BinaryFormat/DXContainer.h
+++ b/llvm/include/llvm/BinaryFormat/DXContainer.h
@@ -20,7 +20,6 @@
 #include <stdint.h>
 
 namespace llvm {
-template <typename T> struct EnumEntry;
 
 // The DXContainer file format is arranged as a header and "parts". Semantically
 // parts are similar to sections in other object file formats. The File format
@@ -274,27 +273,6 @@ static_assert(sizeof(PipelinePSVInfo) == 4 * sizeof(uint32_t),
 
 namespace PSV {
 
-#define SEMANTIC_KIND(Val, Enum) Enum = Val,
-enum class SemanticKind : uint8_t {
-#include "DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<SemanticKind>> getSemanticKinds();
-
-#define COMPONENT_TYPE(Val, Enum) Enum = Val,
-enum class ComponentType : uint8_t {
-#include "DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<ComponentType>> getComponentTypes();
-
-#define INTERPOLATION_MODE(Val, Enum) Enum = Val,
-enum class InterpolationMode : uint8_t {
-#include "DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<InterpolationMode>> getInterpolationModes();
-
 namespace v0 {
 struct RuntimeInfo {
   PipelinePSVInfo StageInfo;
@@ -324,34 +302,6 @@ struct ResourceBindInfo {
   }
 };
 
-struct SignatureElement {
-  uint32_t NameOffset;
-  uint32_t IndicesOffset;
-
-  uint8_t Rows;
-  uint8_t StartRow;
-  uint8_t Cols : 4;
-  uint8_t StartCol : 2;
-  uint8_t Allocated : 1;
-  uint8_t Unused : 1;
-  SemanticKind Kind;
-
-  ComponentType Type;
-  InterpolationMode Mode;
-  uint8_t DynamicMask : 4;
-  uint8_t Stream : 2;
-  uint8_t Unused2 : 2;
-  uint8_t Reserved;
-
-  void swapBytes() {
-    sys::swapByteOrder(NameOffset);
-    sys::swapByteOrder(IndicesOffset);
-  }
-};
-
-static_assert(sizeof(SignatureElement) == 4 * sizeof(uint32_t),
-              "PSV Signature elements must fit in 16 bytes.");
-
 } // namespace v0
 
 namespace v1 {
@@ -376,7 +326,7 @@ struct RuntimeInfo : public v0::RuntimeInfo {
   // PSVSignatureElement counts
   uint8_t SigInputElements;
   uint8_t SigOutputElements;
-  uint8_t SigPatchOrPrimElements;
+  uint8_t SigPatchConstOrPrimElements;
 
   // Number of packed vectors per signature
   uint8_t SigInputVectors;

diff  --git a/llvm/include/llvm/BinaryFormat/DXContainerConstants.def b/llvm/include/llvm/BinaryFormat/DXContainerConstants.def
index e2cbad293e1625..0073abcd0703ab 100644
--- a/llvm/include/llvm/BinaryFormat/DXContainerConstants.def
+++ b/llvm/include/llvm/BinaryFormat/DXContainerConstants.def
@@ -46,72 +46,3 @@ SHADER_FLAG(31, NextUnusedBit, "Next reserved shader flag bit (not a flag)")
 
 #undef SHADER_FLAG
 #endif
-
-#ifdef SEMANTIC_KIND
-
-SEMANTIC_KIND(0, Arbitrary)
-SEMANTIC_KIND(1, VertexID)
-SEMANTIC_KIND(2, InstanceID)
-SEMANTIC_KIND(3, Position)
-SEMANTIC_KIND(4, RenderTargetArrayIndex)
-SEMANTIC_KIND(5, ViewPortArrayIndex)
-SEMANTIC_KIND(6, ClipDistance)
-SEMANTIC_KIND(7, CullDistance)
-SEMANTIC_KIND(8, OutputControlPointID)
-SEMANTIC_KIND(9, DomainLocation)
-SEMANTIC_KIND(10, PrimitiveID)
-SEMANTIC_KIND(11, GSInstanceID)
-SEMANTIC_KIND(12, SampleIndex)
-SEMANTIC_KIND(13, IsFrontFace)
-SEMANTIC_KIND(14, Coverage)
-SEMANTIC_KIND(15, InnerCoverage)
-SEMANTIC_KIND(16, Target)
-SEMANTIC_KIND(17, Depth)
-SEMANTIC_KIND(18, DepthLessEqual)
-SEMANTIC_KIND(19, DepthGreaterEqual)
-SEMANTIC_KIND(20, StencilRef)
-SEMANTIC_KIND(21, DispatchThreadID)
-SEMANTIC_KIND(22, GroupID)
-SEMANTIC_KIND(23, GroupIndex)
-SEMANTIC_KIND(24, GroupThreadID)
-SEMANTIC_KIND(25, TessFactor)
-SEMANTIC_KIND(26, InsideTessFactor)
-SEMANTIC_KIND(27, ViewID)
-SEMANTIC_KIND(28, Barycentrics)
-SEMANTIC_KIND(29, ShadingRate)
-SEMANTIC_KIND(30, CullPrimitive)
-SEMANTIC_KIND(30, Invalid)
-
-#undef SEMANTIC_KIND
-#endif
-
-#ifdef COMPONENT_TYPE
-
-COMPONENT_TYPE(0, Unknown)
-COMPONENT_TYPE(1, UInt32)
-COMPONENT_TYPE(2, SInt32)
-COMPONENT_TYPE(3, Float32)
-COMPONENT_TYPE(4, UInt16)
-COMPONENT_TYPE(5, SInt16)
-COMPONENT_TYPE(6, Float16)
-COMPONENT_TYPE(7, UInt64)
-COMPONENT_TYPE(8, SInt64)
-COMPONENT_TYPE(9, Float64)
-
-#undef COMPONENT_TYPE
-#endif
-
-#ifdef INTERPOLATION_MODE
-
-INTERPOLATION_MODE(0, Undefined)
-INTERPOLATION_MODE(1, Constant)
-INTERPOLATION_MODE(2, Linear)
-INTERPOLATION_MODE(3, LinearCentroid)
-INTERPOLATION_MODE(4, LinearNoperspective)
-INTERPOLATION_MODE(5, LinearNoperspectiveCentroid)
-INTERPOLATION_MODE(6, LinearSample)
-INTERPOLATION_MODE(7, LinearNoperspectiveSample)
-INTERPOLATION_MODE(8, Invalid)
-
-#undef INTERPOLATION_MODE
-#endif

diff  --git a/llvm/include/llvm/MC/DXContainerPSVInfo.h b/llvm/include/llvm/MC/DXContainerPSVInfo.h
index dc6bf2fa40d065..e17054365d5cf8 100644
--- a/llvm/include/llvm/MC/DXContainerPSVInfo.h
+++ b/llvm/include/llvm/MC/DXContainerPSVInfo.h
@@ -9,34 +9,18 @@
 #ifndef LLVM_MC_DXCONTAINERPSVINFO_H
 #define LLVM_MC_DXCONTAINERPSVINFO_H
 
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/StringRef.h"
 #include "llvm/BinaryFormat/DXContainer.h"
 #include "llvm/TargetParser/Triple.h"
 
 #include <numeric>
 #include <stdint.h>
+#include <vector>
 
 namespace llvm {
 
 class raw_ostream;
 
 namespace mcdxbc {
-
-struct PSVSignatureElement {
-  StringRef Name;
-  SmallVector<uint32_t> Indices;
-  uint8_t StartRow;
-  uint8_t Cols;
-  uint8_t StartCol;
-  bool Allocated;
-  dxbc::PSV::SemanticKind Kind;
-  dxbc::PSV::ComponentType Type;
-  dxbc::PSV::InterpolationMode Mode;
-  uint8_t DynamicMask;
-  uint8_t Stream;
-};
-
 // This data structure is a helper for reading and writing PSV RuntimeInfo data.
 // It is implemented in the BinaryFormat library so that it can be used by both
 // the MC layer and Object tools.
@@ -44,12 +28,8 @@ struct PSVSignatureElement {
 // modifiable format, and can be used to serialize the data back into valid PSV
 // RuntimeInfo.
 struct PSVRuntimeInfo {
-  bool IsFinalized = false;
   dxbc::PSV::v2::RuntimeInfo BaseData;
-  SmallVector<dxbc::PSV::v2::ResourceBindInfo> Resources;
-  SmallVector<PSVSignatureElement> InputElements;
-  SmallVector<PSVSignatureElement> OutputElements;
-  SmallVector<PSVSignatureElement> PatchOrPrimElements;
+  std::vector<dxbc::PSV::v2::ResourceBindInfo> Resources;
 
   // Serialize PSVInfo into the provided raw_ostream. The version field
   // specifies the data version to encode, the default value specifies encoding
@@ -57,14 +37,7 @@ struct PSVRuntimeInfo {
   void write(raw_ostream &OS,
              uint32_t Version = std::numeric_limits<uint32_t>::max()) const;
 
-  void finalize(Triple::EnvironmentType Stage) {
-    IsFinalized = true;
-    BaseData.SigInputElements = static_cast<uint32_t>(InputElements.size());
-    BaseData.SigOutputElements = static_cast<uint32_t>(OutputElements.size());
-    BaseData.SigPatchOrPrimElements =
-        static_cast<uint32_t>(PatchOrPrimElements.size());
-    if (!sys::IsBigEndianHost)
-      return;
+  void swapBytes(Triple::EnvironmentType Stage) {
     BaseData.swapBytes();
     BaseData.swapBytes(Stage);
     for (auto &Res : Resources)

diff  --git a/llvm/include/llvm/MC/StringTableBuilder.h b/llvm/include/llvm/MC/StringTableBuilder.h
index 4ee421e22c171f..d0d5aaa0373893 100644
--- a/llvm/include/llvm/MC/StringTableBuilder.h
+++ b/llvm/include/llvm/MC/StringTableBuilder.h
@@ -32,8 +32,7 @@ class StringTableBuilder {
     MachO64Linked,
     RAW,
     DWARF,
-    XCOFF,
-    DXContainer
+    XCOFF
   };
 
 private:

diff  --git a/llvm/include/llvm/Object/DXContainer.h b/llvm/include/llvm/Object/DXContainer.h
index 2aae0a199f8c1c..ece2dfdd8b2d8c 100644
--- a/llvm/include/llvm/Object/DXContainer.h
+++ b/llvm/include/llvm/Object/DXContainer.h
@@ -33,14 +33,14 @@ class PSVRuntimeInfo {
   // data is little-endian encoded and may not be properly aligned to read
   // directly from. The dereference operator creates a copy of the data and byte
   // swaps it as appropriate.
-  template <typename T> struct ViewArray {
+  struct ResourceArray {
     StringRef Data;
     uint32_t Stride; // size of each element in the list.
 
-    ViewArray() = default;
-    ViewArray(StringRef D, size_t S) : Data(D), Stride(S) {}
+    ResourceArray() = default;
+    ResourceArray(StringRef D, size_t S) : Data(D), Stride(S) {}
 
-    using value_type = T;
+    using value_type = dxbc::PSV::v2::ResourceBindInfo;
     static constexpr uint32_t MaxStride() {
       return static_cast<uint32_t>(sizeof(value_type));
     }
@@ -50,7 +50,7 @@ class PSVRuntimeInfo {
       uint32_t Stride; // size of each element in the list.
       const char *Current;
 
-      iterator(const ViewArray &A, const char *C)
+      iterator(const ResourceArray &A, const char *C)
           : Data(A.Data), Stride(A.Stride), Current(C) {}
       iterator(const iterator &) = default;
 
@@ -58,8 +58,7 @@ class PSVRuntimeInfo {
         // Explicitly zero the structure so that unused fields are zeroed. It is
         // up to the user to know if the fields are used by verifying the PSV
         // version.
-        value_type Val;
-        std::memset(&Val, 0, sizeof(value_type));
+        value_type Val = {{0, 0, 0, 0}, 0, 0};
         if (Current >= Data.end())
           return Val;
         memcpy(static_cast<void *>(&Val), Current,
@@ -104,9 +103,6 @@ class PSVRuntimeInfo {
     size_t size() const { return Data.size() / Stride; }
   };
 
-  using ResourceArray = ViewArray<dxbc::PSV::v2::ResourceBindInfo>;
-  using SigElementArray = ViewArray<dxbc::PSV::v0::SignatureElement>;
-
   StringRef Data;
   uint32_t Size;
   using InfoStruct =
@@ -114,11 +110,6 @@ class PSVRuntimeInfo {
                    dxbc::PSV::v1::RuntimeInfo, dxbc::PSV::v2::RuntimeInfo>;
   InfoStruct BasicInfo;
   ResourceArray Resources;
-  StringRef StringTable;
-  SmallVector<uint32_t> SemanticIndexTable;
-  SigElementArray SigInputElements;
-  SigElementArray SigOutputElements;
-  SigElementArray SigPatchOrPrimElements;
 
 public:
   PSVRuntimeInfo(StringRef D) : Data(D), Size(0) {}
@@ -139,23 +130,6 @@ class PSVRuntimeInfo {
   uint32_t getResourceStride() const { return Resources.Stride; }
 
   const InfoStruct &getInfo() const { return BasicInfo; }
-
-  StringRef getStringTable() const { return StringTable; }
-  ArrayRef<uint32_t> getSemanticIndexTable() const {
-    return SemanticIndexTable;
-  }
-
-  uint8_t getSigInputCount() const;
-  uint8_t getSigOutputCount() const;
-  uint8_t getSigPatchOrPrimCount() const;
-
-  SigElementArray getSigInputElements() const { return SigInputElements; }
-  SigElementArray getSigOutputElements() const { return SigOutputElements; }
-  SigElementArray getSigPatchOrPrimElements() const {
-    return SigPatchOrPrimElements;
-  }
-
-  uint32_t getSigElementStride() const { return SigInputElements.Stride; }
 };
 
 } // namespace DirectX

diff  --git a/llvm/include/llvm/ObjectYAML/DXContainerYAML.h b/llvm/include/llvm/ObjectYAML/DXContainerYAML.h
index 1ab979fd0dfeac..5dff8b3db9d012 100644
--- a/llvm/include/llvm/ObjectYAML/DXContainerYAML.h
+++ b/llvm/include/llvm/ObjectYAML/DXContainerYAML.h
@@ -73,33 +73,6 @@ struct ShaderHash {
 
 using ResourceBindInfo = dxbc::PSV::v2::ResourceBindInfo;
 
-struct SignatureElement {
-  SignatureElement() = default;
-
-  SignatureElement(dxbc::PSV::v0::SignatureElement El, StringRef StringTable,
-                   ArrayRef<uint32_t> IdxTable)
-      : Name(StringTable.substr(El.NameOffset,
-                                StringTable.find('\0', El.NameOffset) -
-                                    El.NameOffset)),
-        Indices(IdxTable.slice(El.IndicesOffset, El.Rows)),
-        StartRow(El.StartRow), Cols(El.Cols), StartCol(El.StartCol),
-        Allocated(El.Allocated != 0), Kind(El.Kind), Type(El.Type),
-        Mode(El.Mode), DynamicMask(El.DynamicMask), Stream(El.Stream) {}
-  StringRef Name;
-  SmallVector<uint32_t> Indices;
-
-  uint8_t StartRow;
-  uint8_t Cols;
-  uint8_t StartCol;
-  bool Allocated;
-  dxbc::PSV::SemanticKind Kind;
-
-  dxbc::PSV::ComponentType Type;
-  dxbc::PSV::InterpolationMode Mode;
-  llvm::yaml::Hex8 DynamicMask;
-  uint8_t Stream;
-};
-
 struct PSVInfo {
   // The version field isn't actually encoded in the file, but it is inferred by
   // the size of data regions. We include it in the yaml because it simplifies
@@ -108,10 +81,7 @@ struct PSVInfo {
 
   dxbc::PSV::v2::RuntimeInfo Info;
   uint32_t ResourceStride;
-  SmallVector<ResourceBindInfo> Resources;
-  SmallVector<SignatureElement> SigInputElements;
-  SmallVector<SignatureElement> SigOutputElements;
-  SmallVector<SignatureElement> SigPatchOrPrimElements;
+  std::vector<ResourceBindInfo> Resources;
 
   void mapInfoForVersion(yaml::IO &IO);
 
@@ -142,11 +112,6 @@ struct Object {
 
 LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DXContainerYAML::Part)
 LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DXContainerYAML::ResourceBindInfo)
-LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DXContainerYAML::SignatureElement)
-LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::SemanticKind)
-LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::ComponentType)
-LLVM_YAML_DECLARE_ENUM_TRAITS(llvm::dxbc::PSV::InterpolationMode)
-
 namespace llvm {
 
 class raw_ostream;
@@ -189,10 +154,6 @@ template <> struct MappingTraits<DXContainerYAML::ResourceBindInfo> {
   static void mapping(IO &IO, DXContainerYAML::ResourceBindInfo &Res);
 };
 
-template <> struct MappingTraits<DXContainerYAML::SignatureElement> {
-  static void mapping(IO &IO, llvm::DXContainerYAML::SignatureElement &El);
-};
-
 } // namespace yaml
 
 } // namespace llvm

diff  --git a/llvm/lib/BinaryFormat/DXContainer.cpp b/llvm/lib/BinaryFormat/DXContainer.cpp
index f6613f16fafef6..60a89c66d28c8a 100644
--- a/llvm/lib/BinaryFormat/DXContainer.cpp
+++ b/llvm/lib/BinaryFormat/DXContainer.cpp
@@ -13,7 +13,6 @@
 
 #include "llvm/BinaryFormat/DXContainer.h"
 #include "llvm/ADT/StringSwitch.h"
-#include "llvm/Support/ScopedPrinter.h"
 
 using namespace llvm;
 using namespace llvm::dxbc;
@@ -29,33 +28,3 @@ bool ShaderHash::isPopulated() {
   static uint8_t Zeros[16] = {0};
   return Flags > 0 || 0 != memcmp(&Digest, &Zeros, 16);
 }
-
-#define SEMANTIC_KIND(Val, Enum) {#Enum, PSV::SemanticKind::Enum},
-
-static const EnumEntry<PSV::SemanticKind> SemanticKindNames[] = {
-#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<PSV::SemanticKind>> PSV::getSemanticKinds() {
-  return ArrayRef(SemanticKindNames);
-}
-
-#define COMPONENT_TYPE(Val, Enum) {#Enum, PSV::ComponentType::Enum},
-
-static const EnumEntry<PSV::ComponentType> ComponentTypeNames[] = {
-#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<PSV::ComponentType>> PSV::getComponentTypes() {
-  return ArrayRef(ComponentTypeNames);
-}
-
-#define INTERPOLATION_MODE(Val, Enum) {#Enum, PSV::InterpolationMode::Enum},
-
-static const EnumEntry<PSV::InterpolationMode> InterpolationModeNames[] = {
-#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<PSV::InterpolationMode>> PSV::getInterpolationModes() {
-  return ArrayRef(InterpolationModeNames);
-}

diff  --git a/llvm/lib/MC/DXContainerPSVInfo.cpp b/llvm/lib/MC/DXContainerPSVInfo.cpp
index 36cef31b6354d9..efd75370bbf064 100644
--- a/llvm/lib/MC/DXContainerPSVInfo.cpp
+++ b/llvm/lib/MC/DXContainerPSVInfo.cpp
@@ -8,7 +8,6 @@
 
 #include "llvm/MC/DXContainerPSVInfo.h"
 #include "llvm/BinaryFormat/DXContainer.h"
-#include "llvm/MC/StringTableBuilder.h"
 #include "llvm/Support/EndianStream.h"
 #include "llvm/Support/raw_ostream.h"
 
@@ -16,59 +15,7 @@ using namespace llvm;
 using namespace llvm::mcdxbc;
 using namespace llvm::dxbc::PSV;
 
-static constexpr size_t npos = StringRef::npos;
-
-static size_t FindSequence(ArrayRef<uint32_t> Buffer,
-                           ArrayRef<uint32_t> Sequence) {
-  if (Buffer.size() < Sequence.size())
-    return npos;
-  for (size_t Idx = 0; Idx <= Buffer.size() - Sequence.size(); ++Idx) {
-    if (0 == memcmp(static_cast<const void *>(&Buffer[Idx]),
-                    static_cast<const void *>(Sequence.begin()),
-                    Sequence.size() * sizeof(uint32_t)))
-      return Idx;
-  }
-  return npos;
-}
-
-static void
-ProcessElementList(StringTableBuilder &StrTabBuilder,
-                   SmallVectorImpl<uint32_t> &IndexBuffer,
-                   SmallVectorImpl<v0::SignatureElement> &FinalElements,
-                   SmallVectorImpl<StringRef> &SemanticNames,
-                   ArrayRef<PSVSignatureElement> Elements) {
-  for (const auto &El : Elements) {
-    // Put the name in the string table and the name list.
-    StrTabBuilder.add(El.Name);
-    SemanticNames.push_back(El.Name);
-
-    v0::SignatureElement FinalElement;
-    memset(&FinalElement, 0, sizeof(v0::SignatureElement));
-    FinalElement.Rows = static_cast<uint8_t>(El.Indices.size());
-    FinalElement.StartRow = El.StartRow;
-    FinalElement.Cols = El.Cols;
-    FinalElement.StartCol = El.StartCol;
-    FinalElement.Allocated = El.Allocated;
-    FinalElement.Kind = El.Kind;
-    FinalElement.Type = El.Type;
-    FinalElement.Mode = El.Mode;
-    FinalElement.DynamicMask = El.DynamicMask;
-    FinalElement.Stream = El.Stream;
-
-    size_t Idx = FindSequence(IndexBuffer, El.Indices);
-    if (Idx == npos) {
-      FinalElement.IndicesOffset = static_cast<uint32_t>(IndexBuffer.size());
-      IndexBuffer.insert(IndexBuffer.end(), El.Indices.begin(),
-                         El.Indices.end());
-    } else
-      FinalElement.IndicesOffset = static_cast<uint32_t>(Idx);
-    FinalElements.push_back(FinalElement);
-  }
-}
-
 void PSVRuntimeInfo::write(raw_ostream &OS, uint32_t Version) const {
-  assert(IsFinalized && "finalize must be called before write");
-
   uint32_t InfoSize;
   uint32_t BindingSize;
   switch (Version) {
@@ -94,50 +41,8 @@ void PSVRuntimeInfo::write(raw_ostream &OS, uint32_t Version) const {
   uint32_t ResourceCount = static_cast<uint32_t>(Resources.size());
 
   support::endian::write(OS, ResourceCount, support::little);
-  if (ResourceCount > 0)
-    support::endian::write(OS, BindingSize, support::little);
+  support::endian::write(OS, BindingSize, support::little);
 
   for (const auto &Res : Resources)
     OS.write(reinterpret_cast<const char *>(&Res), BindingSize);
-
-  StringTableBuilder StrTabBuilder((StringTableBuilder::DXContainer));
-  SmallVector<uint32_t, 64> IndexBuffer;
-  SmallVector<v0::SignatureElement, 32> SignatureElements;
-  SmallVector<StringRef, 32> SemanticNames;
-
-  ProcessElementList(StrTabBuilder, IndexBuffer, SignatureElements,
-                     SemanticNames, InputElements);
-  ProcessElementList(StrTabBuilder, IndexBuffer, SignatureElements,
-                     SemanticNames, OutputElements);
-  ProcessElementList(StrTabBuilder, IndexBuffer, SignatureElements,
-                     SemanticNames, PatchOrPrimElements);
-
-  StrTabBuilder.finalize();
-  for (auto ElAndName : zip(SignatureElements, SemanticNames)) {
-    v0::SignatureElement &El = std::get<0>(ElAndName);
-    StringRef Name = std::get<1>(ElAndName);
-    El.NameOffset = static_cast<uint32_t>(StrTabBuilder.getOffset(Name));
-    if (sys::IsBigEndianHost)
-      El.swapBytes();
-  }
-
-  support::endian::write(OS, static_cast<uint32_t>(StrTabBuilder.getSize()),
-                         support::little);
-
-  // Write the string table.
-  StrTabBuilder.write(OS);
-
-  // Write the index table size, then table.
-  support::endian::write(OS, static_cast<uint32_t>(IndexBuffer.size()),
-                         support::little);
-  for (auto I : IndexBuffer)
-    support::endian::write(OS, I, support::little);
-
-  // write the size of the signature elements.
-  support::endian::write(
-      OS, static_cast<uint32_t>(sizeof(v0::SignatureElement)), support::little);
-
-  // write the signature elements.
-  OS.write(reinterpret_cast<const char *>(&SignatureElements[0]),
-           SignatureElements.size() * sizeof(v0::SignatureElement));
 }

diff  --git a/llvm/lib/MC/StringTableBuilder.cpp b/llvm/lib/MC/StringTableBuilder.cpp
index 0e4f72e1361516..bb948fe3d13bf6 100644
--- a/llvm/lib/MC/StringTableBuilder.cpp
+++ b/llvm/lib/MC/StringTableBuilder.cpp
@@ -41,7 +41,6 @@ void StringTableBuilder::initSize() {
   case MachO:
   case MachO64:
   case ELF:
-  case DXContainer:
     // Start the table with a NUL byte.
     Size = 1;
     break;
@@ -168,7 +167,7 @@ void StringTableBuilder::finalizeStringTable(bool Optimize) {
     }
   }
 
-  if (K == MachO || K == MachOLinked || K == DXContainer)
+  if (K == MachO || K == MachOLinked)
     Size = alignTo(Size, 4); // Pad to multiple of 4.
   if (K == MachO64 || K == MachO64Linked)
     Size = alignTo(Size, 8); // Pad to multiple of 8.

diff  --git a/llvm/lib/Object/DXContainer.cpp b/llvm/lib/Object/DXContainer.cpp
index df1f98213a9951..48932afea84b88 100644
--- a/llvm/lib/Object/DXContainer.cpp
+++ b/llvm/lib/Object/DXContainer.cpp
@@ -9,7 +9,6 @@
 #include "llvm/Object/DXContainer.h"
 #include "llvm/BinaryFormat/DXContainer.h"
 #include "llvm/Object/Error.h"
-#include "llvm/Support/Alignment.h"
 #include "llvm/Support/FormatVariadic.h"
 
 using namespace llvm;
@@ -224,17 +223,14 @@ Error DirectX::PSVRuntimeInfo::parse(uint16_t ShaderKind) {
     if (sys::IsBigEndianHost)
       Info.swapBytes(ShaderStage);
     BasicInfo = Info;
-  } else if (PSVVersion == 0) {
+  } else {
     v0::RuntimeInfo Info;
     if (Error Err = readStruct(PSVInfoData, Current, Info))
       return Err;
     if (sys::IsBigEndianHost)
       Info.swapBytes(ShaderStage);
     BasicInfo = Info;
-  } else
-    return parseFailed(
-        "Cannot read PSV Runtime Info, unsupported PSV version.");
-
+  }
   Current += Size;
 
   uint32_t ResourceCount = 0;
@@ -255,95 +251,7 @@ Error DirectX::PSVRuntimeInfo::parse(uint16_t ShaderKind) {
           "Resource binding data extends beyond the bounds of the part");
 
     Current += BindingDataSize;
-  } else
-    Resources.Stride = sizeof(v2::ResourceBindInfo);
-
-  // PSV version 0 ends after the resource bindings.
-  if (PSVVersion == 0)
-    return Error::success();
-
-  // String table starts at a 4-byte offset.
-  Current = reinterpret_cast<const char *>(
-      alignTo<4>(reinterpret_cast<const uintptr_t>(Current)));
-
-  uint32_t StringTableSize = 0;
-  if (Error Err = readInteger(Data, Current, StringTableSize))
-    return Err;
-  if (StringTableSize % 4 != 0)
-    return parseFailed("String table misaligned");
-  Current += sizeof(uint32_t);
-  StringTable = StringRef(Current, StringTableSize);
-
-  Current += StringTableSize;
-
-  uint32_t SemanticIndexTableSize = 0;
-  if (Error Err = readInteger(Data, Current, SemanticIndexTableSize))
-    return Err;
-  Current += sizeof(uint32_t);
-
-  SemanticIndexTable.reserve(SemanticIndexTableSize);
-  for (uint32_t I = 0; I < SemanticIndexTableSize; ++I) {
-    uint32_t Index = 0;
-    if (Error Err = readInteger(Data, Current, Index))
-      return Err;
-    Current += sizeof(uint32_t);
-    SemanticIndexTable.push_back(Index);
-  }
-
-  uint8_t InputCount = getSigInputCount();
-  uint8_t OutputCount = getSigOutputCount();
-  uint8_t PatchOrPrimCount = getSigPatchOrPrimCount();
-
-  uint32_t ElementCount = InputCount + OutputCount + PatchOrPrimCount;
-
-  if (ElementCount > 0) {
-    if (Error Err = readInteger(Data, Current, SigInputElements.Stride))
-      return Err;
-    Current += sizeof(uint32_t);
-    // Assign the stride to all the arrays.
-    SigOutputElements.Stride = SigPatchOrPrimElements.Stride =
-        SigInputElements.Stride;
-
-    if (Data.end() - Current < ElementCount * SigInputElements.Stride)
-      return parseFailed(
-          "Signature elements extend beyond the size of the part");
-
-    size_t InputSize = SigInputElements.Stride * InputCount;
-    SigInputElements.Data = Data.substr(Current - Data.begin(), InputSize);
-    Current += InputSize;
-
-    size_t OutputSize = SigOutputElements.Stride * OutputCount;
-    SigOutputElements.Data = Data.substr(Current - Data.begin(), OutputSize);
-    Current += OutputSize;
-
-    size_t PSize = SigPatchOrPrimElements.Stride * PatchOrPrimCount;
-    SigPatchOrPrimElements.Data = Data.substr(Current - Data.begin(), PSize);
-    Current += PSize;
   }
 
   return Error::success();
 }
-
-uint8_t DirectX::PSVRuntimeInfo::getSigInputCount() const {
-  if (const auto *P = std::get_if<dxbc::PSV::v2::RuntimeInfo>(&BasicInfo))
-    return P->SigInputElements;
-  if (const auto *P = std::get_if<dxbc::PSV::v1::RuntimeInfo>(&BasicInfo))
-    return P->SigInputElements;
-  return 0;
-}
-
-uint8_t DirectX::PSVRuntimeInfo::getSigOutputCount() const {
-  if (const auto *P = std::get_if<dxbc::PSV::v2::RuntimeInfo>(&BasicInfo))
-    return P->SigOutputElements;
-  if (const auto *P = std::get_if<dxbc::PSV::v1::RuntimeInfo>(&BasicInfo))
-    return P->SigOutputElements;
-  return 0;
-}
-
-uint8_t DirectX::PSVRuntimeInfo::getSigPatchOrPrimCount() const {
-  if (const auto *P = std::get_if<dxbc::PSV::v2::RuntimeInfo>(&BasicInfo))
-    return P->SigPatchOrPrimElements;
-  if (const auto *P = std::get_if<dxbc::PSV::v1::RuntimeInfo>(&BasicInfo))
-    return P->SigPatchOrPrimElements;
-  return 0;
-}

diff  --git a/llvm/lib/ObjectYAML/DXContainerEmitter.cpp b/llvm/lib/ObjectYAML/DXContainerEmitter.cpp
index c5d5d6551d401c..64b13fc0ccde95 100644
--- a/llvm/lib/ObjectYAML/DXContainerEmitter.cpp
+++ b/llvm/lib/ObjectYAML/DXContainerEmitter.cpp
@@ -201,26 +201,9 @@ void DXContainerWriter::writeParts(raw_ostream &OS) {
       memcpy(&PSV.BaseData, &P.Info->Info, sizeof(dxbc::PSV::v2::RuntimeInfo));
       PSV.Resources = P.Info->Resources;
 
-      for (auto El : P.Info->SigInputElements)
-        PSV.InputElements.push_back(mcdxbc::PSVSignatureElement{
-            El.Name, El.Indices, El.StartRow, El.Cols, El.StartCol,
-            El.Allocated, El.Kind, El.Type, El.Mode, El.DynamicMask,
-            El.Stream});
-
-      for (auto El : P.Info->SigOutputElements)
-        PSV.OutputElements.push_back(mcdxbc::PSVSignatureElement{
-            El.Name, El.Indices, El.StartRow, El.Cols, El.StartCol,
-            El.Allocated, El.Kind, El.Type, El.Mode, El.DynamicMask,
-            El.Stream});
-
-      for (auto El : P.Info->SigPatchOrPrimElements)
-        PSV.PatchOrPrimElements.push_back(mcdxbc::PSVSignatureElement{
-            El.Name, El.Indices, El.StartRow, El.Cols, El.StartCol,
-            El.Allocated, El.Kind, El.Type, El.Mode, El.DynamicMask,
-            El.Stream});
-
-      PSV.finalize(static_cast<Triple::EnvironmentType>(
-          Triple::Pixel + P.Info->Info.ShaderStage));
+      if (sys::IsBigEndianHost)
+        PSV.swapBytes(static_cast<Triple::EnvironmentType>(
+            Triple::Pixel + P.Info->Info.ShaderStage));
       PSV.write(OS, P.Info->Version);
       break;
     }

diff  --git a/llvm/lib/ObjectYAML/DXContainerYAML.cpp b/llvm/lib/ObjectYAML/DXContainerYAML.cpp
index 2b03098d7a5d08..ed9f39954111cc 100644
--- a/llvm/lib/ObjectYAML/DXContainerYAML.cpp
+++ b/llvm/lib/ObjectYAML/DXContainerYAML.cpp
@@ -12,9 +12,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/ObjectYAML/DXContainerYAML.h"
-#include "llvm/ADT/ScopeExit.h"
 #include "llvm/BinaryFormat/DXContainer.h"
-#include "llvm/Support/ScopedPrinter.h"
 
 namespace llvm {
 
@@ -124,9 +122,6 @@ void MappingTraits<DXContainerYAML::PSVInfo>::mapping(
   uint32_t Version = PSV.Version;
   IO.setContext(&Version);
 
-  // Restore the YAML context on function exit.
-  auto RestoreContext = make_scope_exit([&]() { IO.setContext(OldContext); });
-
   // Shader stage is only included in binaries for v1 and later, but we always
   // include it since it simplifies parsing and file construction.
   IO.mapRequired("ShaderStage", PSV.Info.ShaderStage);
@@ -134,11 +129,9 @@ void MappingTraits<DXContainerYAML::PSVInfo>::mapping(
 
   IO.mapRequired("ResourceStride", PSV.ResourceStride);
   IO.mapRequired("Resources", PSV.Resources);
-  if (PSV.Version == 0)
-    return;
-  IO.mapRequired("SigInputElements", PSV.SigInputElements);
-  IO.mapRequired("SigOutputElements", PSV.SigOutputElements);
-  IO.mapRequired("SigPatchOrPrimElements", PSV.SigPatchOrPrimElements);
+
+  // Restore the YAML context.
+  IO.setContext(OldContext);
 }
 
 void MappingTraits<DXContainerYAML::Part>::mapping(IO &IO,
@@ -173,39 +166,6 @@ void MappingTraits<DXContainerYAML::ResourceBindInfo>::mapping(
   IO.mapRequired("Flags", Res.Flags);
 }
 
-void MappingTraits<DXContainerYAML::SignatureElement>::mapping(
-    IO &IO, DXContainerYAML::SignatureElement &El) {
-  IO.mapRequired("Name", El.Name);
-  IO.mapRequired("Indices", El.Indices);
-  IO.mapRequired("StartRow", El.StartRow);
-  IO.mapRequired("Cols", El.Cols);
-  IO.mapRequired("StartCol", El.StartCol);
-  IO.mapRequired("Allocated", El.Allocated);
-  IO.mapRequired("Kind", El.Kind);
-  IO.mapRequired("ComponentType", El.Type);
-  IO.mapRequired("Interpolation", El.Mode);
-  IO.mapRequired("DynamicMask", El.DynamicMask);
-  IO.mapRequired("Stream", El.Stream);
-}
-
-void ScalarEnumerationTraits<dxbc::PSV::SemanticKind>::enumeration(
-    IO &IO, dxbc::PSV::SemanticKind &Value) {
-  for (const auto &E : dxbc::PSV::getSemanticKinds())
-    IO.enumCase(Value, E.Name.str().c_str(), E.Value);
-}
-
-void ScalarEnumerationTraits<dxbc::PSV::ComponentType>::enumeration(
-    IO &IO, dxbc::PSV::ComponentType &Value) {
-  for (const auto &E : dxbc::PSV::getComponentTypes())
-    IO.enumCase(Value, E.Name.str().c_str(), E.Value);
-}
-
-void ScalarEnumerationTraits<dxbc::PSV::InterpolationMode>::enumeration(
-    IO &IO, dxbc::PSV::InterpolationMode &Value) {
-  for (const auto &E : dxbc::PSV::getInterpolationModes())
-    IO.enumCase(Value, E.Name.str().c_str(), E.Value);
-}
-
 } // namespace yaml
 
 void DXContainerYAML::PSVInfo::mapInfoForVersion(yaml::IO &IO) {
@@ -282,6 +242,10 @@ void DXContainerYAML::PSVInfo::mapInfoForVersion(yaml::IO &IO) {
     break;
   }
 
+  IO.mapRequired("SigInputElements", Info.SigInputElements);
+  IO.mapRequired("SigOutputElements", Info.SigOutputElements);
+  IO.mapRequired("SigPatchConstOrPrimElements",
+                 Info.SigPatchConstOrPrimElements);
   IO.mapRequired("SigInputVectors", Info.SigInputVectors);
   MutableArrayRef<uint8_t> Vec(Info.SigOutputVectors);
   IO.mapRequired("SigOutputVectors", Vec);

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv1-amplification.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv1-amplification.yaml
index 29e4b246807859..94c215c1fffc8f 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv1-amplification.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv1-amplification.yaml
@@ -18,6 +18,9 @@ Parts:
       MinimumWaveLaneCount: 0
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       ResourceStride:       16
@@ -30,9 +33,6 @@ Parts:
           Space:           32768
           LowerBound:      8388608
           UpperBound:      2147483648
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -53,6 +53,9 @@ Parts:
 # CHECK-NEXT: MinimumWaveLaneCount: 0
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: ResourceStride: 16
@@ -65,7 +68,4 @@ Parts:
 # CHECK-NEXT: Space:           32768
 # CHECK-NEXT: LowerBound:      8388608
 # CHECK-NEXT: UpperBound:      2147483648
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv1-compute.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv1-compute.yaml
index 8caae8cf868f00..715b28b812c820 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv1-compute.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv1-compute.yaml
@@ -17,6 +17,9 @@ Parts:
       MinimumWaveLaneCount: 0
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       ResourceStride:       16
@@ -29,9 +32,6 @@ Parts:
           Space:           32768
           LowerBound:      8388608
           UpperBound:      2147483648
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -51,6 +51,9 @@ Parts:
 # CHECK-NEXT: MinimumWaveLaneCount: 0
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: ResourceStride: 16
@@ -63,7 +66,4 @@ Parts:
 # CHECK-NEXT: Space:           32768
 # CHECK-NEXT: LowerBound:      8388608
 # CHECK-NEXT: UpperBound:      2147483648
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv1-domain.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv1-domain.yaml
index 8c7daa38a7ee80..472b5e0a94779e 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv1-domain.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv1-domain.yaml
@@ -21,6 +21,9 @@ Parts:
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
       SigPatchConstOrPrimVectors:  128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       ResourceStride:       16
@@ -33,9 +36,6 @@ Parts:
           Space:           32768
           LowerBound:      8388608
           UpperBound:      2147483648
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -59,6 +59,9 @@ Parts:
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
 # CHECK-NEXT: SigPatchConstOrPrimVectors:  128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: ResourceStride: 16
@@ -71,7 +74,4 @@ Parts:
 # CHECK-NEXT: Space:           32768
 # CHECK-NEXT: LowerBound:      8388608
 # CHECK-NEXT: UpperBound:      2147483648
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv1-geometry.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv1-geometry.yaml
index 38f2a4cb79a648..0c0a4ed70a1a22 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv1-geometry.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv1-geometry.yaml
@@ -22,6 +22,9 @@ Parts:
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
       MaxVertexCount:  4096
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       ResourceStride:       16
@@ -34,9 +37,6 @@ Parts:
           Space:           32768
           LowerBound:      8388608
           UpperBound:      2147483648
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -61,6 +61,9 @@ Parts:
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
 # CHECK-NEXT: MaxVertexCount:  4096
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: ResourceStride: 16
@@ -73,7 +76,4 @@ Parts:
 # CHECK-NEXT: Space:           32768
 # CHECK-NEXT: LowerBound:      8388608
 # CHECK-NEXT: UpperBound:      2147483648
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv1-hull.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv1-hull.yaml
index 102907d3ed3258..330d24ff8597f8 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv1-hull.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv1-hull.yaml
@@ -22,6 +22,9 @@ Parts:
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
       SigPatchConstOrPrimVectors:  128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       ResourceStride:       16
@@ -34,9 +37,6 @@ Parts:
           Space:           32768
           LowerBound:      8388608
           UpperBound:      2147483648
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -61,6 +61,9 @@ Parts:
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
 # CHECK-NEXT: SigPatchConstOrPrimVectors:  128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: ResourceStride: 16
@@ -73,7 +76,4 @@ Parts:
 # CHECK-NEXT: Space:           32768
 # CHECK-NEXT: LowerBound:      8388608
 # CHECK-NEXT: UpperBound:      2147483648
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv1-mesh.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv1-mesh.yaml
index 2bf8a3d54f9512..51bd6390df15e1 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv1-mesh.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv1-mesh.yaml
@@ -24,6 +24,9 @@ Parts:
       UsesViewID:      128
       SigPrimVectors:  128
       MeshOutputTopology: 16
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       ResourceStride:       16
@@ -36,9 +39,6 @@ Parts:
           Space:           32768
           LowerBound:      8388608
           UpperBound:      2147483648
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -65,6 +65,9 @@ Parts:
 # CHECK-NEXT: UsesViewID:      128
 # CHECK-NEXT: SigPrimVectors:  128
 # CHECK-NEXT: MeshOutputTopology: 16
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: ResourceStride: 16
@@ -77,7 +80,4 @@ Parts:
 # CHECK-NEXT: Space:           32768
 # CHECK-NEXT: LowerBound:      8388608
 # CHECK-NEXT: UpperBound:      2147483648
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv1-pixel.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv1-pixel.yaml
index df4ef44937e97b..2e49034f4e3fc0 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv1-pixel.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv1-pixel.yaml
@@ -19,6 +19,9 @@ Parts:
       MinimumWaveLaneCount: 0
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       ResourceStride:       16
@@ -31,9 +34,6 @@ Parts:
           Space:           32768
           LowerBound:      8388608
           UpperBound:      2147483648
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -55,6 +55,9 @@ Parts:
 # CHECK-NEXT: MinimumWaveLaneCount: 0
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: ResourceStride: 16
@@ -67,7 +70,4 @@ Parts:
 # CHECK-NEXT: Space:           32768
 # CHECK-NEXT: LowerBound:      8388608
 # CHECK-NEXT: UpperBound:      2147483648
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv1-vertex.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv1-vertex.yaml
index 5bd8739cbf4420..ad8f08200d5072 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv1-vertex.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv1-vertex.yaml
@@ -18,6 +18,9 @@ Parts:
       MinimumWaveLaneCount: 0
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       ResourceStride:       16
@@ -30,9 +33,6 @@ Parts:
           Space:           32768
           LowerBound:      8388608
           UpperBound:      2147483648
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -53,6 +53,9 @@ Parts:
 # CHECK-NEXT: MinimumWaveLaneCount: 0
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: ResourceStride: 16
@@ -65,7 +68,4 @@ Parts:
 # CHECK-NEXT: Space:           32768
 # CHECK-NEXT: LowerBound:      8388608
 # CHECK-NEXT: UpperBound:      2147483648
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv2-amplification.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv2-amplification.yaml
index 48f5edf1d25f6e..d4fee91294099a 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv2-amplification.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv2-amplification.yaml
@@ -18,6 +18,9 @@ Parts:
       MinimumWaveLaneCount: 0
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       NumThreadsX:     512
@@ -37,9 +40,6 @@ Parts:
           UpperBound:      2147483648
           Kind:            65535
           Flags:           16776960
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -60,6 +60,9 @@ Parts:
 # CHECK-NEXT: MinimumWaveLaneCount: 0
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: NumThreadsX:     512
@@ -79,7 +82,4 @@ Parts:
 # CHECK-NEXT: UpperBound:      2147483648
 # CHECK-NEXT: Kind:            65535
 # CHECK-NEXT: Flags:           16776960
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv2-compute.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv2-compute.yaml
index 16336f1db79c86..5ee136bf227505 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv2-compute.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv2-compute.yaml
@@ -17,6 +17,9 @@ Parts:
       MinimumWaveLaneCount: 0
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       NumThreadsX:     512
@@ -36,9 +39,6 @@ Parts:
           UpperBound:      2147483648
           Kind:            65535
           Flags:           16776960
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -58,6 +58,9 @@ Parts:
 # CHECK-NEXT: MinimumWaveLaneCount: 0
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: NumThreadsX:     512
@@ -77,7 +80,4 @@ Parts:
 # CHECK-NEXT: UpperBound:      2147483648
 # CHECK-NEXT: Kind:            65535
 # CHECK-NEXT: Flags:           16776960
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv2-domain.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv2-domain.yaml
index 4aab33ac342d81..4ed9f04e9dc4a1 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv2-domain.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv2-domain.yaml
@@ -21,6 +21,9 @@ Parts:
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
       SigPatchConstOrPrimVectors:  128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       NumThreadsX:     512
@@ -40,9 +43,6 @@ Parts:
           UpperBound:      2147483648
           Kind:            65535
           Flags:           16776960
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -66,6 +66,9 @@ Parts:
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
 # CHECK-NEXT: SigPatchConstOrPrimVectors:  128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: NumThreadsX:     512
@@ -85,7 +88,4 @@ Parts:
 # CHECK-NEXT: UpperBound:      2147483648
 # CHECK-NEXT: Kind:            65535
 # CHECK-NEXT: Flags:           16776960
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv2-geometry.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv2-geometry.yaml
index 7fe7b84c1204c2..66def9becdef12 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv2-geometry.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv2-geometry.yaml
@@ -22,6 +22,9 @@ Parts:
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
       MaxVertexCount:  4096
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       NumThreadsX:     512
@@ -41,9 +44,6 @@ Parts:
           UpperBound:      2147483648
           Kind:            65535
           Flags:           16776960
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -68,6 +68,9 @@ Parts:
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
 # CHECK-NEXT: MaxVertexCount:  4096
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: NumThreadsX:     512
@@ -87,7 +90,4 @@ Parts:
 # CHECK-NEXT: UpperBound:      2147483648
 # CHECK-NEXT: Kind:            65535
 # CHECK-NEXT: Flags:           16776960
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv2-hull.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv2-hull.yaml
index 4eb0dfcbd482bd..0a35992c89b804 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv2-hull.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv2-hull.yaml
@@ -22,6 +22,9 @@ Parts:
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
       SigPatchConstOrPrimVectors:  128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       NumThreadsX:     512
@@ -41,9 +44,6 @@ Parts:
           UpperBound:      2147483648
           Kind:            65535
           Flags:           16776960
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -68,6 +68,9 @@ Parts:
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
 # CHECK-NEXT: SigPatchConstOrPrimVectors:  128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: NumThreadsX:     512
@@ -87,7 +90,4 @@ Parts:
 # CHECK-NEXT: UpperBound:      2147483648
 # CHECK-NEXT: Kind:            65535
 # CHECK-NEXT: Flags:           16776960
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv2-mesh.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv2-mesh.yaml
index 873acba05a71ea..ec81b60b0d8378 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv2-mesh.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv2-mesh.yaml
@@ -24,6 +24,9 @@ Parts:
       UsesViewID:      128
       SigPrimVectors:  128
       MeshOutputTopology: 16
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       NumThreadsX:     512
@@ -43,9 +46,6 @@ Parts:
           UpperBound:      2147483648
           Kind:            65535
           Flags:           16776960
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -72,6 +72,9 @@ Parts:
 # CHECK-NEXT: UsesViewID:      128
 # CHECK-NEXT: SigPrimVectors:  128
 # CHECK-NEXT: MeshOutputTopology: 16
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: NumThreadsX:     512
@@ -91,7 +94,4 @@ Parts:
 # CHECK-NEXT: UpperBound:      2147483648
 # CHECK-NEXT: Kind:            65535
 # CHECK-NEXT: Flags:           16776960
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv2-pixel.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv2-pixel.yaml
index 63e2de6eefb088..60e53f8fb7b063 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv2-pixel.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv2-pixel.yaml
@@ -19,6 +19,9 @@ Parts:
       MinimumWaveLaneCount: 0
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       NumThreadsX:     512
@@ -38,9 +41,6 @@ Parts:
           UpperBound:      2147483648
           Kind:            65535
           Flags:           16776960
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -62,6 +62,9 @@ Parts:
 # CHECK-NEXT: MinimumWaveLaneCount: 0
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: NumThreadsX:     512
@@ -81,7 +84,4 @@ Parts:
 # CHECK-NEXT: UpperBound:      2147483648
 # CHECK-NEXT: Kind:            65535
 # CHECK-NEXT: Flags:           16776960
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/PSVv2-vertex.yaml b/llvm/test/ObjectYAML/DXContainer/PSVv2-vertex.yaml
index fb595b51a0fdd4..15b227c06fad3d 100644
--- a/llvm/test/ObjectYAML/DXContainer/PSVv2-vertex.yaml
+++ b/llvm/test/ObjectYAML/DXContainer/PSVv2-vertex.yaml
@@ -18,6 +18,9 @@ Parts:
       MinimumWaveLaneCount: 0
       MaximumWaveLaneCount: 4294967295
       UsesViewID:      128
+      SigInputElements: 8
+      SigOutputElements: 16
+      SigPatchConstOrPrimElements: 32
       SigInputVectors: 64
       SigOutputVectors: [ 8, 16, 32, 64 ]
       NumThreadsX:     512
@@ -37,9 +40,6 @@ Parts:
           UpperBound:      2147483648
           Kind:            65535
           Flags:           16776960
-      SigInputElements: []
-      SigOutputElements: []
-      SigPatchOrPrimElements: []
   - Name:            DXIL
     Size:            24
     Program:
@@ -60,6 +60,9 @@ Parts:
 # CHECK-NEXT: MinimumWaveLaneCount: 0
 # CHECK-NEXT: MaximumWaveLaneCount: 4294967295
 # CHECK-NEXT: UsesViewID:      128
+# CHECK-NEXT: SigInputElements: 8
+# CHECK-NEXT: SigOutputElements: 16
+# CHECK-NEXT: SigPatchConstOrPrimElements: 32
 # CHECK-NEXT: SigInputVectors: 64
 # CHECK-NEXT: SigOutputVectors: [ 8, 16, 32, 64 ]
 # CHECK-NEXT: NumThreadsX:     512
@@ -79,7 +82,4 @@ Parts:
 # CHECK-NEXT: UpperBound:      2147483648
 # CHECK-NEXT: Kind:            65535
 # CHECK-NEXT: Flags:           16776960
-# CHECK-NEXT: SigInputElements: []
-# CHECK-NEXT: SigOutputElements: []
-# CHECK-NEXT: SigPatchOrPrimElements: []
 # CHECK-NEXT: Name

diff  --git a/llvm/test/ObjectYAML/DXContainer/SigElements.yaml b/llvm/test/ObjectYAML/DXContainer/SigElements.yaml
deleted file mode 100644
index 8e2e5aa3e3e26b..00000000000000
--- a/llvm/test/ObjectYAML/DXContainer/SigElements.yaml
+++ /dev/null
@@ -1,144 +0,0 @@
-# RUN: yaml2obj %s | obj2yaml | FileCheck %s
-
---- !dxcontainer
-Header:
-  Hash:            [ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
-                     0x0, 0x0, 0x0, 0x0, 0x0, 0x0 ]
-  Version:
-    Major:           1
-    Minor:           0
-  PartCount:       2
-Parts:
-  - Name:            PSV0
-    Size:            250
-    PSVInfo:
-      Version:         1
-      ShaderStage:     0
-      DepthOutput:     7
-      SampleFrequency: 96
-      MinimumWaveLaneCount: 0
-      MaximumWaveLaneCount: 4294967295
-      UsesViewID:      128
-      SigInputVectors: 64
-      SigOutputVectors: [ 8, 16, 32, 64 ]
-      ResourceStride:       16
-      Resources:
-        - Type:            1
-          Space:           2
-          LowerBound:      3
-          UpperBound:      4
-        - Type:            128
-          Space:           32768
-          LowerBound:      8388608
-          UpperBound:      2147483648
-      SigInputElements:
-        - Name:            IN
-          Indices:         [ 0, 1 ]
-          StartRow:        0
-          Cols:            2
-          StartCol:        0
-          Allocated:       true
-          Kind:            Arbitrary
-          ComponentType:   SInt32
-          Interpolation:   Undefined
-          DynamicMask:     0x0
-          Stream:          0
-      SigOutputElements:
-        - Name:            OUT
-          Indices:         [ 0, 1 ]
-          StartRow:        0
-          Cols:            2
-          StartCol:        0
-          Allocated:       true
-          Kind:            Arbitrary
-          ComponentType:   Float32
-          Interpolation:   Linear
-          DynamicMask:     0x0
-          Stream:          1
-      SigPatchOrPrimElements:
-        - Name:            Patch
-          Indices:         [ 0 ]
-          StartRow:        0
-          Cols:            1
-          StartCol:        0
-          Allocated:       true
-          Kind:            Arbitrary
-          ComponentType:   Float32
-          Interpolation:   Linear
-          DynamicMask:     0x1
-          Stream:          2
-        - Name:            Patch1
-          Indices:         [ 2 ]
-          StartRow:        0
-          Cols:            1
-          StartCol:        0
-          Allocated:       true
-          Kind:            Arbitrary
-          ComponentType:   Float64
-          Interpolation:   LinearSample
-          DynamicMask:     0x2
-          Stream:          3
-  - Name:            DXIL
-    Size:            24
-    Program:
-      MajorVersion:    6
-      MinorVersion:    0
-      ShaderKind:      0
-      Size:            6
-      DXILMajorVersion: 0
-      DXILMinorVersion: 1
-      DXILSize:        0
-...
-
-# CHECK: Name:            PSV0
-# CHECK: PSVInfo:
-# CHECK-NEXT: Version:         1
-# CHECK-NEXT: ShaderStage:     0
-
-# CHECK: SigInputElements:
-# CHECK-NEXT:   - Name:            IN
-# CHECK-NEXT:     Indices:         [ 0, 1 ]
-# CHECK-NEXT:     StartRow:        0
-# CHECK-NEXT:     Cols:            2
-# CHECK-NEXT:     StartCol:        0
-# CHECK-NEXT:     Allocated:       true
-# CHECK-NEXT:     Kind:            Arbitrary
-# CHECK-NEXT:     ComponentType:   SInt32
-# CHECK-NEXT:     Interpolation:   Undefined
-# CHECK-NEXT:     DynamicMask:     0x0
-# CHECK-NEXT:     Stream:          0
-# CHECK-NEXT: SigOutputElements:
-# CHECK-NEXT:   - Name:            OUT
-# CHECK-NEXT:     Indices:         [ 0, 1 ]
-# CHECK-NEXT:     StartRow:        0
-# CHECK-NEXT:     Cols:            2
-# CHECK-NEXT:     StartCol:        0
-# CHECK-NEXT:     Allocated:       true
-# CHECK-NEXT:     Kind:            Arbitrary
-# CHECK-NEXT:     ComponentType:   Float32
-# CHECK-NEXT:     Interpolation:   Linear
-# CHECK-NEXT:     DynamicMask:     0x0
-# CHECK-NEXT:     Stream:          1
-# CHECK-NEXT: SigPatchOrPrimElements:
-# CHECK-NEXT:   - Name:            Patch
-# CHECK-NEXT:     Indices:         [ 0 ]
-# CHECK-NEXT:     StartRow:        0
-# CHECK-NEXT:     Cols:            1
-# CHECK-NEXT:     StartCol:        0
-# CHECK-NEXT:     Allocated:       true
-# CHECK-NEXT:     Kind:            Arbitrary
-# CHECK-NEXT:     ComponentType:   Float32
-# CHECK-NEXT:     Interpolation:   Linear
-# CHECK-NEXT:     DynamicMask:     0x1
-# CHECK-NEXT:     Stream:          2
-# CHECK-NEXT:   - Name:            Patch1
-# CHECK-NEXT:     Indices:         [ 2 ]
-# CHECK-NEXT:     StartRow:        0
-# CHECK-NEXT:     Cols:            1
-# CHECK-NEXT:     StartCol:        0
-# CHECK-NEXT:     Allocated:       true
-# CHECK-NEXT:     Kind:            Arbitrary
-# CHECK-NEXT:     ComponentType:   Float64
-# CHECK-NEXT:     Interpolation:   LinearSample
-# CHECK-NEXT:     DynamicMask:     0x2
-# CHECK-NEXT:     Stream:          3

diff  --git a/llvm/tools/obj2yaml/dxcontainer2yaml.cpp b/llvm/tools/obj2yaml/dxcontainer2yaml.cpp
index 0b38839a720cbe..dd3bea67c75fca 100644
--- a/llvm/tools/obj2yaml/dxcontainer2yaml.cpp
+++ b/llvm/tools/obj2yaml/dxcontainer2yaml.cpp
@@ -92,22 +92,6 @@ dumpDXContainer(MemoryBufferRef Source) {
       NewPart.Info->ResourceStride = PSVInfo->getResourceStride();
       for (auto Res : PSVInfo->getResources())
         NewPart.Info->Resources.push_back(Res);
-
-      for (auto El : PSVInfo->getSigInputElements())
-        NewPart.Info->SigInputElements.push_back(
-            DXContainerYAML::SignatureElement(
-                El, PSVInfo->getStringTable(),
-                PSVInfo->getSemanticIndexTable()));
-      for (auto El : PSVInfo->getSigOutputElements())
-        NewPart.Info->SigOutputElements.push_back(
-            DXContainerYAML::SignatureElement(
-                El, PSVInfo->getStringTable(),
-                PSVInfo->getSemanticIndexTable()));
-      for (auto El : PSVInfo->getSigPatchOrPrimElements())
-        NewPart.Info->SigPatchOrPrimElements.push_back(
-            DXContainerYAML::SignatureElement(
-                El, PSVInfo->getStringTable(),
-                PSVInfo->getSemanticIndexTable()));
       break;
     }
     case dxbc::PartType::Unknown:

diff  --git a/llvm/unittests/Object/DXContainerTest.cpp b/llvm/unittests/Object/DXContainerTest.cpp
index 94d8dc40defd46..151fab0ac81c70 100644
--- a/llvm/unittests/Object/DXContainerTest.cpp
+++ b/llvm/unittests/Object/DXContainerTest.cpp
@@ -593,50 +593,3 @@ TEST(DXCFile, PSVResourceIteratorsStride) {
   EXPECT_EQ(Binding.Type, 0u);
   EXPECT_EQ(Binding.Flags, 0u);
 }
-
-// This test binary is created using mutations of the yaml in the SigElements
-// test found under test/ObjectYAML/DXContainer/SigElements.yaml.
-
-TEST(DXCFile, MisalignedStringTable) {
-  uint8_t Buffer[] = {
-      0x44, 0x58, 0x42, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-      0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
-      0x48, 0x00, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x18, 0x00, 0x00, 0x00,
-      0x60, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
-      0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x50, 0x53, 0x56, 0x30, 0x68, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-      0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x10, 0x20, 0x40,
-      0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-  EXPECT_THAT_EXPECTED(DXContainer::create(getMemoryBuffer<168>(Buffer)),
-                       FailedWithMessage("String table misaligned"));
-}
-
-// This test binary is created using mutations of the yaml in the SigElements
-// test found under test/ObjectYAML/DXContainer/SigElements.yaml.
-TEST(DXCFile, SigElementsExtendBeyondPart) {
-  uint8_t Buffer[] = {
-      0x44, 0x58, 0x42, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-      0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
-      0x48, 0x00, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x18, 0x00, 0x00, 0x00,
-      0x60, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c,
-      0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x50, 0x53, 0x56, 0x30, 0x54, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-      0x05, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x08, 0x10, 0x20, 0x40,
-      0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x49, 0x4e, 0x00,
-      0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-      0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x02, 0x00, 0x42, 0x00, 0x02, 0x00, 0x03, 0x00};
-  EXPECT_THAT_EXPECTED(
-      DXContainer::create(getMemoryBuffer<164>(Buffer)),
-      FailedWithMessage(
-          "Signature elements extend beyond the size of the part"));
-}


        


More information about the llvm-commits mailing list