<html><body><p><font size="2">---------------------------</font><br><font size="2">Wed, Jun 19th, 2019:</font><br><font size="2">---------------------------</font><br><font size="2">- Status Updates</font><br><font size="2"> - Loop Cost Analysis (</font><a href="https://reviews.llvm.org/D63459"><font size="2">https://reviews.llvm.org/D63459</font></a><font size="2">)</font><br><font size="2"> - Code is under review. thanks for quick and useful feedback.</font><br><font size="2"> - DDG</font><br><font size="2"> - Prototype work and internal reviews are mostly completed.</font><br><font size="2"> - First patch will be `DirectedGraph` as a base class for dependence graphs.</font><br><font size="2"> - Will have a presentation on the design of DDG for the next meeting.</font><br><br><font size="2">- Canonical Loop Structure and Loop Guards</font><br><font size="2"> - Should all loops have a guard (meaning add dummy guards for unguarded loops)?</font><br><font size="2"> - Not right now. Start by adding some method to find existing guards and define the API that we want to use for straight forward cases. We can then expand on it later on either by improving the guard detection itself, or by changing canonicalization passes to make it easier for the existing API to find guards.</font><br><font size="2"> - Start with simple loop guard and iterate to get it improved.</font><br><br><font size="2"> - Questions to be answered (perhaps through code reviews) are:</font><br><font size="2"> - Is any branch around the loop a guard? </font><br><font size="2"> - Should it be a guard only if the branch condition matches the condition in the latch?</font><br><font size="2"> - Can there be more than one loop guard?</font><br><font size="2"> - Would the guard itself be part of the loop?</font><br><br><font size="2"> - Many passes work on rotated loops, not just simplified loop. For new passes should we only support rotated form?</font><br><font size="2"> - Definition of canonical is not well defined and needs to be improved.</font><br><font size="2"> - Ideally there should only be *one* canonical form. </font><br><font size="2"> - Some passes including SCEV maybe affected by early exists (eg. after jumpthreading scev wasn't able to detect back edges).</font><br><font size="2"> - Let's survey existing analysis and transformations to see what their requirements are. Thanks Min-Yih Hsu for volunteering to look into it.</font><br><font size="2"> - Once we are clear on what the canonical form should be, we can discuss whether passes should preserve that form.</font><br><font size="2"> </font><br><font size="2">- New vs Old Pass Manager</font><br><font size="2"> - Having to maintain two separate interfaces is costly. Can we agree on supporting only the NPM for the new passes we are developing?</font><br><font size="2"> - Documentation is an issue for the new PM</font><br><font size="2"> - NPM cannot be used yet if we want the pass to be enabled by default (because the OPM is the default PM).</font><br><font size="2"> - the build bots only test the default pipeline.</font><br><br><font size="2">- Volunteers for looking into existing bugs and/or investigating why some loop passes are currently disabled.</font><br><font size="2"> - Vivek kindly volunteered to prepare a list of reproducible loop optimization bugs in Bugzilla.</font><br><br><font size="2">- Loop Pass vs Function Pass:</font><br><font size="2"> - Some llvm passes implement loop interface for the NPM and function interface for OPM (or vice-versa)</font><br><font size="2"> - Add this item to agenda for a future meeting.</font><br><br><br><font size="2">------------------------------</font><br><font size="2">Decisions and To Do's:</font><br><font size="2">------------------------------</font><br><font size="2">- Presentation on DDG for the next meeting (Bardia)</font><br><font size="2">- Scan Bugzilla for loop related issues so we can identify common deficiencies and discuss solutions. (Vivek)</font><br><font size="2">- Survey existing loop passes to see what form of loop they expect. This will help us decide on the definition of canonicity. (Min-Yih Hsu)</font><br><font size="2">- Follow up on the status of New vs Old Pass Manager and when the New PM is expected to become the default. (Bardia)</font><br><font size="2">- Use llvm-dev mailing list and [LOOP] prefix for discussions about loop optimization. (everyone)</font><br><font size="2">- Include the webex link in the meeting minutes and agenda sent to llvm-dev. (Bardia)</font><br><br><font size="2">--------------------------------------</font><br><font size="2">Tentative Agenda (July 3rd):</font><br><font size="2">--------------------------------------</font><br><font size="2">- Status Updates</font><br><font size="2"> - Directed Graph (Bardia)</font><br><font size="2"> - Loop Cache Cost Analysis (</font><a href="https://reviews.llvm.org/D63459"><font size="2">https://reviews.llvm.org/D63459</font></a><font size="2">) (Ettore)</font><br><font size="2"> - Survey of Loop Canonical Form expected by various passes (Min-Yih Hsu)</font><br><font size="2"> - Survey of Loop related bugs in Bugzilla (Vivek)</font><br><font size="2"> - Others?</font><br><font size="2">- Data Dependence Graph Presentation (Bardia)</font><br><font size="2">- Delinearization (Gary Elsesser)</font><br><br><font size="2">--------------------------------------</font><br><font size="2">Tentative Agenda (July 17th):</font><br><font size="2">--------------------------------------</font><br><font size="2"> - Status Updates</font><br><font size="2"> - ...</font><br><font size="2"> - Loop vs Function pass (Jamie Schmeiser)</font><br><font size="2"> - ...</font><br><br><br><font size="2">Bardia Mahjour<br>Compiler Optimizations<br>IBM Toronto Software Lab<br>bmahjour@ca.ibm.com (905) 413-2336</font><BR>
</body></html>