Cause:
This vectorization diagnostic is emitted starting from Intel(R) C++ Compiler 15.0. By default the compiler heuristics decides the vectorization potential of each loop and only vectorizes when the vectorization threshold value is 100%. If the vectorization threshold lesser than 100%, it considers the vectorization as inefficient. This diagnostic message is emitted when the above condition is encountered.
Examples:
void foo(int *b, int N){ int i; for (i=0; i<5; i++) { b[2*i] = b[2*i] + 1; } }
$ icpc test33.c -c -qopt-report2 -qopt-report-phase=vec -qopt-report-file=stderr
Begin optimization report for: foo(int *, int)
Report from: Vector optimizations [vec]
LOOP BEGIN at test33.c(3,3)
remark #15335: loop was not vectorized: vectorization possible but seems inefficient. Use vector always directive or -vec-threshold0 to override
LOOP END
Resolution:
Use #pragma vector allways or use compiler option -vec-threshold0 to override the compiler heuristics.