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
use crate::{Model, TractResult}; use std::fmt::Debug; mod compact; mod prop_const; mod push_split_down; mod reduce; pub use self::compact::compact; pub use self::prop_const::PropConst; pub use self::push_split_down::PushSplitDown; pub use self::reduce::Reduce; pub use crate::ops::ReductionPhase; pub fn normalization() -> Vec<Box<OptimizerPass>> { vec![ Box::new(PropConst) as Box<OptimizerPass>, Box::new(Reduce(ReductionPhase::Normalize)), ] } pub fn codegen() -> Vec<Box<OptimizerPass>> { vec![ Box::new(Reduce(ReductionPhase::Codegen)), Box::new(PushSplitDown), ] } pub trait OptimizerPass: Debug { fn pass(&self, model: &mut Model) -> TractResult<bool>; }