<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 16, 2015 at 4:14 PM, Kristof Beyls <span dir="ltr"><<a href="mailto:kristof.beyls@arm.com" target="_blank">kristof.beyls@arm.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-GB" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Hi Ramshankar,<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">This looks really interesting.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Interestingly, a patch for loop distribution has been posted for review recently.<br>On a conceptual level loop fusion and loop distribution are each other’s inverse, so I would assume that<br>they should ideally somehow be combined and use a single cost function to decide, out of all legal<br>fusions/distributions, which one is most profitable.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Does that make sense, or is there some reason why these fundamentally couldn’t be combined into a single<br>loop fuse-and-or-distribute transformation?<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I haven’t looked closely at either the code of the distribution or the fusion patches, but would it be hard to<br>combine them into a single transformation – assuming my assumptions above do make sense?<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">If it would prove sensible to somehow combine the distribution and fusion transformations – could this<br>be the beginning of a more general high-level loop transformation framework in LLVM?</span></p></div></div></blockquote><div><br></div><div>At the very high level I don't think the analysis passes should be combined. Outside of SPEC tuning how would you decide when the cost of doing one vs the other is appropriate? Without target level information.. how could you estimate the cost or impact? If we think very very long term, I wonder how something like backtracking could be useful here.. by this I mean running multiple potentially conflicting or opposing transformations in parallel, potentially all the way to code generation, and then in the end pick the path which produces the best output. I realize the infrastructure to do something like this is almost a dream, but I thought it's worth mentioning.</div><div><br></div><div>If my comments aren't coherent I can potentially dig up the slides from Fred Chow who originally proposed the idea/concept (for another compiler) (ping me off list)</div><div><br></div></div></div></div>