It's a good idea to send an email to gem5-users. However, with our new
release model, it should affect many fewer people. It's probably not true
today, but the vision is that the only people who will care if develop
breaks something are people subscribed to gem5-dev :).

Cheers,
Jason

On Wed, Aug 26, 2020 at 12:32 AM Nikos Nikoleris via gem5-dev <
gem5-dev@gem5.org> wrote:

> Do we also need to notify users about this? It might be worth sending an
> email about this. In fact an email with a different subject to both
> gem5-users and gem5-dev as people might ignore emails for a specific CL.
>
> Nikos
>
> On 25/08/2020 23:17, Daniel Carvalho via gem5-dev wrote:
> > Was about to send an e-mail with a heads up, but I guess I was too late.
> >
> > As reported here
> > (
> https://gem5.atlassian.net/jira/software/c/projects/GEM5/issues/GEM5-753),
> > itis not an issue caused by this patch itself. SCons does not trigger
> > recompilation when a change modifies the cxx_class; therefore,
> > params/BaseCache.hh is not recompiled and generates the error. To solve
> > this, one must manually delete this file and force a recompilation.
> >
> > Regards,
> > Daniel
> >
> > Em terça-feira, 25 de agosto de 2020 21:20:56 GMT+2, mike upton via
> > gem5-dev <gem5-dev@gem5.org> escreveu:
> >
> >
> > This checkin breaks the build.
> >
> > you can check at:
> > http://jenkins.gem5.org:8080/job/gem5_develop/136/
> >
> >
> >
> > On Tue, Aug 25, 2020 at 8:13 AM Daniel Carvalho (Gerrit) via gem5-dev
> > <gem5-dev@gem5.org <mailto:gem5-dev@gem5.org>> wrote:
> >
> >     Daniel Carvalho *submitted* this change.
> >
> >     View Change <
> https://gem5-review.googlesource.com/c/public/gem5/+/33294>
> >
> >     Approvals: Nikos Nikoleris: Looks good to me, approved; Looks good
> >     to me, approved kokoro: Regressions pass
> >
> >     mem-cache: Create Compressor namespace
> >
> >     Creation of the Compressor namespace. It encapsulates all the cache
> >     compressors, and other classes used by them.
> >
> >     The following classes have been renamed:
> >     BaseCacheCompressor -> Base
> >     PerfectCompressor - Perfect
> >     RepeatedQwordsCompressor -> RepeatedQwords
> >     ZeroCompressor -> Zero
> >
> >     BaseDictionaryCompressor and DictionaryCompressor were not renamed
> >     because the there is a high probability that users may want to
> >     create a Dictionary class that encompasses the dictionary contained
> >     by these compressors.
> >
> >     To apply this patch one must force recompilation (e.g., by deleting
> >     it) of build/<arch>/params/BaseCache.hh (and any other files that
> >     were previously using these compressors).
> >
> >     Change-Id: I78cb3b6fb8e3e50a52a04268e0e08dd664d81230
> >     Signed-off-by: Daniel R. Carvalho <oda...@yahoo.com.br  <mailto:
> oda...@yahoo.com.br>>
> >     Reviewed-on:
> https://gem5-review.googlesource.com/c/public/gem5/+/33294
> >     Reviewed-by: Nikos Nikoleris <nikos.nikole...@arm.com  <mailto:
> nikos.nikole...@arm.com>>
> >     Maintainer: Nikos Nikoleris <nikos.nikole...@arm.com  <mailto:
> nikos.nikole...@arm.com>>
> >     Tested-by: kokoro <noreply+kok...@google.com  <mailto:
> noreply%2bkok...@google.com>>
> >     ---
> >     M src/mem/cache/base.hh
> >     M src/mem/cache/compressors/Compressors.py
> >     M src/mem/cache/compressors/base.cc
> >     M src/mem/cache/compressors/base.hh
> >     M src/mem/cache/compressors/base_delta.cc
> >     M src/mem/cache/compressors/base_delta.hh
> >     M src/mem/cache/compressors/base_delta_impl.hh
> >     M src/mem/cache/compressors/base_dictionary_compressor.cc
> >     M src/mem/cache/compressors/cpack.cc
> >     M src/mem/cache/compressors/cpack.hh
> >     M src/mem/cache/compressors/dictionary_compressor.hh
> >     M src/mem/cache/compressors/dictionary_compressor_impl.hh
> >     M src/mem/cache/compressors/fpcd.cc
> >     M src/mem/cache/compressors/fpcd.hh
> >     M src/mem/cache/compressors/multi.cc
> >     M src/mem/cache/compressors/multi.hh
> >     M src/mem/cache/compressors/perfect.cc
> >     M src/mem/cache/compressors/perfect.hh
> >     M src/mem/cache/compressors/repeated_qwords.cc
> >     M src/mem/cache/compressors/repeated_qwords.hh
> >     M src/mem/cache/compressors/zero.cc
> >     M src/mem/cache/compressors/zero.hh
> >     22 files changed, 231 insertions(+), 165 deletions(-)
> >
> >     diff --git a/src/mem/cache/base.hh b/src/mem/cache/base.hh
> >     index 3efc7c7..d30de3f 100644
> >     --- a/src/mem/cache/base.hh
> >     +++ b/src/mem/cache/base.hh
> >     @@ -320,7 +320,7 @@
> >     BaseTags *tags;
> >
> >     /** Compression method being used. */
> >     - BaseCacheCompressor* compressor;
> >     + Compressor::Base* compressor;
> >
> >     /** Prefetcher */
> >     Prefetcher::Base *prefetcher;
> >     diff --git a/src/mem/cache/compressors/Compressors.py
> >     b/src/mem/cache/compressors/Compressors.py
> >     index eb1952a..46050f6 100644
> >     --- a/src/mem/cache/compressors/Compressors.py
> >     +++ b/src/mem/cache/compressors/Compressors.py
> >     @@ -1,4 +1,4 @@
> >     -# Copyright (c) 2018 Inria
> >     +# Copyright (c) 2018-2020 Inria
> >     # All rights reserved.
> >     #
> >     # Redistribution and use in source and binary forms, with or without
> >     @@ -31,6 +31,7 @@
> >     class BaseCacheCompressor(SimObject):
> >     type = 'BaseCacheCompressor'
> >     abstract = True
> >     + cxx_class = 'Compressor::Base'
> >     cxx_header = "mem/cache/compressors/base.hh"
> >
> >     block_size = Param.Int(Parent.cache_line_size, "Block size in bytes")
> >     @@ -41,6 +42,7 @@
> >     class BaseDictionaryCompressor(BaseCacheCompressor):
> >     type = 'BaseDictionaryCompressor'
> >     abstract = True
> >     + cxx_class = 'Compressor::BaseDictionaryCompressor'
> >     cxx_header = "mem/cache/compressors/dictionary_compressor.hh"
> >
> >     dictionary_size = Param.Int(Parent.cache_line_size,
> >     @@ -48,49 +50,49 @@
> >
> >     class Base64Delta8(BaseDictionaryCompressor):
> >     type = 'Base64Delta8'
> >     - cxx_class = 'Base64Delta8'
> >     + cxx_class = 'Compressor::Base64Delta8'
> >     cxx_header = "mem/cache/compressors/base_delta.hh"
> >
> >     class Base64Delta16(BaseDictionaryCompressor):
> >     type = 'Base64Delta16'
> >     - cxx_class = 'Base64Delta16'
> >     + cxx_class = 'Compressor::Base64Delta16'
> >     cxx_header = "mem/cache/compressors/base_delta.hh"
> >
> >     class Base64Delta32(BaseDictionaryCompressor):
> >     type = 'Base64Delta32'
> >     - cxx_class = 'Base64Delta32'
> >     + cxx_class = 'Compressor::Base64Delta32'
> >     cxx_header = "mem/cache/compressors/base_delta.hh"
> >
> >     class Base32Delta8(BaseDictionaryCompressor):
> >     type = 'Base32Delta8'
> >     - cxx_class = 'Base32Delta8'
> >     + cxx_class = 'Compressor::Base32Delta8'
> >     cxx_header = "mem/cache/compressors/base_delta.hh"
> >
> >     class Base32Delta16(BaseDictionaryCompressor):
> >     type = 'Base32Delta16'
> >     - cxx_class = 'Base32Delta16'
> >     + cxx_class = 'Compressor::Base32Delta16'
> >     cxx_header = "mem/cache/compressors/base_delta.hh"
> >
> >     class Base16Delta8(BaseDictionaryCompressor):
> >     type = 'Base16Delta8'
> >     - cxx_class = 'Base16Delta8'
> >     + cxx_class = 'Compressor::Base16Delta8'
> >     cxx_header = "mem/cache/compressors/base_delta.hh"
> >
> >     class CPack(BaseDictionaryCompressor):
> >     type = 'CPack'
> >     - cxx_class = 'CPack'
> >     + cxx_class = 'Compressor::CPack'
> >     cxx_header = "mem/cache/compressors/cpack.hh"
> >
> >     class FPCD(BaseDictionaryCompressor):
> >     type = 'FPCD'
> >     - cxx_class = 'FPCD'
> >     + cxx_class = 'Compressor::FPCD'
> >     cxx_header = "mem/cache/compressors/fpcd.hh"
> >
> >     dictionary_size = 2
> >
> >     class MultiCompressor(BaseCacheCompressor):
> >     type = 'MultiCompressor'
> >     - cxx_class = 'MultiCompressor'
> >     + cxx_class = 'Compressor::Multi'
> >     cxx_header = "mem/cache/compressors/multi.hh"
> >
> >     # Dummy default compressor list. This might not be an optimal choice,
> >     @@ -100,7 +102,7 @@
> >
> >     class PerfectCompressor(BaseCacheCompressor):
> >     type = 'PerfectCompressor'
> >     - cxx_class = 'PerfectCompressor'
> >     + cxx_class = 'Compressor::Perfect'
> >     cxx_header = "mem/cache/compressors/perfect.hh"
> >
> >     max_compression_ratio = Param.Int(2,
> >     @@ -112,12 +114,12 @@
> >
> >     class RepeatedQwordsCompressor(BaseDictionaryCompressor):
> >     type = 'RepeatedQwordsCompressor'
> >     - cxx_class = 'RepeatedQwordsCompressor'
> >     + cxx_class = 'Compressor::RepeatedQwords'
> >     cxx_header = "mem/cache/compressors/repeated_qwords.hh"
> >
> >     class ZeroCompressor(BaseDictionaryCompressor):
> >     type = 'ZeroCompressor'
> >     - cxx_class = 'ZeroCompressor'
> >     + cxx_class = 'Compressor::Zero'
> >     cxx_header = "mem/cache/compressors/zero.hh"
> >
> >     class BDI(MultiCompressor):
> >     diff --git a/src/mem/cache/compressors/base.cc
> >     b/src/mem/cache/compressors/base.cc
> >     index d08a5b9..f8fda81 100644
> >     --- a/src/mem/cache/compressors/base.cc
> >     +++ b/src/mem/cache/compressors/base.cc
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2018 Inria
> >     + * Copyright (c) 2018-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -42,37 +42,39 @@
> >     #include "mem/cache/tags/super_blk.hh"
> >     #include "params/BaseCacheCompressor.hh"
> >
> >     +namespace Compressor {
> >     +
> >     // Uncomment this line if debugging compression
> >     //#define DEBUG_COMPRESSION
> >
> >     -BaseCacheCompressor::CompressionData::CompressionData()
> >     +Base::CompressionData::CompressionData()
> >     : _size(0)
> >     {
> >     }
> >
> >     -BaseCacheCompressor::CompressionData::~CompressionData()
> >     +Base::CompressionData::~CompressionData()
> >     {
> >     }
> >
> >     void
> >     -BaseCacheCompressor::CompressionData::setSizeBits(std::size_t size)
> >     +Base::CompressionData::setSizeBits(std::size_t size)
> >     {
> >     _size = size;
> >     }
> >
> >     std::size_t
> >     -BaseCacheCompressor::CompressionData::getSizeBits() const
> >     +Base::CompressionData::getSizeBits() const
> >     {
> >     return _size;
> >     }
> >
> >     std::size_t
> >     -BaseCacheCompressor::CompressionData::getSize() const
> >     +Base::CompressionData::getSize() const
> >     {
> >     return std::ceil(_size/8);
> >     }
> >
> >     -BaseCacheCompressor::BaseCacheCompressor(const Params *p)
> >     +Base::Base(const Params *p)
> >     : SimObject(p), blkSize(p->block_size),
> >     sizeThreshold(p->size_threshold),
> >     stats(*this)
> >     {
> >     @@ -80,7 +82,7 @@
> >     }
> >
> >     void
> >     -BaseCacheCompressor::compress(const uint64_t* data, Cycles&
> comp_lat,
> >     +Base::compress(const uint64_t* data, Cycles& comp_lat,
> >     Cycles& decomp_lat, std::size_t& comp_size_bits)
> >     {
> >     // Apply compression
> >     @@ -119,7 +121,7 @@
> >     }
> >
> >     Cycles
> >     -BaseCacheCompressor::getDecompressionLatency(const CacheBlk* blk)
> >     +Base::getDecompressionLatency(const CacheBlk* blk)
> >     {
> >     const CompressionBlk* comp_blk = static_cast<const
> >     CompressionBlk*>(blk);
> >
> >     @@ -137,7 +139,7 @@
> >     }
> >
> >     void
> >     -BaseCacheCompressor::setDecompressionLatency(CacheBlk* blk, const
> >     Cycles lat)
> >     +Base::setDecompressionLatency(CacheBlk* blk, const Cycles lat)
> >     {
> >     // Sanity check
> >     assert(blk != nullptr);
> >     @@ -147,7 +149,7 @@
> >     }
> >
> >     void
> >     -BaseCacheCompressor::setSizeBits(CacheBlk* blk, const std::size_t
> >     size_bits)
> >     +Base::setSizeBits(CacheBlk* blk, const std::size_t size_bits)
> >     {
> >     // Sanity check
> >     assert(blk != nullptr);
> >     @@ -156,8 +158,7 @@
> >     static_cast<CompressionBlk*>(blk)->setSizeBits(size_bits);
> >     }
> >
> >
>  -BaseCacheCompressor::BaseCacheCompressorStats::BaseCacheCompressorStats(
> >     - BaseCacheCompressor& _compressor)
> >     +Base::BaseStats::BaseStats(Base& _compressor)
> >     : Stats::Group(&_compressor), compressor(_compressor),
> >     compressions(this, "compressions",
> >     "Total number of compressions"),
> >     @@ -173,7 +174,7 @@
> >     }
> >
> >     void
> >     -BaseCacheCompressor::BaseCacheCompressorStats::regStats()
> >     +Base::BaseStats::regStats()
> >     {
> >     Stats::Group::regStats();
> >
> >     @@ -189,3 +190,4 @@
> >     avgCompressionSizeBits = compressionSizeBits / compressions;
> >     }
> >
> >     +} // namespace Compressor
> >     diff --git a/src/mem/cache/compressors/base.hh
> >     b/src/mem/cache/compressors/base.hh
> >     index 61233c3..87cb0fc 100644
> >     --- a/src/mem/cache/compressors/base.hh
> >     +++ b/src/mem/cache/compressors/base.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2018 Inria
> >     + * Copyright (c) 2018-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -45,18 +45,20 @@
> >     class CacheBlk;
> >     struct BaseCacheCompressorParams;
> >
> >     +namespace Compressor {
> >     +
> >     /**
> >     * Base cache compressor interface. Every cache compressor must
> >     implement a
> >     * compression and a decompression method.
> >     */
> >     -class BaseCacheCompressor : public SimObject
> >     +class Base : public SimObject
> >     {
> >     protected:
> >     /**
> >     * This compressor must be able to access the protected functions of
> >     * its sub-compressors.
> >     */
> >     - friend class MultiCompressor;
> >     + friend class Multi;
> >
> >     /**
> >     * Forward declaration of compression data. Every new compressor must
> >     @@ -75,11 +77,11 @@
> >     */
> >     const std::size_t sizeThreshold;
> >
> >     - struct BaseCacheCompressorStats : public Stats::Group
> >     + struct BaseStats : public Stats::Group
> >     {
> >     - const BaseCacheCompressor& compressor;
> >     + const Base& compressor;
> >
> >     - BaseCacheCompressorStats(BaseCacheCompressor& compressor);
> >     + BaseStats(Base& compressor);
> >
> >     void regStats() override;
> >
> >     @@ -124,18 +126,9 @@
> >     uint64_t* cache_line) = 0;
> >
> >     public:
> >     - /** Convenience typedef. */
> >     - typedef BaseCacheCompressorParams Params;
> >     -
> >     - /**
> >     - * Default constructor.
> >     - */
> >     - BaseCacheCompressor(const Params *p);
> >     -
> >     - /**
> >     - * Default destructor.
> >     - */
> >     - virtual ~BaseCacheCompressor() {};
> >     + typedef BaseCacheCompressorParams Params;
> >     + Base(const Params *p);
> >     + virtual ~Base() = default;
> >
> >     /**
> >     * Apply the compression process to the cache line. Ignores
> compression
> >     @@ -174,7 +167,8 @@
> >     static void setSizeBits(CacheBlk* blk, const std::size_t size_bits);
> >     };
> >
> >     -class BaseCacheCompressor::CompressionData {
> >     +class Base::CompressionData
> >     +{
> >     private:
> >     /**
> >     * Compressed cache line size (in bits).
> >     @@ -214,4 +208,6 @@
> >     std::size_t getSize() const;
> >     };
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_BASE_HH__
> >     diff --git a/src/mem/cache/compressors/base_delta.cc
> >     b/src/mem/cache/compressors/base_delta.cc
> >     index 5af3b38..2d0aafe 100644
> >     --- a/src/mem/cache/compressors/base_delta.cc
> >     +++ b/src/mem/cache/compressors/base_delta.cc
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -39,6 +39,8 @@
> >     #include "params/Base64Delta32.hh"
> >     #include "params/Base64Delta8.hh"
> >
> >     +namespace Compressor {
> >     +
> >     Base64Delta8::Base64Delta8(const Params *p)
> >     : BaseDelta<uint64_t, 8>(p)
> >     {
> >     @@ -69,38 +71,40 @@
> >     {
> >     }
> >
> >     -Base64Delta8*
> >     +} // namespace Compressor
> >     +
> >     +Compressor::Base64Delta8*
> >     Base64Delta8Params::create()
> >     {
> >     - return new Base64Delta8(this);
> >     + return new Compressor::Base64Delta8(this);
> >     }
> >
> >     -Base64Delta16*
> >     +Compressor::Base64Delta16*
> >     Base64Delta16Params::create()
> >     {
> >     - return new Base64Delta16(this);
> >     + return new Compressor::Base64Delta16(this);
> >     }
> >
> >     -Base64Delta32*
> >     +Compressor::Base64Delta32*
> >     Base64Delta32Params::create()
> >     {
> >     - return new Base64Delta32(this);
> >     + return new Compressor::Base64Delta32(this);
> >     }
> >
> >     -Base32Delta8*
> >     +Compressor::Base32Delta8*
> >     Base32Delta8Params::create()
> >     {
> >     - return new Base32Delta8(this);
> >     + return new Compressor::Base32Delta8(this);
> >     }
> >
> >     -Base32Delta16*
> >     +Compressor::Base32Delta16*
> >     Base32Delta16Params::create()
> >     {
> >     - return new Base32Delta16(this);
> >     + return new Compressor::Base32Delta16(this);
> >     }
> >
> >     -Base16Delta8*
> >     +Compressor::Base16Delta8*
> >     Base16Delta8Params::create()
> >     {
> >     - return new Base16Delta8(this);
> >     + return new Compressor::Base16Delta8(this);
> >     }
> >     diff --git a/src/mem/cache/compressors/base_delta.hh
> >     b/src/mem/cache/compressors/base_delta.hh
> >     index 6c54acd..1e4b70e 100644
> >     --- a/src/mem/cache/compressors/base_delta.hh
> >     +++ b/src/mem/cache/compressors/base_delta.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -49,6 +49,8 @@
> >     struct Base32Delta16Params;
> >     struct Base16Delta8Params;
> >
> >     +namespace Compressor {
> >     +
> >     /**
> >     * Base class for all base-delta-immediate compressors. Although not
> >     proposed
> >     * like this in the original paper, the sub-compressors of BDI are
> >     dictionary
> >     @@ -113,7 +115,7 @@
> >
> >     void addToDictionary(DictionaryEntry data) override;
> >
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData>
> >     + std::unique_ptr<Base::CompressionData>
> >     compress(const uint64_t* data, Cycles& comp_lat,
> >     Cycles& decomp_lat) override;
> >
> >     @@ -201,4 +203,6 @@
> >     ~Base16Delta8() = default;
> >     };
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_BASE_DELTA_HH__
> >     diff --git a/src/mem/cache/compressors/base_delta_impl.hh
> >     b/src/mem/cache/compressors/base_delta_impl.hh
> >     index fb3dfec..97ab1cf 100644
> >     --- a/src/mem/cache/compressors/base_delta_impl.hh
> >     +++ b/src/mem/cache/compressors/base_delta_impl.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -37,6 +37,8 @@
> >     #include "mem/cache/compressors/base_delta.hh"
> >     #include "mem/cache/compressors/dictionary_compressor_impl.hh"
> >
> >     +namespace Compressor {
> >     +
> >     template <class BaseType, std::size_t DeltaSizeBits>
> >     BaseDelta<BaseType, DeltaSizeBits>::BaseDelta(const Params *p)
> >     : DictionaryCompressor<BaseType>(p)
> >     @@ -64,11 +66,11 @@
> >     }
> >
> >     template <class BaseType, std::size_t DeltaSizeBits>
> >     -std::unique_ptr<BaseCacheCompressor::CompressionData>
> >     +std::unique_ptr<Base::CompressionData>
> >     BaseDelta<BaseType, DeltaSizeBits>::compress(const uint64_t* data,
> >     Cycles& comp_lat, Cycles& decomp_lat)
> >     {
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data =
> >     + std::unique_ptr<Base::CompressionData> comp_data =
> >     DictionaryCompressor<BaseType>::compress(data);
> >
> >     // If there are more bases than the maximum, the compressor failed.
> >     @@ -98,4 +100,6 @@
> >     return comp_data;
> >     }
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_BASE_DELTA_IMPL_HH__
> >     diff --git a/src/mem/cache/compressors/base_dictionary_compressor.cc
> >     b/src/mem/cache/compressors/base_dictionary_compressor.cc
> >     index e454bbd..d6af8ee 100644
> >     --- a/src/mem/cache/compressors/base_dictionary_compressor.cc
> >     +++ b/src/mem/cache/compressors/base_dictionary_compressor.cc
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2018-2019 Inria
> >     + * Copyright (c) 2018-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -34,15 +34,17 @@
> >     #include "mem/cache/compressors/dictionary_compressor.hh"
> >     #include "params/BaseDictionaryCompressor.hh"
> >
> >     +namespace Compressor {
> >     +
> >     BaseDictionaryCompressor::BaseDictionaryCompressor(const Params *p)
> >     - : BaseCacheCompressor(p), dictionarySize(p->dictionary_size),
> >     numEntries(0)
> >     + : Base(p), dictionarySize(p->dictionary_size), numEntries(0)
> >     {
> >     }
> >
> >     void
> >     BaseDictionaryCompressor::regStats()
> >     {
> >     - BaseCacheCompressor::regStats();
> >     + Base::regStats();
> >
> >     // We store the frequency of each pattern
> >     patternStats
> >     @@ -57,3 +59,5 @@
> >     getName(i));
> >     }
> >     }
> >     +
> >     +} // namespace Compressor
> >     diff --git a/src/mem/cache/compressors/cpack.cc
> >     b/src/mem/cache/compressors/cpack.cc
> >     index b99bf62..40e983a 100644
> >     --- a/src/mem/cache/compressors/cpack.cc
> >     +++ b/src/mem/cache/compressors/cpack.cc
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2018-2019 Inria
> >     + * Copyright (c) 2018-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -35,6 +35,8 @@
> >     #include "mem/cache/compressors/dictionary_compressor_impl.hh"
> >     #include "params/CPack.hh"
> >
> >     +namespace Compressor {
> >     +
> >     CPack::CPack(const Params *p)
> >     : DictionaryCompressor<uint32_t>(p)
> >     {
> >     @@ -47,10 +49,10 @@
> >     dictionary[numEntries++] = data;
> >     }
> >
> >     -std::unique_ptr<BaseCacheCompressor::CompressionData>
> >     +std::unique_ptr<Base::CompressionData>
> >     CPack::compress(const uint64_t* data, Cycles& comp_lat, Cycles&
> >     decomp_lat)
> >     {
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data =
> >     + std::unique_ptr<Base::CompressionData> comp_data =
> >     DictionaryCompressor<uint32_t>::compress(data);
> >
> >     // Set compression latency (Accounts for pattern matching, length
> >     @@ -64,8 +66,10 @@
> >     return comp_data;
> >     }
> >
> >     -CPack*
> >     +} // namespace Compressor
> >     +
> >     +Compressor::CPack*
> >     CPackParams::create()
> >     {
> >     - return new CPack(this);
> >     + return new Compressor::CPack(this);
> >     }
> >     diff --git a/src/mem/cache/compressors/cpack.hh
> >     b/src/mem/cache/compressors/cpack.hh
> >     index a7ffe11..2925b54 100644
> >     --- a/src/mem/cache/compressors/cpack.hh
> >     +++ b/src/mem/cache/compressors/cpack.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2018-2019 Inria
> >     + * Copyright (c) 2018-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -43,6 +43,8 @@
> >
> >     struct CPackParams;
> >
> >     +namespace Compressor {
> >     +
> >     class CPack : public DictionaryCompressor<uint32_t>
> >     {
> >     private:
> >     @@ -104,7 +106,7 @@
> >     * @param decomp_lat Decompression latency in number of cycles.
> >     * @return Cache line after compression.
> >     */
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> compress(
> >     + std::unique_ptr<Base::CompressionData> compress(
> >     const uint64_t* data, Cycles& comp_lat, Cycles& decomp_lat) override;
> >
> >     public:
> >     @@ -178,4 +180,6 @@
> >     }
> >     };
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_CPACK_HH__
> >     diff --git a/src/mem/cache/compressors/dictionary_compressor.hh
> >     b/src/mem/cache/compressors/dictionary_compressor.hh
> >     index 06a90cb..fce79d5 100644
> >     --- a/src/mem/cache/compressors/dictionary_compressor.hh
> >     +++ b/src/mem/cache/compressors/dictionary_compressor.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2018-2019 Inria
> >     + * Copyright (c) 2018-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -56,7 +56,9 @@
> >
> >     struct BaseDictionaryCompressorParams;
> >
> >     -class BaseDictionaryCompressor : public BaseCacheCompressor
> >     +namespace Compressor {
> >     +
> >     +class BaseDictionaryCompressor : public Base
> >     {
> >     protected:
> >     /** Dictionary size. */
> >     @@ -225,8 +227,7 @@
> >     * @param data The cache line to be compressed.
> >     * @return Cache line after compression.
> >     */
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> compress(
> >     - const uint64_t* data);
> >     + std::unique_ptr<Base::CompressionData> compress(const uint64_t*
> data);
> >
> >     using BaseDictionaryCompressor::compress;
> >
> >     @@ -725,4 +726,6 @@
> >     }
> >     };
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_DICTIONARY_COMPRESSOR_HH__
> >     diff --git a/src/mem/cache/compressors/dictionary_compressor_impl.hh
> >     b/src/mem/cache/compressors/dictionary_compressor_impl.hh
> >     index d771d52..0b486e3 100644
> >     --- a/src/mem/cache/compressors/dictionary_compressor_impl.hh
> >     +++ b/src/mem/cache/compressors/dictionary_compressor_impl.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2018-2019 Inria
> >     + * Copyright (c) 2018-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -40,6 +40,8 @@
> >     #include "mem/cache/compressors/dictionary_compressor.hh"
> >     #include "params/BaseDictionaryCompressor.hh"
> >
> >     +namespace Compressor {
> >     +
> >     template <class T>
> >     DictionaryCompressor<T>::CompData::CompData()
> >     : CompressionData()
> >     @@ -113,10 +115,10 @@
> >     }
> >
> >     template <class T>
> >     -std::unique_ptr<BaseCacheCompressor::CompressionData>
> >     +std::unique_ptr<Base::CompressionData>
> >     DictionaryCompressor<T>::compress(const uint64_t* data)
> >     {
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data =
> >     + std::unique_ptr<Base::CompressionData> comp_data =
> >     std::unique_ptr<CompData>(new CompData());
> >
> >     // Reset dictionary
> >     @@ -209,4 +211,6 @@
> >     return value;
> >     }
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_DICTIONARY_COMPRESSOR_IMPL_HH__
> >     diff --git a/src/mem/cache/compressors/fpcd.cc
> >     b/src/mem/cache/compressors/fpcd.cc
> >     index e3529e5..ba46379 100644
> >     --- a/src/mem/cache/compressors/fpcd.cc
> >     +++ b/src/mem/cache/compressors/fpcd.cc
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -35,6 +35,8 @@
> >     #include "mem/cache/compressors/dictionary_compressor_impl.hh"
> >     #include "params/FPCD.hh"
> >
> >     +namespace Compressor {
> >     +
> >     FPCD::FPCD(const Params *p)
> >     : DictionaryCompressor<uint32_t>(p)
> >     {
> >     @@ -52,10 +54,10 @@
> >     }
> >     }
> >
> >     -std::unique_ptr<BaseCacheCompressor::CompressionData>
> >     +std::unique_ptr<Base::CompressionData>
> >     FPCD::compress(const uint64_t* data, Cycles& comp_lat, Cycles&
> >     decomp_lat)
> >     {
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data =
> >     + std::unique_ptr<Base::CompressionData> comp_data =
> >     DictionaryCompressor<uint32_t>::compress(data);
> >
> >     // Set compression latency (Accounts for zero checks, ones check,
> match
> >     @@ -71,8 +73,10 @@
> >     return comp_data;
> >     }
> >
> >     -FPCD*
> >     +} // namespace Compressor
> >     +
> >     +Compressor::FPCD*
> >     FPCDParams::create()
> >     {
> >     - return new FPCD(this);
> >     + return new Compressor::FPCD(this);
> >     }
> >     diff --git a/src/mem/cache/compressors/fpcd.hh
> >     b/src/mem/cache/compressors/fpcd.hh
> >     index 61785bc..8aed461 100644
> >     --- a/src/mem/cache/compressors/fpcd.hh
> >     +++ b/src/mem/cache/compressors/fpcd.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -49,6 +49,8 @@
> >
> >     struct FPCDParams;
> >
> >     +namespace Compressor {
> >     +
> >     class FPCD : public DictionaryCompressor<uint32_t>
> >     {
> >     private:
> >     @@ -137,7 +139,7 @@
> >
> >     void addToDictionary(DictionaryEntry data) override;
> >
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> compress(
> >     + std::unique_ptr<Base::CompressionData> compress(
> >     const uint64_t* data, Cycles& comp_lat, Cycles& decomp_lat) override;
> >
> >     public:
> >     @@ -318,4 +320,6 @@
> >     }
> >     };
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_FPCD_HH__
> >     diff --git a/src/mem/cache/compressors/multi.cc
> >     b/src/mem/cache/compressors/multi.cc
> >     index d1e7fbc..f42602e 100644
> >     --- a/src/mem/cache/compressors/multi.cc
> >     +++ b/src/mem/cache/compressors/multi.cc
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -41,45 +41,47 @@
> >     #include "debug/CacheComp.hh"
> >     #include "params/MultiCompressor.hh"
> >
> >     -MultiCompressor::MultiCompData::MultiCompData(unsigned index,
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data)
> >     +namespace Compressor {
> >     +
> >     +Multi::MultiCompData::MultiCompData(unsigned index,
> >     + std::unique_ptr<Base::CompressionData> comp_data)
> >     : CompressionData(), index(index), compData(std::move(comp_data))
> >     {
> >     setSizeBits(compData->getSizeBits());
> >     }
> >
> >     uint8_t
> >     -MultiCompressor::MultiCompData::getIndex() const
> >     +Multi::MultiCompData::getIndex() const
> >     {
> >     return index;
> >     }
> >
> >     -MultiCompressor::MultiCompressor(const Params *p)
> >     - : BaseCacheCompressor(p), compressors(p->compressors)
> >     +Multi::Multi(const Params *p)
> >     + : Base(p), compressors(p->compressors)
> >     {
> >     fatal_if(compressors.size() == 0, "There must be at least one
> >     compressor");
> >     }
> >
> >     -MultiCompressor::~MultiCompressor()
> >     +Multi::~Multi()
> >     {
> >     for (auto& compressor : compressors) {
> >     delete compressor;
> >     }
> >     }
> >
> >     -std::unique_ptr<BaseCacheCompressor::CompressionData>
> >     -MultiCompressor::compress(const uint64_t* cache_line, Cycles&
> comp_lat,
> >     +std::unique_ptr<Base::CompressionData>
> >     +Multi::compress(const uint64_t* cache_line, Cycles& comp_lat,
> >     Cycles& decomp_lat)
> >     {
> >     struct Results
> >     {
> >     unsigned index;
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> compData;
> >     + std::unique_ptr<Base::CompressionData> compData;
> >     Cycles decompLat;
> >     uint8_t compressionFactor;
> >
> >     Results(unsigned index,
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data,
> >     + std::unique_ptr<Base::CompressionData> comp_data,
> >     Cycles decomp_lat, std::size_t blk_size)
> >     : index(index), compData(std::move(comp_data)),
> >     decompLat(decomp_lat)
> >     @@ -147,7 +149,7 @@
> >     }
> >
> >     void
> >     -MultiCompressor::decompress(const CompressionData* comp_data,
> >     +Multi::decompress(const CompressionData* comp_data,
> >     uint64_t* cache_line)
> >     {
> >     const MultiCompData* casted_comp_data =
> >     @@ -157,9 +159,9 @@
> >     }
> >
> >     void
> >     -MultiCompressor::regStats()
> >     +Multi::regStats()
> >     {
> >     - BaseCacheCompressor::regStats();
> >     + Base::regStats();
> >
> >     rankStats
> >     .init(compressors.size(), compressors.size())
> >     @@ -177,8 +179,10 @@
> >     }
> >     }
> >
> >     -MultiCompressor*
> >     +} // namespace Compressor
> >     +
> >     +Compressor::Multi*
> >     MultiCompressorParams::create()
> >     {
> >     - return new MultiCompressor(this);
> >     + return new Compressor::Multi(this);
> >     }
> >     diff --git a/src/mem/cache/compressors/multi.hh
> >     b/src/mem/cache/compressors/multi.hh
> >     index 3c96d4d..db4f376 100644
> >     --- a/src/mem/cache/compressors/multi.hh
> >     +++ b/src/mem/cache/compressors/multi.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -42,7 +42,9 @@
> >
> >     struct MultiCompressorParams;
> >
> >     -class MultiCompressor : public BaseCacheCompressor
> >     +namespace Compressor {
> >     +
> >     +class Multi : public Base
> >     {
> >     protected:
> >     /**
> >     @@ -53,7 +55,7 @@
> >     class MultiCompData;
> >
> >     /** List of sub-compressors. */
> >     - std::vector<BaseCacheCompressor*> compressors;
> >     + std::vector<Base*> compressors;
> >
> >     /**
> >     * @defgroup CompressionStats Compression specific statistics.
> >     @@ -68,24 +70,19 @@
> >     */
> >
> >     public:
> >     - /** Convenience typedef. */
> >     - typedef MultiCompressorParams Params;
> >     -
> >     - /** Default constructor. */
> >     - MultiCompressor(const Params *p);
> >     -
> >     - /** Default destructor. */
> >     - ~MultiCompressor();
> >     + typedef MultiCompressorParams Params;
> >     + Multi(const Params *p);
> >     + ~Multi();
> >
> >     void regStats() override;
> >
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> compress(
> >     + std::unique_ptr<Base::CompressionData> compress(
> >     const uint64_t* data, Cycles& comp_lat, Cycles& decomp_lat) override;
> >
> >     void decompress(const CompressionData* comp_data, uint64_t* data)
> >     override;
> >     };
> >
> >     -class MultiCompressor::MultiCompData : public CompressionData
> >     +class Multi::MultiCompData : public CompressionData
> >     {
> >     private:
> >     /** Index of the compressor that provided these compression results.
> */
> >     @@ -93,7 +90,7 @@
> >
> >     public:
> >     /** Compression data of the best compressor. */
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> compData;
> >     + std::unique_ptr<Base::CompressionData> compData;
> >
> >     /**
> >     * Default constructor.
> >     @@ -102,7 +99,7 @@
> >     * @param comp_data Compression data of the best compressor.
> >     */
> >     MultiCompData(unsigned index,
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data);
> >     + std::unique_ptr<Base::CompressionData> comp_data);
> >
> >     /** Default destructor. */
> >     ~MultiCompData() = default;
> >     @@ -111,4 +108,6 @@
> >     uint8_t getIndex() const;
> >     };
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_MULTI_HH__
> >     diff --git a/src/mem/cache/compressors/perfect.cc
> >     b/src/mem/cache/compressors/perfect.cc
> >     index b53e1f9..41a7e6d 100644
> >     --- a/src/mem/cache/compressors/perfect.cc
> >     +++ b/src/mem/cache/compressors/perfect.cc
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -38,26 +38,28 @@
> >     #include "debug/CacheComp.hh"
> >     #include "params/PerfectCompressor.hh"
> >
> >     -PerfectCompressor::CompData::CompData(const uint64_t* data,
> >     +namespace Compressor {
> >     +
> >     +Perfect::CompData::CompData(const uint64_t* data,
> >     std::size_t num_entries)
> >     : CompressionData(), entries(data, data + num_entries)
> >     {
> >     }
> >
> >     -PerfectCompressor::PerfectCompressor(const Params *p)
> >     - : BaseCacheCompressor(p),
> >     +Perfect::Perfect(const Params *p)
> >     + : Base(p),
> >     compressedSize(8 * blkSize / p->max_compression_ratio),
> >     compressionLatency(p->compression_latency),
> >     decompressionLatency(p->decompression_latency)
> >     {
> >     }
> >
> >     -std::unique_ptr<BaseCacheCompressor::CompressionData>
> >     -PerfectCompressor::compress(const uint64_t* cache_line, Cycles&
> >     comp_lat,
> >     +std::unique_ptr<Base::CompressionData>
> >     +Perfect::compress(const uint64_t* cache_line, Cycles& comp_lat,
> >     Cycles& decomp_lat)
> >     {
> >     // Compress every word sequentially
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data(
> >     + std::unique_ptr<Base::CompressionData> comp_data(
> >     new CompData(cache_line, blkSize/8));
> >
> >     // Set relevant metadata
> >     @@ -69,7 +71,7 @@
> >     }
> >
> >     void
> >     -PerfectCompressor::decompress(const CompressionData* comp_data,
> >     +Perfect::decompress(const CompressionData* comp_data,
> >     uint64_t* data)
> >     {
> >     // Decompress every entry sequentially
> >     @@ -79,8 +81,10 @@
> >     std::copy(entries.begin(), entries.end(), data);
> >     }
> >
> >     -PerfectCompressor*
> >     +} // namespace Compressor
> >     +
> >     +Compressor::Perfect*
> >     PerfectCompressorParams::create()
> >     {
> >     - return new PerfectCompressor(this);
> >     + return new Compressor::Perfect(this);
> >     }
> >     diff --git a/src/mem/cache/compressors/perfect.hh
> >     b/src/mem/cache/compressors/perfect.hh
> >     index 0ef8d13..e279ec6 100644
> >     --- a/src/mem/cache/compressors/perfect.hh
> >     +++ b/src/mem/cache/compressors/perfect.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -43,7 +43,9 @@
> >
> >     struct PerfectCompressorParams;
> >
> >     -class PerfectCompressor : public BaseCacheCompressor
> >     +namespace Compressor {
> >     +
> >     +class Perfect : public Base
> >     {
> >     protected:
> >     class CompData;
> >     @@ -64,11 +66,11 @@
> >
> >     public:
> >     typedef PerfectCompressorParams Params;
> >     - PerfectCompressor(const Params *p);
> >     - ~PerfectCompressor() {};
> >     + Perfect(const Params *p);
> >     + ~Perfect() = default;
> >     };
> >
> >     -class PerfectCompressor::CompData : public CompressionData
> >     +class Perfect::CompData : public CompressionData
> >     {
> >     public:
> >     /** The original data is simply copied over to this vector. */
> >     @@ -84,4 +86,6 @@
> >     ~CompData() = default;
> >     };
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_PERFECT_COMPRESSOR_HH__
> >     diff --git a/src/mem/cache/compressors/repeated_qwords.cc
> >     b/src/mem/cache/compressors/repeated_qwords.cc
> >     index a51c05f..db19b26 100644
> >     --- a/src/mem/cache/compressors/repeated_qwords.cc
> >     +++ b/src/mem/cache/compressors/repeated_qwords.cc
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -38,23 +38,25 @@
> >     #include "mem/cache/compressors/dictionary_compressor_impl.hh"
> >     #include "params/RepeatedQwordsCompressor.hh"
> >
> >     -RepeatedQwordsCompressor::RepeatedQwordsCompressor(const Params *p)
> >     +namespace Compressor {
> >     +
> >     +RepeatedQwords::RepeatedQwords(const Params *p)
> >     : DictionaryCompressor<uint64_t>(p)
> >     {
> >     }
> >
> >     void
> >     -RepeatedQwordsCompressor::addToDictionary(DictionaryEntry data)
> >     +RepeatedQwords::addToDictionary(DictionaryEntry data)
> >     {
> >     assert(numEntries < dictionarySize);
> >     dictionary[numEntries++] = data;
> >     }
> >
> >     -std::unique_ptr<BaseCacheCompressor::CompressionData>
> >     -RepeatedQwordsCompressor::compress(const uint64_t* data, Cycles&
> >     comp_lat,
> >     +std::unique_ptr<Base::CompressionData>
> >     +RepeatedQwords::compress(const uint64_t* data, Cycles& comp_lat,
> >     Cycles& decomp_lat)
> >     {
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data =
> >     + std::unique_ptr<Base::CompressionData> comp_data =
> >     DictionaryCompressor::compress(data);
> >
> >     // Since there is a single value repeated over and over, there
> should be
> >     @@ -75,8 +77,10 @@
> >     return comp_data;
> >     }
> >
> >     -RepeatedQwordsCompressor*
> >     +} // namespace Compressor
> >     +
> >     +Compressor::RepeatedQwords*
> >     RepeatedQwordsCompressorParams::create()
> >     {
> >     - return new RepeatedQwordsCompressor(this);
> >     + return new Compressor::RepeatedQwords(this);
> >     }
> >     diff --git a/src/mem/cache/compressors/repeated_qwords.hh
> >     b/src/mem/cache/compressors/repeated_qwords.hh
> >     index 3af63dc..c361900 100644
> >     --- a/src/mem/cache/compressors/repeated_qwords.hh
> >     +++ b/src/mem/cache/compressors/repeated_qwords.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -43,7 +43,9 @@
> >
> >     struct RepeatedQwordsCompressorParams;
> >
> >     -class RepeatedQwordsCompressor : public
> DictionaryCompressor<uint64_t>
> >     +namespace Compressor {
> >     +
> >     +class RepeatedQwords : public DictionaryCompressor<uint64_t>
> >     {
> >     protected:
> >     using DictionaryEntry =
> DictionaryCompressor<uint64_t>::DictionaryEntry;
> >     @@ -89,16 +91,16 @@
> >
> >     void addToDictionary(DictionaryEntry data) override;
> >
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> compress(
> >     + std::unique_ptr<Base::CompressionData> compress(
> >     const uint64_t* data, Cycles& comp_lat, Cycles& decomp_lat) override;
> >
> >     public:
> >     typedef RepeatedQwordsCompressorParams Params;
> >     - RepeatedQwordsCompressor(const Params *p);
> >     - ~RepeatedQwordsCompressor() = default;
> >     + RepeatedQwords(const Params *p);
> >     + ~RepeatedQwords() = default;
> >     };
> >
> >     -class RepeatedQwordsCompressor::PatternX
> >     +class RepeatedQwords::PatternX
> >     : public DictionaryCompressor::UncompressedPattern
> >     {
> >     public:
> >     @@ -108,7 +110,7 @@
> >     }
> >     };
> >
> >     -class RepeatedQwordsCompressor::PatternM
> >     +class RepeatedQwords::PatternM
> >     : public
> >     DictionaryCompressor::LocatedMaskedPattern<0xFFFFFFFFFFFFFFFF, 0>
> >     {
> >     public:
> >     @@ -119,4 +121,6 @@
> >     }
> >     };
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_REPEATED_QWORDS_HH__
> >     diff --git a/src/mem/cache/compressors/zero.cc
> >     b/src/mem/cache/compressors/zero.cc
> >     index 45675e6..db80679 100644
> >     --- a/src/mem/cache/compressors/zero.cc
> >     +++ b/src/mem/cache/compressors/zero.cc
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -38,23 +38,25 @@
> >     #include "mem/cache/compressors/dictionary_compressor_impl.hh"
> >     #include "params/ZeroCompressor.hh"
> >
> >     -ZeroCompressor::ZeroCompressor(const Params *p)
> >     +namespace Compressor {
> >     +
> >     +Zero::Zero(const Params *p)
> >     : DictionaryCompressor<uint64_t>(p)
> >     {
> >     }
> >
> >     void
> >     -ZeroCompressor::addToDictionary(DictionaryEntry data)
> >     +Zero::addToDictionary(DictionaryEntry data)
> >     {
> >     assert(numEntries < dictionarySize);
> >     dictionary[numEntries++] = data;
> >     }
> >
> >     -std::unique_ptr<BaseCacheCompressor::CompressionData>
> >     -ZeroCompressor::compress(const uint64_t* data, Cycles& comp_lat,
> >     +std::unique_ptr<Base::CompressionData>
> >     +Zero::compress(const uint64_t* data, Cycles& comp_lat,
> >     Cycles& decomp_lat)
> >     {
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data =
> >     + std::unique_ptr<Base::CompressionData> comp_data =
> >     DictionaryCompressor::compress(data);
> >
> >     // If there is any non-zero entry, the compressor failed
> >     @@ -73,8 +75,10 @@
> >     return comp_data;
> >     }
> >
> >     -ZeroCompressor*
> >     +} // namespace Compressor
> >     +
> >     +Compressor::Zero*
> >     ZeroCompressorParams::create()
> >     {
> >     - return new ZeroCompressor(this);
> >     + return new Compressor::Zero(this);
> >     }
> >     diff --git a/src/mem/cache/compressors/zero.hh
> >     b/src/mem/cache/compressors/zero.hh
> >     index dd9ca06..f45a639 100644
> >     --- a/src/mem/cache/compressors/zero.hh
> >     +++ b/src/mem/cache/compressors/zero.hh
> >     @@ -1,5 +1,5 @@
> >     /*
> >     - * Copyright (c) 2019 Inria
> >     + * Copyright (c) 2019-2020 Inria
> >     * All rights reserved.
> >     *
> >     * Redistribution and use in source and binary forms, with or without
> >     @@ -43,7 +43,9 @@
> >
> >     struct ZeroCompressorParams;
> >
> >     -class ZeroCompressor : public DictionaryCompressor<uint64_t>
> >     +namespace Compressor {
> >     +
> >     +class Zero : public DictionaryCompressor<uint64_t>
> >     {
> >     protected:
> >     using DictionaryEntry =
> DictionaryCompressor<uint64_t>::DictionaryEntry;
> >     @@ -89,16 +91,16 @@
> >
> >     void addToDictionary(DictionaryEntry data) override;
> >
> >     - std::unique_ptr<BaseCacheCompressor::CompressionData> compress(
> >     + std::unique_ptr<Base::CompressionData> compress(
> >     const uint64_t* data, Cycles& comp_lat, Cycles& decomp_lat) override;
> >
> >     public:
> >     typedef ZeroCompressorParams Params;
> >     - ZeroCompressor(const Params *p);
> >     - ~ZeroCompressor() = default;
> >     + Zero(const Params *p);
> >     + ~Zero() = default;
> >     };
> >
> >     -class ZeroCompressor::PatternX
> >     +class Zero::PatternX
> >     : public DictionaryCompressor::UncompressedPattern
> >     {
> >     public:
> >     @@ -109,7 +111,7 @@
> >     }
> >     };
> >
> >     -class ZeroCompressor::PatternZ
> >     +class Zero::PatternZ
> >     : public DictionaryCompressor::MaskedValuePattern<0,
> 0xFFFFFFFFFFFFFFFF>
> >     {
> >     public:
> >     @@ -120,4 +122,6 @@
> >     }
> >     };
> >
> >     +} // namespace Compressor
> >     +
> >     #endif //__MEM_CACHE_COMPRESSORS_ZERO_HH__
> >
> >     To view, visit change 33294
> >     <https://gem5-review.googlesource.com/c/public/gem5/+/33294>. To
> >     unsubscribe, or for help writing mail filters, visit settings
> >     <https://gem5-review.googlesource.com/settings>.
> >
> >     Gerrit-Project: public/gem5
> >     Gerrit-Branch: develop
> >     Gerrit-Change-Id: I78cb3b6fb8e3e50a52a04268e0e08dd664d81230
> >     Gerrit-Change-Number: 33294
> >     Gerrit-PatchSet: 2
> >     Gerrit-Owner: Daniel Carvalho <oda...@yahoo.com.br
> >     <mailto:oda...@yahoo.com.br>>
> >     Gerrit-Reviewer: Daniel Carvalho <oda...@yahoo.com.br
> >     <mailto:oda...@yahoo.com.br>>
> >     Gerrit-Reviewer: Nikos Nikoleris <nikos.nikole...@arm.com
> >     <mailto:nikos.nikole...@arm.com>>
> >     Gerrit-Reviewer: kokoro <noreply+kok...@google.com
> >     <mailto:noreply%2bkok...@google.com>>
> >     Gerrit-MessageType: merged
> >     _______________________________________________
> >     gem5-dev mailing list -- gem5-dev@gem5.org <mailto:gem5-dev@gem5.org
> >
> >     To unsubscribe send an email to gem5-dev-le...@gem5.org
> >     <mailto:gem5-dev-le...@gem5.org>
> >     %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
> >
> > _______________________________________________
> > gem5-dev mailing list -- gem5-dev@gem5.org <mailto:gem5-dev@gem5.org>
> > To unsubscribe send an email to gem5-dev-le...@gem5.org
> > <mailto:gem5-dev-le...@gem5.org>
> > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
> >
> > _______________________________________________
> > gem5-dev mailing list -- gem5-dev@gem5.org
> > To unsubscribe send an email to gem5-dev-le...@gem5.org
> > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
> >
> IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
> _______________________________________________
> gem5-dev mailing list -- gem5-dev@gem5.org
> To unsubscribe send an email to gem5-dev-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to