Pipeline Failure Messages
A-9
FeedbackSolutions
Solution
Split into multiple loops or reduce the complexity of the loop if possible.
Unpartition/repartition the linear assembly source code.
Probably best modified by another technique (i.e. loop unrolling).
Modify the register and/or partition constraints in linear assembly.
For more information...
See section 6.9,
Loop Unrolling (in Assembly), on page 6-94.
See section 3.4.3.4,
Loop Unrolling (in C), on page 3-44.
Trip var. Used in Loop – Can’t Adjust Trip Count
Description
If the loop counter (named trip counter because of the number of trips through
a loop) is modified within the body of the loop, it typically cannot be converted
into a downcounting loop (needed for software pipelining on the ’C6000). If
possible, rewrite the loop to not modify the trip counter by adding a separate
variable to be modified.
The fact that the loop counter is used in the loop is actually determined much
earlier in the loop qualification stage of the compiler. Why did the compiler try
to schedule this anyway? The reason has to do with the –mh option. This op-
tion allows for extraneous loads and facilitates epilog removal. If the epilog was
successfully removed, the loop counter can sometimes be altered in the loop
and still allow software pipelining. Sometimes, this isn’t possible after schedul-
ing and thus the feedback shows up at this stage.
Solution
Replicate the trip count variable and use the copy inside the loop so that the
trip counter and the loop reference separate variables.
Use the –mh option.
For more information...
See section 3.4.3.6,
What Disqualifies a Loop From Being Software Pipelined,
on page 3-49.