[llvm] 5d76555 - [NFC][HLSL][RootSignature] Use `operator<<` overload instead of dump method (#141127)

via llvm-commits llvm-commits at lists.llvm.org
Thu May 22 19:21:43 PDT 2025


Author: Finn Plummer
Date: 2025-05-22T19:21:40-07:00
New Revision: 5d76555f935cfe75d1e45bd56544786cc56718c3

URL: https://github.com/llvm/llvm-project/commit/5d76555f935cfe75d1e45bd56544786cc56718c3
DIFF: https://github.com/llvm/llvm-project/commit/5d76555f935cfe75d1e45bd56544786cc56718c3.diff

LOG: [NFC][HLSL][RootSignature] Use `operator<<` overload instead of dump method (#141127)

- we will need to provide a way to dump `RootFlags` for serialization
and by using operator overloads we can maintain a consistent interface

This is an NFC to allow for
https://github.com/llvm/llvm-project/issues/138192 to be more
straightforwardly implemented.

Added: 
    

Modified: 
    llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h
    llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp
    llvm/unittests/Frontend/HLSLRootSignatureDumpTest.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h b/llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h
index 7c496844ab7a6..cc3d96f1757bc 100644
--- a/llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h
+++ b/llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h
@@ -100,10 +100,10 @@ struct DescriptorTable {
   // Denotes that the previous NumClauses in the RootElement array
   // are the clauses in the table.
   uint32_t NumClauses = 0;
-
-  void dump(raw_ostream &OS) const;
 };
 
+raw_ostream &operator<<(raw_ostream &OS, const DescriptorTable &Table);
+
 static const uint32_t NumDescriptorsUnbounded = 0xffffffff;
 static const uint32_t DescriptorTableOffsetAppend = 0xffffffff;
 // Models DTClause : CBV | SRV | UAV | Sampler, by collecting like parameters
@@ -130,10 +130,10 @@ struct DescriptorTableClause {
       break;
     }
   }
-
-  void dump(raw_ostream &OS) const;
 };
 
+raw_ostream &operator<<(raw_ostream &OS, const DescriptorTableClause &Clause);
+
 /// Models RootElement : RootFlags | RootConstants | RootDescriptor
 ///  | DescriptorTable | DescriptorTableClause
 ///

diff  --git a/llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp b/llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp
index abf076944b273..ec0d130a6767c 100644
--- a/llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp
+++ b/llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp
@@ -71,11 +71,6 @@ static raw_ostream &operator<<(raw_ostream &OS,
   return OS;
 }
 
-void DescriptorTable::dump(raw_ostream &OS) const {
-  OS << "DescriptorTable(numClauses = " << NumClauses
-     << ", visibility = " << Visibility << ")";
-}
-
 static raw_ostream &operator<<(raw_ostream &OS, const ClauseType &Type) {
   switch (Type) {
   case ClauseType::CBuffer:
@@ -137,14 +132,24 @@ static raw_ostream &operator<<(raw_ostream &OS,
   return OS;
 }
 
-void DescriptorTableClause::dump(raw_ostream &OS) const {
-  OS << Type << "(" << Reg << ", numDescriptors = " << NumDescriptors
-     << ", space = " << Space << ", offset = ";
-  if (Offset == DescriptorTableOffsetAppend)
+raw_ostream &operator<<(raw_ostream &OS, const DescriptorTable &Table) {
+  OS << "DescriptorTable(numClauses = " << Table.NumClauses
+     << ", visibility = " << Table.Visibility << ")";
+
+  return OS;
+}
+
+raw_ostream &operator<<(raw_ostream &OS, const DescriptorTableClause &Clause) {
+  OS << Clause.Type << "(" << Clause.Reg
+     << ", numDescriptors = " << Clause.NumDescriptors
+     << ", space = " << Clause.Space << ", offset = ";
+  if (Clause.Offset == DescriptorTableOffsetAppend)
     OS << "DescriptorTableOffsetAppend";
   else
-    OS << Offset;
-  OS << ", flags = " << Flags << ")";
+    OS << Clause.Offset;
+  OS << ", flags = " << Clause.Flags << ")";
+
+  return OS;
 }
 
 void dumpRootElements(raw_ostream &OS, ArrayRef<RootElement> Elements) {
@@ -154,11 +159,11 @@ void dumpRootElements(raw_ostream &OS, ArrayRef<RootElement> Elements) {
     if (!First)
       OS << ",";
     OS << " ";
-    First = false;
     if (const auto &Clause = std::get_if<DescriptorTableClause>(&Element))
-      Clause->dump(OS);
+      OS << *Clause;
     if (const auto &Table = std::get_if<DescriptorTable>(&Element))
-      Table->dump(OS);
+      OS << *Table;
+    First = false;
   }
   OS << "}";
 }

diff  --git a/llvm/unittests/Frontend/HLSLRootSignatureDumpTest.cpp b/llvm/unittests/Frontend/HLSLRootSignatureDumpTest.cpp
index ba1fbfd1f8708..3f92fa0f05794 100644
--- a/llvm/unittests/Frontend/HLSLRootSignatureDumpTest.cpp
+++ b/llvm/unittests/Frontend/HLSLRootSignatureDumpTest.cpp
@@ -21,7 +21,7 @@ TEST(HLSLRootSignatureTest, DescriptorCBVClauseDump) {
 
   std::string Out;
   llvm::raw_string_ostream OS(Out);
-  Clause.dump(OS);
+  OS << Clause;
   OS.flush();
 
   std::string Expected = "CBV(b0, numDescriptors = 1, space = 0, "
@@ -41,7 +41,7 @@ TEST(HLSLRootSignatureTest, DescriptorSRVClauseDump) {
 
   std::string Out;
   llvm::raw_string_ostream OS(Out);
-  Clause.dump(OS);
+  OS << Clause;
   OS.flush();
 
   std::string Expected =
@@ -60,7 +60,7 @@ TEST(HLSLRootSignatureTest, DescriptorUAVClauseDump) {
 
   std::string Out;
   llvm::raw_string_ostream OS(Out);
-  Clause.dump(OS);
+  OS << Clause;
   OS.flush();
 
   std::string Expected =
@@ -84,7 +84,7 @@ TEST(HLSLRootSignatureTest, DescriptorSamplerClauseDump) {
 
   std::string Out;
   llvm::raw_string_ostream OS(Out);
-  Clause.dump(OS);
+  OS << Clause;
   OS.flush();
 
   std::string Expected = "Sampler(s0, numDescriptors = 2, space = 42, offset = "
@@ -100,7 +100,7 @@ TEST(HLSLRootSignatureTest, DescriptorTableDump) {
 
   std::string Out;
   llvm::raw_string_ostream OS(Out);
-  Table.dump(OS);
+  OS << Table;
   OS.flush();
 
   std::string Expected =


        


More information about the llvm-commits mailing list