[LLVMdev] Vectorization factor limitation in Loop Vectorizer

Nadav Rotem nrotem at apple.com
Fri Dec 12 13:16:44 PST 2014

Hi Shahid, 

> On Dec 10, 2014, at 10:48 PM, Shahid, Asghar-ahmad <Asghar-ahmad.Shahid at amd.com> wrote:
> Hi Nadav/Devs
> I am exploring Loop Vectorizer to vectorize i8 scalar operations into 8xi8 vector operation.
> I was expecting the Loop Vectorizer to analyze the profitability for vectorization factor(VF) of 8,
> However it is not doing so due to the widest type calculation done for the blocks inside the loop.
> May be I am missing something, however, I am curious to know why Loop Vectorizer limits the
> profitability check to widest type and not allowing for other narrower type?

The vectorizer stops the search of profitable vectorization factors at the widest type because higher vectorization factors would require the compiler to split the vectorized value into multiple registers. The vectorizer’s cost model first tries to optimize for SIMD instruction utilization. Later, we optimize for ILP by doubling the vectorization factor (we call it “interleave”) and exposing ILP. 


> Regards,
> Shahid
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>         http://llvm.cs.uiuc.edu <http://llvm.cs.uiuc.edu/>
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141212/6782f718/attachment.html>

More information about the llvm-dev mailing list