Skip to main content

weir/dispatch_decode/
mod.rs

1//! Shared GPU dispatch ABI helpers for Weir via paths.
2//!
3//! Production GPU wrappers must reject malformed backend input/output instead of
4//! accepting prefixes, silently padding, or ignoring trailing bytes. Packing,
5//! validation, and unpacking live in separate modules so each boundary has one
6//! responsibility while callers continue using `crate::dispatch_decode::*`.
7
8pub mod pack;
9pub mod schema;
10pub mod unpack;
11pub mod validate;
12
13#[allow(unused_imports)]
14pub(crate) use pack::{
15    pack_exact_u32_slots_into, pack_repeated_u32, pack_repeated_u32_into, pack_u32,
16    pad_dispatch_min_words, try_pack_u32, try_pack_u32_into, try_pad_zero_bytes_to_len,
17    try_write_zero_bytes, try_write_zero_words,
18};
19#[cfg(any(test, feature = "legacy-infallible"))]
20#[allow(unused_imports)]
21pub(crate) use pack::{pack_u32_into, write_zero_words};
22#[allow(unused_imports)]
23pub(crate) use schema::{
24    byte_len_for_u32_words, DispatchDecodeDirection, DispatchU32Schema, U32_BITS_PER_WORD,
25    U32_BYTES,
26};
27#[allow(unused_imports)]
28pub(crate) use unpack::{
29    only_output, require_output_count, unpack_exact_u32, unpack_exact_u32_into,
30    unpack_exact_u32_scalar, unpack_only_exact_u32_into, unpack_u32_from,
31};
32#[allow(unused_imports)]
33pub(crate) use validate::{
34    bitset_word_capacity, bitset_words, require_bitset_tail_clear, require_bitset_words,
35    require_csr_offsets_targets, require_csr_shape, require_positive_iterations, u32_to_usize,
36};