ExtraInstrArgs

Controls behavior of emitInstr functions

Members

Variables

addUsers
bool addUsers;

When true newly created instruction is added as a user of each argument

argSize
IrArgSize argSize;

Always gets copied into InstrHeader.argSize

cond
ubyte cond;

Gets copied into InstrHeader.cond when IrInstrFlags.hasCondition is set

extraArgSlots
ubyte extraArgSlots;

Will be added to the number of allocated argument slots and to number of arguments

hasResult
bool hasResult;

Is checked when instruction has variadic result (IrInstrFlags.hasVariadicResult) If hasResult is false, no result is allocated and result value is ignored If hasResult is true, then result is checked: If result is defined: then instrHeader.result is set to its value or else a new virtual register is created

opcode
IrOpcode opcode;

Gets copied into InstrHeader.op when IrInstrFlags.isGeneric is set

result
IrIndex result;

If instruction has variadic result, see docs on 'hasResult' If instruction always has result, then 'result' is used when defined when not defined, new virtual register is created If instruction always has no result, 'result' value is ignored

type
IrIndex type;

When instruction has virtual regiter as result, result.type is set to 'type' Not set if 'result' is present

Meta