[llvm] [TableGen] Let -register-info-debug dump the Artificial flag (PR #185899)

via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 11 08:25:57 PDT 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-tablegen

Author: Jay Foad (jayfoad)

<details>
<summary>Changes</summary>

Dump the Artificial flag for RegisterClasses, SubRegIndices and
Registers. To avoid clutter it is only dumped when the flag is set (has
value 1).


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


3 Files Affected:

- (modified) llvm/test/TableGen/ArtificialRegs.td (+7) 
- (modified) llvm/test/TableGen/ArtificialSubregs.td (+10) 
- (modified) llvm/utils/TableGen/RegisterInfoEmitter.cpp (+6) 


``````````diff
diff --git a/llvm/test/TableGen/ArtificialRegs.td b/llvm/test/TableGen/ArtificialRegs.td
index 9f5e76e32bb33..91c20a1215efb 100644
--- a/llvm/test/TableGen/ArtificialRegs.td
+++ b/llvm/test/TableGen/ArtificialRegs.td
@@ -52,5 +52,12 @@ def DA : RegisterClass<"D", [i64], 64, (add D0, A)>;
 // CHECK-NEXT: BaseClassOrder:
 // CHECK-NEXT: Regs: A D0{{$}}
 // CHECK-NEXT: SubClasses: DA{{$}}
+//
+// CHECK-LABEL: Register A:
+// CHECK-NEXT: CostPerUse: 0
+// CHECK-NEXT: CoveredBySubregs: 0
+// CHECK-NEXT: HasDisjunctSubRegs: 0
+// CHECK-NEXT: RegUnit 0
+// CHECK-NEXT: Artificial: 1
 
 def TestTarget : Target;
diff --git a/llvm/test/TableGen/ArtificialSubregs.td b/llvm/test/TableGen/ArtificialSubregs.td
index b298a3a84d2ba..837c47f626904 100644
--- a/llvm/test/TableGen/ArtificialSubregs.td
+++ b/llvm/test/TableGen/ArtificialSubregs.td
@@ -129,6 +129,7 @@ def TestTarget : Target;
 // CHECK-NEXT: 	LaneMask: 0000000000000120
 // CHECK-LABEL: SubRegIndex dsub_hi:
 // CHECK-NEXT: 	LaneMask: 0000000000000001
+// CHECK:       Artificial: 1
 // CHECK-LABEL: SubRegIndex ssub:
 // CHECK-NEXT: 	LaneMask: 0000000000000004
 // CHECK-LABEL: SubRegIndex ssub0:
@@ -139,10 +140,13 @@ def TestTarget : Target;
 // CHECK-NEXT: 	LaneMask: 0000000000000020
 // CHECK-LABEL: SubRegIndex ssub_hi:
 // CHECK-NEXT: 	LaneMask: 0000000000000040
+// CHECK:       Artificial: 1
 // CHECK-LABEL: SubRegIndex dsub1_then_ssub_hi:
 // CHECK-NEXT: 	LaneMask: 0000000000000080
+// CHECK:       Artificial: 1
 // CHECK-LABEL: SubRegIndex dsub2_then_ssub_hi:
 // CHECK-NEXT: 	LaneMask: 0000000000000100
+// CHECK:       Artificial: 1
 // CHECK-LABEL: SubRegIndex ssub_ssub1:
 // CHECK-NEXT: 	LaneMask: 0000000000000014
 // CHECK-LABEL: SubRegIndex dsub0_dsub1:
@@ -174,6 +178,12 @@ def TestTarget : Target;
 // CHECK: 	CoveredBySubregs: 0
 // CHECK: 	HasDisjunctSubRegs: 0
 //
+// CHECK-LABEL: Register D0_HI:
+// CHECK:       Artificial: 1
+//
+// CHECK-LABEL: Register S0_HI:
+// CHECK:       Artificial: 1
+//
 // CHECK-LABEL: Register D0_D1:
 // CHECK: 	CoveredBySubregs: 1
 // CHECK: 	HasDisjunctSubRegs: 1
diff --git a/llvm/utils/TableGen/RegisterInfoEmitter.cpp b/llvm/utils/TableGen/RegisterInfoEmitter.cpp
index 6476b0a5b2d90..0338d0b588352 100644
--- a/llvm/utils/TableGen/RegisterInfoEmitter.cpp
+++ b/llvm/utils/TableGen/RegisterInfoEmitter.cpp
@@ -1990,6 +1990,8 @@ void RegisterInfoEmitter::debugDump(raw_ostream &OS) {
       OS << " " << SRC->getName();
     }
     OS << '\n';
+    if (RC.Artificial)
+      OS << "\tArtificial: 1\n";
   }
 
   for (const CodeGenSubRegIndex &SRI : RegBank.getSubRegIndices()) {
@@ -2002,6 +2004,8 @@ void RegisterInfoEmitter::debugDump(raw_ostream &OS) {
     OS << "\tSize: " << printByHwMode(SRI.Range, [](const SubRegRange &Info) {
       return Info.Size;
     }) << '\n';
+    if (SRI.Artificial)
+      OS << "\tArtificial: 1\n";
   }
 
   for (const CodeGenRegister &R : RegBank.getRegisters()) {
@@ -2018,6 +2022,8 @@ void RegisterInfoEmitter::debugDump(raw_ostream &OS) {
     }
     for (unsigned U : R.getNativeRegUnits())
       OS << "\tRegUnit " << U << '\n';
+    if (R.Artificial)
+      OS << "\tArtificial: 1\n";
   }
 }
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/185899


More information about the llvm-commits mailing list