hameeza ahmed via llvm-dev
2017-Aug-17 17:01 UTC
[llvm-dev] unable to emit vectorized code in LLVM IR
i removed printf from loop. Now getting no error. but the IR doesnot contain vectorized code. IR Output is as follows: ; ModuleID = 'sum-vec.ll' source_filename = "sum-vec.c" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: norecurse nounwind readnone uwtable define i32 @main(i32, i8** nocapture readnone) local_unnamed_addr #0 { ret i32 0 } attributes #0 = { norecurse nounwind readnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="knl" "target-features"="+adx,+aes,+avx,+avx2,+avx512cd,+avx512er,+avx512f,+avx512pf,+bmi,+bmi2,+cx16,+f16c,+fma,+fsgsbase,+fxsr,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+prefetchwt1,+rdrnd,+rdseed,+rtm,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" "unsafe-fp-math"="false" "use-soft-float"="false" } !llvm.ident = !{!0} !0 = !{!"clang version 4.0.0 (tags/RELEASE_400/final)"} what to do? please help. On Thu, Aug 17, 2017 at 9:57 PM, Nemanja Ivanovic <nemanja.i.ibm at gmail.com> wrote:> Move the printf out of the loop and it should vectorize just fine. > > On Thu, Aug 17, 2017 at 6:52 PM, hameeza ahmed <hahmed2305 at gmail.com> > wrote: > >> I want to vectorize the user given inputs. when opt does vectorization >> user supplied inputs (from a text file) will be added using AVX vector >> instructions. >> >> as you pointed; When i changed my code to following: >> >> int main(int argc, char** argv) { >> int a[1000], b[1000], c[1000]; >> int aa=atoi(argv[1]), bb=atoi(argv[2]); >> for (int i=0; i<1000; i++) { >> a[i]=aa, b[i]=bb; >> c[i]=a[i] + b[i]; >> printf("sum: %d\n", c[i]); >> >> } >> >> I am getting error remark: <unknown>:0:0: loop not vectorized: call >> instruction cannot be vectorized. >> >> I am running following commands: >> clang -S -emit-llvm sum-vec.c -march=knl -O3 -mllvm -disable-llvm-optzns >> -o sum-vec.ll >> opt -S -O3 -force-vector-width=64 sum-vec.ll -o sum-vec03.ll >> >> How to achieve this? Please help. >> >> >> >> >> >> On Thu, Aug 17, 2017 at 10:44 AM, Nemanja Ivanovic < >> nemanja.i.ibm at gmail.com> wrote: >> >>> I'm not sure what you expect to have vectorized here. If you look at the >>> emitted code, there's no loop. It's just an add and a multiply as you might >>> expect when adding a loop-invariant sum 1000 times in a loop. >>> >>> On Wed, Aug 16, 2017 at 11:38 PM, hameeza ahmed via llvm-dev < >>> llvm-dev at lists.llvm.org> wrote: >>> >>>> Hello, >>>> I have written the following code. when i try to vectorize it through >>>> opt. i am not getting vectorized instructions. >>>> >>>> #include <stdio.h> >>>> #include<stdlib.h> >>>> int main(int argc, char** argv) { >>>> int sum=0; int a=atoi(argv[1]); int b=atoi(argv[2]); >>>> for (int i=0;i<1000;i++) >>>> { >>>> sum+=a+b; >>>> } >>>> >>>> printf("sum: %d\n", sum); >>>> return 0; >>>> } >>>> i use following commands: >>>> clang -S -emit-llvm sum-main.c -march=knl -O3 -mllvm >>>> -disable-llvm-optzns -o sum-main.ll >>>> opt -S -O3 -force-vector-width=64 sum-main.ll -o sum-main03.ll >>>> >>>> why is that so? where am i doing mistake? i am not getting vectorized >>>> operations rather getting scalar operations. >>>> >>>> Please help. >>>> >>>> Thank You >>>> >>>> Regards >>>> >>>> >>>> _______________________________________________ >>>> 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/20170817/4a2b187f/attachment.html>
Craig Topper via llvm-dev
2017-Aug-17 17:03 UTC
[llvm-dev] unable to emit vectorized code in LLVM IR
Did you remove the printf completely? Meaning that nothing accesses 'c' after the loop? If so it got removed as dead code because it had no visible effect. ~Craig On Thu, Aug 17, 2017 at 10:01 AM, hameeza ahmed <hahmed2305 at gmail.com> wrote:> i removed printf from loop. Now getting no error. but the IR doesnot > contain vectorized code. IR Output is as follows: > ; ModuleID = 'sum-vec.ll' > source_filename = "sum-vec.c" > target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" > target triple = "x86_64-unknown-linux-gnu" > > ; Function Attrs: norecurse nounwind readnone uwtable > define i32 @main(i32, i8** nocapture readnone) local_unnamed_addr #0 { > ret i32 0 > } > > attributes #0 = { norecurse nounwind readnone uwtable > "correctly-rounded-divide-sqrt-fp-math"="false" > "disable-tail-calls"="false" "less-precise-fpmad"="false" > "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" > "no-jump-tables"="false" "no-nans-fp-math"="false" > "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" > "stack-protector-buffer-size"="8" "target-cpu"="knl" > "target-features"="+adx,+aes,+avx,+avx2,+avx512cd,+avx512er, > +avx512f,+avx512pf,+bmi,+bmi2,+cx16,+f16c,+fma,+fsgsbase,+ > fxsr,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+prefetchwt1,+ > rdrnd,+rdseed,+rtm,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" > "unsafe-fp-math"="false" "use-soft-float"="false" } > > !llvm.ident = !{!0} > > !0 = !{!"clang version 4.0.0 (tags/RELEASE_400/final)"} > > what to do? please help. > > > On Thu, Aug 17, 2017 at 9:57 PM, Nemanja Ivanovic <nemanja.i.ibm at gmail.com > > wrote: > >> Move the printf out of the loop and it should vectorize just fine. >> >> On Thu, Aug 17, 2017 at 6:52 PM, hameeza ahmed <hahmed2305 at gmail.com> >> wrote: >> >>> I want to vectorize the user given inputs. when opt does vectorization >>> user supplied inputs (from a text file) will be added using AVX vector >>> instructions. >>> >>> as you pointed; When i changed my code to following: >>> >>> int main(int argc, char** argv) { >>> int a[1000], b[1000], c[1000]; >>> int aa=atoi(argv[1]), bb=atoi(argv[2]); >>> for (int i=0; i<1000; i++) { >>> a[i]=aa, b[i]=bb; >>> c[i]=a[i] + b[i]; >>> printf("sum: %d\n", c[i]); >>> >>> } >>> >>> I am getting error remark: <unknown>:0:0: loop not vectorized: call >>> instruction cannot be vectorized. >>> >>> I am running following commands: >>> clang -S -emit-llvm sum-vec.c -march=knl -O3 -mllvm >>> -disable-llvm-optzns -o sum-vec.ll >>> opt -S -O3 -force-vector-width=64 sum-vec.ll -o sum-vec03.ll >>> >>> How to achieve this? Please help. >>> >>> >>> >>> >>> >>> On Thu, Aug 17, 2017 at 10:44 AM, Nemanja Ivanovic < >>> nemanja.i.ibm at gmail.com> wrote: >>> >>>> I'm not sure what you expect to have vectorized here. If you look at >>>> the emitted code, there's no loop. It's just an add and a multiply as you >>>> might expect when adding a loop-invariant sum 1000 times in a loop. >>>> >>>> On Wed, Aug 16, 2017 at 11:38 PM, hameeza ahmed via llvm-dev < >>>> llvm-dev at lists.llvm.org> wrote: >>>> >>>>> Hello, >>>>> I have written the following code. when i try to vectorize it through >>>>> opt. i am not getting vectorized instructions. >>>>> >>>>> #include <stdio.h> >>>>> #include<stdlib.h> >>>>> int main(int argc, char** argv) { >>>>> int sum=0; int a=atoi(argv[1]); int b=atoi(argv[2]); >>>>> for (int i=0;i<1000;i++) >>>>> { >>>>> sum+=a+b; >>>>> } >>>>> >>>>> printf("sum: %d\n", sum); >>>>> return 0; >>>>> } >>>>> i use following commands: >>>>> clang -S -emit-llvm sum-main.c -march=knl -O3 -mllvm >>>>> -disable-llvm-optzns -o sum-main.ll >>>>> opt -S -O3 -force-vector-width=64 sum-main.ll -o sum-main03.ll >>>>> >>>>> why is that so? where am i doing mistake? i am not getting vectorized >>>>> operations rather getting scalar operations. >>>>> >>>>> Please help. >>>>> >>>>> Thank You >>>>> >>>>> Regards >>>>> >>>>> >>>>> _______________________________________________ >>>>> 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/20170817/ab6edccc/attachment.html>
hameeza ahmed via llvm-dev
2017-Aug-17 17:09 UTC
[llvm-dev] unable to emit vectorized code in LLVM IR
even if i make my code as follows: vectorized instructions not get emitted. What to do? int main(int argc, char** argv) { int a[1000], b[1000], c[1000]; int g=0; int aa=atoi(argv[1]), bb=atoi(argv[2]); for (int i=0; i<1000; i++) { a[i]=aa, b[i]=bb; c[i]=a[i] + b[i]; g+=c[i]; } printf("sum: %d\n", g); return 0; } On Thu, Aug 17, 2017 at 10:03 PM, Craig Topper <craig.topper at gmail.com> wrote:> Did you remove the printf completely? Meaning that nothing accesses 'c' > after the loop? If so it got removed as dead code because it had no visible > effect. > > ~Craig > > On Thu, Aug 17, 2017 at 10:01 AM, hameeza ahmed <hahmed2305 at gmail.com> > wrote: > >> i removed printf from loop. Now getting no error. but the IR doesnot >> contain vectorized code. IR Output is as follows: >> ; ModuleID = 'sum-vec.ll' >> source_filename = "sum-vec.c" >> target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" >> target triple = "x86_64-unknown-linux-gnu" >> >> ; Function Attrs: norecurse nounwind readnone uwtable >> define i32 @main(i32, i8** nocapture readnone) local_unnamed_addr #0 { >> ret i32 0 >> } >> >> attributes #0 = { norecurse nounwind readnone uwtable >> "correctly-rounded-divide-sqrt-fp-math"="false" >> "disable-tail-calls"="false" "less-precise-fpmad"="false" >> "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" >> "no-jump-tables"="false" "no-nans-fp-math"="false" >> "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" >> "stack-protector-buffer-size"="8" "target-cpu"="knl" >> "target-features"="+adx,+aes,+avx,+avx2,+avx512cd,+avx512er, >> +avx512f,+avx512pf,+bmi,+bmi2,+cx16,+f16c,+fma,+fsgsbase,+fx >> sr,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+prefetchwt1,+rdrnd,+ >> rdseed,+rtm,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" >> "unsafe-fp-math"="false" "use-soft-float"="false" } >> >> !llvm.ident = !{!0} >> >> !0 = !{!"clang version 4.0.0 (tags/RELEASE_400/final)"} >> >> what to do? please help. >> >> >> On Thu, Aug 17, 2017 at 9:57 PM, Nemanja Ivanovic < >> nemanja.i.ibm at gmail.com> wrote: >> >>> Move the printf out of the loop and it should vectorize just fine. >>> >>> On Thu, Aug 17, 2017 at 6:52 PM, hameeza ahmed <hahmed2305 at gmail.com> >>> wrote: >>> >>>> I want to vectorize the user given inputs. when opt does vectorization >>>> user supplied inputs (from a text file) will be added using AVX vector >>>> instructions. >>>> >>>> as you pointed; When i changed my code to following: >>>> >>>> int main(int argc, char** argv) { >>>> int a[1000], b[1000], c[1000]; >>>> int aa=atoi(argv[1]), bb=atoi(argv[2]); >>>> for (int i=0; i<1000; i++) { >>>> a[i]=aa, b[i]=bb; >>>> c[i]=a[i] + b[i]; >>>> printf("sum: %d\n", c[i]); >>>> >>>> } >>>> >>>> I am getting error remark: <unknown>:0:0: loop not vectorized: call >>>> instruction cannot be vectorized. >>>> >>>> I am running following commands: >>>> clang -S -emit-llvm sum-vec.c -march=knl -O3 -mllvm >>>> -disable-llvm-optzns -o sum-vec.ll >>>> opt -S -O3 -force-vector-width=64 sum-vec.ll -o sum-vec03.ll >>>> >>>> How to achieve this? Please help. >>>> >>>> >>>> >>>> >>>> >>>> On Thu, Aug 17, 2017 at 10:44 AM, Nemanja Ivanovic < >>>> nemanja.i.ibm at gmail.com> wrote: >>>> >>>>> I'm not sure what you expect to have vectorized here. If you look at >>>>> the emitted code, there's no loop. It's just an add and a multiply as you >>>>> might expect when adding a loop-invariant sum 1000 times in a loop. >>>>> >>>>> On Wed, Aug 16, 2017 at 11:38 PM, hameeza ahmed via llvm-dev < >>>>> llvm-dev at lists.llvm.org> wrote: >>>>> >>>>>> Hello, >>>>>> I have written the following code. when i try to vectorize it through >>>>>> opt. i am not getting vectorized instructions. >>>>>> >>>>>> #include <stdio.h> >>>>>> #include<stdlib.h> >>>>>> int main(int argc, char** argv) { >>>>>> int sum=0; int a=atoi(argv[1]); int b=atoi(argv[2]); >>>>>> for (int i=0;i<1000;i++) >>>>>> { >>>>>> sum+=a+b; >>>>>> } >>>>>> >>>>>> printf("sum: %d\n", sum); >>>>>> return 0; >>>>>> } >>>>>> i use following commands: >>>>>> clang -S -emit-llvm sum-main.c -march=knl -O3 -mllvm >>>>>> -disable-llvm-optzns -o sum-main.ll >>>>>> opt -S -O3 -force-vector-width=64 sum-main.ll -o sum-main03.ll >>>>>> >>>>>> why is that so? where am i doing mistake? i am not getting vectorized >>>>>> operations rather getting scalar operations. >>>>>> >>>>>> Please help. >>>>>> >>>>>> Thank You >>>>>> >>>>>> Regards >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> 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/20170817/cbce6c04/attachment.html>
Francois Fayard via llvm-dev
2017-Aug-17 17:10 UTC
[llvm-dev] unable to emit vectorized code in LLVM IR
LLVM is very smart about deleting useless code. If you want to see vectorized code, I would suggest to write such a function. int f(int* a, int* b, int n) { int ans = 0; for (int i = 0; i < n; ++i) { ans += a[i] * b[i]; } return ans; } That way, the compiler knows nothing about the values of a and b and cannot optimize anything. Also, beware of pointer aliasing which might prevent vectorization or create 2 different paths : one vectorized, one not vectorized. François Fayard> On Aug 17, 2017, at 7:01 PM, hameeza ahmed via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > i removed printf from loop. Now getting no error. but the IR doesnot contain vectorized code. IR Output is as follows: > ; ModuleID = 'sum-vec.ll' > source_filename = "sum-vec.c" > target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" > target triple = "x86_64-unknown-linux-gnu" > > ; Function Attrs: norecurse nounwind readnone uwtable > define i32 @main(i32, i8** nocapture readnone) local_unnamed_addr #0 { > ret i32 0 > } > > attributes #0 = { norecurse nounwind readnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="knl" "target-features"="+adx,+aes,+avx,+avx2,+avx512cd,+avx512er,+avx512f,+avx512pf,+bmi,+bmi2,+cx16,+f16c,+fma,+fsgsbase,+fxsr,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+prefetchwt1,+rdrnd,+rdseed,+rtm,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" "unsafe-fp-math"="false" "use-soft-float"="false" } > > !llvm.ident = !{!0} > > !0 = !{!"clang version 4.0.0 (tags/RELEASE_400/final)"} > > what to do? please help. > > > On Thu, Aug 17, 2017 at 9:57 PM, Nemanja Ivanovic <nemanja.i.ibm at gmail.com <mailto:nemanja.i.ibm at gmail.com>> wrote: > Move the printf out of the loop and it should vectorize just fine. > > On Thu, Aug 17, 2017 at 6:52 PM, hameeza ahmed <hahmed2305 at gmail.com <mailto:hahmed2305 at gmail.com>> wrote: > I want to vectorize the user given inputs. when opt does vectorization user supplied inputs (from a text file) will be added using AVX vector instructions. > > as you pointed; When i changed my code to following: > > int main(int argc, char** argv) { > int a[1000], b[1000], c[1000]; > int aa=atoi(argv[1]), bb=atoi(argv[2]); > for (int i=0; i<1000; i++) { > a[i]=aa, b[i]=bb; > c[i]=a[i] + b[i]; > printf("sum: %d\n", c[i]); > > } > > I am getting error remark: <unknown>:0:0: loop not vectorized: call instruction cannot be vectorized. > > I am running following commands: > clang -S -emit-llvm sum-vec.c -march=knl -O3 -mllvm -disable-llvm-optzns -o sum-vec.ll > opt -S -O3 -force-vector-width=64 sum-vec.ll -o sum-vec03.ll > > How to achieve this? Please help. > > > > > > On Thu, Aug 17, 2017 at 10:44 AM, Nemanja Ivanovic <nemanja.i.ibm at gmail.com <mailto:nemanja.i.ibm at gmail.com>> wrote: > I'm not sure what you expect to have vectorized here. If you look at the emitted code, there's no loop. It's just an add and a multiply as you might expect when adding a loop-invariant sum 1000 times in a loop. > > On Wed, Aug 16, 2017 at 11:38 PM, hameeza ahmed via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: > Hello, > I have written the following code. when i try to vectorize it through opt. i am not getting vectorized instructions. > > #include <stdio.h> > #include<stdlib.h> > int main(int argc, char** argv) { > int sum=0; int a=atoi(argv[1]); int b=atoi(argv[2]); > for (int i=0;i<1000;i++) > { > sum+=a+b; > } > > printf("sum: %d\n", sum); > return 0; > } > i use following commands: > clang -S -emit-llvm sum-main.c -march=knl -O3 -mllvm -disable-llvm-optzns -o sum-main.ll > opt -S -O3 -force-vector-width=64 sum-main.ll -o sum-main03.ll > > why is that so? where am i doing mistake? i am not getting vectorized operations rather getting scalar operations. > > Please help. > > Thank You > > Regards > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <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/20170817/587c38c8/attachment.html>
Nemanja Ivanovic via llvm-dev
2017-Aug-17 17:29 UTC
[llvm-dev] unable to emit vectorized code in LLVM IR
Making your arrays global will work as well because they're accessible externally and changes to them cannot be optimized out. On Thu, Aug 17, 2017 at 7:11 PM Francois Fayard via llvm-dev < llvm-dev at lists.llvm.org> wrote:> LLVM is very smart about deleting useless code. > > If you want to see vectorized code, I would suggest to write such a > function. > > int f(int* a, int* b, int n) { > int ans = 0; > for (int i = 0; i < n; ++i) { > ans += a[i] * b[i]; > } > return ans; > } > > That way, the compiler knows nothing about the values of a and b and > cannot optimize anything. Also, beware of pointer aliasing which might > prevent vectorization or create 2 different paths : one vectorized, one not > vectorized. > > François Fayard > > On Aug 17, 2017, at 7:01 PM, hameeza ahmed via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > > i removed printf from loop. Now getting no error. but the IR doesnot > contain vectorized code. IR Output is as follows: > ; ModuleID = 'sum-vec.ll' > source_filename = "sum-vec.c" > target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" > target triple = "x86_64-unknown-linux-gnu" > > ; Function Attrs: norecurse nounwind readnone uwtable > define i32 @main(i32, i8** nocapture readnone) local_unnamed_addr #0 { > ret i32 0 > } > > attributes #0 = { norecurse nounwind readnone uwtable > "correctly-rounded-divide-sqrt-fp-math"="false" > "disable-tail-calls"="false" "less-precise-fpmad"="false" > "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" > "no-jump-tables"="false" "no-nans-fp-math"="false" > "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" > "stack-protector-buffer-size"="8" "target-cpu"="knl" > "target-features"="+adx,+aes,+avx,+avx2,+avx512cd,+avx512er,+avx512f,+avx512pf,+bmi,+bmi2,+cx16,+f16c,+fma,+fsgsbase,+fxsr,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+prefetchwt1,+rdrnd,+rdseed,+rtm,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" > "unsafe-fp-math"="false" "use-soft-float"="false" } > > !llvm.ident = !{!0} > > !0 = !{!"clang version 4.0.0 (tags/RELEASE_400/final)"} > > what to do? please help. > > > On Thu, Aug 17, 2017 at 9:57 PM, Nemanja Ivanovic <nemanja.i.ibm at gmail.com > > wrote: > >> Move the printf out of the loop and it should vectorize just fine. >> >> On Thu, Aug 17, 2017 at 6:52 PM, hameeza ahmed <hahmed2305 at gmail.com> >> wrote: >> >>> I want to vectorize the user given inputs. when opt does vectorization >>> user supplied inputs (from a text file) will be added using AVX vector >>> instructions. >>> >>> as you pointed; When i changed my code to following: >>> >>> int main(int argc, char** argv) { >>> int a[1000], b[1000], c[1000]; >>> int aa=atoi(argv[1]), bb=atoi(argv[2]); >>> for (int i=0; i<1000; i++) { >>> a[i]=aa, b[i]=bb; >>> c[i]=a[i] + b[i]; >>> printf("sum: %d\n", c[i]); >>> >>> } >>> >>> I am getting error remark: <unknown>:0:0: loop not vectorized: call >>> instruction cannot be vectorized. >>> >>> I am running following commands: >>> clang -S -emit-llvm sum-vec.c -march=knl -O3 -mllvm >>> -disable-llvm-optzns -o sum-vec.ll >>> opt -S -O3 -force-vector-width=64 sum-vec.ll -o sum-vec03.ll >>> >>> How to achieve this? Please help. >>> >>> >>> >>> >>> >>> On Thu, Aug 17, 2017 at 10:44 AM, Nemanja Ivanovic < >>> nemanja.i.ibm at gmail.com> wrote: >>> >>>> I'm not sure what you expect to have vectorized here. If you look at >>>> the emitted code, there's no loop. It's just an add and a multiply as you >>>> might expect when adding a loop-invariant sum 1000 times in a loop. >>>> >>>> On Wed, Aug 16, 2017 at 11:38 PM, hameeza ahmed via llvm-dev < >>>> llvm-dev at lists.llvm.org> wrote: >>>> >>>>> Hello, >>>>> I have written the following code. when i try to vectorize it through >>>>> opt. i am not getting vectorized instructions. >>>>> >>>>> #include <stdio.h> >>>>> #include<stdlib.h> >>>>> int main(int argc, char** argv) { >>>>> int sum=0; int a=atoi(argv[1]); int b=atoi(argv[2]); >>>>> for (int i=0;i<1000;i++) >>>>> { >>>>> sum+=a+b; >>>>> } >>>>> >>>>> printf("sum: %d\n", sum); >>>>> return 0; >>>>> } >>>>> i use following commands: >>>>> clang -S -emit-llvm sum-main.c -march=knl -O3 -mllvm >>>>> -disable-llvm-optzns -o sum-main.ll >>>>> opt -S -O3 -force-vector-width=64 sum-main.ll -o sum-main03.ll >>>>> >>>>> why is that so? where am i doing mistake? i am not getting vectorized >>>>> operations rather getting scalar operations. >>>>> >>>>> Please help. >>>>> >>>>> Thank You >>>>> >>>>> Regards >>>>> >>>>> >>>>> _______________________________________________ >>>>> 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 > > > _______________________________________________ > 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/20170817/9d22ba60/attachment-0001.html>