Struct SExprCodeGen
pub struct SExprCodeGen;
Expand description
A code generator that generates S-expressions.
Implementations§
§impl SExprCodeGen
impl SExprCodeGen
pub fn new() -> Self
pub fn new() -> Self
Creates a new SExprCodeGen
.
Trait Implementations§
§impl CodeGenerator for SExprCodeGen
impl CodeGenerator for SExprCodeGen
§fn leaf_const(&mut self, value: i128) -> Self::T
fn leaf_const(&mut self, value: i128) -> Self::T
Create a constant value.
§fn unknown_op_any(&mut self, name: &str, args: &[Self::T]) -> Self::T
fn unknown_op_any(&mut self, name: &str, args: &[Self::T]) -> Self::T
Generate an error for an unknown operation.
§fn unknown_op1(&mut self, name: &str, item: Self::T) -> Self::T
fn unknown_op1(&mut self, name: &str, item: Self::T) -> Self::T
Generate an error for a 1-argument unknown operation.
§fn unknown_op2(&mut self, name: &str, lhs: Self::T, rhs: Self::T) -> Self::T
fn unknown_op2(&mut self, name: &str, lhs: Self::T, rhs: Self::T) -> Self::T
Generate an error for a 2-argument unknown operation.
§fn unknown_op3(
&mut self,
name: &str,
arg0: Self::T,
arg1: Self::T,
arg2: Self::T,
) -> Self::T
fn unknown_op3( &mut self, name: &str, arg0: Self::T, arg1: Self::T, arg2: Self::T, ) -> Self::T
Generate an error for a 3-argument unknown operation.
§fn crop(&mut self, num_bits: u8, item: Self::T) -> Self::T
fn crop(&mut self, num_bits: u8, item: Self::T) -> Self::T
Crop the expression to the lowest
num_bits
bits.§fn sign_extend(&mut self, num_bits: u8, item: Self::T) -> Self::T
fn sign_extend(&mut self, num_bits: u8, item: Self::T) -> Self::T
Crop the expression to the lowest
num_bits
bits, then sign-extend it.§fn select(&mut self, num_skip: u8, num_take: u8, item: Self::T) -> Self::T
fn select(&mut self, num_skip: u8, num_take: u8, item: Self::T) -> Self::T
Select
num_take
bits starting at bit index num_skip
from item
.§fn parity(&mut self, item: Self::T) -> Self::T
fn parity(&mut self, item: Self::T) -> Self::T
Crop the expression to the lowest 8 bits, then compute the parity.
§fn is_zero(&mut self, item: Self::T) -> Self::T
fn is_zero(&mut self, item: Self::T) -> Self::T
Return ‘1’ if the expression is zero, otherwise return ‘0’.
§fn trailing_zeros(&mut self, item: Self::T) -> Self::T
fn trailing_zeros(&mut self, item: Self::T) -> Self::T
Count the number of trailing zeros.
§fn leading_zeros(&mut self, item: Self::T) -> Self::T
fn leading_zeros(&mut self, item: Self::T) -> Self::T
Count the number of leading zeros.
§fn swap_bytes(&mut self, num_bits: u8, item: Self::T) -> Self::T
fn swap_bytes(&mut self, num_bits: u8, item: Self::T) -> Self::T
Reverse the order of the lowest
ceil(num_bits / 8)
bytes.§fn carryless_mul(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
fn carryless_mul(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
Perform carryless multiplication.
§fn div_unsigned(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
fn div_unsigned(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
Perform unsigned division.
§fn rem_unsigned(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
fn rem_unsigned(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
Compute the unsigned remainder.
§fn cmp_lt(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
fn cmp_lt(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
Return ‘1’ if
lhs
is less than rhs
, return ‘1’ otherwise.§fn rol(&mut self, num_bits: u8, lhs: Self::T, rhs: Self::T) -> Self::T
fn rol(&mut self, num_bits: u8, lhs: Self::T, rhs: Self::T) -> Self::T
Crop
lhs
to num_bits
, then rotate those bits rhs
positions.§fn deposit_bits(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
fn deposit_bits(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
Perform the PDEP operation.
§fn extract_bits(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
fn extract_bits(&mut self, lhs: Self::T, rhs: Self::T) -> Self::T
Perform the PEXT operation
Auto Trait Implementations§
impl Freeze for SExprCodeGen
impl RefUnwindSafe for SExprCodeGen
impl Send for SExprCodeGen
impl Sync for SExprCodeGen
impl Unpin for SExprCodeGen
impl UnwindSafe for SExprCodeGen
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
§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more