gem5
v20.1.0.0
|
A pattern that compares masked values against dictionary entries. More...
#include <dictionary_compressor.hh>
Public Member Functions | |
MaskedPattern (const int number, const uint64_t code, const uint64_t metadata_length, const int match_location, const DictionaryEntry bytes, const bool allocate=true) | |
DictionaryEntry | decompress (const DictionaryEntry dict_bytes) const override |
Decompress the pattern. More... | |
Public Member Functions inherited from Compressor::DictionaryCompressor< T >::Pattern | |
Pattern (const int number, const uint64_t code, const uint64_t metadata_length, const uint64_t num_unmatched_bits, const int match_location, const bool allocate=true) | |
Default constructor. More... | |
virtual | ~Pattern ()=default |
Default destructor. More... | |
int | getPatternNumber () const |
Get enum number associated to this pattern. More... | |
uint8_t | getCode () const |
Get code of this pattern. More... | |
uint8_t | getMatchLocation () const |
Get the index of the dictionary match location. More... | |
std::size_t | getSizeBits () const |
Get size, in bits, of the pattern (excluding prefix). More... | |
bool | shouldAllocate () const |
Determine if pattern allocates a dictionary entry. More... | |
std::string | print () const |
Extract pattern's information to a string. More... | |
Static Public Member Functions | |
static bool | isPattern (const DictionaryEntry &bytes, const DictionaryEntry &dict_bytes, const int match_location) |
Private Attributes | |
const T | bits |
A copy of the bits that do not belong to the mask. More... | |
Additional Inherited Members | |
Protected Attributes inherited from Compressor::DictionaryCompressor< T >::Pattern | |
const int | patternNumber |
Pattern enum number. More... | |
const uint8_t | code |
Code associated to the pattern. More... | |
const uint8_t | length |
Length, in bits, of the code and match location. More... | |
const uint8_t | numUnmatchedBits |
Number of unmatched bits. More... | |
const int | matchLocation |
Index representing the the match location. More... | |
const bool | allocate |
Wether the pattern allocates a dictionary entry or not. More... | |
A pattern that compares masked values against dictionary entries.
If the masked dictionary entry matches perfectly the masked value to be compressed, there is a pattern match.
For example, if the mask is 0xFF00 (that is, this pattern matches the MSB), the value (V) 0xFF20 is being compressed, and the dictionary contains the value (D) 0xFF03, this is a match (V & mask == 0xFF00 == D & mask), and 0x0020 is added to the list of unmatched bits.
mask | A mask containing the bits that must match. |
Definition at line 128 of file dictionary_compressor.hh.
|
inline |
Definition at line 469 of file dictionary_compressor.hh.
|
inlineoverridevirtual |
Decompress the pattern.
Each pattern has its own way of interpreting its data.
dict_bytes | The bytes in the corresponding matching entry. |
Implements Compressor::DictionaryCompressor< T >::Pattern.
Reimplemented in Compressor::DictionaryCompressor< T >::MaskedValuePattern< value, mask >, and Compressor::DictionaryCompressor< T >::MaskedValuePattern< 0, 0xFFFFFFFFFFFFFFFF >.
Definition at line 493 of file dictionary_compressor.hh.
References bits(), Compressor::DictionaryCompressor< T >::fromDictionaryEntry(), ArmISA::mask, and Compressor::DictionaryCompressor< T >::toDictionaryEntry().
Referenced by Compressor::DictionaryCompressor< T >::MaskedValuePattern< 0, 0xFFFFFFFFFFFFFFFF >::decompress().
|
inlinestatic |
Definition at line 482 of file dictionary_compressor.hh.
References Compressor::DictionaryCompressor< T >::fromDictionaryEntry(), and ArmISA::mask.
Referenced by Compressor::DictionaryCompressor< T >::LocatedMaskedPattern< 0xFFFFFFFFFFFFFFFF, 0 >::isPattern().
|
private |
A copy of the bits that do not belong to the mask.
Definition at line 463 of file dictionary_compressor.hh.