pub struct InstrW {Show 19 fields
pub m_en: bool,
pub m_dst: b7,
pub m_a: OperandW,
pub m_b: OperandW,
pub a_en: bool,
pub a_op: b2,
pub a_dst: b7,
pub a_a: OperandW,
pub a_b: OperandW,
pub out_index: b6,
pub t_en: bool,
pub t_digit: b7,
pub t_key: bool,
pub t_pair: b3,
pub t_row: b9,
pub t_lslot: bool,
pub t_clear: bool,
pub t_finish: bool,
pub end: bool,
}Expand description
Encoded VLIW bundle stored in program ROM, one word per program counter.
The three slots are independent; a disabled slot’s other fields are ignored. Operands are read in S1/S2 and the units issue in S3.
Fields§
§m_en: boolMultiply slot enabled.
m_dst: b7Multiply destination register (bank M).
m_a: OperandWFirst factor (read port 0; never bank L).
m_b: OperandWSecond factor (read port 1; the only operand programs point at bank L).
a_en: boolAdd slot enabled.
a_op: b20 add, 1 subtract, 2 output (OUT sends a_a to the output port
instead of using the adder).
a_dst: b7Add destination register (bank A); unused by OUT.
a_a: OperandWFirst operand (read port 2), also the value an OUT emits.
a_b: OperandWSecond operand (read port 3).
out_index: b6Program output index reported with an OUT event.
t_en: boolScan slot enabled.
t_digit: b7Digit slot 0..128 (base-point scalar 0..54, key scalar 64..118).
t_key: boolScan the key table instead of the base-point table.
t_pair: b3Entry pair 0..8: this step compares the digit magnitude with
entries 2 * pair + 1 and 2 * pair + 2.
t_row: b9Table row of the pair (table_row(digit) + pair), a public constant.
t_lslot: boolBank-L slot committed by t_finish.
t_clear: boolReset the accumulator to the identity first (first step of a lookup).
t_finish: boolCommit the accumulator, negated if the digit is negative, to bank L (last step of a lookup).
end: boolLast bundle of its program; the context retires after issuing it.
Trait Implementations§
Source§impl Digital for InstrW
impl Digital for InstrW
Source§const BITS: usize
const BITS: usize
Source§fn static_kind() -> Kind
fn static_kind() -> Kind
Source§fn bin(self) -> Box<[BitX]>
fn bin(self) -> Box<[BitX]>
§fn typed_bits(self) -> TypedBits
fn typed_bits(self) -> TypedBits
§fn discriminant(self) -> TypedBits
fn discriminant(self) -> TypedBits
§fn variant_kind(self) -> Kind
fn variant_kind(self) -> Kind
§fn binary_string(self) -> String
fn binary_string(self) -> String
impl Copy for InstrW
impl StructuralPartialEq for InstrW
Auto Trait Implementations§
impl Freeze for InstrW
impl RefUnwindSafe for InstrW
impl Send for InstrW
impl Sync for InstrW
impl Unpin for InstrW
impl UnsafeUnpin for InstrW
impl UnwindSafe for InstrW
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg] or
a color-specific method, such as [OwoColorize::green], Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg] or
a color-specific method, such as [OwoColorize::on_yellow], Read more