[llvm] [TableGen][Decoder] Cache DecoderNamespace in InstructionEncoding (NFC) (PR #156059)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 29 09:51:09 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-tablegen
Author: Sergei Barannikov (s-barannikov)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/156059.diff
1 Files Affected:
- (modified) llvm/utils/TableGen/DecoderEmitter.cpp (+9-4)
``````````diff
diff --git a/llvm/utils/TableGen/DecoderEmitter.cpp b/llvm/utils/TableGen/DecoderEmitter.cpp
index 6eab90f501793..f1db0368d0988 100644
--- a/llvm/utils/TableGen/DecoderEmitter.cpp
+++ b/llvm/utils/TableGen/DecoderEmitter.cpp
@@ -157,6 +157,9 @@ class InstructionEncoding {
/// The name of this encoding (for debugging purposes).
std::string Name;
+ /// The namespace in which this encoding exists.
+ StringRef DecoderNamespace;
+
/// Known bits of this encoding. This is the value of the `Inst` field
/// with any variable references replaced with '?'.
KnownBits InstBits;
@@ -190,6 +193,9 @@ class InstructionEncoding {
/// Returns the name of this encoding, for debugging purposes.
StringRef getName() const { return Name; }
+ /// Returns the namespace in which this encoding exists.
+ StringRef getDecoderNamespace() const { return DecoderNamespace; }
+
/// Returns the size of this encoding, in bits.
unsigned getBitWidth() const { return InstBits.getBitWidth(); }
@@ -2054,6 +2060,7 @@ InstructionEncoding::InstructionEncoding(const Record *EncodingDef,
Name = (EncodingDef->getName() + Twine(':')).str();
Name.append(InstDef->getName());
+ DecoderNamespace = EncodingDef->getValueAsString("DecoderNamespace");
DecoderMethod = EncodingDef->getValueAsString("DecoderMethod");
if (!DecoderMethod.empty())
HasCompleteDecoder = EncodingDef->getValueAsBit("hasCompleteDecoder");
@@ -2339,8 +2346,7 @@ void DecoderEmitter::handleHwModesUnrelatedEncodings(
break;
}
case SUPPRESSION_LEVEL1: {
- const Record *InstDef = Encodings[EncodingID].getInstruction()->TheDef;
- StringRef DecoderNamespace = InstDef->getValueAsString("DecoderNamespace");
+ StringRef DecoderNamespace = Encodings[EncodingID].getDecoderNamespace();
auto It = NamespacesWithHwModes.find(DecoderNamespace);
if (It != NamespacesWithHwModes.end()) {
for (unsigned HwModeID : It->second)
@@ -2513,8 +2519,7 @@ namespace {
const InstructionEncoding &Encoding = Encodings[EncodingID];
const Record *EncodingDef = Encoding.getRecord();
unsigned Size = EncodingDef->getValueAsInt("Size");
- StringRef DecoderNamespace =
- EncodingDef->getValueAsString("DecoderNamespace");
+ StringRef DecoderNamespace = Encoding.getDecoderNamespace();
EncMap[{DecoderNamespace, HwModeID, Size}].push_back(EncodingID);
}
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/156059
More information about the llvm-commits
mailing list