pub struct ScanBodyPlan {
pub body: ThunkSchedule,
pub body_init: Vec<u8>,
pub body_input_off: usize,
pub body_output_off: usize,
pub carry_bytes: usize,
pub bcast_body_offs: Vec<usize>,
pub xs_body_offs: Vec<usize>,
}Expand description
A scan body compiled into a self-contained CPU schedule plus the byte
offsets needed to drive it. Backends without a native Op::Scan kernel
(e.g. Metal via the unified-memory host fallback) build this once at compile
time and hand it to execute_scan_host at run time. Mirrors the inline
Op::Scan compilation used by the CPU executor.
Fields§
§body: ThunkSchedule§body_init: Vec<u8>§body_input_off: usize§body_output_off: usize§carry_bytes: usize§bcast_body_offs: Vec<usize>Body-arena offsets of the broadcast inputs, in declaration order.
xs_body_offs: Vec<usize>Body-arena offsets of the per-step (xs) inputs, in declaration order.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for ScanBodyPlan
impl !UnwindSafe for ScanBodyPlan
impl Freeze for ScanBodyPlan
impl Send for ScanBodyPlan
impl Sync for ScanBodyPlan
impl Unpin for ScanBodyPlan
impl UnsafeUnpin for ScanBodyPlan
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more