This pragma instructs the compiler to completely unroll a loop. It has an effect only if the compiler can determine the number of iterations the loop has.
Usage
This pragma is only applicable if you are compiling with -O3 -Otime. When
compiling with -O3 -Otime, the compiler automatically unrolls loops where it is beneficial to
do so. You can use this pragma to ask the compiler to completely unroll a loop that has not
automatically been unrolled completely.
Note
Use this #pragma only when you have evidence, for example from
--diag_warning=optimizations, that the compiler is not unrolling loops
optimally by itself.
You cannot determine whether this pragma is having any effect unless you compile with
--diag_warning=optimizations or examine the generated assembly code, or
both.
Restrictions
This pragma can only take effect when you compile with -O3 -Otime. Even
then, the use of this pragma is a request to the compiler
to unroll a loop that has not been unrolled automatically. It does not guarantee that the
loop is unrolled.
#pragma unroll_completely can only be used immediately before a
for loop, a while loop, or a
do ... while loop.
Using #pragma unroll_completely on an outer loop can prevent
vectorization. On the other hand, using #pragma unroll_completely on an
inner loop might help in some cases.
Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers of your data.