The terms defined below appear in the
software pipelining information. Note that many of these items appear only if the
--debug_software_pipeline option is used or only if that particular condition occurs.
- Loop unroll factor. The number of
times the loop was unrolled specifically to increase performance.
- Known minimum iteration count. The
minimum number of times the loop will be executed.
- Known maximum iteration count. The
maximum number of times the loop will be executed.
- Known max iteration count factor.
Factor that would always evenly divide the loop's iteration count. This information can be
used to possibly unroll the loop.
- Loop carried dependency bound. The
distance of the largest loop carry path. A loop carry path occurs when one iteration of a
loop writes a value that must be read in a future iteration. Instructions that are part of
the loop carry bound are marked with the ^ symbol.
- Initiation interval (ii). The
number of cycles between the initiation of successive iterations of the loop. The smaller
the initiation interval, the fewer cycles it takes to execute a loop.
- Resource bound. The most used
resource constrains the minimum initiation interval. If four instructions require a .D
unit, they require at least two cycles to execute (4 instructions/2 parallel .D
units).
- Unpartitioned resource bound. The
best possible resource bound values before the instructions in the loop are partitioned to
a particular side.
- Partitioned resource bound (*).
The resource bound values after the instructions are partitioned.
- Resource partition.
This table summarizes how instructions are partitioned. Use the information to help assign
functional units when writing linear assembly. Each table entry has values for the A-side
and B-side functional units. An asterisk marks entries that determine the resource bound
value. The entries represent the following terms:
- .L units is the total number of instructions that require .L
units only.
- .S units is the total number
of instructions that require .S units only.
- .M units is the total number
of instructions that require .M units only.
- .N units is the total number
of instructions that require .N units only.
- .D units is the total number
of instructions that require .D units only.
- .C units is the total number
of instructions that require the .C unit only.
- .P units is the total number
of instructions that require the .P unit only.
- .M/.N units is the total
number of instructions that can use either the .M or .N unit.
- .L/.S units is the total
number of instructions that can use either the .L or .S unit.
- .L/.S/.C units is the total
number of instructions that can use either the .L, .S, or .C unit.
- .L/.S/.C/.M units is the total
number of instructions that can use either the .L, .S, .C, or .M unit.
- .L/.S/.C/.M/.D units is the
total number of instructions that can use the .L, .S, .C, .M, or .D unit.
- .X cross paths is the total
number of cross paths needed.
- Bound(.C2). The resource bound as determined by the number of instructions that
can use the .C2 unit.
- Bound(.D1 .D2 .D). The resource
bound as determined by the number of instructions that can use the .D1 and .D2 units.
- Bound(.M .N .MN). The resource bound
as determined by the number of instructions that can use the .M and .N units.
- Bound(.P2). The resource bound as determined by the number of instructions that
can use the .P2 unit.
- Bound(.L .S .LS). The resource bound
as determined by the number of instructions that can use the .L and .S units.
- Bound(.L .S .C .LS .LSC). The
resource bound as determined by the number of instructions that can use the .L, .S, and .C
units.
- Bound(.L .S .C .M .LS .LSC .LSCM).
The resource bound as determined by the number of instructions that can use the .L, .S,
.C, and .M units.
- Bound(.L .S .C .M .D .LS .LSC .LSCM
.LSCMD). The resource bound as determined by the number of instructions that can use
the .L, .S, .C, .M, and .D units.
- Max amt of load speculation. The
maximum number of bytes that loads in this loop will speculate beyond the end of an array
(behind or ahead). No user action is required here as the compiler will use load
instructions that are safe to speculate.