weirflow 0.1.0

GPU-first dataflow analysis primitives for Vyre and Santh compiler pipelines.
Documentation
use super::{loop_summarize, OP_ID};

/// Marker type for the loop-summarization dataflow primitive.
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct LoopSum;

impl crate::soundness::SoundnessTagged for LoopSum {
    fn soundness(&self) -> crate::soundness::Soundness {
        crate::soundness::Soundness::MayOver
    }
}

inventory::submit! {
    vyre_harness::OpEntry::new(
        OP_ID,
        || loop_summarize("cfg", "ranges", "summary"),
        Some(|| {
            let u32s = crate::dispatch_decode::pack_u32;
            vec![vec![
                u32s(&[10, 20, 5, 10, 0, 100, 30, 40]),
                u32s(&[9, 25, 6, 9, 0, 90, 29, 41]),
                u32s(&[0; 8]),
            ]]
        }),
        Some(|| {
            let u32s = crate::dispatch_decode::pack_u32;
            vec![vec![u32s(&[
                0,
                u32::MAX,
                5,
                10,
                0,
                100,
                0,
                u32::MAX,
            ])]]
        }),
    )
}