2 unstable releases
new 0.4.0 | Jan 14, 2025 |
---|---|
0.3.0 | Oct 28, 2024 |
#808 in Algorithms
161 downloads per month
Used in 6 crates
(via cubecl-spirv)
1MB
20K
SLoC
Compiler Optimizations
WIP
lib.rs
:
CubeCL Optimizer
A library that parses CubeCL IR into a control flow graph, transforms it to static single-assignment form and runs various optimizations on it. The order of operations is as follows:
- Parse root scope recursively into a control flow graph
- Run optimizations that must be done before SSA transformation
- Analyze variable liveness
- Transform the graph to pruned SSA form
- Run post-SSA optimizations and analyses in a loop until no more improvements are found
- Speed
The output is represented as a petgraph
graph of BasicBlock
s terminated by ControlFlow
.
This can then be compiled into actual executable code by walking the graph and generating all
phi nodes, instructions and branches.
Representing PhiInstruction
in non-SSA languages
Phi instructions can be simulated by generating a mutable variable for each phi, then assigning
value
to it in each relevant block
.
Dependencies
~7–21MB
~236K SLoC