Automatic vectorization and vectorization inhibitors, criteria

Not all loops can be vectorized, as discussed in Intel's guide to vectorization

An important criteria is that the loop counter \( n \) is known at the entry of the loop.

  for (int j = 0; j < n; j++) {
    a[j] = cos(j*1.0);
  }

The variable \( n \) does need to be known at compile time. However, this variable must stay the same for the entire duration of the loop. It implies that an exit statement inside the loop cannot be data dependent.