[llvm] [TableGen] Make more use of findSubRegIdx. NFCI. (PR #142996)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 5 09:01:12 PDT 2025
https://github.com/jayfoad created https://github.com/llvm/llvm-project/pull/142996
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.
>From d138e05b83eeaacc99652dee988e5758a384b915 Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
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<ImmRenderer>(SubRegIndex->EnumValue);
return Error::success();
}
@@ -1606,7 +1606,8 @@ Expected<action_iterator> 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<action_iterator> GlobalISelEmitter::importExplicitUseRenderers(
if (const DefInit *SubRegInit =
dyn_cast<DefInit>(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<DefInit>(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<DefInit>(SubRegIdxNode.getLeafValue());
if (!SubRegInit)
return nullptr;
- return CGRegs.getSubRegIdx(SubRegInit->getDef());
+ return CGRegs.findSubRegIdx(SubRegInit->getDef());
}
Expected<RuleMatcher> GlobalISelEmitter::runOnPattern(const PatternToMatch &P) {
More information about the llvm-commits
mailing list