use crate::{BoundChecks, IdleMode, LineMode};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct ReduceBlueprint {
pub line_mode: LineMode,
pub global: GlobalReduceBlueprint,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum GlobalReduceBlueprint {
Unit(UnitReduceBlueprint),
Plane(PlaneReduceBlueprint),
Cube(CubeBlueprint),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct CubeBlueprint {
pub cube_idle: IdleMode,
pub bound_checks: BoundChecks,
pub num_shared_accumulators: usize,
pub use_planes: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct PlaneReduceBlueprint {
pub plane_idle: IdleMode,
pub bound_checks: BoundChecks,
pub independent: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct UnitReduceBlueprint {
pub unit_idle: IdleMode,
}