mod dispatch;
#[cfg(any(test, feature = "cpu-parity"))]
mod reference;
#[cfg(test)]
mod tests;
use vyre_primitives::graph::dominator_frontier::{
frontier_size as primitive_frontier_size, DominatorFrontierProgramShape,
DominatorFrontierStaticInputKey,
};
use crate::graph::dispatch_bridge::{CachedProgram, ProgramCache};
pub use dispatch::{
compute_dominance_frontier_via, compute_dominance_frontier_via_into,
compute_dominance_frontier_via_with_scratch_into,
};
#[cfg(any(test, feature = "cpu-parity"))]
pub use reference::{compute_dominance_frontier, try_compute_dominance_frontier};
#[derive(Debug, Default)]
pub struct DominanceFrontierGpuScratch {
inputs: Vec<Vec<u8>>,
program_cache: ProgramCache<DominatorFrontierProgramShape, CachedDominanceFrontierProgram>,
static_input_key: Option<DominatorFrontierStaticInputKey>,
}
type CachedDominanceFrontierProgram = CachedProgram;
impl DominanceFrontierGpuScratch {
#[cfg(test)]
fn program_builds(&self) -> usize {
self.program_cache.builds()
}
}
#[must_use]
pub fn frontier_size(frontier: &[u32]) -> u32 {
primitive_frontier_size(frontier)
}