[LLVMdev] LLVM Loop Vectorizer

Hal Finkel hfinkel at anl.gov
Fri Oct 5 09:08:42 PDT 2012



----- Original Message -----
> From: "Ramshankar Ramanarayanan" <Ramshankar.Ramanarayanan at amd.com>
> To: "Hal Finkel" <hfinkel at anl.gov>, "Dibyendu Das" <Dibyendu.Das at amd.com>
> Cc: "llvmdev at cs.uiuc.edu Mailing List" <llvmdev at cs.uiuc.edu>
> Sent: Friday, October 5, 2012 11:00:39 AM
> Subject: RE: [LLVMdev] LLVM Loop Vectorizer
> 
> Perhaps we can parameterize the size of the vector while vectorizing
> @ llvm and fix up the loop iterators in a target specific pass.

I don't understand the motivation for your suggestion. Can you please explain?

Thanks again,
Hal

> 
> -----Original Message-----
> From: llvmdev-bounces at cs.uiuc.edu
> [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Hal Finkel
> Sent: Friday, October 05, 2012 8:30 PM
> To: Das, Dibyendu
> Cc: llvmdev at cs.uiuc.edu Mailing List
> Subject: Re: [LLVMdev] LLVM Loop Vectorizer
> 
> ----- Original Message -----
> > From: "Dibyendu Das" <Dibyendu.Das at amd.com>
> > To: "Nadav Rotem" <nrotem at apple.com>, "llvmdev at cs.uiuc.edu Mailing
> > List" <llvmdev at cs.uiuc.edu>
> > Sent: Friday, October 5, 2012 3:59:56 AM
> > Subject: Re: [LLVMdev] LLVM Loop Vectorizer
> > 
> > I think we should try to abstract the costs of instructions of
> > various
> > targets instead of trying to replicate them exactly. The coarser
> > the
> > costing infrastructure the more robust will be the vectorization
> > pass.
> > Also this eliminates/reduces the need of updating the costing
> > infrastructure as and when new h/w reduces the
> > cost(s) of existing instructions.
> 
> I think that one of the big questions is where this information,
> abstract or not, resides. The cost information needs to be abstract
> in some sense: IR instructions don't always map directly onto
> machine instructions, we don't yet have real register-pressure
> information, etc. Other information is more direct: does the target
> support vectors of given types, sizes, and are certain operations
> provided. As much as possible, I believe this information should be
> derived automatically from the Target TableGen files, and the
> pre-existing logic in *ISelLowering.cpp. This requires linking those
> files with the mid-level optimizers.
> 
>  -Hal
> 
> > - Dibyendu
> > 
> > -----Original Message-----
> > From: llvmdev-bounces at cs.uiuc.edu
> > [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Nadav Rotem
> > Sent: Friday, October 05, 2012 11:45 AM
> > To: llvmdev at cs.uiuc.edu Mailing List
> > Subject: [LLVMdev] LLVM Loop Vectorizer
> > 
> > Hi,
> > 
> > We are starting to work on an LLVM loop vectorizer. There's number
> > of
> > different projects that already vectorize LLVM IR. For example
> > Hal's
> > BB-Vectorizer, Intel's OpenCL Vectorizer, Polly, ISPC, AnySL, just
> > to
> > name a few. I think that it would be great if we could collaborate
> > on
> > the areas that are shared between the different projects. I think
> > that
> > refactoring LLVM in away that would expose target information to
> > IR-level transformations would be a good way to start. Vectorizers,
> > as
> > well as other IR-level transformations, require target-specific
> > information, such as the cost of different instruction or the
> > availability of certain features. Currently, llvm-based vectorizers
> > do
> > not make use of this information, or just hard-code target
> > information. A loop vectorizer would need target information. After
> > we
> > have some basic target information infrastructure in place we can
> > start discussing the vectorizer itself.
> > 
> > I think that the first step would be to expose Target Lowering
> > Interface (TLI) to OPT's IR-level passes. Currently TLI is only
> > available in LLC. I suggest that we merge LLC and OPT into a single
> > tool that will drive both IR-level passes and the codegen. LLC and
> > OPT
> > can remain as wrappers around the new tool. Please let me know if
> > you
> > can think of a good name for the new tool. I was thinking that
> > "llvm-cli" may be a good name (cli = command line interface).
> > OPT and LLC are only used by LLVM developers, so the impact of this
> > change on the user community would be small.
> > 
> > Thanks,
> > Nadav
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> > 
> > 
> > 
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> > 
> 
> --
> Hal Finkel
> Postdoctoral Appointee
> 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
> 
> 
> 

-- 
Hal Finkel
Postdoctoral Appointee
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-dev mailing list