Enum cranelift_codegen::ir::instructions::InstructionData[][src]

pub enum InstructionData {
Show 54 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, }, Branch { opcode: Opcode, args: ValueList, destination: Block, }, BranchFloat { opcode: Opcode, args: ValueList, cond: FloatCC, destination: Block, }, BranchIcmp { opcode: Opcode, args: ValueList, cond: IntCC, destination: Block, }, BranchInt { opcode: Opcode, args: ValueList, cond: IntCC, destination: Block, }, BranchTable { opcode: Opcode, arg: Value, destination: Block, table: JumpTable, }, BranchTableBase { opcode: Opcode, table: JumpTable, }, BranchTableEntry { opcode: Opcode, args: [Value; 2], imm: Uimm8, table: JumpTable, }, Call { opcode: Opcode, args: ValueList, func_ref: FuncRef, }, CallIndirect { opcode: Opcode, args: ValueList, sig_ref: SigRef, }, CondTrap { opcode: Opcode, arg: Value, code: TrapCode, }, CopySpecial { opcode: Opcode, src: RegUnit, dst: RegUnit, }, CopyToSsa { opcode: Opcode, src: RegUnit, }, FloatCompare { opcode: Opcode, args: [Value; 2], cond: FloatCC, }, FloatCond { opcode: Opcode, arg: Value, cond: FloatCC, }, FloatCondTrap { opcode: Opcode, arg: Value, cond: FloatCC, code: TrapCode, }, FuncAddr { opcode: Opcode, func_ref: FuncRef, }, HeapAddr { opcode: Opcode, arg: Value, heap: Heap, imm: Uimm32, }, IndirectJump { opcode: Opcode, arg: Value, table: JumpTable, }, IntCompare { opcode: Opcode, args: [Value; 2], cond: IntCC, }, IntCompareImm { opcode: Opcode, arg: Value, cond: IntCC, imm: Imm64, }, IntCond { opcode: Opcode, arg: Value, cond: IntCC, }, IntCondTrap { opcode: Opcode, arg: Value, cond: IntCC, code: TrapCode, }, IntSelect { opcode: Opcode, args: [Value; 3], cond: IntCC, }, Jump { opcode: Opcode, args: ValueList, destination: Block, }, Load { opcode: Opcode, arg: Value, flags: MemFlags, offset: Offset32, }, LoadComplex { opcode: Opcode, args: ValueList, flags: MemFlags, offset: Offset32, }, LoadNoOffset { opcode: Opcode, arg: Value, flags: MemFlags, }, MultiAry { opcode: Opcode, args: ValueList, }, NullAry { opcode: Opcode, }, RegFill { opcode: Opcode, arg: Value, src: StackSlot, dst: RegUnit, }, RegMove { opcode: Opcode, arg: Value, src: RegUnit, dst: RegUnit, }, RegSpill { opcode: Opcode, arg: Value, src: RegUnit, dst: StackSlot, }, Shuffle { opcode: Opcode, args: [Value; 2], mask: 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, }, StoreComplex { opcode: Opcode, args: ValueList, 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, }, UnaryBool { opcode: Opcode, imm: bool, }, 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 of AtomicCas

opcode: Opcodeargs: [Value; 3]flags: MemFlags
AtomicRmw

Fields of AtomicRmw

opcode: Opcodeargs: [Value; 2]flags: MemFlagsop: AtomicRmwOp
Binary

Fields of Binary

opcode: Opcodeargs: [Value; 2]
BinaryImm64

Fields of BinaryImm64

opcode: Opcodearg: Valueimm: Imm64
BinaryImm8

Fields of BinaryImm8

opcode: Opcodearg: Valueimm: Uimm8
Branch

Fields of Branch

opcode: Opcodeargs: ValueListdestination: Block
BranchFloat

Fields of BranchFloat

opcode: Opcodeargs: ValueListcond: FloatCCdestination: Block
BranchIcmp

Fields of BranchIcmp

opcode: Opcodeargs: ValueListcond: IntCCdestination: Block
BranchInt

Fields of BranchInt

opcode: Opcodeargs: ValueListcond: IntCCdestination: Block
BranchTable

Fields of BranchTable

opcode: Opcodearg: Valuedestination: Blocktable: JumpTable
BranchTableBase

Fields of BranchTableBase

opcode: Opcodetable: JumpTable
BranchTableEntry

Fields of BranchTableEntry

opcode: Opcodeargs: [Value; 2]imm: Uimm8table: JumpTable
Call

Fields of Call

opcode: Opcodeargs: ValueListfunc_ref: FuncRef
CallIndirect

Fields of CallIndirect

opcode: Opcodeargs: ValueListsig_ref: SigRef
CondTrap

Fields of CondTrap

opcode: Opcodearg: Valuecode: TrapCode
CopySpecial

Fields of CopySpecial

opcode: Opcodesrc: RegUnitdst: RegUnit
CopyToSsa

Fields of CopyToSsa

opcode: Opcodesrc: RegUnit
FloatCompare

Fields of FloatCompare

opcode: Opcodeargs: [Value; 2]cond: FloatCC
FloatCond

Fields of FloatCond

opcode: Opcodearg: Valuecond: FloatCC
FloatCondTrap

Fields of FloatCondTrap

opcode: Opcodearg: Valuecond: FloatCCcode: TrapCode
FuncAddr

Fields of FuncAddr

opcode: Opcodefunc_ref: FuncRef
HeapAddr

Fields of HeapAddr

opcode: Opcodearg: Valueheap: Heapimm: Uimm32
IndirectJump

Fields of IndirectJump

opcode: Opcodearg: Valuetable: JumpTable
IntCompare

Fields of IntCompare

opcode: Opcodeargs: [Value; 2]cond: IntCC
IntCompareImm

Fields of IntCompareImm

opcode: Opcodearg: Valuecond: IntCCimm: Imm64
IntCond

Fields of IntCond

opcode: Opcodearg: Valuecond: IntCC
IntCondTrap

Fields of IntCondTrap

opcode: Opcodearg: Valuecond: IntCCcode: TrapCode
IntSelect

Fields of IntSelect

opcode: Opcodeargs: [Value; 3]cond: IntCC
Jump

Fields of Jump

opcode: Opcodeargs: ValueListdestination: Block
Load

Fields of Load

opcode: Opcodearg: Valueflags: MemFlagsoffset: Offset32
LoadComplex

Fields of LoadComplex

opcode: Opcodeargs: ValueListflags: MemFlagsoffset: Offset32
LoadNoOffset

Fields of LoadNoOffset

opcode: Opcodearg: Valueflags: MemFlags
MultiAry

Fields of MultiAry

opcode: Opcodeargs: ValueList
NullAry

Fields of NullAry

opcode: Opcode
RegFill

Fields of RegFill

opcode: Opcodearg: Valuesrc: StackSlotdst: RegUnit
RegMove

Fields of RegMove

opcode: Opcodearg: Valuesrc: RegUnitdst: RegUnit
RegSpill

Fields of RegSpill

opcode: Opcodearg: Valuesrc: RegUnitdst: StackSlot
Shuffle

Fields of Shuffle

opcode: Opcodeargs: [Value; 2]mask: Immediate
StackLoad

Fields of StackLoad

opcode: Opcodestack_slot: StackSlotoffset: Offset32
StackStore

Fields of StackStore

opcode: Opcodearg: Valuestack_slot: StackSlotoffset: Offset32
Store

Fields of Store

opcode: Opcodeargs: [Value; 2]flags: MemFlagsoffset: Offset32
StoreComplex

Fields of StoreComplex

opcode: Opcodeargs: ValueListflags: MemFlagsoffset: Offset32
StoreNoOffset

Fields of StoreNoOffset

opcode: Opcodeargs: [Value; 2]flags: MemFlags
TableAddr

Fields of TableAddr

opcode: Opcodearg: Valuetable: Tableoffset: Offset32
Ternary

Fields of Ternary

opcode: Opcodeargs: [Value; 3]
TernaryImm8

Fields of TernaryImm8

opcode: Opcodeargs: [Value; 2]imm: Uimm8
Trap

Fields of Trap

opcode: Opcodecode: TrapCode
Unary

Fields of Unary

opcode: Opcodearg: Value
UnaryBool

Fields of UnaryBool

opcode: Opcodeimm: bool
UnaryConst

Fields of UnaryConst

opcode: Opcodeconstant_handle: Constant
UnaryGlobalValue

Fields of UnaryGlobalValue

opcode: Opcodeglobal_value: GlobalValue
UnaryIeee32

Fields of UnaryIeee32

opcode: Opcodeimm: Ieee32
UnaryIeee64

Fields of UnaryIeee64

opcode: Opcodeimm: Ieee64
UnaryImm

Fields of UnaryImm

opcode: Opcodeimm: 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.

Take out the value list with all the value arguments and return it.

This leaves the value list in the instruction empty. Use put_value_list to put the value list back.

Put back a value list.

After removing a value list with take_value_list(), use this method to put it back. It is required that this instruction has a format that accepts a value list, and that the existing value list is empty. This avoids leaking list pool memory.

Compare two InstructionData for equality.

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

Hash an InstructionData.

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

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 single destination of this branch instruction, if it is a single destination branch or jump.

Multi-destination branches like br_table return None.

Get a mutable reference to the single destination of this branch instruction, if it is a single destination branch or jump.

Multi-destination branches like br_table return None.

Return the value of an immediate if the instruction has one or None otherwise. Only immediate values are considered, not global values, constant handles, condition codes, etc.

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.

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

Performs the conversion.

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

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

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.