1mod constant_folding;
4mod dead_code;
5mod fusion;
6mod layout;
7mod provider_specific;
8
9pub use constant_folding::ConstantFoldingPass;
10pub use dead_code::DeadCodeEliminationPass;
11pub use fusion::NodeFusionPass;
12pub use layout::LayoutOptimizationPass;
13pub use provider_specific::{CpuOptimizationPass, GpuOptimizationPass};
14
15use crate::error::Result;
16use crate::optimizer::PassStats;
17use ronn_core::ModelGraph;
18
19pub trait OptimizationPass: Send + Sync {
21 fn name(&self) -> &str;
23
24 fn run(&self, graph: &mut ModelGraph) -> Result<PassStats>;
26
27 fn should_run(&self, _graph: &ModelGraph) -> bool {
29 true
30 }
31}