The terms defined below appear in the software pipelining information.
- Loop unroll factor. The number of times the loop was unrolled specifically to increase performance.
- Known minimum trip count. The minimum number of times the loop will be executed.
- Known maximum trip count. The maximum number of times the loop will be executed.
- Known max trip count factor. Factor that would always evenly divide the loops trip 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 the instructions have been partitioned. This information can be used 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 is used to mark those entries that determine the resource bound value. The table 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.
- .B units is the total number of instructions that require the .B unit 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(.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(.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.