[LLVMdev] loop multiversioning

Nema, Ashutosh Ashutosh.Nema at amd.com
Sun Jan 18 22:18:22 PST 2015


Hi Trent,

I don't think LLVM has loop multi versioning.

Some passes i.e. loopVectorizer has implemented its own multi versioning followed by memory check.

Recently I also came across similar need in LICM.

Can you please elaborate what multi versioning you are interested in ?

Regards,
Ashutosh

-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Hal Finkel
Sent: Sunday, January 18, 2015 3:33 AM
To: Xin Tong
Cc: llvmdev at cs.uiuc.edu
Subject: Re: [LLVMdev] loop multiversioning



----- Original Message -----
> From: "Xin Tong" <trent.tong at gmail.com>
> To: llvmdev at cs.uiuc.edu
> Sent: Saturday, January 17, 2015 3:06:13 PM
> Subject: [LLVMdev] loop multiversioning
> 
> 
> Does LLVM have loop multiversioning ? it seems it does not with
> clang++ -O3 -mllvm -debug-pass=Arguments program.c -c
> 

No, we currently don't. In what kind of multiversioning are you interested (memory dependence, partial specialization, etc.)?

 -Hal

> 
> 
> bash-4.1$ clang++ -O3 -mllvm -debug-pass=Arguments fast_algorithms.c 
> -c
> clang-3.6: warning: treating 'c' input as 'c++' when in C++ mode, this 
> behavior is deprecated Pass Arguments: -datalayout -notti -basictti 
> -x86tti -targetlibinfo -no-aa -tbaa -scoped-noalias 
> -assumption-tracker -basicaa -verify -add-discriminators -simplifycfg 
> -domtree -sroa -early-cse -lower-expect Pass Arguments: -datalayout 
> -notti -basictti -x86tti -targetlibinfo -no-aa -tbaa -scoped-noalias 
> -assumption-tracker -basicaa -verify-di -ipsccp -globalopt 
> -deadargelim -domtree -instcombine -simplifycfg -basiccg -prune-eh 
> -inline-cost -inline -functionattrs -argpromotion -sroa -domtree 
> -early-cse -lazy-value-info -jump-threading -correlated-propagation 
> -simplifycfg -domtree -instcombine -tailcallelim -simplifycfg 
> -reassociate -domtree -loops -loop-simplify -lcssa -loop-rotate -licm 
> -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa 
> -indvars -loop-idiom -loop-deletion -function_tti -loop-unroll -memdep 
> -mldst-motion -domtree -memdep -gvn -memdep -memcpyopt -sccp -domtree 
> -instcombine -lazy-value-info -jump-threading -correlated-propagation 
> -domtree -memdep -dse -adce -simplifycfg -domtree -instcombine 
> -barrier -domtree -loops -loop-simplify -lcssa -branch-prob 
> -block-freq -scalar-evolution -loop-vectorize -instcombine 
> -scalar-evolution -slp-vectorizer -simplifycfg -domtree -instcombine 
> -loops -loop-simplify -lcssa -scalar-evolution -function_tti 
> -loop-unroll -alignment-from-assumptions -strip-dead-prototypes 
> -globaldce -constmerge -domtree -loops -loop-simplify -lcssa -licm 
> Pass Arguments: -datalayout -notti -basictti -x86tti -targetlibinfo 
> -jump-instr-table-info -targetpassconfig -no-aa -tbaa -scoped-noalias 
> -assumption-tracker -basicaa -collector-metadata -machinemoduleinfo 
> -machine-branch-prob -jump-instr-tables -atomic-expand -verify 
> -verify-di -domtree -loops -loop-simplify -scalar-evolution -iv-users 
> -loop-reduce -gc-lowering -unreachableblockelim -consthoist 
> -partially-inline-libcalls -codegenprepare -rewrite-symbols -verify-di 
> -stack-protector -verify -domtree -loops -branch-prob -machinedomtree 
> -expand-isel-pseudos -tailduplication -opt-phis -machinedomtree 
> -slotindexes -stack-coloring -localstackalloc -dead-mi-elimination 
> -machinedomtree -machine-loops -machine-trace-metrics -early-ifcvt 
> -machinelicm -machine-cse -machinepostdomtree -machine-block-freq 
> -machine-sink -peephole-opts -dead-mi-elimination -processimpdefs 
> -unreachable-mbb-elimination -livevars -machinedomtree -machine-loops 
> -phi-node-elimination -twoaddressinstruction -slotindexes 
> -liveintervals -simple-register-coalescing -misched 
> -machine-block-freq -livedebugvars -livestacks -virtregmap 
> -liveregmatrix -edge-bundles -spill-code-placement -virtregrewriter 
> -stack-slot-coloring -machinelicm -edge-bundles -prologepilog 
> -machine-block-freq -branch-folder -tailduplication -machine-cp 
> -postrapseudos -machinedomtree -machine-loops -post-RA-sched 
> -gc-analysis -machine-block-freq -block-placement2 -stackmap-liveness
> 
> 
> Thanks,
> Trent
> 
> 
> 
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 

--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
_______________________________________________
LLVM Developers mailing list
LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list