Commit e589add
authored
[Comb][circt-synth] Implement BalanceMux pass for optimizing mux chains (#9044)
This pass performs two main optimizations on mux chains: enhanced mux
chain folding that converts chains of muxes with index comparisons into
balanced mux tree, and priority encoder rebalancing that transforms linear
chains into balanced tree structures reducing depth from O(n) to O(log n).
1.
```
# Before: Linear chain (O(n) depth)
result = cond0 ? val0 : (cond1 ? val1 : (cond2 ? val2 : default))
# After: Balanced tree (O(log n) depth)
left = cond0 ? val0 : val1
or_cond = cond0 | cond1
result = or_cond ? left : right
```
2.
```
# Before: Mux chain with comparisons
result = (index == 0) ? val0 : ((index == 1) ? val1 : ...)
# After: Balanced mux tree
result = index[n-1] ? (index[n-2] ? (index[n-3]? ...:...))
```1 parent ba41ee0 commit e589add
File tree
11 files changed
+596
-21
lines changed- include/circt/Dialect
- Comb
- Synth/Transforms
- integration_test/circt-synth
- lib/Dialect
- Comb
- Transforms
- Synth
- Analysis
- Transforms
- test/Dialect/Comb
11 files changed
+596
-21
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
89 | 100 | | |
90 | 101 | | |
91 | 102 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
37 | 49 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
| 123 | + | |
| 124 | + | |
123 | 125 | | |
124 | 126 | | |
125 | 127 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
| |||
1973 | 1974 | | |
1974 | 1975 | | |
1975 | 1976 | | |
1976 | | - | |
1977 | | - | |
| 1977 | + | |
| 1978 | + | |
| 1979 | + | |
1978 | 1980 | | |
1979 | 1981 | | |
1980 | 1982 | | |
1981 | | - | |
1982 | | - | |
| 1983 | + | |
| 1984 | + | |
| 1985 | + | |
| 1986 | + | |
| 1987 | + | |
1983 | 1988 | | |
1984 | 1989 | | |
1985 | 1990 | | |
| |||
2039 | 2044 | | |
2040 | 2045 | | |
2041 | 2046 | | |
2042 | | - | |
2043 | | - | |
2044 | | - | |
2045 | | - | |
2046 | | - | |
2047 | | - | |
2048 | | - | |
2049 | | - | |
2050 | 2047 | | |
2051 | | - | |
| 2048 | + | |
| 2049 | + | |
| 2050 | + | |
| 2051 | + | |
| 2052 | + | |
| 2053 | + | |
2052 | 2054 | | |
2053 | 2055 | | |
2054 | | - | |
2055 | | - | |
2056 | | - | |
2057 | 2056 | | |
2058 | | - | |
2059 | | - | |
2060 | 2057 | | |
2061 | 2058 | | |
2062 | 2059 | | |
| |||
2071 | 2068 | | |
2072 | 2069 | | |
2073 | 2070 | | |
| 2071 | + | |
| 2072 | + | |
| 2073 | + | |
| 2074 | + | |
| 2075 | + | |
| 2076 | + | |
| 2077 | + | |
| 2078 | + | |
| 2079 | + | |
| 2080 | + | |
| 2081 | + | |
| 2082 | + | |
2074 | 2083 | | |
2075 | 2084 | | |
2076 | 2085 | | |
2077 | 2086 | | |
2078 | 2087 | | |
2079 | 2088 | | |
2080 | | - | |
| 2089 | + | |
2081 | 2090 | | |
2082 | 2091 | | |
2083 | 2092 | | |
| |||
2376 | 2385 | | |
2377 | 2386 | | |
2378 | 2387 | | |
| 2388 | + | |
| 2389 | + | |
| 2390 | + | |
| 2391 | + | |
| 2392 | + | |
| 2393 | + | |
| 2394 | + | |
| 2395 | + | |
| 2396 | + | |
| 2397 | + | |
| 2398 | + | |
| 2399 | + | |
| 2400 | + | |
| 2401 | + | |
| 2402 | + | |
| 2403 | + | |
2379 | 2404 | | |
2380 | 2405 | | |
2381 | 2406 | | |
| |||
2530 | 2555 | | |
2531 | 2556 | | |
2532 | 2557 | | |
2533 | | - | |
| 2558 | + | |
| 2559 | + | |
2534 | 2560 | | |
2535 | 2561 | | |
2536 | 2562 | | |
| |||
2545 | 2571 | | |
2546 | 2572 | | |
2547 | 2573 | | |
2548 | | - | |
| 2574 | + | |
| 2575 | + | |
2549 | 2576 | | |
2550 | 2577 | | |
2551 | 2578 | | |
| |||
0 commit comments