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

unroll[n]プラグマは、コンパイラーに、カウントされたループをアンロールする回数を伝えます。

このプラグマの一般的な構文は次のとおりです。

構文

#pragma unroll

#pragma unroll(n)

#pragma nounroll

n  は 0 から 255 までの整数定数です。

unroll プラグマは、各 FOR ループが動作する FOR 文の前になければなりません。n が指定されると、最適化機構はループを n 回アンロールします。n が省略されるか、n が有効範囲外の場合、最適化機構はループをアンロールする回数を割り当てます。

このプラグマは、-O3 (Linux*) または /O3 (Windows*) オプションが使用された場合のみサポートされます。unroll プラグマは、コマンドラインから行われるループのアンロールの設定を変更します。

現在、プラグマは最内ループの入れ子にのみ適用されます。外側のループの入れ子に適用された場合、無視されます。コンパイラーは、n とループカウンターを比較することによって、正しいコードを生成します。

void unroll(int a[], int b[], int c[], int d[])

{

  #pragma unroll(4)

  for (int i = 1; i < 100; i++) {

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

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

  }

}