<div dir="ltr"><div><div dir="ltr" style="font-size:12.8px"><div><span class="im"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">Dear Community,</font></span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">I would like to summarize my work till date for GSoC 2016.</font></span></p></span><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Till the current phase of my project, I have mostly focused on developing the necessary infrastructure to use analysis results from Polly in LLVM. </span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap">Initial plan as mentioned in the proposal: </span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap">For the first month:-</span></p><span class="im"><ol style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">Decouple ScopInfo pass from Polly’s pass chain and provide capability to create SCoP(Static Control Parts) objects from arbitrary SESE regions.</font></span></p></li><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">Implement new passes ScopInfoWrapperPass and DependenceInfoWrapperPass as Function Passes.</font></span></p></li><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">Provide an interface to Polly’s dependence analysis which can be directly queried from LLVM transformation passes such as Loop Vectorizer. </font></span></p></li></ol></span><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap">For the next phase:-</span></p><span class="im"><ol start="4" style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">Cache the dependences computed by Polly for a given SCoP and provide methods to invalidate the analysis results when the SCoP changes.</font></span></p></li><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">Demonstrate the power and usefulness of the interface by integrating it with Loop Vectorizer or other clients, for example, client that requires loop trip count, etc.</font></span></p></li></ol><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">Current Status:</font></span></p></span><ol style="margin-top:0pt;margin-bottom:0pt"><span class="im"><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">Decoupling SCoP object creation from pass logic is complete and has been addressed under</font> </span><a href="http://reviews.llvm.org/D20770" target="_blank"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">D20770</span></a><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">, </span><a href="http://reviews.llvm.org/D20831" target="_blank"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">D20831</span></a><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"> <font color="#000000">and</font> </span><a href="http://reviews.llvm.org/D20912" target="_blank"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">D20912</span></a><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"> <font color="#000000">review items. Patches have been accepted and committed.</font></span></p></li></span><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">Implemented two new function passes in Polly namely ScopInfoWrapperPass (</span><a href="http://reviews.llvm.org/D20962" target="_blank"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">D20962</span></a><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">) and DependenceInfoWrapperPass (</span><a href="http://reviews.llvm.org/D21105" target="_blank"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">D21105</span></a><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">). These are required to bypass the RegionPassManager.</span></p></li><span class="im"><ol style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="margin-left:15px;list-style-type:lower-alpha;font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">ScopInfoWrapperPass addresses creating SCoP objects for the whole function. </span></p></li><li dir="ltr" style="margin-left:15px;list-style-type:lower-alpha;font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">DependenceInfoWrapperPass addresses constructing polyhedral dependences for all the SCoP objects of a function.</span></p></li></ol><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">These patches are currently under review and I am incorporating changes as suggested by the Polly community.</font></span></p></li></span><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">Implemented first version of an interface to Polly's analysis passes- PolyhedralInfo pass </font>(</span><a href="http://reviews.llvm.org/D21486" target="_blank"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">D21486</span></a><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">). <font color="#000000">Implemented isParallel(Loop *) interface to check parallelism of a loop.</font></span></p></li></ol><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;font-family:Arial;font-weight:700;vertical-align:baseline;white-space:pre-wrap">Pending Work:</span></p><ol style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">Complete the interface - PolyhederalInfo pass. Currently I am working on providing more interfaces to check whether a loop is vectorizable or not and to get loop trip count.</font></span></p></li><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="margin-left:15px;list-style-type:circle;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">isVectorizable(Loop *L, *MinDepDistance)</font></span></p></li><li dir="ltr" style="margin-left:15px;list-style-type:circle;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">getLoopTripCount(Loop *)</font></span></p></li></ul><span class="im"><font color="#000000"><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">Work on caching Polly's analysis results properly and provide methods to invalidate the analysis results when the SCoP changes.</span></p></li><li dir="ltr" style="margin-left:15px;list-style-type:decimal;font-size:12.6667px;font-family:Arial;vertical-align:baseline"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;vertical-align:baseline;white-space:pre-wrap">Demonstrate the power and usefulness of the interface by integrating it with Loop Vectorizer.</span></p></li></font></span></ol><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Below are the list of patches I sent  during this period:-</span></p><span class="im"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><a href="http://reviews.llvm.org/D20770" target="_blank"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">D20770</span></a><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">, </span><a href="http://reviews.llvm.org/D20831" target="_blank"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">D20831</span></a><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">, </span><a href="http://reviews.llvm.org/D20912" target="_blank"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">D20912</span></a><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">, </span><a href="http://reviews.llvm.org/D20962" target="_blank"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">D20962</span></a><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">, </span><a href="http://reviews.llvm.org/D21105" target="_blank"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">D21105</span></a><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">, </span><a href="http://reviews.llvm.org/D21486" target="_blank"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">D21486</span></a></p><br></span><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><font color="#000000">I thank Johannes, Tobias, Michael, Ether and others for all the support/feedback/advises. Especially, Johannes for the time spent in hangouts, which we have been having two times a week.</font></span></p><span class="im"><font color="#000000"><br><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Looking forward for your suggestions and comments.</span></font></span><font color="#000000"><br></font></div><div><span style="font-size:12.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span></div></div><div class="gmail_extra" style="font-size:12.8px"><div><div data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><div data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div>Regards,<br><br></div>Utpal Bora<br></div><div>Ph.D. Scholar</div><div><span style="font-size:12.8px">Computer Science & Engineering</span><br></div></div><div>IIT Hyderabad<br></div><div><a href="http://utpalbora.github.io" target="_blank">http://utpalbora.github.io</a></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div>