diff options
Diffstat (limited to 'llvm/utils/TableGen/FixedLenDecoderEmitter.cpp')
-rw-r--r-- | llvm/utils/TableGen/FixedLenDecoderEmitter.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp b/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp index 012264c..ca071fb 100644 --- a/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp +++ b/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp @@ -226,6 +226,8 @@ typedef std::vector<bit_value_t> insn_t; namespace { +static const uint64_t NO_FIXED_SEGMENTS_SENTINEL = -1ULL; + class FilterChooser; /// Filter - Filter works with FilterChooser to produce the decoding tree for @@ -279,7 +281,7 @@ protected: std::vector<EncodingIDAndOpcode> VariableInstructions; // Map of well-known segment value to its delegate. - std::map<unsigned, std::unique_ptr<const FilterChooser>> FilterChooserMap; + std::map<uint64_t, std::unique_ptr<const FilterChooser>> FilterChooserMap; // Number of instructions which fall under FilteredInstructions category. unsigned NumFiltered; @@ -305,7 +307,7 @@ public: const FilterChooser &getVariableFC() const { assert(NumFiltered == 1); assert(FilterChooserMap.size() == 1); - return *(FilterChooserMap.find((unsigned)-1)->second); + return *(FilterChooserMap.find(NO_FIXED_SEGMENTS_SENTINEL)->second); } // Divides the decoding task into sub tasks and delegates them to the @@ -602,10 +604,9 @@ void Filter::recurse() { // Delegates to an inferior filter chooser for further processing on this // group of instructions whose segment values are variable. - FilterChooserMap.insert( - std::make_pair(-1U, std::make_unique<FilterChooser>( - Owner->AllInstructions, VariableInstructions, - Owner->Operands, BitValueArray, *Owner))); + FilterChooserMap.insert(std::make_pair(NO_FIXED_SEGMENTS_SENTINEL, + std::make_unique<FilterChooser>(Owner->AllInstructions, + VariableInstructions, Owner->Operands, BitValueArray, *Owner))); } // No need to recurse for a singleton filtered instruction. @@ -674,7 +675,7 @@ void Filter::emitTableEntry(DecoderTableInfo &TableInfo) const { for (auto &Filter : FilterChooserMap) { // Field value -1 implies a non-empty set of variable instructions. // See also recurse(). - if (Filter.first == (unsigned)-1) { + if (Filter.first == NO_FIXED_SEGMENTS_SENTINEL) { HasFallthrough = true; // Each scope should always have at least one filter value to check |