Skip to content

Commit a6cb924

Browse files
committed
[TableGen] Let -register-info-debug dump Offset/Size for each SubRegIndex
This patch adds dumping of the Offset and Size info for each SubRegIndex printed when using llvm-tblgen -gen-register-info -register-info-debug It also updates the ConcatenatedSubregs.td to check those printouts, including some new subreg definitions that show short-comings in how the size is calculated when concatenating subregisters and at least one has an incomplete size (-1). Today TableGen will just add sizes together, resulting in MCRegisterInfo::getSubRegIdxSize() returning a value that isn't -1 even if the combined subregister size is unknown. Differential Revision: https://reviews.llvm.org/D138340
1 parent 5b19463 commit a6cb924

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

llvm/test/TableGen/ConcatenatedSubregs.td

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def sub0 : SubRegIndex<32>;
2323
def sub1 : SubRegIndex<32, 32>;
2424
def sub2 : SubRegIndex<32, 64>;
2525

26-
def ssub0 : SubRegIndex<16>;
26+
def ssub0 : SubRegIndex<-1>;
2727
def ssub1 : SubRegIndex<16, 16>;
2828
def ssub2 : ComposedSubRegIndex<sub1, ssub0>;
2929
def ssub3 : ComposedSubRegIndex<sub1, ssub1>;
@@ -57,6 +57,7 @@ def D5 : MyReg<"d5", [S10, S11]>;
5757
def D6 : MyReg<"d6", [S12, S13]>;
5858
def D7 : MyReg<"d7", [S14, S15]>;
5959
}
60+
6061
def DRegs : MyClass<32, [i32], (sequence "D%u", 0, 7)>;
6162

6263
def Dtup2regs : RegisterTuples<[sub0, sub1],
@@ -88,14 +89,20 @@ def TestTarget : Target;
8889
// CHECK: Regs: D0 D1 D2 D3 D4 D5 D6 D7 S1_S2 S3_S4 S5_S6 S7_S8 S9_S10 S11_S12 S13_S14
8990
// CHECK-LABEL: RegisterClass DRegs:
9091

92+
// CHECK-LABEL: SubRegIndex ssub1:
93+
// CHECK: Offset, Size: 16, 16
9194
// CHECK-LABEL: SubRegIndex sub0:
9295
// CHECK-LABEL: SubRegIndex sub1:
9396
// CHECK-LABEL: SubRegIndex sub2:
9497
// Check inferred indexes:
95-
// CHECK: SubRegIndex ssub1_ssub2:
96-
// CHECK: SubRegIndex ssub3_ssub4:
97-
// CHECK: SubRegIndex ssub0_ssub1_ssub2_ssub3:
98-
// CHECK: SubRegIndex ssub1_ssub2_ssub3_ssub4:
98+
// CHECK-LABEL: SubRegIndex ssub1_ssub2:
99+
// FIXME: Size should be unknown (65535).
100+
// CHECK: Offset, Size: 16, 15
101+
// CHECK-LABEL: SubRegIndex ssub3_ssub4:
102+
// CHECK-LABEL: SubRegIndex ssub0_ssub1_ssub2_ssub3:
103+
// FIXME: Size should be unknown (65535).
104+
// CHECK: Offset, Size: 65535, 30
105+
// CHECK-LABEL: SubRegIndex ssub1_ssub2_ssub3_ssub4:
99106

100107
// Check that all subregs are generated on some examples
101108
// CHECK-LABEL: Register D0:

llvm/utils/TableGen/RegisterInfoEmitter.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1836,6 +1836,7 @@ void RegisterInfoEmitter::debugDump(raw_ostream &OS) {
18361836
OS << "SubRegIndex " << SRI.getName() << ":\n";
18371837
OS << "\tLaneMask: " << PrintLaneMask(SRI.LaneMask) << '\n';
18381838
OS << "\tAllSuperRegsCovered: " << SRI.AllSuperRegsCovered << '\n';
1839+
OS << "\tOffset, Size: " << SRI.Offset << ", " << SRI.Size << '\n';
18391840
}
18401841

18411842
for (const CodeGenRegister &R : RegBank.getRegisters()) {

0 commit comments

Comments
 (0)