[LLVMdev] LLVM Loop Vectorizer
Ramanarayanan, Ramshankar
Ramshankar.Ramanarayanan at amd.com
Fri Oct 5 09:00:39 PDT 2012
Perhaps we can parameterize the size of the vector while vectorizing @ llvm and fix up the loop iterators in a target specific pass.
-----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
More information about the llvm-dev
mailing list