Hi, For one of our research projects, we are planning to use LLVM. We need the following features: 1. We need to aggressively fuse loops that have inter-loop dependencies. 2. We need to identify intrinsic functions and induction variables. 3. We need to detect few memory access patterns like copy, transpose-copy, stride-copy etc. 4. Lastly, auto-vectorization and auto-openmp. Is there a LLVM tool(s) that addresses these optimizations? The target language is C or C++. The target architectures are Intel Xeon with AVX and Xeon Phi . Regards, Ganesh -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130417/340ba58c/attachment.html>
Hi Ganesh, Please have a look at: These core parts of LLVM: http://llvm.org/docs/doxygen/html/classllvm_1_1Loop.html#a72bbf45d2e00971f56bf8cfe4e1df01c http://llvm.org/docs/Vectorizers.html These research projects based on LLVM: http://polly.llvm.org http://aesop.ece.umd.edu I'm not sure what you mean by "identify intrinsic functions". If you really mean LLVM intrinsics, they are trivial to identify in LLVM (see http://llvm.org/docs/LangRef.html#intrinsic-functions for a high level introduction). If you mean something like idiom recognition, some optimizations of LLVM do this but typically just recognize the idioms as they optimize. LLVM doesn't include loop fusion, but Polly may help there. Likewise, Polly and AESOP are probably your best bets for things like memory access patterns and auto-parallelization. All the best, Stefanus On Wed, Apr 17, 2013 at 11:32 AM, Bikshandi, Ganesh < ganesh.bikshandi at intel.com> wrote:> Hi,**** > > ** ** > > For one of our research projects, we are planning to use LLVM. We need the > following features:**** > > ** ** > > **1. **We need to aggressively fuse loops that have inter-loop > dependencies.**** > > **2. **We need to identify intrinsic functions and induction > variables.**** > > **3. **We need to detect few memory access patterns like copy, > transpose-copy, stride-copy etc. **** > > **4. **Lastly, auto-vectorization and auto-openmp.**** > > ** ** > > Is there a LLVM tool(s) that addresses these optimizations? The target > language is C or C++. The target architectures are Intel Xeon with AVX and > Xeon Phi .**** > > ** ** > > Regards,**** > > Ganesh**** > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130417/46e9723b/attachment.html>
Thanks. I'll take a look. Regarding intrinsic functions, we want to do few trigonometric optimizations (i.e. exp(i*theta)). Not sure if that is covered in idiom recognition. Ganesh From: Stefanus Du Toit [mailto:sjdutoit at gmail.com] Sent: Wednesday, April 17, 2013 7:37 PM To: Bikshandi, Ganesh Cc: llvmdev at cs.uiuc.edu Subject: Re: [LLVMdev] Request for compilers Hi Ganesh, Please have a look at: These core parts of LLVM: http://llvm.org/docs/doxygen/html/classllvm_1_1Loop.html#a72bbf45d2e00971f56bf8cfe4e1df01c http://llvm.org/docs/Vectorizers.html These research projects based on LLVM: http://polly.llvm.org http://aesop.ece.umd.edu I'm not sure what you mean by "identify intrinsic functions". If you really mean LLVM intrinsics, they are trivial to identify in LLVM (see http://llvm.org/docs/LangRef.html#intrinsic-functions for a high level introduction). If you mean something like idiom recognition, some optimizations of LLVM do this but typically just recognize the idioms as they optimize. LLVM doesn't include loop fusion, but Polly may help there. Likewise, Polly and AESOP are probably your best bets for things like memory access patterns and auto-parallelization. All the best, Stefanus On Wed, Apr 17, 2013 at 11:32 AM, Bikshandi, Ganesh <ganesh.bikshandi at intel.com<mailto:ganesh.bikshandi at intel.com>> wrote: Hi, For one of our research projects, we are planning to use LLVM. We need the following features: 1. We need to aggressively fuse loops that have inter-loop dependencies. 2. We need to identify intrinsic functions and induction variables. 3. We need to detect few memory access patterns like copy, transpose-copy, stride-copy etc. 4. Lastly, auto-vectorization and auto-openmp. Is there a LLVM tool(s) that addresses these optimizations? The target language is C or C++. The target architectures are Intel Xeon with AVX and Xeon Phi . Regards, Ganesh _______________________________________________ LLVM Developers mailing list LLVMdev at cs.uiuc.edu<mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130417/81e9ba3d/attachment.html>