weirflow 0.1.0

GPU-first dataflow analysis primitives for Vyre and Santh compiler pipelines.
Documentation
#![cfg(any(test, feature = "cpu-parity"))]
use super::POINTS_TO_EDGE_MASK;
use crate::bitset_closure_oracle::{csr_bitset_closure, CsrClosureDirection};

/// reference oracle for the transitive subset-closure that
/// [`andersen_points_to`] computes when driven to fixpoint.
///
/// `edge_offsets`, `edge_targets`, and `edge_kind_mask` are the
/// canonical ProgramGraph CSR buffers. `seed_bits` is the initial
/// points-to frontier as a packed u32 bitset. The returned bitset is
/// `seed_bits ∪ reachable(seed_bits)` over all subset edges whose
/// kind mask is non-zero.
///
/// The GPU Program is intentionally one propagation step; callers use
/// this oracle to verify the whole host-driven fixpoint contract.
#[must_use]
#[deprecated(
    note = "reference oracle only; production code must dispatch the Weir Program on a concrete GPU backend or use weir::oracle for parity evidence"
)]
pub(crate) fn cpu_subset_closure(
    node_count: u32,
    edge_offsets: &[u32],
    edge_targets: &[u32],
    edge_kind_mask: &[u32],
    seed_bits: &[u32],
) -> Vec<u32> {
    csr_bitset_closure(
        "points_to_cpu_subset_closure",
        node_count,
        edge_offsets,
        edge_targets,
        edge_kind_mask,
        seed_bits,
        POINTS_TO_EDGE_MASK,
        CsrClosureDirection::Forward,
    )
}