[llvm-dev] unable to emit vectorized code in LLVM IR (original) (raw)
hameeza ahmed via llvm-dev llvm-dev at lists.llvm.org
Thu Aug 17 10:01:43 PDT 2017
- Previous message: [llvm-dev] unable to emit vectorized code in LLVM IR
- Next message: [llvm-dev] unable to emit vectorized code in LLVM IR
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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: :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>
- Previous message: [llvm-dev] unable to emit vectorized code in LLVM IR
- Next message: [llvm-dev] unable to emit vectorized code in LLVM IR
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]