mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #4831 from mikesinouye/hashlib
Approximately double the max hash table size
This commit is contained in:
commit
45e31f06b4
|
@ -324,10 +324,10 @@ template<typename T> struct hash_ops<std::optional<T>> {
|
|||
}
|
||||
};
|
||||
|
||||
inline int hashtable_size(int min_size)
|
||||
inline unsigned int hashtable_size(unsigned int min_size)
|
||||
{
|
||||
// Primes as generated by https://oeis.org/A175953
|
||||
static std::vector<int> zero_and_some_primes = {
|
||||
static std::vector<unsigned int> zero_and_some_primes = {
|
||||
0, 23, 29, 37, 47, 59, 79, 101, 127, 163, 211, 269, 337, 431, 541, 677,
|
||||
853, 1069, 1361, 1709, 2137, 2677, 3347, 4201, 5261, 6577, 8231, 10289,
|
||||
12889, 16127, 20161, 25219, 31531, 39419, 49277, 61603, 77017, 96281,
|
||||
|
@ -337,13 +337,13 @@ inline int hashtable_size(int min_size)
|
|||
25499291, 31874149, 39842687, 49803361, 62254207, 77817767, 97272239,
|
||||
121590311, 151987889, 189984863, 237481091, 296851369, 371064217,
|
||||
463830313, 579787991, 724735009, 905918777, 1132398479, 1415498113,
|
||||
1769372713
|
||||
1769372713, 2211715897, 2764644887, 3455806139
|
||||
};
|
||||
|
||||
for (auto p : zero_and_some_primes)
|
||||
if (p >= min_size) return p;
|
||||
|
||||
if (sizeof(int) == 4)
|
||||
if (sizeof(unsigned int) == 4)
|
||||
throw std::length_error("hash table exceeded maximum size.\nDesign is likely too large for yosys to handle, if possible try not to flatten the design.");
|
||||
|
||||
for (auto p : zero_and_some_primes)
|
||||
|
|
Loading…
Reference in New Issue