[LLVMdev] loop vectorizer issue
Sara Elshobaky
sara.elshobaky at gmail.com
Sun Nov 3 10:39:00 PST 2013
Actually what I meant in my original loop, that there is a dependency
between every two consecutive iterations. So, how the loop vectorizer says
'we can vectorize this loop'?
for(int k=20;k<50;k++)
dataY[k] = dataY[k-1];
From: Henrique Santos [mailto:henrique.nazare.santos at gmail.com]
Sent: Sunday, November 03, 2013 4:28 PM
To: Sara Elshobaky
Cc: <llvmdev at cs.uiuc.edu>
Subject: Re: [LLVMdev] loop vectorizer issue
Notice that the code you provided, for globals and stack allocations, at
least,
is semantically equivalent to:
int a = d[19];
for(int k = 20; k < 50; k++)
dataY[k] = a;
Like so, the load you see missing was redundant, probably hoisted by GVN/PRE
and replaced with "%.pre".
H.
On Sun, Nov 3, 2013 at 11:26 AM, Sara Elshobaky <sara.elshobaky at gmail.com>
wrote:
Hello,
I was trying to trace the Loop vectorizer of the LLVM, I wrote a simple loop
with a clear dependency.
But found that the debug shows that 'we can vectorize this loop'
Here you are my loop with dependency:
for(int k=20;k<50;k++)
dataY[k] = dataY[k-1];
And the debug prints:
LV: Checking a loop in "main"
LV: Found a loop: for.body4
LV: Found an induction variable.
LV: Found a write-only loop!
LV: We can vectorize this loop!
...
LV: Vectorization is possible but not beneficial.
>From the LLVM IR, it contains only one 'store' instruction with '%.pre'.
Seems that no 'load' instruction prevented the Vectorizer to detect
dependency.
Is that a bug, or I'm missing something? Please advice
for.body4: ; preds = %for.body4,
%for.cond2.preheader
%k.030 = phi i32 [ 20, %for.cond2.preheader ], [ %inc8, %for.body4 ]
%arrayidx6 = getelementptr inbounds i32* %0, i32 %k.030
store i32 %.pre, i32* %arrayidx6, align 4, !tbaa !0
%inc8 = add nsw i32 %k.030, 1
%exitcond32 = icmp eq i32 %inc8, 50
br i1 %exitcond32, label %for.cond10.preheader, label %for.body4
Thanks in advance,
Sara Elshobaky
_______________________________________________
LLVM Developers mailing list
LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131103/a0089a9b/attachment.html>
More information about the llvm-dev
mailing list