This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hello,
I have generated a *.nfo file to understand how the compiler tries to optimze some part of my code. There are several loops that does not unroll which are reported as:
====== Unroll-and-jam Result Summary ======
LOOP#1 in SubtractBackgnd() fails to unroll-and-jam: Outer Loop has multiple blocks
What does "Outer loop has multiple blocks" actually means? How can I avoid that in my code?
Also, is there any documentation about how to interpret content of the *.nfo file?
Thanks
Franck
Franck said:LOOP#1 in SubtractBackgnd() fails to unroll-and-jam: Outer Loop has multiple blocks
What does "Outer loop has multiple blocks" actually means? How can I avoid that in my code?
The unroll-and-jam (U&J) transformation is described here in this Wiki article. One of the requirements for U&J is that the outer loop has to be quite simple. Your outer loops must not be so simple. In particular, they probably have if statements which break the code up into multiple blocks, and not one single block with no branches (other than the branch to go back to the beginning of the loop).
Franck said:Also, is there any documentation about how to interpret content of the *.nfo file?
Unfortunately, no. One useful technique is to compile a very simple example and see the .nfo output for it. That usually allows you to understand the relationship between the code and how the optimizer handled it.
Thanks and regards,
-George