<div dir="ltr">Hi Ganesh,<div><br></div><div style>Please have a look at:</div><div style><br></div><div style>These core parts of LLVM:</div><div style> <a href="http://llvm.org/docs/doxygen/html/classllvm_1_1Loop.html#a72bbf45d2e00971f56bf8cfe4e1df01c">http://llvm.org/docs/doxygen/html/classllvm_1_1Loop.html#a72bbf45d2e00971f56bf8cfe4e1df01c</a></div>
<div style> <a href="http://llvm.org/docs/Vectorizers.html">http://llvm.org/docs/Vectorizers.html</a><br></div><div style> </div><div style>These research projects based on LLVM:</div><div style>  <a href="http://polly.llvm.org">http://polly.llvm.org</a><br>
</div><div style>  <a href="http://aesop.ece.umd.edu">http://aesop.ece.umd.edu</a></div><div style><br></div><div style>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 <a href="http://llvm.org/docs/LangRef.html#intrinsic-functions">http://llvm.org/docs/LangRef.html#intrinsic-functions</a> 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.</div>
<div style><br></div><div style>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.</div><div style>
<br></div><div style>All the best,</div><div style><br></div><div style>Stefanus</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Apr 17, 2013 at 11:32 AM, Bikshandi, Ganesh <span dir="ltr"><<a href="mailto:ganesh.bikshandi@intel.com" target="_blank">ganesh.bikshandi@intel.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal">Hi,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">For one of our research projects, we are planning to use LLVM. We need the following features:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p><u></u><span>1.<span style="font:7.0pt "Times New Roman"">      
</span></span><u></u>We need to aggressively fuse loops that have inter-loop dependencies.<u></u><u></u></p>
<p><u></u><span>2.<span style="font:7.0pt "Times New Roman"">      
</span></span><u></u>We need to identify intrinsic functions and induction variables.<u></u><u></u></p>
<p><u></u><span>3.<span style="font:7.0pt "Times New Roman"">      
</span></span><u></u>We need to detect few memory access patterns like copy, transpose-copy, stride-copy etc.
<u></u><u></u></p>
<p><u></u><span>4.<span style="font:7.0pt "Times New Roman"">      
</span></span><u></u>Lastly, auto-vectorization and auto-openmp.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">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 .<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Regards,<u></u><u></u></p>
<p class="MsoNormal">Ganesh<u></u><u></u></p>
</div>
</div>

<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br></div>