diff options
author | Sergei Barannikov <barannikov88@gmail.com> | 2025-08-22 07:42:06 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-22 04:42:06 +0000 |
commit | 6a7ade03d1fced72bbe25cb3cf9efde8c928e563 (patch) | |
tree | 9868dd2f4163fb2b9ea845ad6af4eb595a285780 /llvm/utils/TableGen/DecoderEmitter.cpp | |
parent | 586a7131d3d4420f978ef13faec7f67998bcb8bc (diff) | |
download | llvm-6a7ade03d1fced72bbe25cb3cf9efde8c928e563.zip llvm-6a7ade03d1fced72bbe25cb3cf9efde8c928e563.tar.gz llvm-6a7ade03d1fced72bbe25cb3cf9efde8c928e563.tar.bz2 |
[TableGen][DecoderEmitter] Remove redundant variable (NFC) (#154880)
`NumFiltered` is the number of elements in all vectors in a map.
It is ever compared to 1, which is equivalent to checking if the map
contains exactly one vector with exactly one element.
Diffstat (limited to 'llvm/utils/TableGen/DecoderEmitter.cpp')
-rw-r--r-- | llvm/utils/TableGen/DecoderEmitter.cpp | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/llvm/utils/TableGen/DecoderEmitter.cpp b/llvm/utils/TableGen/DecoderEmitter.cpp index 0afd918..0d394ed 100644 --- a/llvm/utils/TableGen/DecoderEmitter.cpp +++ b/llvm/utils/TableGen/DecoderEmitter.cpp @@ -403,26 +403,25 @@ protected: // A filter chooser for encodings that contain some '?' in the filtered range. std::unique_ptr<const FilterChooser> VariableFC; - // Number of instructions which fall under FilteredInstructions category. - unsigned NumFiltered; - public: Filter(Filter &&f); Filter(const FilterChooser &owner, unsigned startBit, unsigned numBits); ~Filter() = default; - unsigned getNumFiltered() const { return NumFiltered; } + bool hasSingleFilteredID() const { + return FilteredIDs.size() == 1 && FilteredIDs.begin()->second.size() == 1; + } unsigned getSingletonEncodingID() const { - assert(NumFiltered == 1); + assert(hasSingleFilteredID()); return FilteredIDs.begin()->second.front(); } // Return the filter chooser for the group of instructions without constant // segment values. const FilterChooser &getVariableFC() const { - assert(NumFiltered == 1 && FilterChooserMap.empty()); + assert(hasSingleFilteredID() && FilterChooserMap.empty()); return *VariableFC; } @@ -617,14 +616,12 @@ Filter::Filter(Filter &&f) FilteredIDs(std::move(f.FilteredIDs)), VariableIDs(std::move(f.VariableIDs)), FilterChooserMap(std::move(f.FilterChooserMap)), - VariableFC(std::move(f.VariableFC)), NumFiltered(f.NumFiltered) {} + VariableFC(std::move(f.VariableFC)) {} Filter::Filter(const FilterChooser &owner, unsigned startBit, unsigned numBits) : Owner(owner), StartBit(startBit), NumBits(numBits) { assert(StartBit + NumBits - 1 < Owner.BitWidth); - NumFiltered = 0; - for (unsigned EncodingID : Owner.EncodingIDs) { // Populates the insn given the uid. KnownBits EncodingBits = Owner.getMandatoryEncodingBits(EncodingID); @@ -636,7 +633,6 @@ Filter::Filter(const FilterChooser &owner, unsigned startBit, unsigned numBits) // The encoding bits are well-known. Lets add the uid of the // instruction into the bucket keyed off the constant field value. FilteredIDs[FieldBits.getConstant().getZExtValue()].push_back(EncodingID); - ++NumFiltered; } else { // Some of the encoding bit(s) are unspecified. This contributes to // one additional member of "Variable" instructions. @@ -668,7 +664,7 @@ void Filter::recurse() { // No need to recurse for a singleton filtered instruction. // See also Filter::emit*(). - if (getNumFiltered() == 1) { + if (hasSingleFilteredID()) { assert(VariableFC && "Shouldn't have created a filter for one encoding!"); return; } @@ -1716,7 +1712,7 @@ void FilterChooser::emitTableEntries(DecoderTableInfo &TableInfo) const { } // Use the best filter to do the decoding! - if (BestFilter->getNumFiltered() == 1) + if (BestFilter->hasSingleFilteredID()) emitSingletonTableEntry(TableInfo, *BestFilter); else BestFilter->emitTableEntry(TableInfo); |