loop count

for ループの反復数を指定します。

構文

このプラグマは、次のようなさまざまな構文をサポートしています。

#pragma loop count (n)

#pragma loop count = n

または

#pragma loop count (n1[, n2]...) 

#pragma loop count = n1[, n2]...

または

#pragma loop count min(n), max(n), avg(n

#pragma loop count min=n, max=n, avg=n

引数

サポートされる引数は、次のとおりです。

引数

説明

(n) または =n

負ではない整数値。コンパイラーは次のループに対し n で指定された回数分の繰り返しを試みますが、反復回数は保証されません。

(n1[,n2]...)

または

= n1[,n2]...

負ではない整数値。コンパイラーは次のループを n1 または n2 で指定された回数分か、または指定されていない回数分の繰り返しを試みます。この動作により、ループのアンロールにいくらか柔軟性が生まれます。反復数は保証されません。

min(n), max(n), avg(n)

または

min=n, max=n, avg=n 

負ではない整数値。重複がないように任意の順序で 1 つまたは複数の値を指定します。コンパイラーは指定された最大、最小、平均 (n1) 回数で次のループが繰り返されるようにします。min と max では指定された反復回数が保証されます。

説明

loop count プラグマはベクトル化、ループ変換、ソフトウェアのパイプライン化 (IA-64 アーキテクチャー) で使用されるヒューリスティックに影響します。プラグマで、for ループの最小、最大、平均の反復数を指定できます。また、コンパイラーが複数のバージョンを生成し、完全なアンロールを行うのに役立つ、よくある値のリストを指定することもできます。

1 つのループに複数のプラグマを指定できます。ただし、プラグマは、重複させないでください。

例 1

次の例は、IA-64 アーキテクチャー上で、プラグマでループを反復して、ソフトウェアのパイプライン化を有効にする方法を示します。

例 1: ループカウント (n) の使用

void loop_count(int a[], int b[])

{

#pragma loop count (10000)

for (int i=0; i<1000; i++)

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

}

例 2

次の例では、プラグマを使用して、最小回数を 3 回、最大回数を 10 回、平均回数を 5 回に指定してループを反復させる方法を示します。

例 2: ループカウント min、max、avg の使用

#include <stdio.h>

int i;

int main()

{

#pragma loop count min(3), max(10), avg(5)

  for (i=1;i<=15;i++){

    printf("i=%d\n",i);

}