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

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;

}