From d138e05b83eeaacc99652dee988e5758a384b915 Mon Sep 17 00:00:00 2001 From: Jay Foad Date: Thu, 5 Jun 2025 16:56:57 +0100 Subject: [PATCH] [TableGen] Make more use of findSubRegIdx. NFCI. Outside of CodeGenRegisters itself, we only want to find existing SubRegIdxs, not create new ones. Change findSubRegIdx to assert and use it consistently for this purpose. --- llvm/utils/TableGen/Common/CodeGenRegisters.cpp | 2 +- llvm/utils/TableGen/DAGISelMatcherGen.cpp | 1 - llvm/utils/TableGen/GlobalISelEmitter.cpp | 12 +++++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/llvm/utils/TableGen/Common/CodeGenRegisters.cpp b/llvm/utils/TableGen/Common/CodeGenRegisters.cpp index 6b0b1ccba80fb..e3a60d908fffe 100644 --- a/llvm/utils/TableGen/Common/CodeGenRegisters.cpp +++ b/llvm/utils/TableGen/Common/CodeGenRegisters.cpp @@ -1333,7 +1333,7 @@ CodeGenSubRegIndex *CodeGenRegBank::getSubRegIdx(const Record *Def) { const CodeGenSubRegIndex * CodeGenRegBank::findSubRegIdx(const Record *Def) const { - return Def2SubRegIdx.lookup(Def); + return Def2SubRegIdx.at(Def); } CodeGenRegister *CodeGenRegBank::getReg(const Record *Def) { diff --git a/llvm/utils/TableGen/DAGISelMatcherGen.cpp b/llvm/utils/TableGen/DAGISelMatcherGen.cpp index a1ab06defb456..afdb6879eede4 100644 --- a/llvm/utils/TableGen/DAGISelMatcherGen.cpp +++ b/llvm/utils/TableGen/DAGISelMatcherGen.cpp @@ -730,7 +730,6 @@ void MatcherGen::EmitResultLeafAsOperand(const TreePatternNode &N, // 7 bit and we cannot use StringInteger. if (RB.getSubRegIndices().size() > 127) { const CodeGenSubRegIndex *I = RB.findSubRegIdx(Def); - assert(I && "Cannot find subreg index by name!"); if (I->EnumValue > 127) { AddMatcher(new EmitIntegerMatcher(I->EnumValue, MVT::i32, NextRecordedOperandNo)); diff --git a/llvm/utils/TableGen/GlobalISelEmitter.cpp b/llvm/utils/TableGen/GlobalISelEmitter.cpp index edaf5299efc39..55f60dbfa2dba 100644 --- a/llvm/utils/TableGen/GlobalISelEmitter.cpp +++ b/llvm/utils/TableGen/GlobalISelEmitter.cpp @@ -1333,7 +1333,7 @@ Error GlobalISelEmitter::importLeafNodeRenderer( } if (R->isSubClassOf("SubRegIndex")) { - const CodeGenSubRegIndex *SubRegIndex = CGRegs.getSubRegIdx(R); + const CodeGenSubRegIndex *SubRegIndex = CGRegs.findSubRegIdx(R); MIBuilder.addRenderer(SubRegIndex->EnumValue); return Error::success(); } @@ -1606,7 +1606,8 @@ Expected GlobalISelEmitter::importExplicitUseRenderers( if (!SubRegInit) return failedImport("EXTRACT_SUBREG child #1 is not a subreg index"); - CodeGenSubRegIndex *SubIdx = CGRegs.getSubRegIdx(SubRegInit->getDef()); + const CodeGenSubRegIndex *SubIdx = + CGRegs.findSubRegIdx(SubRegInit->getDef()); const TreePatternNode &ValChild = Dst.getChild(0); if (!ValChild.isLeaf()) { // We really have to handle the source instruction, and then insert a @@ -1675,7 +1676,8 @@ Expected GlobalISelEmitter::importExplicitUseRenderers( if (const DefInit *SubRegInit = dyn_cast(SubRegChild.getLeafValue())) { - CodeGenSubRegIndex *SubIdx = CGRegs.getSubRegIdx(SubRegInit->getDef()); + const CodeGenSubRegIndex *SubIdx = + CGRegs.findSubRegIdx(SubRegInit->getDef()); if (Error Err = importNodeRenderer(M, DstMIBuilder, ValChild, InsertPt)) return Err; @@ -2004,7 +2006,7 @@ const CodeGenRegisterClass *GlobalISelEmitter::inferSuperRegisterClass( const DefInit *SubRegInit = dyn_cast(SubRegIdxNode.getLeafValue()); if (!SubRegInit) return nullptr; - const CodeGenSubRegIndex *SubIdx = CGRegs.getSubRegIdx(SubRegInit->getDef()); + const CodeGenSubRegIndex *SubIdx = CGRegs.findSubRegIdx(SubRegInit->getDef()); // Use the information we found above to find a minimal register class which // supports the subregister and type we want. @@ -2034,7 +2036,7 @@ const CodeGenSubRegIndex *GlobalISelEmitter::inferSubRegIndexForNode( const DefInit *SubRegInit = dyn_cast(SubRegIdxNode.getLeafValue()); if (!SubRegInit) return nullptr; - return CGRegs.getSubRegIdx(SubRegInit->getDef()); + return CGRegs.findSubRegIdx(SubRegInit->getDef()); } Expected GlobalISelEmitter::runOnPattern(const PatternToMatch &P) {