ループのアンロールのサポート

unrollディレクティブ

unrollディレクティブ(unroll(n)|nounroll)は、コンパイラに、カウントされたループをアンロールする回数を伝えます。このディレクティブの構文は次のとおりです。

#pragma unroll

#pragma unroll(n)

#pragma nounroll

n は0から255までの整数定数です。 unrollディレクティブは、各forループが動作するfor文の前になければなりません。 nを指定する場合、最適化機構はループをn回アンロールします。 n を省略する場合、またはnが有効範囲外である場合、最適化機構はループをアンロールする数数を割り当てます。unrollディレクティブは、コマンドラインから行われるループ・アンロールの設定を変更します。ディレクティブは、最も内側のネストされたループにのみ適用されます。外側のループに適用された場合、無視されます。コンパイラは、nとループカウンタを比較することによって、正しいコードを生成します。

unrollディレクティブの例

#pragma unroll(4)

 

for(i=1; i<m; i++)

{

   b[i]=a[i]+1;

   d[i]=c[i]+1;

}