#[cfg(any(test, feature = "cpu-parity"))]
mod cpu_reference;
mod dense_step;
mod four_russians;
mod frontier_plan;
mod mode_selection;
mod plan_cache_key;
mod sparse_dense_step;
#[cfg(test)]
mod test_graphs;
#[cfg(any(test, feature = "cpu-parity"))]
pub use cpu_reference::{cpu_dense_step, cpu_four_russians_dense_step, cpu_sparse_dense_step};
pub use dense_step::adaptive_dense_step;
pub use four_russians::{
adaptive_four_russians_dense_step, four_russians_dense_columns_from_adj_rows,
four_russians_dense_lut_from_adj_rows, four_russians_dense_lut_words,
four_russians_frontier_words, four_russians_source_tile_count,
};
pub use frontier_plan::{
adaptive_frontier_popcount, adaptive_frontier_popcount_in_domain, adaptive_frontier_stats,
adaptive_node_dispatch_grid, plan_adaptive_frontier_work, plan_adaptive_resident_auto_step,
plan_adaptive_resident_frontier_step, plan_adaptive_resident_sparse_queue_step,
validate_adaptive_frontier, validate_adaptive_traversal_layout, AdaptiveFrontierLayout,
AdaptiveFrontierStats, AdaptiveFrontierWorkPlan, AdaptiveResidentAutoStepPlan,
AdaptiveResidentFrontierPlan, AdaptiveResidentSparseQueuePlan, AdaptiveTraversalLayout,
ADAPTIVE_TRAVERSAL_LINEAR_WORKGROUP_LANES, ADAPTIVE_TRAVERSAL_LINEAR_WORKGROUP_SIZE,
ADAPTIVE_TRAVERSAL_POPCOUNT_BYTES,
};
pub use mode_selection::{
select_adaptive_traversal_mode, select_dense_traversal_kernel, should_use_dense,
AdaptiveTraversalMode, DenseTraversalKernel,
};
pub use plan_cache_key::{
adaptive_four_russians_graph_content_hash, adaptive_sparse_queue_graph_content_hash,
adaptive_traversal_graph_content_hash, adaptive_traversal_program_layout_hash,
adaptive_traversal_split_program_layout_hash, AdaptiveTraversalPlanCacheKey,
AdaptiveTraversalProgramKind,
};
pub use sparse_dense_step::adaptive_sparse_dense_step;
pub const DENSE_THRESHOLD_PCT: u32 = 25;
pub const OP_ID: &str = "vyre-primitives::graph::adaptive_traverse_dense";
pub const HYBRID_OP_ID: &str = "vyre-primitives::graph::adaptive_traverse_sparse_dense";
pub const FOUR_RUSSIANS_DENSE_OP_ID: &str =
"vyre-primitives::graph::adaptive_traverse_four_russians_dense";
pub const NAME_FRONTIER_IN: &str = "adap_frontier_in";
pub const NAME_FRONTIER_OUT: &str = "adap_frontier_out";
pub const NAME_FRONTIER_POPCOUNT: &str = "adap_frontier_popcount";
pub const NAME_EDGE_OFFSETS: &str = "adap_edge_offsets";
pub const NAME_EDGE_TARGETS: &str = "adap_edge_targets";
pub const NAME_EDGE_KIND_MASK: &str = "adap_edge_kind_mask";
pub const NAME_ADJ_ROWS_DENSE: &str = "adap_adj_rows_dense";