インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス

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 プラグマで、for ループの最小、最大、平均の反復数を指定できます。 また、コンパイラーが複数のバージョンを生成し、完全なアンロールを行うのに役立つ、よくある値のリストを指定することもできます。

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

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

loop_count プラグマ min(n)、max(n)、avg(n) の使用例

#include <stdio.h> 
int i; 
int mysum(int start, int end, int a) {
  int iret=0; 
  #pragma loop_count min(3), max(10), avg(5)
    for (i=start;i<=end;i++)
    iret += a;
    return iret; 
} 

int main() {
  int t;
  t = mysum(1, 10, 3);
  printf("t1=%d\r\n",t);
  t = mysum(2, 6, 2);
  printf("t2=%d\r\n",t);
  t = mysum(5, 12, 1);
  printf("t3=%d\r\n",t); 
}