pub struct LoweringRule { /* private fields */ }Expand description
Auto-generated lowering rule from a FusedOpEntry. Matches
Op::Fused(id, _) and decomposes via the entry’s decompose
function. Each rule corresponds to one fused-op id in the registry.
Step 3 also fires on the legacy per-fused-op Op variants (e.g.
Op::SoftmaxLastDim) so emission sites that haven’t yet migrated
to Op::Fused continue to lower correctly. Step 5 deletes those
variants and the legacy match arm with them.
Implementations§
Source§impl LoweringRule
impl LoweringRule
pub fn from_entry(entry: &FusedOpEntry) -> Self
Trait Implementations§
Source§impl Rule for LoweringRule
impl Rule for LoweringRule
Source§fn name(&self) -> &'static str
fn name(&self) -> &'static str
Stable, human-readable name. Shows up in panic messages and
debug traces.
Source§fn family(&self) -> RuleFamily
fn family(&self) -> RuleFamily
Which family this rule belongs to. Determines pass ordering.
Source§fn matches(&self, graph: &Graph, id: NodeId) -> bool
fn matches(&self, graph: &Graph, id: NodeId) -> bool
Whether this rule can rewrite the node at
id. Should be
pure — same inputs, same answer. Called once per node per
pass; the first matching rule wins.Source§fn rewrite(
&self,
graph: &mut Graph,
id: NodeId,
remap: &mut HashMap<NodeId, NodeId>,
)
fn rewrite( &self, graph: &mut Graph, id: NodeId, remap: &mut HashMap<NodeId, NodeId>, )
Apply the rewrite: append fresh nodes to the graph, declare
any side-effect roots if the rewrite emits side-effecting
ops, and write
remap.insert(id, replacement_id) so the
driver can redirect consumer edges. Calling this method
implies matches returned true for the
same (graph, id) — rewriters can rely on the structure
the matcher checked for.Auto Trait Implementations§
impl Freeze for LoweringRule
impl RefUnwindSafe for LoweringRule
impl Send for LoweringRule
impl Sync for LoweringRule
impl Unpin for LoweringRule
impl UnsafeUnpin for LoweringRule
impl UnwindSafe for LoweringRule
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