pub enum Extra {
None,
Imm(Idx<Imm>),
Symbol(Symbol),
IntPred(IntPred),
FloatPred(FloatPred),
Mem(Idx<MemInfo>),
Rmw(RmwOp, Idx<MemInfo>),
Order(MemOrder),
Targets(BlockCallList),
Call(Idx<CallInfo>),
Switch(Idx<SwitchInfo>),
Asm(Idx<AsmInfo>),
}Expand description
Everything an instruction carries that is not a value operand.
Anything that fits in eight bytes is here and anything larger is an index into a side table, so that the common instructions, which are the arithmetic ones carrying nothing at all, do not pay for the rare ones.
Variants§
None
Nothing, which is most instructions.
Imm(Idx<Imm>)
A constant, for iconst, fconst and splat.
Symbol(Symbol)
A name, for global_addr and for a target-specific intrinsic.
IntPred(IntPred)
Which comparison, for icmp.
FloatPred(FloatPred)
Which comparison, for fcmp.
Mem(Idx<MemInfo>)
An access, for the loads, the stores, the copies and alloca.
Rmw(RmwOp, Idx<MemInfo>)
An atomic read-modify-write, which is an access and which operation.
Order(MemOrder)
A barrier’s ordering, for fence.
Targets(BlockCallList)
The targets of a branch, with the default first for a switch.
Call(Idx<CallInfo>)
A call.
Switch(Idx<SwitchInfo>)
A switch, which is targets and the values that select them.
Asm(Idx<AsmInfo>)
Inline assembly.