weirflow 0.1.0

GPU-first dataflow analysis primitives for Vyre and Santh compiler pipelines.
Documentation
use super::*;

// 2. BFS convergence on degenerate graphs
// ==================================================================

bfs_test!(
    single_node_no_edges_empty_seed,
    1,
    1,
    1,
    &[],
    &[],
    &[],
    &[],
    &[],
    vec![]
);

bfs_test!(
    single_node_no_edges_with_seed,
    1,
    1,
    1,
    &[],
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    vec![(0, 0, 0)]
);

bfs_test!(
    two_nodes_one_edge_seed_first,
    1,
    2,
    1,
    &[(0, 0, 1)],
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    vec![(0, 0, 0), (0, 1, 0)]
);

bfs_test!(
    two_nodes_one_edge_seed_second,
    1,
    2,
    1,
    &[(0, 0, 1)],
    &[],
    &[],
    &[],
    &[(0, 1, 0)],
    vec![(0, 1, 0)]
);

bfs_test!(
    self_loop_single_node_single_fact,
    1,
    1,
    1,
    &[(0, 0, 0)],
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    vec![(0, 0, 0)]
);

bfs_test!(
    self_loop_single_node_two_facts,
    1,
    1,
    2,
    &[(0, 0, 0)],
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    vec![(0, 0, 0)]
);

bfs_test!(
    chain_1_node,
    1,
    1,
    1,
    &chain_edges(1),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    vec![(0, 0, 0)]
);

bfs_test!(
    chain_2_nodes,
    1,
    2,
    1,
    &chain_edges(2),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    vec![(0, 0, 0), (0, 1, 0)]
);

bfs_test!(
    chain_3_nodes,
    1,
    3,
    1,
    &chain_edges(3),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    vec![(0, 0, 0), (0, 1, 0), (0, 2, 0)]
);

bfs_test!(
    chain_5_nodes,
    1,
    5,
    1,
    &chain_edges(5),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    vec![(0, 0, 0), (0, 1, 0), (0, 2, 0), (0, 3, 0), (0, 4, 0)]
);

bfs_test!(
    chain_10_nodes,
    1,
    10,
    1,
    &chain_edges(10),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    (0..10).map(|b| (0, b, 0)).collect()
);

bfs_test!(
    chain_50_nodes,
    1,
    50,
    1,
    &chain_edges(50),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    (0..50).map(|b| (0, b, 0)).collect()
);

bfs_test!(
    chain_100_nodes,
    1,
    100,
    1,
    &chain_edges(100),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    (0..100).map(|b| (0, b, 0)).collect()
);

bfs_test!(
    disconnected_two_components_seed_both,
    2,
    2,
    1,
    &[(0, 0, 1), (1, 0, 1)],
    &[],
    &[],
    &[],
    &[(0, 0, 0), (1, 0, 0)],
    vec![(0, 0, 0), (0, 1, 0), (1, 0, 0), (1, 1, 0)]
);

bfs_test!(
    disconnected_two_components_seed_one,
    2,
    2,
    1,
    &[(0, 0, 1), (1, 0, 1)],
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    vec![(0, 0, 0), (0, 1, 0)]
);

bfs_test!(
    disconnected_three_components,
    3,
    2,
    1,
    &[(0, 0, 1), (1, 0, 1), (2, 0, 1)],
    &[],
    &[],
    &[],
    &[(0, 0, 0), (2, 0, 0)],
    vec![(0, 0, 0), (0, 1, 0), (2, 0, 0), (2, 1, 0)]
);

bfs_test!(
    star_3_leaves,
    1,
    4,
    1,
    &star_edges(3),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    vec![(0, 0, 0), (0, 1, 0), (0, 2, 0), (0, 3, 0)]
);

bfs_test!(
    star_5_leaves,
    1,
    6,
    1,
    &star_edges(5),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    (0..6).map(|b| (0, b, 0)).collect()
);

bfs_test!(
    star_10_leaves,
    1,
    11,
    1,
    &star_edges(10),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    (0..11).map(|b| (0, b, 0)).collect()
);

bfs_test!(
    star_50_leaves,
    1,
    51,
    1,
    &star_edges(50),
    &[],
    &[],
    &[],
    &[(0, 0, 0)],
    (0..51).map(|b| (0, b, 0)).collect()
);