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
Fields of NullAry
opcode: Opcode
Fields of UnaryGlobalValue
opcode: Opcode
global_value: GlobalValue
Implementations
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
Performs the conversion.
Auto Trait Implementations
impl RefUnwindSafe for InstructionData
impl Send for InstructionData
impl Sync for InstructionData
impl Unpin for InstructionData
impl UnwindSafe for InstructionData
Blanket Implementations
Mutably borrows from an owned value. Read more