In order to facilitate nested loop coalescing, in which an outer loop level containing instructions is merged into an inner loop level, the C7000 architecture provides a feature known as the Nested Loop Controller (NLC). This feature implements hardware loop control for no more than one level of loop nesting. This allows the compiler to coalesce loop levels while predicating the execution of outer loop instructions in the inner loop. This reduces loop control overhead and provides for better function unit resource utilization for software pipelined loops. Loop coalescing is something that the compiler attempts to do automatically if the operation is both legal and profitable. Profitability is determined by a heuristic.
The NO_COALESCE_LOOP pragma explicitly disables coalescing of the nested loop construct that follows the pragma. The pragma can only be applied to loops and must appear immediately before a loop construct in C/C++.
The syntax of the pragma in C and C++ is:
#pragma NO_COALESCE_LOOP |