[LLVMdev] Packed instructions generaetd by LoopVectorize?

Nadav Rotem nrotem at apple.com
Thu Apr 4 16:17:11 PDT 2013


Its already enabled by default for -O3.  The plan is to enable it by default for -Os and -O2 for the LLVM 3.4 release, but we know that this requires some work. 

On Apr 4, 2013, at 4:12 PM, "Nowicki, Tyler" <tyler.nowicki at intel.com> wrote:

> Thanks, that did it!
>  
> Are there any plans to enable the loop vectorizer by default?
>  
> From: Nadav Rotem [mailto:nrotem at apple.com] 
> Sent: Wednesday, April 03, 2013 13:33 PM
> To: Nowicki, Tyler
> Cc: LLVM Developers Mailing List
> Subject: Re: Packed instructions generaetd by LoopVectorize?
>  
> Hi Tyler, 
>  
> Try adding -ffast-math.  We can only vectorize reduction variables if it is safe to reorder floating point operations. 
>  
> Thanks,
> Nadav
>  
> On Apr 3, 2013, at 10:29 AM, "Nowicki, Tyler" <tyler.nowicki at intel.com> wrote:
> 
> 
> Hi,
>  
> I have a question about LoopVectorize. I wrote a simple test case, a dot product loop and found that packed instructions are generated when input arrays are integer, but not when they are float or double.
>  
> If I modify the float example in http://llvm.org/docs/Vectorizers.html by adding restrict to the input arrays packed instructions are generated. Although it should not be required I tried doing the same to the input arrays of my dot product example but it still doesn’t generate packed float or double instructions.
>  
> Is the loop vectorizer supposed to generate packed float and double instructions? Is this a bug, or am I doing something wrong?
>  
> Tyler
>  
> float dotproduct(float *A, float *B, int n) {
>   float sum = 0;
>   for(int i = 0; i < n; ++i) {
>     sum += A[i] * B[i];
>   }
>   return sum;
> }
>  
> clang dotproduct.cpp -O3 -fvectorize -march=atom -S -o -
>  
> <loop body>
> .LBB1_1:
>         movss   (%rdi), %xmm1
>         addq    $4, %rdi
>         mulss   (%rsi), %xmm1
>         addq    $4, %rsi
>         decl    %edx
>         addss   %xmm1, %xmm0
>         jne     .LBB1_1

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130404/3d01aca6/attachment.html>


More information about the llvm-dev mailing list