<html><body><p><font size="2">Hi,</font><br><br><font size="2">Currently the `#pragma clang loop unroll(disable)` directive has no impact on loop vectorizer's decision to interleave or not. I think it would make sense to avoid interleaving when the user specifically asked for no unrolling. I'm just wondering what people think about having `#pragma clang loop unroll(disable)` or `#pragma clang loop unroll_count(1)` imply `#pragma clang loop interleave(disable)`?</font><br><br><font size="2">> cat tmp.c</font><br><font size="2">void foo(int n, int * A)</font><br><font size="2">{</font><br><font size="2">  #pragma clang loop unroll(disable)</font><br><font size="2">  for (int i = 0; i < n; i++)</font><br><font size="2">    A[i] = i;</font><br><font size="2">}</font><br><font size="2">> clang -O3 tmp.c -S -emit-llvm -mllvm -debug-only=loop-vectorize 2>&1 | grep -i interleave</font><br><font size="2">LV: Interleave Count is 12</font><br><br><br><font size="2">Bardia Mahjour<br>Compiler Optimizations<br>IBM Toronto Software Lab<br></font><BR>
</body></html>