pub enum Instruction {
Show 245 variants
Nop,
Assert,
AssertWithError(ErrorMsg),
AssertEq,
AssertEqWithError(ErrorMsg),
AssertEqw,
AssertEqwWithError(ErrorMsg),
Assertz,
AssertzWithError(ErrorMsg),
Add,
AddImm(ImmFelt),
Sub,
SubImm(ImmFelt),
Mul,
MulImm(ImmFelt),
Div,
DivImm(ImmFelt),
Neg,
ILog2,
Inv,
Incr,
Pow2,
Exp,
ExpImm(ImmFelt),
ExpBitLength(u8),
Not,
And,
Or,
Xor,
Eq,
EqImm(ImmFelt),
Neq,
NeqImm(ImmFelt),
Eqw,
Lt,
LtImm(ImmFelt),
Lte,
LteImm(ImmFelt),
Gt,
GtImm(ImmFelt),
Gte,
GteImm(ImmFelt),
IsOdd,
Ext2Add,
Ext2Sub,
Ext2Mul,
Ext2Div,
Ext2Neg,
Ext2Inv,
U32Test,
U32TestW,
U32Assert,
U32AssertWithError(ErrorMsg),
U32Assert2,
U32Assert2WithError(ErrorMsg),
U32AssertW,
U32AssertWWithError(ErrorMsg),
U32Split,
U32Cast,
U32WrappingAdd,
U32WrappingAddImm(ImmU32),
U32OverflowingAdd,
U32OverflowingAddImm(ImmU32),
U32WideningAdd,
U32WideningAddImm(ImmU32),
U32OverflowingAdd3,
U32WideningAdd3,
U32WrappingAdd3,
U32WrappingSub,
U32WrappingSubImm(ImmU32),
U32OverflowingSub,
U32OverflowingSubImm(ImmU32),
U32WrappingMul,
U32WrappingMulImm(ImmU32),
U32WideningMul,
U32WideningMulImm(ImmU32),
U32WideningMadd,
U32WrappingMadd,
U32Div,
U32DivImm(ImmU32),
U32Mod,
U32ModImm(ImmU32),
U32DivMod,
U32DivModImm(ImmU32),
U32And,
U32Or,
U32Xor,
U32Not,
U32Shr,
U32ShrImm(ImmU8),
U32Shl,
U32ShlImm(ImmU8),
U32Rotr,
U32RotrImm(ImmU8),
U32Rotl,
U32RotlImm(ImmU8),
U32Popcnt,
U32Ctz,
U32Clz,
U32Clo,
U32Cto,
U32Lt,
U32Lte,
U32Gt,
U32Gte,
U32Min,
U32Max,
Drop,
DropW,
PadW,
Dup0,
Dup1,
Dup2,
Dup3,
Dup4,
Dup5,
Dup6,
Dup7,
Dup8,
Dup9,
Dup10,
Dup11,
Dup12,
Dup13,
Dup14,
Dup15,
DupW0,
DupW1,
DupW2,
DupW3,
Swap1,
Swap2,
Swap3,
Swap4,
Swap5,
Swap6,
Swap7,
Swap8,
Swap9,
Swap10,
Swap11,
Swap12,
Swap13,
Swap14,
Swap15,
SwapW1,
SwapW2,
SwapW3,
SwapDw,
MovUp2,
MovUp3,
MovUp4,
MovUp5,
MovUp6,
MovUp7,
MovUp8,
MovUp9,
MovUp10,
MovUp11,
MovUp12,
MovUp13,
MovUp14,
MovUp15,
MovUpW2,
MovUpW3,
MovDn2,
MovDn3,
MovDn4,
MovDn5,
MovDn6,
MovDn7,
MovDn8,
MovDn9,
MovDn10,
MovDn11,
MovDn12,
MovDn13,
MovDn14,
MovDn15,
MovDnW2,
MovDnW3,
Reversew,
Reversedw,
CSwap,
CSwapW,
CDrop,
CDropW,
Push(Immediate<PushValue>),
PushSlice(Immediate<WordValue>, Range<usize>),
PushFeltList(Vec<Felt>),
Locaddr(ImmU16),
Sdepth,
Caller,
Clk,
MemLoad,
MemLoadImm(ImmU32),
MemLoadWBe,
MemLoadWBeImm(ImmU32),
MemLoadWLe,
MemLoadWLeImm(ImmU32),
LocLoad(ImmU16),
LocLoadWBe(ImmU16),
LocLoadWLe(ImmU16),
MemStore,
MemStoreImm(ImmU32),
MemStoreWBe,
MemStoreWBeImm(ImmU32),
MemStoreWLe,
MemStoreWLeImm(ImmU32),
LocStore(ImmU16),
LocStoreWBe(ImmU16),
LocStoreWLe(ImmU16),
MemStream,
AdvPipe,
AdvPush,
AdvPushW,
AdvLoadW,
SysEvent(SystemEventNode),
Hash,
HMerge,
HPerm,
MTreeGet,
MTreeSet,
MTreeMerge,
MTreeVerify,
MTreeVerifyWithError(ErrorMsg),
CryptoStream,
FriExt2Fold4,
HornerBase,
HornerExt,
EvalCircuit,
LogDeferred,
Exec(InvocationTarget),
Call(InvocationTarget),
SysCall(InvocationTarget),
DynExec,
DynCall,
ProcRef(InvocationTarget),
DebugVar(DebugVarInfo),
DebugInlineCall(DebugInlineCallInfo),
DebugInlineCallClear,
Emit,
EmitImm(EventImmediate),
Trace,
TraceImm(EventImmediate),
}Expand description
Represents the set of primitive instructions in Miden Assembly syntax.
NOTE: For control flow instructions, see crate::ast::Op.
Variants§
Nop
Assert
AssertWithError(ErrorMsg)
AssertEq
AssertEqWithError(ErrorMsg)
AssertEqw
AssertEqwWithError(ErrorMsg)
Assertz
AssertzWithError(ErrorMsg)
Add
AddImm(ImmFelt)
Sub
SubImm(ImmFelt)
Mul
MulImm(ImmFelt)
Div
DivImm(ImmFelt)
Neg
ILog2
Inv
Incr
Pow2
Exp
ExpImm(ImmFelt)
ExpBitLength(u8)
Not
And
Or
Xor
Eq
EqImm(ImmFelt)
Neq
NeqImm(ImmFelt)
Eqw
Lt
LtImm(ImmFelt)
Lte
LteImm(ImmFelt)
Gt
GtImm(ImmFelt)
Gte
GteImm(ImmFelt)
IsOdd
Ext2Add
Ext2Sub
Ext2Mul
Ext2Div
Ext2Neg
Ext2Inv
U32Test
U32TestW
U32Assert
U32AssertWithError(ErrorMsg)
U32Assert2
U32Assert2WithError(ErrorMsg)
U32AssertW
U32AssertWWithError(ErrorMsg)
U32Split
U32Cast
U32WrappingAdd
U32WrappingAddImm(ImmU32)
U32OverflowingAdd
U32OverflowingAddImm(ImmU32)
U32WideningAdd
U32WideningAddImm(ImmU32)
U32OverflowingAdd3
U32WideningAdd3
U32WrappingAdd3
U32WrappingSub
U32WrappingSubImm(ImmU32)
U32OverflowingSub
U32OverflowingSubImm(ImmU32)
U32WrappingMul
U32WrappingMulImm(ImmU32)
U32WideningMul
U32WideningMulImm(ImmU32)
U32WideningMadd
U32WrappingMadd
U32Div
U32DivImm(ImmU32)
U32Mod
U32ModImm(ImmU32)
U32DivMod
U32DivModImm(ImmU32)
U32And
U32Or
U32Xor
U32Not
U32Shr
U32ShrImm(ImmU8)
U32Shl
U32ShlImm(ImmU8)
U32Rotr
U32RotrImm(ImmU8)
U32Rotl
U32RotlImm(ImmU8)
U32Popcnt
U32Ctz
U32Clz
U32Clo
U32Cto
U32Lt
U32Lte
U32Gt
U32Gte
U32Min
U32Max
Drop
DropW
PadW
Dup0
Dup1
Dup2
Dup3
Dup4
Dup5
Dup6
Dup7
Dup8
Dup9
Dup10
Dup11
Dup12
Dup13
Dup14
Dup15
DupW0
DupW1
DupW2
DupW3
Swap1
Swap2
Swap3
Swap4
Swap5
Swap6
Swap7
Swap8
Swap9
Swap10
Swap11
Swap12
Swap13
Swap14
Swap15
SwapW1
SwapW2
SwapW3
SwapDw
MovUp2
MovUp3
MovUp4
MovUp5
MovUp6
MovUp7
MovUp8
MovUp9
MovUp10
MovUp11
MovUp12
MovUp13
MovUp14
MovUp15
MovUpW2
MovUpW3
MovDn2
MovDn3
MovDn4
MovDn5
MovDn6
MovDn7
MovDn8
MovDn9
MovDn10
MovDn11
MovDn12
MovDn13
MovDn14
MovDn15
MovDnW2
MovDnW3
Reversew
Reversedw
CSwap
CSwapW
CDrop
CDropW
Push(Immediate<PushValue>)
PushSlice(Immediate<WordValue>, Range<usize>)
PushFeltList(Vec<Felt>)
Locaddr(ImmU16)
Sdepth
Caller
Clk
MemLoad
MemLoadImm(ImmU32)
MemLoadWBe
MemLoadWBeImm(ImmU32)
MemLoadWLe
MemLoadWLeImm(ImmU32)
LocLoad(ImmU16)
LocLoadWBe(ImmU16)
LocLoadWLe(ImmU16)
MemStore
MemStoreImm(ImmU32)
MemStoreWBe
MemStoreWBeImm(ImmU32)
MemStoreWLe
MemStoreWLeImm(ImmU32)
LocStore(ImmU16)
LocStoreWBe(ImmU16)
LocStoreWLe(ImmU16)
MemStream
AdvPipe
AdvPush
AdvPushW
AdvLoadW
SysEvent(SystemEventNode)
Hash
HMerge
HPerm
MTreeGet
MTreeSet
MTreeMerge
MTreeVerify
MTreeVerifyWithError(ErrorMsg)
CryptoStream
FriExt2Fold4
HornerBase
HornerExt
EvalCircuit
LogDeferred
Exec(InvocationTarget)
Call(InvocationTarget)
SysCall(InvocationTarget)
DynExec
DynCall
ProcRef(InvocationTarget)
DebugVar(DebugVarInfo)
Records a source variable location at this point in the generated operation stream.
DebugInlineCall(DebugInlineCallInfo)
Appends one source function to the inline call chain active for subsequent operations.
Frames are emitted from innermost to outermost. This compiler-internal marker has no VM
execution semantics; the assembler stores the active chain on each generated source-node
occurrence until DebugInlineCallClear is encountered.
DebugInlineCallClear
Clears the inline call chain for subsequent generated operations and control nodes.
This marks the point at which source attribution returns to the containing non-inlined function. It is compiler-internal and does not emit a VM operation.
Emit
EmitImm(EventImmediate)
Trace
TraceImm(EventImmediate)
Implementations§
Source§impl Instruction
impl Instruction
Sourcepub const fn has_textual_representation(&self) -> bool
pub const fn has_textual_representation(&self) -> bool
Returns true if this instruction has a textual representation in Miden Assembly.
Some instructions (like DebugVar) are compiler-internal and have
no surface syntax. They should be skipped during pretty-printing.
Trait Implementations§
Source§impl Clone for Instruction
impl Clone for Instruction
Source§fn clone(&self) -> Instruction
fn clone(&self) -> Instruction
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Instruction
impl Debug for Instruction
Source§impl Display for Instruction
impl Display for Instruction
impl Eq for Instruction
Source§impl PartialEq for Instruction
impl PartialEq for Instruction
Source§impl PrettyPrint for Instruction
impl PrettyPrint for Instruction
Source§fn to_pretty_string(&self) -> String
fn to_pretty_string(&self) -> String
Source§fn pretty_print(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn pretty_print(&self, f: &mut Formatter<'_>) -> Result<(), Error>
impl StructuralPartialEq for Instruction
Auto Trait Implementations§
impl Freeze for Instruction
impl RefUnwindSafe for Instruction
impl Send for Instruction
impl Sync for Instruction
impl Unpin for Instruction
impl UnsafeUnpin for Instruction
impl UnwindSafe for Instruction
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§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 moreSource§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