<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Oct 14, 2017 at 3:00 PM, Michael Kruse <span dir="ltr"><<a href="mailto:llvmdev@meinersbur.de" target="_blank">llvmdev@meinersbur.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">2017-10-14 22:30 GMT+02:00 Hongbin Zheng <<a href="mailto:etherzhhb@gmail.com">etherzhhb@gmail.com</a>>:<br>
> I have a feeling that the LLVM LoopInfo/Loop datastructure, which only focus<br>
> on the CFG, is not sufficient.<br>
> And we build extra layer upon the LLVM LoopInfo/Loop, e.g. Scop in Polly and<br>
> the Hierarchical CFG in VPlan (right?).<br>
><br>
> Maybe we can have layers between the existing LoopInfo/Loop and VPlan/SCoP:<br>
><br>
> 1. LoopInfo/Loop<br>
> 2. LoopInfo/Loop + Hierarchical CFG<br>
> 3. LoopInfo/Loop + Hierarchical CFG + Memory Accesses description<br>
> 4. VPlan/Scop<br>
><br>
> I think layer 2 and 3 will be very useful even outside of Polly and VPlan<br>
<br>
</span>The idea is also that the new hierarchy can be modified iteratively<br>
and IR only generated at the end</blockquote><div>In general 1-4 are different representations to the same program, or a set of equivalent programs (at different levels of abstraction), and eventually we need to properly connect different representations together such that we can materialize the changes from one representation to another.</div><div>Maybe we could have a common infrastructure builtin to the Value class hierarchy to allow us to easily connect LLVM IR to different representations (e.g. SCoP or VPlan) and propagate the changes back? </div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> when all transform decisions have<br>
been made, and analysis/layers be shared between transformations, eg..<br>
a polyhedral dependency analysis, when available, can be used by the<br>
vectorizer without additional programming because the dependency data<br>
structure is the same</blockquote><div>One way to achieve this is to design an interface like Alias Analsyis, to hide different implementations behind a "common" interface.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">. PolyhedralInfo currently is very different from<br>
LoopAccessAnalysis.<br>
<span class="gmail-HOEnZb"><font color="#888888"><br>
Michael<br>
</font></span></blockquote></div><br></div></div>