Investigative Feedback
A-10
A.3 Investigative Feedback
Loop Carried Dependency Bound is Much Larger Than Unpartitioned Resource Bound
Description
If the loop carried dependency bound is much larger than the unpartitioned re-
source bound, this can be an indicator that there is a potential memory alias
disambiguation problem. This means that there are two pointers that may or
may not point to the same location, and thus, the compiler must assume they
might. This can cause a dependency (often between the load of one pointer
and the store of another) that does not really exist. For software pipelined
loops, this can greatly degrade performance.
Solution
Use –pm program level optimization to reduce memory pointer aliasing.
Add restrict declarations to all pointers passed to a function whose objects do
not overlap.
Use –mt option to assume no memory pointer aliasing.
Use the .mdep and .no_mdep assembly optimizer directives.
If the loop control is complex, try the -mh option.
For More Information...
See section 6.2,
Assembly Optimizer Options and Directives, on page 6-4.