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

Sjoerd Meijer via llvm-dev llvm-dev at lists.llvm.org
Wed Apr 14 06:31:35 PDT 2021


Sounds very reasonable to me.

________________________________
From: llvm-dev <llvm-dev-bounces at lists.llvm.org> on behalf of Bardia Mahjour via llvm-dev <llvm-dev at lists.llvm.org>
Sent: 13 April 2021 22:11
To: llvm-dev at lists.llvm.org <llvm-dev at lists.llvm.org>
Subject: [llvm-dev] Should `llvm.loop.unroll.disable` disable interleaving?


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/20210414/8753aab8/attachment-0001.html>


More information about the llvm-dev mailing list