Optimize Dfg algorithms with an open addressing hash table (#8307)

This patch introduces V3HashTable.h, which defines an open addressing,
linear probing hash table. The table implement the public V3HashSet and
V3HashMap templates, which are generic containers. The benefit of this
over std::unordered_map and std::unordered_set is far better memory
locality during lookup. (The STL containers use chaining and require a
new heap allocation for every insertion, similarly probing involves
pointer chasing on collisions).

The new data structure is use in V3DfgCache, and V3DfgCse and yields a
significant speed improvement of those passes on large designs.
This commit is contained in:
Geza Lore
2026-09-08 23:21:13 +01:00
committed by GitHub
parent 5bb0e9b216
commit e4f210eb38
8 changed files with 1882 additions and 278 deletions
+1144
View File
File diff suppressed because it is too large Load Diff