[LLVMdev] Autovectorization questions
Chandler Carruth
chandlerc at google.com
Wed Mar 12 16:48:32 PDT 2014
On Wed, Mar 12, 2014 at 4:45 PM, Arnold Schwaighofer <
aschwaighofer at apple.com> wrote:
> The loop vectorizer relies on scev’s nowrap flags. We need to improve SCEV
> for this.
>
> %conv = sext i32 %k to i64
> --> (sext i32 %k to i64)
> %i.06 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
> --> {0,+,1}<nuw><nsw><%for.body> Exits: 1023
> %mul1 = mul nsw i64 %i.06, 7
> --> {0,+,7}<%for.body> Exits: 7161
> %arrayidx2 = getelementptr inbounds i32* %A, i64 %mul1
> --> {%A,+,28}<%for.body> <== we want to see a nw flag here.
>
>
> Scev sometimes drops new flags for safety (cannonicalization can make them
> invalid if the same expression is used in different contexts) . See past
> discussions on this.
>
Sure, but I think its really important to clarify that the *example* is
fine, and there is nothing fundamental about it that prevents vectorization.
We simply need to fix SCEV.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140312/30fcf6d9/attachment.html>
More information about the llvm-dev
mailing list