verilator/test_regress
Geza Lore f073b278f9
Balance concatenations in DFG (#5598)
The DFG peephole pass converts all associative trees into right leaning,
which is good for simplifying pattern recognition, but can lead to an
excessive amount of wide intermediate results being constructed for
right leaning concatenations.

Add a new pass to balance concatenation trees by trying to:
- Create VL_EDATASIZE (32-bit) sub-terms, so words can then be packed
  easily afterwards
- Try to ensure the operands of a concat are roughly the same width
  within a concatenation tree. This does not yield the shortest tree,
  but it ensures it has many sub-nodes that are small enough to fit into
  machine registers.

This can eliminate a lot of wide intermediate results, which would need
temporaries, and also increases ILP within sub-expressions (assuming the
C compiler can't figure that out itself).

This is over 2x run-time speedup on the high_perf configuration of
VeeR EH2 (which you could arguably also get with -fno-dfg, but oh well).
2024-11-09 18:14:19 +00:00
..
t Balance concatenations in DFG (#5598) 2024-11-09 18:14:19 +00:00
.gdbinit Revert .gdbinit modified by accident. (#4330) 2023-06-30 16:57:31 -04:00
.gitignore
CMakeLists.txt Internals: Standardize format of CMake files with gersemi. No functional change intended. 2024-09-24 20:43:19 -04:00
Makefile Convert test driver to Python (#5427) 2024-09-08 13:00:03 -04:00
Makefile_obj Copyright year update 2024-01-01 03:19:59 -05:00
driver.py driver.py: Properly detect cfg with ccache (#5579) 2024-11-01 17:14:17 +00:00
input.vc Tests: Avoid verilated.v include in most tests 2024-02-27 18:08:37 -05:00
input.xsim.vc Tests: Avoid verilated.v include in most tests 2024-02-27 18:08:37 -05:00