4.6.22. #pragma unroll_completely

이 pragma는 루프를 완전히 언롤링하도록 컴파일러에 지시합니다. 이는 루프에 있는 이터레이션 수를 컴파일러가 결정할 수 있는 경우에만 적용됩니다.

Note

벡터화된 루트와 벡터화되지 않은 루프 모두 #pragma unroll_completely를 사용하여 언롤링할 수 있습니다. 즉, #pragma unroll_completely--no_vectorize--vectorize 모두에 적용됩니다.

사용법

-O3 -Otime에서 컴파일하면 컴파일러는 이러한 수행에 적합한 위치에 있는 루프를 자동으로 언롤링합니다. 이 pragma를 사용하여 자동으로 완전히 언롤링되지 않은 루프를 완전히 언롤링하도록 컴파일러에 요청할 수 있습니다.

Note

#pragma는 확실한 경우에만 사용해야 합니다. 예를 들어 컴파일러가 자체적으로 루프를 언롤링하지 않는 --diag_warning=optimizations에서 사용할 수 있습니다.

제한

#pragma unroll_completelyfor 루프, while 루프 또는 do ... while 루프 바로 앞에만 사용할 수 있습니다.

외부 루프에 #pragma unroll_completely를 사용하면 벡터화를 방지할 수 있습니다. 반대로 내부 루프에 #pragma unroll_completely를 사용하여 도움이 되는 경우도 있습니다.

추가 참고

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential