[llvm-dev] Invoke loop vectorizer

Daniel Berlin via llvm-dev llvm-dev at lists.llvm.org
Fri Aug 12 11:11:10 PDT 2016


It's not possible to know that A and B don't alias in this example.  It's
almost certainly not profitable to add a runtime check given the size of
the loop.


try

#define SIZE 8

void bar(int *restrict A, int* restrict B,int K) {

  #pragma clang loop vectorize(enable) vectorize_width(2) unroll_count(8)

  for (int i = 0; i < SIZE; ++i)

    A[i] += B[i] + K;

}

(i don't remember if llvm also does runtime alias checks, but if it does,
you'd probably need to increase size to get it to vectorize)

On Fri, Aug 12, 2016 at 11:08 AM, Xiaochu Liu via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi Andrey,
>
> Thanks. I found even when loop vectorizer and SLP vectorizer are enabled,
> my simple test still not get optimized. I also tried clang pragma in my
> test to force vectorization. What do you think is the problem?
>
> Test:
>
> #define SIZE 8
>
> void bar(int *A, int* B,int K) {
>
>   #pragma clang loop vectorize(enable) vectorize_width(2) unroll_count(8)
>
>   for (int i = 0; i < SIZE; ++i)
>
>     A[i] += B[i] + K;
>
> }
>
> Thanks,
> Xiaochu
>
> On Aug 12, 2016 4:06 AM, "Andrey Bokhanko" <andreybokhanko at gmail.com>
> wrote:
>
>> Hi Xiaochu,
>>
>> Clang uses -O0 by default, that doesn't run any optimizations. Try
>> supplying -O1 or higher.
>>
>> Yours,
>> Andrey
>>
>>
>> On Fri, Aug 12, 2016 at 1:04 AM, Xiaochu Liu via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>> Hi there ,
>>>
>>> I use clang-cl /Qvec test.c to compile the code. But the pass
>>> LoopVectorizer is never invoked.
>>>
>>> I was wondering if this is sufficient to enable auto vectorizer?
>>>
>>> Thanks,
>>> Xiaochu
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>
>>>
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160812/1d9ab5c7/attachment.html>


More information about the llvm-dev mailing list