[PATCH] D74649: [TBLGEN] Emit register pressure set enum

Stanislav Mekhanoshin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 18 10:26:01 PST 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rGb2a958a01385: [TBLGEN] Emit register pressure set enum (authored by rampitec).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74649/new/

https://reviews.llvm.org/D74649

Files:
  llvm/test/TableGen/Common/reg-with-subregs-common.td
  llvm/test/TableGen/pset-enum.td
  llvm/utils/TableGen/CodeGenRegisters.cpp
  llvm/utils/TableGen/RegisterInfoEmitter.cpp


Index: llvm/utils/TableGen/RegisterInfoEmitter.cpp
===================================================================
--- llvm/utils/TableGen/RegisterInfoEmitter.cpp
+++ llvm/utils/TableGen/RegisterInfoEmitter.cpp
@@ -182,6 +182,20 @@
       OS << "} // end namespace " << Namespace << "\n\n";
   }
 
+  OS << "// Register pressure sets enum.\n";
+  if (!Namespace.empty())
+    OS << "namespace " << Namespace << " {\n";
+  OS << "enum RegisterPressureSets {\n";
+  unsigned NumSets = Bank.getNumRegPressureSets();
+  for (unsigned i = 0; i < NumSets; ++i ) {
+    const RegUnitSet &RegUnits = Bank.getRegSetAt(i);
+    OS << "  " << RegUnits.Name << " = " << i << ",\n";
+  }
+  OS << "};\n";
+  if (!Namespace.empty())
+    OS << "} // end namespace " << Namespace << '\n';
+  OS << '\n';
+
   OS << "} // end namespace llvm\n\n";
   OS << "#endif // GET_REGINFO_ENUM\n\n";
 }
Index: llvm/utils/TableGen/CodeGenRegisters.cpp
===================================================================
--- llvm/utils/TableGen/CodeGenRegisters.cpp
+++ llvm/utils/TableGen/CodeGenRegisters.cpp
@@ -1956,7 +1956,7 @@
       // Speculatively grow the RegUnitSets to hold the new set.
       RegUnitSets.resize(RegUnitSets.size() + 1);
       RegUnitSets.back().Name =
-        RegUnitSets[Idx].Name + "+" + RegUnitSets[SearchIdx].Name;
+        RegUnitSets[Idx].Name + "_with_" + RegUnitSets[SearchIdx].Name;
 
       std::set_union(RegUnitSets[Idx].Units.begin(),
                      RegUnitSets[Idx].Units.end(),
Index: llvm/test/TableGen/pset-enum.td
===================================================================
--- /dev/null
+++ llvm/test/TableGen/pset-enum.td
@@ -0,0 +1,11 @@
+// RUN: llvm-tblgen -gen-register-info -I %p/../../include -I %p/Common %s | FileCheck %s
+// RUN: llvm-tblgen -gen-register-info -I %p/../../include -I %p/Common -DUSE_NAMESPACE %s | FileCheck --check-prefixes=CHECK,NAMESPACE %s
+
+include "reg-with-subregs-common.td"
+
+// CHECK-LABEL:    // Register pressure sets enum.
+// NAMESPACE-NEXT: namespace TestNamespace {
+// CHECK-NEXT:     enum RegisterPressureSets {
+// CHECK-NEXT:       GPR32 = 0,
+// CHECK-NEXT:     };
+// NAMESPACE-NEXT: } // end namespace TestNamespace
Index: llvm/test/TableGen/Common/reg-with-subregs-common.td
===================================================================
--- llvm/test/TableGen/Common/reg-with-subregs-common.td
+++ llvm/test/TableGen/Common/reg-with-subregs-common.td
@@ -16,6 +16,9 @@
            !listconcat(acc, !if(!lt(cur, N), [cur], [])));
 }
 
+#ifdef USE_NAMESPACE
+  let Namespace = "TestNamespace" in {
+#endif
 foreach Index = 0-31 in {
   def sub#Index : SubRegIndex<32, !shl(Index, 5)>;
 }
@@ -35,6 +38,9 @@
 foreach Index = 0-255 in {
   def R#Index : Register <"r"#Index>;
 }
+#ifdef USE_NAMESPACE
+}
+#endif
 
 def GPR32 : RegisterClass<"TestTarget", [i32], 32,
                           (add (sequence "R%u", 0, 255))>;
@@ -124,5 +130,11 @@
                               (decimate (shl GPR32, 31), 1)
                              ]>;
 
+#ifdef USE_NAMESPACE
+  let Namespace = "TestNamespace" in {
+#endif
 def GPR_64 : RegisterClass<"", [v2i32], 64, (add GPR64)>;
 def GPR_1024 : RegisterClass<"", [v32i32], 1024, (add GPR1024)>;
+#ifdef USE_NAMESPACE
+}
+#endif


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D74649.245200.patch
Type: text/x-patch
Size: 3268 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200218/5774be0f/attachment.bin>


More information about the llvm-commits mailing list