Skip to content

Conversation

@jurahul
Copy link
Contributor

@jurahul jurahul commented Oct 29, 2025

Use IfDefEmitter and NamespaceEmitter in SDNodeInfoEmitter.

@jurahul jurahul marked this pull request as ready for review October 29, 2025 21:54
@jurahul jurahul requested review from rnk and s-barannikov October 29, 2025 21:55
@llvmbot
Copy link
Member

llvmbot commented Oct 29, 2025

@llvm/pr-subscribers-tablegen

Author: Rahul Joshi (jurahul)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/165622.diff

6 Files Affected:

  • (modified) llvm/test/TableGen/SDNodeInfoEmitter/advanced.td (-2)
  • (modified) llvm/test/TableGen/SDNodeInfoEmitter/ambiguous-constraints-2.td (-2)
  • (modified) llvm/test/TableGen/SDNodeInfoEmitter/namespace.td (-4)
  • (modified) llvm/test/TableGen/SDNodeInfoEmitter/no-nodes.td (-2)
  • (modified) llvm/test/TableGen/SDNodeInfoEmitter/trivial-node.td (-2)
  • (modified) llvm/utils/TableGen/SDNodeInfoEmitter.cpp (+7-14)
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 {

@jayfoad jayfoad changed the title [NFC][TableGen[ Adopt CodeGenHelpers in SDNodeInfoEmitter [NFC][TableGen] Adopt CodeGenHelpers in SDNodeInfoEmitter Nov 4, 2025
@jurahul jurahul force-pushed the nfc_adopt_ifdef_emitter_sdinfo_emitter branch from b7837f6 to d216e77 Compare November 4, 2025 18:10
@jurahul jurahul merged commit 00171b3 into llvm:main Nov 5, 2025
10 checks passed
@jurahul jurahul deleted the nfc_adopt_ifdef_emitter_sdinfo_emitter branch November 5, 2025 19:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants