[llvm] [NFC][TableGen[ Adopt CodeGenHelpers in SDNodeInfoEmitter (PR #165622)

Rahul Joshi via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 29 13:39:58 PDT 2025


https://github.com/jurahul created https://github.com/llvm/llvm-project/pull/165622

None

>From b7837f6be07351c2f999bc5dac99735a4af73204 Mon Sep 17 00:00:00 2001
From: Rahul Joshi <rjoshi at nvidia.com>
Date: Thu, 23 Oct 2025 15:29:52 -0700
Subject: [PATCH] [NFC][TableGen[ Adopt CodeGenHelpers in SDNodeInfoEmitter

---
 .../TableGen/SDNodeInfoEmitter/advanced.td    |  2 --
 .../ambiguous-constraints-2.td                |  2 --
 .../TableGen/SDNodeInfoEmitter/namespace.td   |  4 ----
 .../TableGen/SDNodeInfoEmitter/no-nodes.td    |  2 --
 .../SDNodeInfoEmitter/trivial-node.td         |  2 --
 llvm/utils/TableGen/SDNodeInfoEmitter.cpp     | 21 +++++++------------
 6 files changed, 7 insertions(+), 26 deletions(-)

diff --git a/llvm/test/TableGen/SDNodeInfoEmitter/advanced.td b/llvm/test/TableGen/SDNodeInfoEmitter/advanced.td
index d7eeaba9d8552..db468603fd13e 100644
--- a/llvm/test/TableGen/SDNodeInfoEmitter/advanced.td
+++ b/llvm/test/TableGen/SDNodeInfoEmitter/advanced.td
@@ -47,7 +47,6 @@ def my_node_3 : SDNode<
 >;
 
 // CHECK:       namespace llvm::MyTargetISD {
-// CHECK-EMPTY:
 // CHECK-NEXT:  enum GenNodeType : unsigned {
 // CHECK-NEXT:    NODE_1 = ISD::BUILTIN_OP_END,
 // CHECK-NEXT:    NODE_2,
@@ -55,7 +54,6 @@ def my_node_3 : SDNode<
 // CHECK-NEXT:  };
 // CHECK-EMPTY:
 // CHECK-NEXT:  static constexpr unsigned GENERATED_OPCODE_END = NODE_3 + 1;
-// CHECK-EMPTY:
 // CHECK-NEXT:  } // namespace llvm::MyTargetISD
 
 // CHECK:       static constexpr char MyTargetSDNodeNamesStorage[] =
diff --git a/llvm/test/TableGen/SDNodeInfoEmitter/ambiguous-constraints-2.td b/llvm/test/TableGen/SDNodeInfoEmitter/ambiguous-constraints-2.td
index 29429e9baa300..3792a93b8397b 100644
--- a/llvm/test/TableGen/SDNodeInfoEmitter/ambiguous-constraints-2.td
+++ b/llvm/test/TableGen/SDNodeInfoEmitter/ambiguous-constraints-2.td
@@ -10,14 +10,12 @@ def my_node_2a : SDNode<"MyTargetISD::NODE_2", SDTypeProfile<1, 0, [SDTCisVT<0,
 def my_node_2b : SDNode<"MyTargetISD::NODE_2", SDTypeProfile<1, 0, [SDTCisVT<0, untyped>]>>;
 
 // CHECK:       namespace llvm::MyTargetISD {
-// CHECK-EMPTY:
 // CHECK-NEXT:  enum GenNodeType : unsigned {
 // CHECK-NEXT:    NODE_1 = ISD::BUILTIN_OP_END,
 // CHECK-NEXT:    NODE_2,
 // CHECK-NEXT:  };
 // CHECK-EMPTY:
 // CHECK-NEXT:  static constexpr unsigned GENERATED_OPCODE_END = NODE_2 + 1;
-// CHECK-EMPTY:
 // CHECK-NEXT:  } // namespace llvm::MyTargetISD
 
 // CHECK:       static constexpr char MyTargetSDNodeNamesStorage[] =
diff --git a/llvm/test/TableGen/SDNodeInfoEmitter/namespace.td b/llvm/test/TableGen/SDNodeInfoEmitter/namespace.td
index 217fb7c9fd475..553c6040d358b 100644
--- a/llvm/test/TableGen/SDNodeInfoEmitter/namespace.td
+++ b/llvm/test/TableGen/SDNodeInfoEmitter/namespace.td
@@ -14,9 +14,7 @@ def node_1 : SDNode<"MyTargetISD::NODE", SDTypeProfile<1, 0, [SDTCisVT<0, i1>]>>
 def node_2 : SDNode<"MyCustomISD::NODE", SDTypeProfile<0, 1, [SDTCisVT<0, i2>]>>;
 
 // EMPTY:        namespace llvm::EmptyISD {
-// EMPTY-EMPTY:
 // EMPTY-NEXT:   static constexpr unsigned GENERATED_OPCODE_END = ISD::BUILTIN_OP_END;
-// EMPTY-EMPTY:
 // EMPTY-NEXT:   } // namespace llvm::EmptyISD
 
 // EMPTY:        static constexpr char MyTargetSDNodeNamesStorage[] =
@@ -35,13 +33,11 @@ def node_2 : SDNode<"MyCustomISD::NODE", SDTypeProfile<0, 1, [SDTCisVT<0, i2>]>>
 // EMPTY-NEXT:       MyTargetSDNodeNames, MyTargetSDTypeConstraints);
 
 // COMMON:       namespace llvm::[[NS]] {
-// COMMON-EMPTY:
 // COMMON-NEXT:  enum GenNodeType : unsigned {
 // COMMON-NEXT:    NODE = ISD::BUILTIN_OP_END,
 // COMMON-NEXT:  };
 // COMMON-EMPTY:
 // COMMON-NEXT:  static constexpr unsigned GENERATED_OPCODE_END = NODE + 1;
-// COMMON-EMPTY:
 // COMMON-NEXT:  } // namespace llvm::[[NS]]
 
 // COMMON:       static constexpr char MyTargetSDNodeNamesStorage[] =
diff --git a/llvm/test/TableGen/SDNodeInfoEmitter/no-nodes.td b/llvm/test/TableGen/SDNodeInfoEmitter/no-nodes.td
index 0c5c63db4c95b..e9ef52ec4f690 100644
--- a/llvm/test/TableGen/SDNodeInfoEmitter/no-nodes.td
+++ b/llvm/test/TableGen/SDNodeInfoEmitter/no-nodes.td
@@ -8,9 +8,7 @@ def MyTarget : Target;
 // CHECK-NEXT:  #undef GET_SDNODE_ENUM
 // CHECK-EMPTY:
 // CHECK-NEXT:  namespace llvm::MyTargetISD {
-// CHECK-EMPTY:
 // CHECK-NEXT:  static constexpr unsigned GENERATED_OPCODE_END = ISD::BUILTIN_OP_END;
-// CHECK-EMPTY:
 // CHECK-NEXT:  } // namespace llvm::MyTargetISD
 // CHECK-EMPTY:
 // CHECK-NEXT:  #endif // GET_SDNODE_ENUM
diff --git a/llvm/test/TableGen/SDNodeInfoEmitter/trivial-node.td b/llvm/test/TableGen/SDNodeInfoEmitter/trivial-node.td
index 4bdc70a8508f6..496b4ee7e9c62 100644
--- a/llvm/test/TableGen/SDNodeInfoEmitter/trivial-node.td
+++ b/llvm/test/TableGen/SDNodeInfoEmitter/trivial-node.td
@@ -7,13 +7,11 @@ def MyTarget : Target;
 def my_noop : SDNode<"MyTargetISD::NOOP", SDTypeProfile<0, 0, []>>;
 
 // CHECK:       namespace llvm::MyTargetISD {
-// CHECK-EMPTY:
 // CHECK-NEXT:  enum GenNodeType : unsigned {
 // CHECK-NEXT:    NOOP = ISD::BUILTIN_OP_END,
 // CHECK-NEXT:  };
 // CHECK-EMPTY:
 // CHECK-NEXT:  static constexpr unsigned GENERATED_OPCODE_END = NOOP + 1;
-// CHECK-EMPTY:
 // CHECK-NEXT:  } // namespace llvm::MyTargetISD
 
 // CHECK:       static constexpr char MyTargetSDNodeNamesStorage[] =
diff --git a/llvm/utils/TableGen/SDNodeInfoEmitter.cpp b/llvm/utils/TableGen/SDNodeInfoEmitter.cpp
index 64f03dae83e7d..5d31b5acceb51 100644
--- a/llvm/utils/TableGen/SDNodeInfoEmitter.cpp
+++ b/llvm/utils/TableGen/SDNodeInfoEmitter.cpp
@@ -10,6 +10,7 @@
 #include "Common/CodeGenDAGPatterns.h" // For SDNodeInfo.
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FormatVariadic.h"
+#include "llvm/TableGen/CodeGenHelpers.h"
 #include "llvm/TableGen/Error.h"
 #include "llvm/TableGen/StringToOffsetTable.h"
 #include "llvm/TableGen/TableGenBackend.h"
@@ -129,9 +130,8 @@ SDNodeInfoEmitter::SDNodeInfoEmitter(const RecordKeeper &RK)
 }
 
 void SDNodeInfoEmitter::emitEnum(raw_ostream &OS) const {
-  OS << "#ifdef GET_SDNODE_ENUM\n";
-  OS << "#undef GET_SDNODE_ENUM\n\n";
-  OS << "namespace llvm::" << TargetSDNodeNamespace << " {\n\n";
+  IfDefEmitter IfDef(OS, "GET_SDNODE_ENUM");
+  NamespaceEmitter NS(OS, "llvm::" + TargetSDNodeNamespace);
 
   if (!NodesByName.empty()) {
     StringRef FirstName = NodesByName.begin()->first;
@@ -145,14 +145,11 @@ void SDNodeInfoEmitter::emitEnum(raw_ostream &OS) const {
 
     OS << "};\n\n";
     OS << "static constexpr unsigned GENERATED_OPCODE_END = " << LastName
-       << " + 1;\n\n";
+       << " + 1;\n";
   } else {
     OS << "static constexpr unsigned GENERATED_OPCODE_END = "
-          "ISD::BUILTIN_OP_END;\n\n";
+          "ISD::BUILTIN_OP_END;\n";
   }
-
-  OS << "} // namespace llvm::" << TargetSDNodeNamespace << "\n\n";
-  OS << "#endif // GET_SDNODE_ENUM\n\n";
 }
 
 std::vector<unsigned> SDNodeInfoEmitter::emitNodeNames(raw_ostream &OS) const {
@@ -324,9 +321,8 @@ static void emitDesc(raw_ostream &OS, StringRef EnumName,
 void SDNodeInfoEmitter::emitDescs(raw_ostream &OS) const {
   StringRef TargetName = Target.getName();
 
-  OS << "#ifdef GET_SDNODE_DESC\n";
-  OS << "#undef GET_SDNODE_DESC\n\n";
-  OS << "namespace llvm {\n";
+  IfDefEmitter IfDef(OS, "GET_SDNODE_DESC");
+  NamespaceEmitter LlvmNs(OS, "llvm");
 
   std::vector<unsigned> NameOffsets = emitNodeNames(OS);
   std::vector<std::pair<unsigned, unsigned>> ConstraintOffsetsAndCounts =
@@ -345,9 +341,6 @@ void SDNodeInfoEmitter::emitDescs(raw_ostream &OS) const {
                 "    /*NumOpcodes=*/{1}, {0}SDNodeDescs,\n"
                 "    {0}SDNodeNames, {0}SDTypeConstraints);\n\n",
                 TargetName, NodesByName.size());
-
-  OS << "} // namespace llvm\n\n";
-  OS << "#endif // GET_SDNODE_DESC\n\n";
 }
 
 void SDNodeInfoEmitter::run(raw_ostream &OS) const {



More information about the llvm-commits mailing list