summaryrefslogtreecommitdiff
path: root/src/mem/cache/compressors/cpack.hh
diff options
context:
space:
mode:
authorDaniel R. Carvalho <odanrc@yahoo.com.br>2019-07-16 10:51:08 +0200
committerDaniel Carvalho <odanrc@yahoo.com.br>2019-10-29 21:32:02 +0000
commit70dc35a659d024a4362c7b3f08887f04285b34f9 (patch)
tree234316b9645ca0642f6ed0d2133c36c6a4640701 /src/mem/cache/compressors/cpack.hh
parentb42971dabdfa0467911c7d320a08398411bf2a34 (diff)
downloadgem5-70dc35a659d024a4362c7b3f08887f04285b34f9.tar.xz
mem-cache: Use shouldAllocate() instead of CPack's decompress()
Split decompression functionality using the proper function to determine if a dictionary entry should be allocated after decompression or not. Change-Id: I4995304f4c4508c03c9fc1685f04511622969556 Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21146 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu> Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Diffstat (limited to 'src/mem/cache/compressors/cpack.hh')
-rw-r--r--src/mem/cache/compressors/cpack.hh49
1 files changed, 21 insertions, 28 deletions
diff --git a/src/mem/cache/compressors/cpack.hh b/src/mem/cache/compressors/cpack.hh
index 664a37601..1a271eeae 100644
--- a/src/mem/cache/compressors/cpack.hh
+++ b/src/mem/cache/compressors/cpack.hh
@@ -357,11 +357,10 @@ class CPack::Pattern
* its data.
*
* @param dict_bytes The bytes in the corresponding matching entry.
- * @param data The decompressed pattern.
- * @return Whether entry should be added to dictionary or not.
+ * @return The decompressed pattern.
*/
- virtual bool decompress(const std::array<uint8_t, 4> dict_bytes,
- std::array<uint8_t, 4>& data) const = 0;
+ virtual std::array<uint8_t, 4> decompress(
+ const std::array<uint8_t, 4> dict_bytes) const = 0;
};
class CPack::PatternZZZZ : public Pattern
@@ -378,11 +377,10 @@ class CPack::PatternZZZZ : public Pattern
(bytes[0] == 0);
}
- bool decompress(const std::array<uint8_t, 4> dict_bytes,
- std::array<uint8_t, 4>& data) const override
+ std::array<uint8_t, 4>
+ decompress(const std::array<uint8_t, 4> dict_bytes) const override
{
- data = {0, 0, 0, 0};
- return false;
+ return {0, 0, 0, 0};
}
};
@@ -407,11 +405,10 @@ class CPack::PatternXXXX : public Pattern
return true;
}
- bool decompress(const std::array<uint8_t, 4> dict_bytes,
- std::array<uint8_t, 4>& data) const override
+ std::array<uint8_t, 4>
+ decompress(const std::array<uint8_t, 4> dict_bytes) const override
{
- data = bytes;
- return true;
+ return bytes;
}
};
@@ -428,11 +425,10 @@ class CPack::PatternMMMM : public Pattern
return (bytes == dict_bytes) && (match_location >= 0);
}
- bool decompress(const std::array<uint8_t, 4> dict_bytes,
- std::array<uint8_t, 4>& data) const override
+ std::array<uint8_t, 4>
+ decompress(const std::array<uint8_t, 4> dict_bytes) const override
{
- data = dict_bytes;
- return true;
+ return dict_bytes;
}
};
@@ -461,11 +457,10 @@ class CPack::PatternMMXX : public Pattern
}
- bool decompress(const std::array<uint8_t, 4> dict_bytes,
- std::array<uint8_t, 4>& data) const override
+ std::array<uint8_t, 4>
+ decompress(const std::array<uint8_t, 4> dict_bytes) const override
{
- data = {byte0, byte1, dict_bytes[2], dict_bytes[3]};
- return true;
+ return {byte0, byte1, dict_bytes[2], dict_bytes[3]};
}
};
@@ -489,11 +484,10 @@ class CPack::PatternZZZX : public Pattern
(bytes[0] != 0);
}
- bool decompress(const std::array<uint8_t, 4> dict_bytes,
- std::array<uint8_t, 4>& data) const override
+ std::array<uint8_t, 4>
+ decompress(const std::array<uint8_t, 4> dict_bytes) const override
{
- data = {byte, 0, 0, 0};
- return false;
+ return {byte, 0, 0, 0};
}
};
@@ -519,11 +513,10 @@ class CPack::PatternMMMX : public Pattern
(match_location >= 0);
}
- bool decompress(const std::array<uint8_t, 4> dict_bytes,
- std::array<uint8_t, 4>& data) const override
+ std::array<uint8_t, 4>
+ decompress(const std::array<uint8_t, 4> dict_bytes) const override
{
- data = {byte, dict_bytes[1], dict_bytes[2], dict_bytes[3]};
- return true;
+ return {byte, dict_bytes[1], dict_bytes[2], dict_bytes[3]};
}
};