pub enum InstructionData {
Show 37 variants AtomicCas { opcode: Opcode, args: [Value; 3], flags: MemFlags, }, AtomicRmw { opcode: Opcode, args: [Value; 2], flags: MemFlags, op: AtomicRmwOp, }, Binary { opcode: Opcode, args: [Value; 2], }, BinaryImm64 { opcode: Opcode, arg: Value, imm: Imm64, }, BinaryImm8 { opcode: Opcode, arg: Value, imm: Uimm8, }, BranchTable { opcode: Opcode, arg: Value, destination: Block, table: JumpTable, }, Brif { opcode: Opcode, arg: Value, blocks: [BlockCall; 2], }, Call { opcode: Opcode, args: ValueList, func_ref: FuncRef, }, CallIndirect { opcode: Opcode, args: ValueList, sig_ref: SigRef, }, CondTrap { opcode: Opcode, arg: Value, code: TrapCode, }, DynamicStackLoad { opcode: Opcode, dynamic_stack_slot: DynamicStackSlot, }, DynamicStackStore { opcode: Opcode, arg: Value, dynamic_stack_slot: DynamicStackSlot, }, FloatCompare { opcode: Opcode, args: [Value; 2], cond: FloatCC, }, FuncAddr { opcode: Opcode, func_ref: FuncRef, }, IntAddTrap { opcode: Opcode, args: [Value; 2], code: TrapCode, }, IntCompare { opcode: Opcode, args: [Value; 2], cond: IntCC, }, IntCompareImm { opcode: Opcode, arg: Value, cond: IntCC, imm: Imm64, }, Jump { opcode: Opcode, destination: BlockCall, }, Load { opcode: Opcode, arg: Value, flags: MemFlags, offset: Offset32, }, LoadNoOffset { opcode: Opcode, arg: Value, flags: MemFlags, }, MultiAry { opcode: Opcode, args: ValueList, }, NullAry { opcode: Opcode, }, Shuffle { opcode: Opcode, args: [Value; 2], imm: Immediate, }, StackLoad { opcode: Opcode, stack_slot: StackSlot, offset: Offset32, }, StackStore { opcode: Opcode, arg: Value, stack_slot: StackSlot, offset: Offset32, }, Store { opcode: Opcode, args: [Value; 2], flags: MemFlags, offset: Offset32, }, StoreNoOffset { opcode: Opcode, args: [Value; 2], flags: MemFlags, }, TableAddr { opcode: Opcode, arg: Value, table: Table, offset: Offset32, }, Ternary { opcode: Opcode, args: [Value; 3], }, TernaryImm8 { opcode: Opcode, args: [Value; 2], imm: Uimm8, }, Trap { opcode: Opcode, code: TrapCode, }, Unary { opcode: Opcode, arg: Value, }, UnaryConst { opcode: Opcode, constant_handle: Constant, }, UnaryGlobalValue { opcode: Opcode, global_value: GlobalValue, }, UnaryIeee32 { opcode: Opcode, imm: Ieee32, }, UnaryIeee64 { opcode: Opcode, imm: Ieee64, }, UnaryImm { opcode: Opcode, imm: Imm64, },
}

Variants§

§

AtomicCas

Fields

§opcode: Opcode
§args: [Value; 3]
§flags: MemFlags
§

AtomicRmw

Fields

§opcode: Opcode
§args: [Value; 2]
§flags: MemFlags
§

Binary

Fields

§opcode: Opcode
§args: [Value; 2]
§

BinaryImm64

Fields

§opcode: Opcode
§arg: Value
§imm: Imm64
§

BinaryImm8

Fields

§opcode: Opcode
§arg: Value
§imm: Uimm8
§

BranchTable

Fields

§opcode: Opcode
§arg: Value
§destination: Block
§table: JumpTable
§

Brif

Fields

§opcode: Opcode
§arg: Value
§blocks: [BlockCall; 2]
§

Call

Fields

§opcode: Opcode
§func_ref: FuncRef
§

CallIndirect

Fields

§opcode: Opcode
§sig_ref: SigRef
§

CondTrap

Fields

§opcode: Opcode
§arg: Value
§code: TrapCode
§

DynamicStackLoad

Fields

§opcode: Opcode
§dynamic_stack_slot: DynamicStackSlot
§

DynamicStackStore

Fields

§opcode: Opcode
§arg: Value
§dynamic_stack_slot: DynamicStackSlot
§

FloatCompare

Fields

§opcode: Opcode
§args: [Value; 2]
§cond: FloatCC
§

FuncAddr

Fields

§opcode: Opcode
§func_ref: FuncRef
§

IntAddTrap

Fields

§opcode: Opcode
§args: [Value; 2]
§code: TrapCode
§

IntCompare

Fields

§opcode: Opcode
§args: [Value; 2]
§cond: IntCC
§

IntCompareImm

Fields

§opcode: Opcode
§arg: Value
§cond: IntCC
§imm: Imm64
§

Jump

Fields

§opcode: Opcode
§destination: BlockCall
§

Load

Fields

§opcode: Opcode
§arg: Value
§flags: MemFlags
§offset: Offset32
§

LoadNoOffset

Fields

§opcode: Opcode
§arg: Value
§flags: MemFlags
§

MultiAry

Fields

§opcode: Opcode
§

NullAry

Fields

§opcode: Opcode
§

Shuffle

Fields

§opcode: Opcode
§args: [Value; 2]
§

StackLoad

Fields

§opcode: Opcode
§stack_slot: StackSlot
§offset: Offset32
§

StackStore

Fields

§opcode: Opcode
§arg: Value
§stack_slot: StackSlot
§offset: Offset32
§

Store

Fields

§opcode: Opcode
§args: [Value; 2]
§flags: MemFlags
§offset: Offset32
§

StoreNoOffset

Fields

§opcode: Opcode
§args: [Value; 2]
§flags: MemFlags
§

TableAddr

Fields

§opcode: Opcode
§arg: Value
§table: Table
§offset: Offset32
§

Ternary

Fields

§opcode: Opcode
§args: [Value; 3]
§

TernaryImm8

Fields

§opcode: Opcode
§args: [Value; 2]
§imm: Uimm8
§

Trap

Fields

§opcode: Opcode
§code: TrapCode
§

Unary

Fields

§opcode: Opcode
§arg: Value
§

UnaryConst

Fields

§opcode: Opcode
§constant_handle: Constant
§

UnaryGlobalValue

Fields

§opcode: Opcode
§global_value: GlobalValue
§

UnaryIeee32

Fields

§opcode: Opcode
§imm: Ieee32
§

UnaryIeee64

Fields

§opcode: Opcode
§imm: Ieee64
§

UnaryImm

Fields

§opcode: Opcode
§imm: Imm64

Implementations§

Get the opcode of this instruction.

Get the controlling type variable operand.

Get the value arguments to this instruction.

Get mutable references to the value arguments to this instruction.

Compare two InstructionData for equality.

This operation requires a reference to a ValueListPool to determine if the contents of any ValueLists are equal.

This operation takes a closure that is allowed to map each argument value to some other value before the instructions are compared. This allows various forms of canonicalization.

Hash an InstructionData.

This operation requires a reference to a ValueListPool to hash the contents of any ValueLists.

This operation takes a closure that is allowed to map each argument value to some other value before it is hashed. This allows various forms of canonicalization.

Analyzing an instruction.

Avoid large matches on instruction formats by using the methods defined here to examine instructions.

Return information about the destination of a branch or jump instruction.

Any instruction that can transfer control to another block reveals its possible destinations here.

Get the destinations of this instruction, if it’s a branch.

br_table returns the empty slice.

Get a mutable slice of the destinations of this instruction, if it’s a branch.

br_table returns the empty slice.

If this is a trapping instruction, get its trap code. Otherwise, return None.

If this is a control-flow instruction depending on an integer condition, gets its condition. Otherwise, return None.

If this is a control-flow instruction depending on a floating-point condition, gets its condition. Otherwise, return None.

If this is a trapping instruction, get an exclusive reference to its trap code. Otherwise, return None.

If this is an atomic read/modify/write instruction, return its subopcode.

If this is a load/store instruction, returns its immediate offset.

If this is a load/store instruction, return its memory flags.

If this instruction references a stack slot, return it

Return information about a call instruction.

Any instruction that can call another function reveals its call signature here.

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Converts to this type from the input type.
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.