<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Bardia,<div class=""><br class=""></div><div class="">Thanks for pointing out. At the time I was writing the article, I didn’t have any concrete examples to prove this point. I’ve only read the implementation of LoopRotation.</div><div class="">But after some detailed looks in, I found that the code do try to maintain this property by splitting critical edges at the very end.</div><div class="">I will modify my survey.</div><div class=""><br class=""></div><div class="">Thanks again.</div><div class="">- Min</div><div class=""><br class=""></div><div class=""><div><blockquote type="cite" class=""><div class="">On Jul 22, 2019, at 10:57 AM, Bardia Mahjour <<a href="mailto:bmahjour@ca.ibm.com" class="">bmahjour@ca.ibm.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><p class=""><font size="2" class="">Hi Min,</font><br class=""><br class=""><font size="2" class="">Thanks for sharing your findings with us. </font><br class=""><br class=""><font size="2" class="">Regarding loop rotation breaking the "exit block predecessor requirement", do you have specific examples of that? In the tests I've tried, I see a BB with the "crit_edge" suffix that acts as the exit block, while the loop guard branches to the successor of the "crit_edge" block. </font><br class=""><br class=""><font size="2" class="">Bardia Mahjour<br class=""><br class=""></font><br class=""><br class=""><span id="cid:1__=8FBB0EACDFDF7D938f9e8a93df938690918c8FB@"><graycol.gif></span><font size="2" color="#424282" class="">Min-Yih Hsu ---2019/07/19 01:47:20 PM---Hi all, Sorry I can't attend the conference call on Wednesday, so I wrapped up my</font><br class=""><br class=""><font size="2" color="#5F5F5F" class="">From:        </font><font size="2" class="">Min-Yih Hsu <<a href="mailto:minyihh@uci.edu" class="">minyihh@uci.edu</a>></font><br class=""><font size="2" color="#5F5F5F" class="">To:        </font><font size="2" class="">Bardia Mahjour <<a href="mailto:bmahjour@ca.ibm.com" class="">bmahjour@ca.ibm.com</a>></font><br class=""><font size="2" color="#5F5F5F" class="">Cc:        </font><font size="2" class="">llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>></font><br class=""><font size="2" color="#5F5F5F" class="">Date:        </font><font size="2" class="">2019/07/19 01:47 PM</font><br class=""><font size="2" color="#5F5F5F" class="">Subject:        </font><font size="2" class="">[EXTERNAL] Re: [llvm-dev] Loop Opt WG Meeting Minutes for July 17, 2019</font><br class=""></p><hr width="100%" size="2" align="left" noshade="" style="color:#8091A5; " class=""><br class=""><br class=""><br class="">Hi all,<br class=""><br class="">Sorry I can't attend the conference call on Wednesday, so I wrapped up my survey into a blog post that is easier to digest, here is the link:<br class=""><a href="https://medium.com/@mshockwave/llvm-loop-lr-survey-6df55f8dff74" class=""><u class=""><font color="#0000FF" class="">https://medium.com/@mshockwave/llvm-loop-lr-survey-6df55f8dff74</font></u></a> <br class=""><br class="">Here is the take away:<br class="">1.  I'm not sure LoopRotation will cause any problem if the user Passes require the property of exit block predecessors (i.e. predecessors of exit blocks are always in the loop)<br class="">2. I do a simple experiment on top of LLVM's existing regression testsuite by running LoopRotation before every Passes that use LoopSimplify loops as inputs. About 10% of the selected test cases are failed.<br class="">3. As the follow up of the experiment, I pick part of the failures from LoopFusion and LoopStrengthReduction to find the root cause. All of them are actually producing expecting and correct results. The failures are caused by false negatives coming from the testing infrastructure.<br class=""><br class="">As a personal verdicts, I think migrating canonical loops to LoopRotation loops seem to require little of works on existing loop Passes, I’m pretty positive on this migration. But of course, we definitely need feedback from the community and real-field test results.<br class=""><br class="">B.R.<br class="">- Min<br class=""><br class="">On Wed, Jul 17, 2019 at 1:28 PM Bardia Mahjour via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class=""><u class=""><font color="#0000FF" class="">llvm-dev@lists.llvm.org</font></u></a>> wrote:
<ul class=""><font size="2" class="">Hi all,</font><br class=""><font size="2" class=""><br class="">Apparently some people had trouble joining today. I also had trouble using the attendee ID provided by webex. I've canceled the meeting series and will be scheduling a new one with an updated link. Please remember to update your calendars with the new invite.</font><br class=""><font size="2" class=""><br class="">My apologies to those who couldn't join today, and to everyone for the churn. </font><br class=""><br class=""><font size="2" class=""><br class="">Today's Meeting Minutes:</font><br class=""><font size="2" class=""><br class="">---------------------------<br class="">Wed, July 17th, 2019:<br class="">---------------------------<br class="">- Data Dependence Graph Presentation<br class="">- Minimal vs full graph: Start with the full graph implementation and <br class="">leave optimizations until later when we have more imperical evidence on<br class="">where the bottlenecks are in this implementation.<br class="">- Trade-offs of the current proposal discussed with no objections to the <br class="">overall design from the audience at this time. More feedback is welcome!<br class="">- The approximate sequence of patches to be posted for review will be: <br class="">1. DDG (basic), <br class="">2. DDG (with simplification)<br class="">3. DDG (with root node and pi-blocks)<br class="">4. Control Dependence Graph (CDG)<br class="">5. Program Dependence Graph (PDG)</font><br class=""><font size="2" class=""><br class="">- Status Updates:<br class="">- Directed Graph (</font><a href="https://reviews.llvm.org/D64088" target="_blank" class=""><u class=""><font size="2" color="#0000FF" class="">https://reviews.llvm.org/D64088</font></u></a><font size="2" class="">)<br class="">- Patch is approved and ready to land.<br class="">- First patch of DDG to be posted soon.<br class="">- Loop Cache Cost Analysis (</font><a href="https://reviews.llvm.org/D63459" target="_blank" class=""><u class=""><font size="2" color="#0000FF" class="">https://reviews.llvm.org/D63459</font></u></a><font size="2" class="">)<br class="">- Ready and awaiting approval.<br class="">- Loop Guard API (</font><a href="https://reviews.llvm.org/D63885" target="_blank" class=""><u class=""><font size="2" color="#0000FF" class="">https://reviews.llvm.org/D63885</font></u></a><font size="2" class="">)<br class="">- Need to clarify comments from Philip to agree on the strength of the <br class="">definition of a loop guard<br class="">- Impact of Loop Rotation on existing passes<br class="">- Min unable to join today, will send a follow up email and/or discuss<br class="">next meeting.<br class="">- Bugzilla bugs update<br class="">- Ran out of time. Postponed to next meeting.</font><br class=""><br class=""><font size="2" class=""><br class="">------------------------------------------------------------<br class="">Tentative Agenda for next meeting (July 31 @ 11:00 am EST):<br class="">------------------------------------------------------------<br class="">- Status Updates<br class="">- Impact of Loop Rotation on existing passes (Min-Yih)<br class="">- Bugzilla bugs update (Vivek)<br class="">- Loop Cache Cost Analysis (</font><a href="https://reviews.llvm.org/D63459" target="_blank" class=""><u class=""><font size="2" color="#0000FF" class="">https://reviews.llvm.org/D63459</font></u></a><font size="2" class="">) (Ettore)<br class="">- Loop Guard API (</font><a href="https://reviews.llvm.org/D63885" target="_blank" class=""><u class=""><font size="2" color="#0000FF" class="">https://reviews.llvm.org/D63885</font></u></a><font size="2" class="">) (Whitney)<br class="">- Data Dependence Graph (Bardia)</font><br class=""><font size="2" class=""><br class="">- Delinearization (Gary Elsesser)<br class="">- Loop vs Function pass (Jamie Schmeiser)<br class="">- Loop Guard API (Whitney)</font><br class=""><br class=""><font size="2" class=""><br class="">Bardia Mahjour<br class="">Compiler Optimizations<br class="">IBM Toronto Software Lab</font><u class=""><font size="2" color="#0000FF" class=""><br class=""></font></u><a href="mailto:bmahjour@ca.ibm.com" target="_blank" class=""><u class=""><font size="2" color="#0000FF" class="">bmahjour@ca.ibm.com</font></u></a><font size="2" class=""> (905) 413-2336</font><br class="">_______________________________________________<br class="">LLVM Developers mailing list<u class=""><font color="#0000FF" class=""><br class=""></font></u><a href="mailto:llvm-dev@lists.llvm.org" target="_blank" class=""><u class=""><font color="#0000FF" class="">llvm-dev@lists.llvm.org</font></u></a><u class=""><font color="#0000FF" class=""><br class=""></font></u><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank" class=""><u class=""><font color="#0000FF" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</font></u></a></ul><br class=""><br class="">-- <br class="">Min-Yih Hsu<br class="">Ph.D Student in ICS Department, University of California, Irvine (UCI).<br class=""><br class=""><br class="">
</div>
</div></blockquote></div><br class=""></div></body></html>