pub struct CfgBlock {
pub inputs: Vec<u16>,
pub body: Vec<LoopCell>,
pub writes: Vec<(u16, Src)>,
pub shows: Vec<Src>,
pub term: Term,
}Expand description
One spatially-lowered basic block: a wired residual body + its live-in registers + the register writes it commits + its terminator.
Fields§
§inputs: Vec<u16>Live-in registers, in input order: Src::In(k) in body/writes/term refers to inputs[k].
body: Vec<LoopCell>The block’s straight-line datapath (SSA cells).
writes: Vec<(u16, Src)>Each register the block writes, paired with the Src giving its final value.
shows: Vec<Src>★ WHAT THIS BLOCK SHOWS, in order — the block’s slice of the program’s output tape.
A function RETURNS one value and the terminator carries it. A ## Main SHOWS a sequence, and a
branchy Main shows a DIFFERENT sequence down each path — which is exactly why the combinational
output-tape path refuses it (“a conditional Show cannot ride the combinational tape”) and why the
tape has to live per block here. Empty for every function lowering, so nothing that existed
before this field moves.
term: TermWhere control goes next.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CfgBlock
impl RefUnwindSafe for CfgBlock
impl Send for CfgBlock
impl Sync for CfgBlock
impl Unpin for CfgBlock
impl UnsafeUnpin for CfgBlock
impl UnwindSafe for CfgBlock
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.