[llvm-dev] Should `llvm.loop.unroll.disable` disable interleaving?

Bardia Mahjour via llvm-dev llvm-dev at lists.llvm.org
Tue Apr 13 14:11:28 PDT 2021



Hi,

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)`?

> cat tmp.c
void foo(int n, int * A)
{
  #pragma clang loop unroll(disable)
  for (int i = 0; i < n; i++)
    A[i] = i;
}
> clang -O3 tmp.c -S -emit-llvm -mllvm -debug-only=loop-vectorize 2>&1 |
grep -i interleave
LV: Interleave Count is 12


Bardia Mahjour
Compiler Optimizations
IBM Toronto Software Lab
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210413/e335f78d/attachment.html>


More information about the llvm-dev mailing list