Ralf,<br><br>  Ok, thanks, I'll have a look. The paper I was referencing was <a href="http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.94.668">http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.94.668</a> from '90 I believe. There is also an Intel paper the expands on this for the Itanium.<br>
<br><div class="gmail_quote">On Fri, Jan 6, 2012 at 12:34 PM, Ralf Karrenberg <span dir="ltr"><<a href="mailto:karrenberg@cdl.uni-saarland.de">karrenberg@cdl.uni-saarland.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
I am not sure if I know the paper you mentioned, but to my knowledge LLVM is only able to do such a transformation in very limited and obvious cases.<br>
We implemented phases that do a generic linearization of control flow as part of our "whole function vectorization" algorithm:<br>
<br>
<a href="http://www.cdl.uni-saarland.de/projects/wfv" target="_blank">www.cdl.uni-saarland.de/<u></u>projects/wfv</a><br>
<br>
The code is not really public yet because we are still working to get it more stable and mature overall before having the entire LLVM community be aware of it, but you can still access it at github if you want to take a look at it:<br>

<br>
<a href="http://github.com/karrenberg/whole-function-vectorization" target="_blank">github.com/karrenberg/whole-<u></u>function-vectorization</a><br>
<br>
The most important classes are probably "MaskGeneration", "SelectGeneration", and "CFGLinearization" if you are targeting a machine without predicated execution.<br>
The basis for the control-flow linearization is derived from Allen and Kennedy's "Conversion of control dependence to data dependence" (1983).<br>
A detailed description of what we do is given in our corresponding paper.<br>
<br>
Best,<br>
Ralf<div><div class="h5"><br>
<br>
On 1/4/12 8:46 PM, Ryan Taylor wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
Is there anything within llvm that uses a transformation to create<br>
single exit loops from multiple exit loops? For example, such as<br>
Tirumalai's paper: Parallelization of<br>
Loops with Exits on Pipelined Architectures?<br>
<br>
<br></div></div>
______________________________<u></u>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">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/<u></u>mailman/listinfo/llvmdev</a><br>
</blockquote>
</blockquote></div><br>