pub(crate) trait ExprLocal {
Show 21 methods
// Required methods
fn alias(&self, ctx: &Context<'_>) -> Result<Option<ValueName>>;
fn variable(&self, ctx: &Context<'_>) -> Result<ValueName>;
fn lower(&self, ctx: &mut Context<'_>) -> Result<StatementList>;
fn handle_call(
&self,
name: &Loc<NameID>,
args: &[Argument<'_, Expression, TypeSpec>],
unit_head: &Loc<UnitHead>,
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_clocked_memory_decl(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_clocked_memory_initial_decl(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_clocked_memory(
&self,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
has_initial: bool,
) -> Result<StatementList>;
fn handle_read_memory(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_trunc(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_sext(
&self,
path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_zext(
&self,
path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_unsafe_cast(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_concat(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_div_pow2(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_reduce_and(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_reduce_or(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_reduce_xor(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_comb_div(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_comb_mod(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_new_mut_wire(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
fn handle_read_mut_wire(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>;
}
Required Methods§
fn alias(&self, ctx: &Context<'_>) -> Result<Option<ValueName>>
fn variable(&self, ctx: &Context<'_>) -> Result<ValueName>
fn lower(&self, ctx: &mut Context<'_>) -> Result<StatementList>
fn handle_call( &self, name: &Loc<NameID>, args: &[Argument<'_, Expression, TypeSpec>], unit_head: &Loc<UnitHead>, ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_clocked_memory_decl( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_clocked_memory_initial_decl( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_clocked_memory( &self, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, has_initial: bool, ) -> Result<StatementList>
fn handle_read_memory( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_trunc( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_sext( &self, path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_zext( &self, path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_unsafe_cast( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_concat( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_div_pow2( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_reduce_and( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_reduce_or( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_reduce_xor( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_comb_div( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_comb_mod( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_new_mut_wire( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
fn handle_read_mut_wire( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
Implementations on Foreign Types§
Source§impl ExprLocal for Loc<Expression>
impl ExprLocal for Loc<Expression>
Source§fn alias(&self, ctx: &Context<'_>) -> Result<Option<ValueName>>
fn alias(&self, ctx: &Context<'_>) -> Result<Option<ValueName>>
If the verilog code for this expression is just an alias for another variable that is returned here. This allows us to skip generating wires that we don’t really need
Source§fn handle_clocked_memory_decl(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>
fn handle_clocked_memory_decl( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
Result is the initial statement list to expand and return
Source§fn handle_read_memory(
&self,
_path: &Loc<NameID>,
result: StatementList,
args: &[Argument<'_, Expression, TypeSpec>],
ctx: &mut Context<'_>,
) -> Result<StatementList>
fn handle_read_memory( &self, _path: &Loc<NameID>, result: StatementList, args: &[Argument<'_, Expression, TypeSpec>], ctx: &mut Context<'_>, ) -> Result<StatementList>
Result is the initial statement list to expand and return