pub enum Inst {
Show 137 variants
Nop0,
Nop4,
AluRRR {
alu_op: ALUOp,
size: OperandSize,
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
},
AluRRRR {
alu_op: ALUOp3,
size: OperandSize,
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
ra: Reg,
},
AluRRImm12 {
alu_op: ALUOp,
size: OperandSize,
rd: Writable<Reg>,
rn: Reg,
imm12: Imm12,
},
AluRRImmLogic {
alu_op: ALUOp,
size: OperandSize,
rd: Writable<Reg>,
rn: Reg,
imml: ImmLogic,
},
AluRRImmShift {
alu_op: ALUOp,
size: OperandSize,
rd: Writable<Reg>,
rn: Reg,
immshift: ImmShift,
},
AluRRRShift {
alu_op: ALUOp,
size: OperandSize,
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
shiftop: ShiftOpAndAmt,
},
AluRRRExtend {
alu_op: ALUOp,
size: OperandSize,
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
extendop: ExtendOp,
},
BitRR {
op: BitOp,
size: OperandSize,
rd: Writable<Reg>,
rn: Reg,
},
ULoad8 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
SLoad8 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
ULoad16 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
SLoad16 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
ULoad32 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
SLoad32 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
ULoad64 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
Store8 {
rd: Reg,
mem: AMode,
flags: MemFlags,
},
Store16 {
rd: Reg,
mem: AMode,
flags: MemFlags,
},
Store32 {
rd: Reg,
mem: AMode,
flags: MemFlags,
},
Store64 {
rd: Reg,
mem: AMode,
flags: MemFlags,
},
StoreP64 {
rt: Reg,
rt2: Reg,
mem: PairAMode,
flags: MemFlags,
},
LoadP64 {
rt: Writable<Reg>,
rt2: Writable<Reg>,
mem: PairAMode,
flags: MemFlags,
},
Mov {
size: OperandSize,
rd: Writable<Reg>,
rm: Reg,
},
MovFromPReg {
rd: Writable<Reg>,
rm: PReg,
},
MovToPReg {
rd: PReg,
rm: Reg,
},
MovWide {
op: MoveWideOp,
rd: Writable<Reg>,
imm: MoveWideConst,
size: OperandSize,
},
MovK {
rd: Writable<Reg>,
rn: Reg,
imm: MoveWideConst,
size: OperandSize,
},
Extend {
rd: Writable<Reg>,
rn: Reg,
signed: bool,
from_bits: u8,
to_bits: u8,
},
CSel {
rd: Writable<Reg>,
cond: Cond,
rn: Reg,
rm: Reg,
},
CSNeg {
rd: Writable<Reg>,
cond: Cond,
rn: Reg,
rm: Reg,
},
CSet {
rd: Writable<Reg>,
cond: Cond,
},
CSetm {
rd: Writable<Reg>,
cond: Cond,
},
CCmp {
size: OperandSize,
rn: Reg,
rm: Reg,
nzcv: NZCV,
cond: Cond,
},
CCmpImm {
size: OperandSize,
rn: Reg,
imm: UImm5,
nzcv: NZCV,
cond: Cond,
},
AtomicRMWLoop {
ty: Type,
op: AtomicRMWLoopOp,
flags: MemFlags,
addr: Reg,
operand: Reg,
oldval: Writable<Reg>,
scratch1: Writable<Reg>,
scratch2: Writable<Reg>,
},
AtomicCASLoop {
ty: Type,
flags: MemFlags,
addr: Reg,
expected: Reg,
replacement: Reg,
oldval: Writable<Reg>,
scratch: Writable<Reg>,
},
AtomicRMW {
op: AtomicRMWOp,
rs: Reg,
rt: Writable<Reg>,
rn: Reg,
ty: Type,
flags: MemFlags,
},
AtomicCAS {
rd: Writable<Reg>,
rs: Reg,
rt: Reg,
rn: Reg,
ty: Type,
flags: MemFlags,
},
LoadAcquire {
access_ty: Type,
rt: Writable<Reg>,
rn: Reg,
flags: MemFlags,
},
StoreRelease {
access_ty: Type,
rt: Reg,
rn: Reg,
flags: MemFlags,
},
Fence,
Csdb,
FpuMove32 {
rd: Writable<Reg>,
rn: Reg,
},
FpuMove64 {
rd: Writable<Reg>,
rn: Reg,
},
FpuMove128 {
rd: Writable<Reg>,
rn: Reg,
},
FpuMoveFromVec {
rd: Writable<Reg>,
rn: Reg,
idx: u8,
size: VectorSize,
},
FpuExtend {
rd: Writable<Reg>,
rn: Reg,
size: ScalarSize,
},
FpuRR {
fpu_op: FPUOp1,
size: ScalarSize,
rd: Writable<Reg>,
rn: Reg,
},
FpuRRR {
fpu_op: FPUOp2,
size: ScalarSize,
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
},
FpuRRI {
fpu_op: FPUOpRI,
rd: Writable<Reg>,
rn: Reg,
},
FpuRRIMod {
fpu_op: FPUOpRIMod,
rd: Writable<Reg>,
ri: Reg,
rn: Reg,
},
FpuRRRR {
fpu_op: FPUOp3,
size: ScalarSize,
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
ra: Reg,
},
FpuCmp {
size: ScalarSize,
rn: Reg,
rm: Reg,
},
FpuLoad16 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
FpuStore16 {
rd: Reg,
mem: AMode,
flags: MemFlags,
},
FpuLoad32 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
FpuStore32 {
rd: Reg,
mem: AMode,
flags: MemFlags,
},
FpuLoad64 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
FpuStore64 {
rd: Reg,
mem: AMode,
flags: MemFlags,
},
FpuLoad128 {
rd: Writable<Reg>,
mem: AMode,
flags: MemFlags,
},
FpuStore128 {
rd: Reg,
mem: AMode,
flags: MemFlags,
},
FpuLoadP64 {
rt: Writable<Reg>,
rt2: Writable<Reg>,
mem: PairAMode,
flags: MemFlags,
},
FpuStoreP64 {
rt: Reg,
rt2: Reg,
mem: PairAMode,
flags: MemFlags,
},
FpuLoadP128 {
rt: Writable<Reg>,
rt2: Writable<Reg>,
mem: PairAMode,
flags: MemFlags,
},
FpuStoreP128 {
rt: Reg,
rt2: Reg,
mem: PairAMode,
flags: MemFlags,
},
FpuToInt {
op: FpuToIntOp,
rd: Writable<Reg>,
rn: Reg,
},
IntToFpu {
op: IntToFpuOp,
rd: Writable<Reg>,
rn: Reg,
},
FpuCSel16 {
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
cond: Cond,
},
FpuCSel32 {
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
cond: Cond,
},
FpuCSel64 {
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
cond: Cond,
},
FpuRound {
op: FpuRoundMode,
rd: Writable<Reg>,
rn: Reg,
},
MovToFpu {
rd: Writable<Reg>,
rn: Reg,
size: ScalarSize,
},
FpuMoveFPImm {
rd: Writable<Reg>,
imm: ASIMDFPModImm,
size: ScalarSize,
},
MovToVec {
rd: Writable<Reg>,
ri: Reg,
rn: Reg,
idx: u8,
size: VectorSize,
},
MovFromVec {
rd: Writable<Reg>,
rn: Reg,
idx: u8,
size: ScalarSize,
},
MovFromVecSigned {
rd: Writable<Reg>,
rn: Reg,
idx: u8,
size: VectorSize,
scalar_size: OperandSize,
},
VecDup {
rd: Writable<Reg>,
rn: Reg,
size: VectorSize,
},
VecDupFromFpu {
rd: Writable<Reg>,
rn: Reg,
size: VectorSize,
lane: u8,
},
VecDupFPImm {
rd: Writable<Reg>,
imm: ASIMDFPModImm,
size: VectorSize,
},
VecDupImm {
rd: Writable<Reg>,
imm: ASIMDMovModImm,
invert: bool,
size: VectorSize,
},
VecExtend {
t: VecExtendOp,
rd: Writable<Reg>,
rn: Reg,
high_half: bool,
lane_size: ScalarSize,
},
VecMovElement {
rd: Writable<Reg>,
ri: Reg,
rn: Reg,
dest_idx: u8,
src_idx: u8,
size: VectorSize,
},
VecRRLong {
op: VecRRLongOp,
rd: Writable<Reg>,
rn: Reg,
high_half: bool,
},
VecRRNarrowLow {
op: VecRRNarrowOp,
rd: Writable<Reg>,
rn: Reg,
lane_size: ScalarSize,
},
VecRRNarrowHigh {
op: VecRRNarrowOp,
rd: Writable<Reg>,
ri: Reg,
rn: Reg,
lane_size: ScalarSize,
},
VecRRPair {
op: VecPairOp,
rd: Writable<Reg>,
rn: Reg,
},
VecRRRLong {
alu_op: VecRRRLongOp,
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
high_half: bool,
},
VecRRRLongMod {
alu_op: VecRRRLongModOp,
rd: Writable<Reg>,
ri: Reg,
rn: Reg,
rm: Reg,
high_half: bool,
},
VecRRPairLong {
op: VecRRPairLongOp,
rd: Writable<Reg>,
rn: Reg,
},
VecRRR {
alu_op: VecALUOp,
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
size: VectorSize,
},
VecRRRMod {
alu_op: VecALUModOp,
rd: Writable<Reg>,
ri: Reg,
rn: Reg,
rm: Reg,
size: VectorSize,
},
VecFmlaElem {
alu_op: VecALUModOp,
rd: Writable<Reg>,
ri: Reg,
rn: Reg,
rm: Reg,
size: VectorSize,
idx: u8,
},
VecMisc {
op: VecMisc2,
rd: Writable<Reg>,
rn: Reg,
size: VectorSize,
},
VecLanes {
op: VecLanesOp,
rd: Writable<Reg>,
rn: Reg,
size: VectorSize,
},
VecShiftImm {
op: VecShiftImmOp,
rd: Writable<Reg>,
rn: Reg,
size: VectorSize,
imm: u8,
},
VecShiftImmMod {
op: VecShiftImmModOp,
rd: Writable<Reg>,
ri: Reg,
rn: Reg,
size: VectorSize,
imm: u8,
},
VecExtract {
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
imm4: u8,
},
VecTbl {
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
},
VecTblExt {
rd: Writable<Reg>,
ri: Reg,
rn: Reg,
rm: Reg,
},
VecTbl2 {
rd: Writable<Reg>,
rn: Reg,
rn2: Reg,
rm: Reg,
},
VecTbl2Ext {
rd: Writable<Reg>,
ri: Reg,
rn: Reg,
rn2: Reg,
rm: Reg,
},
VecLoadReplicate {
rd: Writable<Reg>,
rn: Reg,
size: VectorSize,
flags: MemFlags,
},
VecCSel {
rd: Writable<Reg>,
rn: Reg,
rm: Reg,
cond: Cond,
},
MovToNZCV {
rn: Reg,
},
MovFromNZCV {
rd: Writable<Reg>,
},
Call {
info: Box<CallInfo<ExternalName>>,
},
CallInd {
info: Box<CallInfo<Reg>>,
},
ReturnCall {
info: Box<ReturnCallInfo<ExternalName>>,
},
ReturnCallInd {
info: Box<ReturnCallInfo<Reg>>,
},
Args {
args: Vec<ArgPair>,
},
Rets {
rets: Vec<RetPair>,
},
Ret,
AuthenticatedRet {
key: APIKey,
is_hint: bool,
},
Jump {
dest: BranchTarget,
},
CondBr {
taken: BranchTarget,
not_taken: BranchTarget,
kind: CondBrKind,
},
TestBitAndBranch {
kind: TestBitAndBranchKind,
taken: BranchTarget,
not_taken: BranchTarget,
rn: Reg,
bit: u8,
},
TrapIf {
kind: CondBrKind,
trap_code: TrapCode,
},
IndirectBr {
rn: Reg,
targets: Vec<MachLabel>,
},
Brk,
Udf {
trap_code: TrapCode,
},
Adr {
rd: Writable<Reg>,
off: i32,
},
Adrp {
rd: Writable<Reg>,
off: i32,
},
Word4 {
data: u32,
},
Word8 {
data: u64,
},
JTSequence {
default: MachLabel,
targets: Box<Vec<MachLabel>>,
ridx: Reg,
rtmp1: Writable<Reg>,
rtmp2: Writable<Reg>,
},
LoadExtName {
rd: Writable<Reg>,
name: Box<ExternalName>,
offset: i64,
},
LoadAddr {
rd: Writable<Reg>,
mem: AMode,
},
Paci {
key: APIKey,
},
Xpaclri,
Bti {
targets: BranchTargetType,
},
EmitIsland {
needed_space: CodeOffset,
},
ElfTlsGetAddr {
symbol: Box<ExternalName>,
rd: Writable<Reg>,
tmp: Writable<Reg>,
},
MachOTlsGetAddr {
symbol: ExternalName,
rd: Writable<Reg>,
},
Unwind {
inst: UnwindInst,
},
DummyUse {
reg: Reg,
},
StackProbeLoop {
start: Writable<Reg>,
end: Reg,
step: Imm12,
},
}
Available on crate feature
arm64
only.Expand description
Internal type MInst: defined at src/isa/aarch64/inst.isle line 1.
Variantsยง
Nop0
Nop4
AluRRR
AluRRRR
AluRRImm12
AluRRImmLogic
AluRRImmShift
AluRRRShift
AluRRRExtend
BitRR
ULoad8
SLoad8
ULoad16
SLoad16
ULoad32
SLoad32
ULoad64
Store8
Store16
Store32
Store64
StoreP64
LoadP64
Mov
MovFromPReg
MovToPReg
MovWide
MovK
Extend
CSel
CSNeg
CSet
CSetm
CCmp
CCmpImm
AtomicRMWLoop
Fields
AtomicCASLoop
Fields
AtomicRMW
AtomicCAS
LoadAcquire
StoreRelease
Fence
Csdb
FpuMove32
FpuMove64
FpuMove128
FpuMoveFromVec
FpuExtend
FpuRR
FpuRRR
FpuRRI
FpuRRIMod
FpuRRRR
FpuCmp
FpuLoad16
FpuStore16
FpuLoad32
FpuStore32
FpuLoad64
FpuStore64
FpuLoad128
FpuStore128
FpuLoadP64
FpuStoreP64
FpuLoadP128
FpuStoreP128
FpuToInt
IntToFpu
FpuCSel16
FpuCSel32
FpuCSel64
FpuRound
MovToFpu
FpuMoveFPImm
MovToVec
MovFromVec
MovFromVecSigned
VecDup
VecDupFromFpu
VecDupFPImm
VecDupImm
VecExtend
VecMovElement
VecRRLong
VecRRNarrowLow
VecRRNarrowHigh
VecRRPair
VecRRRLong
VecRRRLongMod
VecRRPairLong
VecRRR
VecRRRMod
VecFmlaElem
VecMisc
VecLanes
VecShiftImm
VecShiftImmMod
VecExtract
VecTbl
VecTblExt
VecTbl2
VecTbl2Ext
VecLoadReplicate
VecCSel
MovToNZCV
MovFromNZCV
Call
Fields
ยง
info: Box<CallInfo<ExternalName>>
CallInd
ReturnCall
Fields
ยง
info: Box<ReturnCallInfo<ExternalName>>
ReturnCallInd
Fields
ยง
info: Box<ReturnCallInfo<Reg>>
Args
Rets
Ret
AuthenticatedRet
Jump
Fields
ยง
dest: BranchTarget
CondBr
TestBitAndBranch
TrapIf
IndirectBr
Brk
Udf
Adr
Adrp
Word4
Word8
JTSequence
Fields
LoadExtName
LoadAddr
Paci
Xpaclri
Bti
Fields
ยง
targets: BranchTargetType
EmitIsland
Fields
ยง
needed_space: CodeOffset
ElfTlsGetAddr
MachOTlsGetAddr
Unwind
Fields
ยง
inst: UnwindInst
DummyUse
StackProbeLoop
Implementationsยง
Sourceยงimpl Inst
impl Inst
Sourcepub fn load_constant<F: FnMut(Type) -> Writable<Reg>>(
rd: Writable<Reg>,
value: u64,
alloc_tmp: &mut F,
) -> SmallVec<[Inst; 4]>
pub fn load_constant<F: FnMut(Type) -> Writable<Reg>>( rd: Writable<Reg>, value: u64, alloc_tmp: &mut F, ) -> SmallVec<[Inst; 4]>
Create an instruction that loads a constant, using one of several options (MOVZ, MOVN, logical immediate, or constant pool).
Sourcepub fn gen_load(
into_reg: Writable<Reg>,
mem: AMode,
ty: Type,
flags: MemFlags,
) -> Inst
pub fn gen_load( into_reg: Writable<Reg>, mem: AMode, ty: Type, flags: MemFlags, ) -> Inst
Generic constructor for a load (zero-extending where appropriate).
Trait Implementationsยง
Sourceยงimpl MachInst for Inst
impl MachInst for Inst
Sourceยงconst TRAP_OPCODE: &'static [u8]
const TRAP_OPCODE: &'static [u8]
Byte representation of a trap opcode which is inserted by
MachBuffer
during its defer_trap
method.Sourceยงtype ABIMachineSpec = AArch64MachineDeps
type ABIMachineSpec = AArch64MachineDeps
The ABI machine spec for this
MachInst
.Sourceยงtype LabelUse = LabelUse
type LabelUse = LabelUse
A label-use kind: a type that describes the types of label references that
can occur in an instruction.
Sourceยงfn get_operands(&mut self, collector: &mut impl OperandVisitor)
fn get_operands(&mut self, collector: &mut impl OperandVisitor)
Return the registers referenced by this machine instruction along with
the modes of reference (use, def, modify).
Sourceยงfn is_move(&self) -> Option<(Writable<Reg>, Reg)>
fn is_move(&self) -> Option<(Writable<Reg>, Reg)>
If this is a simple move, return the (source, destination) tuple of registers.
Sourceยงfn is_included_in_clobbers(&self) -> bool
fn is_included_in_clobbers(&self) -> bool
Should this instruction be included in the clobber-set?
Sourceยงfn is_term(&self) -> MachTerminator
fn is_term(&self) -> MachTerminator
Is this a terminator (branch or ret)? If so, return its type
(ret/uncond/cond) and target if applicable.
Sourceยงfn is_mem_access(&self) -> bool
fn is_mem_access(&self) -> bool
Does this instruction access memory?
Sourceยงfn is_safepoint(&self) -> bool
fn is_safepoint(&self) -> bool
Is this a safepoint?
Sourceยงfn gen_dummy_use(reg: Reg) -> Inst
fn gen_dummy_use(reg: Reg) -> Inst
Generate a dummy instruction that will keep a value alive but
has no other purpose.
Sourceยงfn gen_nop(preferred_size: usize) -> Inst
fn gen_nop(preferred_size: usize) -> Inst
Generate a NOP. The
preferred_size
parameter allows the caller to
request a NOP of that size, or as close to it as possible. The machine
backend may return a NOP whose binary encoding is smaller than the
preferred size, but must not return a NOP that is larger. However,
the instruction must have a nonzero size if preferred_size is nonzero.Sourceยงfn rc_for_type(
ty: Type,
) -> CodegenResult<(&'static [RegClass], &'static [Type])>
fn rc_for_type( ty: Type, ) -> CodegenResult<(&'static [RegClass], &'static [Type])>
Determine register class(es) to store the given Cranelift type, and the
Cranelift type actually stored in the underlying register(s). May return
an error if the type isnโt supported by this backend. Read more
Sourceยงfn canonical_type_for_rc(rc: RegClass) -> Type
fn canonical_type_for_rc(rc: RegClass) -> Type
Get an appropriate type that can fully hold a value in a given
register class. This may not be the only type that maps to
that class, but when used with
gen_move()
or the ABI traitโs
load/spill constructors, it should produce instruction(s) that
move the entire register contents.Sourceยงfn gen_jump(target: MachLabel) -> Inst
fn gen_jump(target: MachLabel) -> Inst
Generate a jump to another target. Used during lowering of
control flow.
Sourceยงfn worst_case_size() -> CodeOffset
fn worst_case_size() -> CodeOffset
What is the worst-case instruction size emitted by this instruction type?
Sourceยงfn ref_type_regclass(_: &Flags) -> RegClass
fn ref_type_regclass(_: &Flags) -> RegClass
What is the register class used for reference types (GC-observable pointers)? Can
be dependent on compilation flags.
Sourceยงfn gen_block_start(
is_indirect_branch_target: bool,
is_forward_edge_cfi_enabled: bool,
) -> Option<Self>
fn gen_block_start( is_indirect_branch_target: bool, is_forward_edge_cfi_enabled: bool, ) -> Option<Self>
Generate an instruction that must appear at the beginning of a basic
block, if any. Note that the return value must not be subject to
register allocation.
Sourceยงfn function_alignment() -> FunctionAlignment
fn function_alignment() -> FunctionAlignment
Returns a description of the alignment required for functions for this
architecture.
Sourceยงfn gen_imm_u64(_value: u64, _dst: Writable<Reg>) -> Option<Self>
fn gen_imm_u64(_value: u64, _dst: Writable<Reg>) -> Option<Self>
Generate a store of an immediate 64-bit integer to a register. Used by
the control plane to generate random instructions.
Sourceยงfn gen_imm_f64(
_value: f64,
_tmp: Writable<Reg>,
_dst: Writable<Reg>,
) -> SmallVec<[Self; 2]>
fn gen_imm_f64( _value: f64, _tmp: Writable<Reg>, _dst: Writable<Reg>, ) -> SmallVec<[Self; 2]>
Generate a store of an immediate 64-bit integer to a register. Used by
the control plane to generate random instructions. The tmp register may
be used by architectures which donโt support writing immediate values to
floating point registers directly.
Sourceยงfn align_basic_block(offset: CodeOffset) -> CodeOffset
fn align_basic_block(offset: CodeOffset) -> CodeOffset
Align a basic block offset (from start of function). By default, no
alignment occurs.
Sourceยงfn is_low_level_branch(&self) -> bool
fn is_low_level_branch(&self) -> bool
Is this a low-level, one-way branch, not meant for use in a
VCode body? These instructions are meant to be used only when
directly emitted, i.e. when
MachInst
is used as an assembler
library.Sourceยงimpl MachInstEmit for Inst
impl MachInstEmit for Inst
Sourceยงimpl MachInstEmitState<MInst> for EmitState
impl MachInstEmitState<MInst> for EmitState
Sourceยงfn new(abi: &Callee<AArch64MachineDeps>, ctrl_plane: ControlPlane) -> Self
fn new(abi: &Callee<AArch64MachineDeps>, ctrl_plane: ControlPlane) -> Self
Create a new emission state given the ABI object.
Sourceยงfn pre_safepoint(&mut self, user_stack_map: Option<UserStackMap>)
fn pre_safepoint(&mut self, user_stack_map: Option<UserStackMap>)
Update the emission state before emitting an instruction that is a
safepoint.
Sourceยงfn ctrl_plane_mut(&mut self) -> &mut ControlPlane
fn ctrl_plane_mut(&mut self) -> &mut ControlPlane
The emission state holds ownership of a control plane, so it doesnโt
have to be passed around explicitly too much.
ctrl_plane_mut
may
be used if temporary access to the control plane is needed by some
other function that doesnโt have access to the emission state.Sourceยงfn take_ctrl_plane(self) -> ControlPlane
fn take_ctrl_plane(self) -> ControlPlane
Used to continue using a control plane after the emission state is
not needed anymore.
Sourceยงfn frame_layout(&self) -> &FrameLayout
fn frame_layout(&self) -> &FrameLayout
The [
FrameLayout
] for the function currently being compiled.Sourceยงfn on_new_block(&mut self)
fn on_new_block(&mut self)
A hook that triggers when first emitting a new block.
It is guaranteed to be called before any instructions are emitted.
Auto Trait Implementationsยง
impl Freeze for MInst
impl RefUnwindSafe for MInst
impl Send for MInst
impl Sync for MInst
impl Unpin for MInst
impl UnwindSafe for MInst
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