pub struct SLTToSIRLowerer { /* private fields */ }Implementations§
Source§impl SLTToSIRLowerer
impl SLTToSIRLowerer
pub fn new(four_state: bool) -> Self
pub fn with_unpacked_input_types<A: Hash + Eq + Clone>( self, arena: &SLTNodeArena<A>, element_widths: &FxHashMap<A, usize>, ) -> Self
Sourcepub fn lower<A: Hash + Eq + Clone + Debug + Display>(
&self,
builder: &mut SIRBuilder<A>,
node: NodeId,
arena: &SLTNodeArena<A>,
cache: &mut FxHashMap<NodeId, RegisterId>,
) -> RegisterId
pub fn lower<A: Hash + Eq + Clone + Debug + Display>( &self, builder: &mut SIRBuilder<A>, node: NodeId, arena: &SLTNodeArena<A>, cache: &mut FxHashMap<NodeId, RegisterId>, ) -> RegisterId
Recursively expand SLT nodes into SIR instructions
Sourcepub fn lower_fold_groups_jointly<A: Hash + Eq + Clone + Debug + Display>(
&self,
builder: &mut SIRBuilder<A>,
roots: &[NodeId],
arena: &SLTNodeArena<A>,
cache: &mut FxHashMap<NodeId, RegisterId>,
) -> bool
pub fn lower_fold_groups_jointly<A: Hash + Eq + Clone + Debug + Display>( &self, builder: &mut SIRBuilder<A>, roots: &[NodeId], arena: &SLTNodeArena<A>, cache: &mut FxHashMap<NodeId, RegisterId>, ) -> bool
Lower several independent recovered folds as one counted loop.
This entry point is intentionally transactional: a rejected family leaves both the builder and the materialization cache unchanged. The scheduler remains responsible for proving that the roots are mutually unordered in its dependency graph; this method rechecks every local property needed by the joint loop itself.
pub fn lower_with_inputs<A: Hash + Eq + Clone + Debug + Display>( &self, builder: &mut SIRBuilder<A>, node: NodeId, arena: &SLTNodeArena<A>, cache: &mut FxHashMap<NodeId, RegisterId>, inputs: FxHashMap<VarAtomBase<A>, RegisterId>, ) -> RegisterId
Sourcepub fn project_materialized<A>(
&self,
builder: &mut SIRBuilder<A>,
value: RegisterId,
access: BitAccess,
) -> RegisterId
pub fn project_materialized<A>( &self, builder: &mut SIRBuilder<A>, value: RegisterId, access: BitAccess, ) -> RegisterId
Project a value which has already been lowered without retaining every projection at once. Grouped folds use this after the packed result has been computed, immediately before the corresponding state Store.
Trait Implementations§
Source§impl Drop for SLTToSIRLowerer
impl Drop for SLTToSIRLowerer
Auto Trait Implementations§
impl !Freeze for SLTToSIRLowerer
impl !RefUnwindSafe for SLTToSIRLowerer
impl !Sync for SLTToSIRLowerer
impl Send for SLTToSIRLowerer
impl Unpin for SLTToSIRLowerer
impl UnsafeUnpin for SLTToSIRLowerer
impl UnwindSafe for SLTToSIRLowerer
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