[llvm] b2a958a - [TBLGEN] Emit register pressure set enum

Stanislav Mekhanoshin via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 18 10:22:04 PST 2020


Author: Stanislav Mekhanoshin
Date: 2020-02-18T10:09:05-08:00
New Revision: b2a958a01385ef417917382e27969d5317890941

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

LOG: [TBLGEN] Emit register pressure set enum

Differential Revision: https://reviews.llvm.org/D74649

Added: 
    llvm/test/TableGen/pset-enum.td

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

Removed: 
    


################################################################################
diff  --git a/llvm/test/TableGen/Common/reg-with-subregs-common.td b/llvm/test/TableGen/Common/reg-with-subregs-common.td
index eb73518e9972..cb8ada4b2664 100644
--- a/llvm/test/TableGen/Common/reg-with-subregs-common.td
+++ b/llvm/test/TableGen/Common/reg-with-subregs-common.td
@@ -16,6 +16,9 @@ class Indexes<int N> {
            !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 Size = {2,4,8,16} in {
 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 @@ def GPR1024 : RegisterTuples<[sub0, sub1, sub2, sub3, sub4, sub5, sub6, sub7,
                               (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

diff  --git a/llvm/test/TableGen/pset-enum.td b/llvm/test/TableGen/pset-enum.td
new file mode 100644
index 000000000000..c4c58c2ce640
--- /dev/null
+++ b/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

diff  --git a/llvm/utils/TableGen/CodeGenRegisters.cpp b/llvm/utils/TableGen/CodeGenRegisters.cpp
index 454b05d30297..bebee0d685d7 100644
--- a/llvm/utils/TableGen/CodeGenRegisters.cpp
+++ b/llvm/utils/TableGen/CodeGenRegisters.cpp
@@ -1956,7 +1956,7 @@ void CodeGenRegBank::computeRegUnitSets() {
       // 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(),

diff  --git a/llvm/utils/TableGen/RegisterInfoEmitter.cpp b/llvm/utils/TableGen/RegisterInfoEmitter.cpp
index f9766931344d..a615587efdee 100644
--- a/llvm/utils/TableGen/RegisterInfoEmitter.cpp
+++ b/llvm/utils/TableGen/RegisterInfoEmitter.cpp
@@ -182,6 +182,20 @@ void RegisterInfoEmitter::runEnums(raw_ostream &OS,
       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";
 }


        


More information about the llvm-commits mailing list