vyre-libs 0.6.2

vyre Category A library ecosystem - pure-IR compositions over vyre-ops hardware primitives
Documentation
use super::{gpu_if_expression, gpu_ifdef_value};
use vyre::ir::Program;

fn assert_program_shape(program: Program, buffers: usize) {
    assert_eq!(program.buffers().len(), buffers);
    assert_eq!(program.workgroup_size(), [256, 1, 1]);
}

#[test]
fn gpu_if_expression_abi_is_canonical_and_stable() {
    assert_eq!(
        gpu_if_expression::OP_ID,
        "vyre-libs::parsing::c::preprocess::gpu_if_expression"
    );
    assert_eq!(gpu_if_expression::BINDING_TOK_STARTS, 0);
    assert_eq!(gpu_if_expression::BINDING_TOK_LENS, 1);
    assert_eq!(gpu_if_expression::BINDING_DIRECTIVE_KINDS, 2);
    assert_eq!(gpu_if_expression::BINDING_SOURCE, 3);
    assert_eq!(gpu_if_expression::BINDING_MACRO_NAMES_PACKED, 4);
    assert_eq!(gpu_if_expression::BINDING_MACRO_OFFSETS, 5);
    assert_eq!(gpu_if_expression::BINDING_MACRO_VALUES, 6);
    assert_eq!(gpu_if_expression::BINDING_DIRECTIVE_VALUES, 7);

    assert_program_shape(gpu_if_expression::gpu_if_expression(8, 64), 8);
}

#[test]
fn gpu_ifdef_value_abi_is_canonical_and_stable() {
    assert_eq!(
        gpu_ifdef_value::OP_ID,
        "vyre-libs::parsing::c::preprocess::gpu_ifdef_value"
    );
    assert_eq!(gpu_ifdef_value::BINDING_TOK_STARTS, 0);
    assert_eq!(gpu_ifdef_value::BINDING_TOK_LENS, 1);
    assert_eq!(gpu_ifdef_value::BINDING_DIRECTIVE_KINDS, 2);
    assert_eq!(gpu_ifdef_value::BINDING_SOURCE, 3);
    assert_eq!(gpu_ifdef_value::BINDING_MACRO_NAMES_PACKED, 4);
    assert_eq!(gpu_ifdef_value::BINDING_MACRO_OFFSETS, 5);
    assert_eq!(gpu_ifdef_value::BINDING_DIRECTIVE_VALUES, 6);

    assert_program_shape(gpu_ifdef_value::gpu_ifdef_value(8, 64), 7);
}