[llvm-dev] Auto-vectorization option

Sjoerd Meijer via llvm-dev llvm-dev at lists.llvm.org
Fri May 14 01:08:11 PDT 2021


Hi,

Not sure what you mean by only getting binaries: "clang -S -emit-llvm" should produce a .ll and so will opt.

> clang  -S -emit-llvm find_max.c -o find_max.ll

Since no optimisation level is specified, this will result in very unoptimised code, probably resulting in vectorisation not triggering. I usually do "clang -O3 -S -emit-llvm -mllvm -print-before-all", or something equivalent, and then grab the IR just before vectorisation.

> clang -O3 -c find_max.c -Rpass=vector -Rpass-analysis=vector

>From a very quick look, this will probably not show anything because of your example: the second loop has no effect and is optimised away, only the first remains which is fully unrolled. Returning "max" will probably help.

________________________________
From: llvm-dev <llvm-dev-bounces at lists.llvm.org> on behalf of Sudakshina Dutta via llvm-dev <llvm-dev at lists.llvm.org>
Sent: 14 May 2021 04:16
To: LLVM Development List <llvm-dev at lists.llvm.org>
Subject: [llvm-dev] Auto-vectorization option

Dear all,

Greetings. I want to generate the intermediate code (.ll file) after having LLVM auto-vectorization transformation on the source C file. I have the following code  (find_max.c) on which I want to apply auto-vectorization.

int main()
{
    int i, n, max, arr[50];
    for(i = 0; i < 35; i++)
    {
        printf("arr[%d] = ", i);
        scanf("%d", &arr[i]);
    }
    max = arr[0];
    for(i = 1; i < 35; i++)
    {
        if(arr[i] > max)
        {
            max = arr[i];
        }
    }

}

I have tried the following.


  1.  clang  -S -emit-llvm find_max.c -o find_max.ll
  2.  opt -loop-vectorize -force-vector-width=8 find_max.ll -o find_max_opt.ll

and

  1.  clang -O3 -c find_max.c -Rpass=vector -Rpass-analysis=vector
  2.  clang -O3 -c find_max.c -Rpass=vector -Rpass-analysis=vector -o find_max.ll

All the above options generate binary files. I request you to please help.

Thanks and regards,
Sudakshina
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210514/5ceeebdb/attachment.html>


More information about the llvm-dev mailing list