Skip to main content

SLTToSIRLowerer

Struct SLTToSIRLowerer 

Source
pub struct SLTToSIRLowerer { /* private fields */ }

Implementations§

Source§

impl SLTToSIRLowerer

Source

pub fn new(four_state: bool) -> Self

Source

pub fn with_unpacked_input_types<A: Hash + Eq + Clone>( self, arena: &SLTNodeArena<A>, element_widths: &FxHashMap<A, usize>, ) -> Self

Source

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

Source

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.

Source

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

Source

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

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more