vyre 0.4.0

GPU compute intermediate representation with a standard operation library
Documentation
//! CPU reference execution contract for operation types.

use crate::ir::Program;

/// CPU reference implementation for an operation.
pub trait CpuOp {
    /// Execute one flat byte payload and append the byte output to `output`.
    fn cpu(input: &[u8], output: &mut Vec<u8>);
}

/// Marker trait for Category A operations with an executable IR program.
pub trait CategoryAOp {
    /// Build the canonical Category A IR program.
    fn program() -> Program;
}

/// Function pointer used by Category C descriptors.
pub type CpuFn = fn(input: &[u8], output: &mut Vec<u8>);

/// CPU adapter for intrinsics whose existing reference accepts structured buffers.
pub fn structured_intrinsic_cpu(input: &[u8], output: &mut Vec<u8>) {
    output.clear();
    tracing::error!(
        "structured intrinsic CPU adapter received {} flat bytes. Fix: call the intrinsic's typed Rust reference directly or add a flat ABI adapter.",
        input.len()
    );
}