pub const OP_ID: &str = "vyre-libs::parsing::c::preprocess::gpu_if_expression";
pub const BINDING_TOK_STARTS: u32 = 0;
pub const BINDING_TOK_LENS: u32 = 1;
pub const BINDING_DIRECTIVE_KINDS: u32 = 2;
pub const BINDING_SOURCE: u32 = 3;
pub const BINDING_MACRO_NAMES_PACKED: u32 = 4;
pub const BINDING_MACRO_OFFSETS: u32 = 5;
pub const BINDING_MACRO_VALUES: u32 = 6;
pub const BINDING_DIRECTIVE_VALUES: u32 = 7;
pub const STACK_DEPTH: u32 = 16;
pub const MAX_PAYLOAD_BYTES: u32 = 512;
pub const MAX_IDENT_LEN: u32 = 64;
pub const OP_LPAREN: u32 = 1;
pub const OP_TERNARY_Q: u32 = 2;
pub const OP_LOR: u32 = 3;
pub const OP_LAND: u32 = 4;
pub const OP_BOR: u32 = 5;
pub const OP_BXOR: u32 = 6;
pub const OP_BAND: u32 = 7;
pub const OP_EQ: u32 = 8;
pub const OP_NE: u32 = 9;
pub const OP_LT: u32 = 10;
pub const OP_LE: u32 = 11;
pub const OP_GT: u32 = 12;
pub const OP_GE: u32 = 13;
pub const OP_SHL: u32 = 14;
pub const OP_SHR: u32 = 15;
pub const OP_ADD: u32 = 16;
pub const OP_SUB: u32 = 17;
pub const OP_MUL: u32 = 18;
pub const OP_DIV: u32 = 19;
pub const OP_MOD: u32 = 20;
pub const OP_UN_NOT: u32 = 101;
pub const OP_UN_BNOT: u32 = 102;
pub const OP_UN_NEG: u32 = 103;
pub const OP_UN_PLUS: u32 = 104;
pub const INVALID_EXPR_VALUE: u32 = u32::MAX;
#[cfg(test)]
mod tests {
use super::*;
use vyre::ir::{BufferAccess, BufferDecl, DataType};
#[test]
fn source_and_macro_buffers_are_runtime_sized() {
let buffers = [
BufferDecl::storage(
"source",
BINDING_SOURCE,
BufferAccess::ReadOnly,
DataType::U32,
)
.with_count(0),
BufferDecl::storage(
"macro_names_packed",
BINDING_MACRO_NAMES_PACKED,
BufferAccess::ReadOnly,
DataType::U32,
)
.with_count(0),
BufferDecl::storage(
"macro_offsets",
BINDING_MACRO_OFFSETS,
BufferAccess::ReadOnly,
DataType::U32,
)
.with_count(0),
BufferDecl::storage(
"macro_values",
BINDING_MACRO_VALUES,
BufferAccess::ReadOnly,
DataType::U32,
)
.with_count(0),
];
for name in [
"source",
"macro_names_packed",
"macro_offsets",
"macro_values",
] {
let buffer = buffers
.iter()
.find(|buffer| buffer.name() == name)
.expect("Fix: buffer must exist");
assert_eq!(
buffer.count, 0,
"{name} must be runtime-sized so one #if expression program serves all TU and macro-table sizes"
);
}
}
}