mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-06 14:13:23 +00:00
hashlib: redo interface for flexibility
This commit is contained in:
parent
7a362f1f74
commit
d071489ab1
35 changed files with 542 additions and 386 deletions
|
@ -30,7 +30,7 @@ struct BitPatternPool
|
|||
int width;
|
||||
struct bits_t {
|
||||
std::vector<RTLIL::State> bitdata;
|
||||
mutable unsigned int cached_hash;
|
||||
mutable Hasher::hash_t cached_hash;
|
||||
bits_t(int width = 0) : bitdata(width), cached_hash(0) { }
|
||||
RTLIL::State &operator[](int index) {
|
||||
return bitdata[index];
|
||||
|
@ -39,14 +39,15 @@ struct BitPatternPool
|
|||
return bitdata[index];
|
||||
}
|
||||
bool operator==(const bits_t &other) const {
|
||||
if (hash() != other.hash())
|
||||
if (run_hash(*this) != run_hash(other))
|
||||
return false;
|
||||
return bitdata == other.bitdata;
|
||||
}
|
||||
unsigned int hash() const {
|
||||
Hasher hash_acc(Hasher h) const {
|
||||
if (!cached_hash)
|
||||
cached_hash = hash_ops<std::vector<RTLIL::State>>::hash(bitdata);
|
||||
return cached_hash;
|
||||
cached_hash = run_hash(bitdata);
|
||||
h.acc(cached_hash);
|
||||
return h;
|
||||
}
|
||||
};
|
||||
pool<bits_t> database;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue