Each gives a set of operations and associated delays. The first three
operands must be the same for each operation for the same function unit.
- All delays are specified in units of COST_PER_CYCLE.
+ All delays are specified in cycles.
1st operand: Name of function unit (mostly for documentation)
2nd operand: Number of identical function units in CPU
executing this operation. The meaning depends on whether or
not the next operand is supplied.
7th operand: If this operand is not specified, the 6th operand gives the
- cost of scheduling another operation on this unit while a
- previous one is active. A value of zero should be used for a
- pipelined unit. If only one operation can be executed a time
- and the unit is busy for the entire time, the 3rd operand
- should be specified as 1 and the 6th and 7th operands will
- be ignored.
+ number of cycles after the instruction matching the 4th
+ operand begins using the function unit until a subsequent
+ insn can begin. A value of zero should be used for a
+ unit with no issue constraints. If only one operation can
+ be executed a time and the unit is busy for the entire time,
+ the 3rd operand should be specified as 1, the 6th operand
+ sould be specified as 0, and the 7th operand should not
+ be specified.
If this operand is specified, it is a list of attribute
expressions. If an insn for which any of these expressions
is true is currently executing on the function unit, the
- delay will be given by the 6th operand. Otherwise, the
- insn can be immediately scheduled (subject to the limit on
- the number of simultaneous operations executing on the
+ issue delay will be given by the 6th operand. Otherwise,
+ the insn can be immediately scheduled (subject to the limit
+ on the number of simultaneous operations executing on the
unit.) */
DEF_RTL_EXPR(DEFINE_FUNCTION_UNIT, "define_function_unit", "siieiiV", 'x')