[llvm] [TableGen][DecoderEmitter] Add a few DecoderTableInfo helpers (NFC) (PR #158776)
Sergei Barannikov via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 15 21:52:31 PDT 2025
https://github.com/s-barannikov created https://github.com/llvm/llvm-project/pull/158776
None
>From 276d9a48e10f4d31a491c3ad595d88568624657d Mon Sep 17 00:00:00 2001
From: Sergei Barannikov <barannikov88 at gmail.com>
Date: Tue, 16 Sep 2025 07:52:08 +0300
Subject: [PATCH] [TableGen][DecoderEmitter] Add a few DecoderTableInfo helpers
(NFC)
---
llvm/utils/TableGen/DecoderEmitter.cpp | 37 +++++++++++++++++---------
1 file changed, 24 insertions(+), 13 deletions(-)
diff --git a/llvm/utils/TableGen/DecoderEmitter.cpp b/llvm/utils/TableGen/DecoderEmitter.cpp
index 97a6b58e1bd99..5b360ce24903e 100644
--- a/llvm/utils/TableGen/DecoderEmitter.cpp
+++ b/llvm/utils/TableGen/DecoderEmitter.cpp
@@ -226,6 +226,26 @@ struct DecoderTableInfo {
DecoderTable Table;
PredicateSet Predicates;
DecoderSet Decoders;
+
+ void insertPredicate(StringRef Predicate) {
+ Predicates.insert(CachedHashString(Predicate));
+ }
+
+ void insertDecoder(StringRef Decoder) {
+ Decoders.insert(CachedHashString(Decoder));
+ }
+
+ unsigned getPredicateIndex(StringRef Predicate) const {
+ auto I = find(Predicates, Predicate);
+ assert(I != Predicates.end());
+ return std::distance(Predicates.begin(), I);
+ }
+
+ unsigned getDecoderIndex(StringRef Decoder) const {
+ auto I = find(Decoders, Decoder);
+ assert(I != Decoders.end());
+ return std::distance(Decoders.begin(), I);
+ }
};
using NamespacesHwModesMap = std::map<StringRef, std::set<unsigned>>;
@@ -1090,13 +1110,8 @@ unsigned DecoderTableBuilder::getDecoderIndex(unsigned EncodingID) const {
// performance concern, we can implement a mangling of the predicate
// data easily enough with a map back to the actual string. That's
// overkill for now, though.
-
- // Make sure the predicate is in the table.
- DecoderSet &Decoders = TableInfo.Decoders;
- Decoders.insert(CachedHashString(Decoder));
- // Now figure out the index for when we write out the table.
- DecoderSet::const_iterator P = find(Decoders, Decoder.str());
- return std::distance(Decoders.begin(), P);
+ TableInfo.insertDecoder(Decoder);
+ return TableInfo.getDecoderIndex(Decoder);
}
// If ParenIfBinOp is true, print a surrounding () if Val uses && or ||.
@@ -1154,12 +1169,8 @@ unsigned DecoderTableBuilder::getPredicateIndex(StringRef Predicate) const {
// performance concern, we can implement a mangling of the predicate
// data easily enough with a map back to the actual string. That's
// overkill for now, though.
-
- // Make sure the predicate is in the table.
- TableInfo.Predicates.insert(CachedHashString(Predicate));
- // Now figure out the index for when we write out the table.
- PredicateSet::const_iterator P = find(TableInfo.Predicates, Predicate);
- return (unsigned)(P - TableInfo.Predicates.begin());
+ TableInfo.insertPredicate(Predicate);
+ return TableInfo.getPredicateIndex(Predicate);
}
void DecoderTableBuilder::emitPredicateTableEntry(unsigned EncodingID) const {
More information about the llvm-commits
mailing list