1 unstable release
0.3.0 | Oct 28, 2024 |
---|
#860 in Algorithms
106 downloads per month
Used in 6 crates
(via cubecl-spirv)
675KB
17K
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
~6–20MB
~218K SLoC