<html><body><p><font size="2">---------------------------</font><br><font size="2">Wed, Aug 14, 2019:</font><br><font size="2">---------------------------</font><br><br><font size="2">- Presentation on Loop Guard (Whitney)</font><br><font size="2"> - General agreement is to find guards for simplified loops only.</font><br><font size="2"> - What to allow in between guard basic-block and pre-header (and between </font><br><font size="2"> exit block and successor of loop guard)?</font><br><font size="2"> - avoid arbitrary control-flow with possible side-effects.</font><br><font size="2"> - only allow empty blocks or blocks without side-effect and simple </font><br><font size="2"> control flow.</font><br><font size="2"> - single-entry/single-exit region maybe too general, so instead only allow</font><br><font size="2"> a "chain" of merge-able basic blocks</font><br><font size="2"> - start with this and iterate on it as we make progress</font><br><font size="2"> - do not check that the compare instruction compares induction variable </font><br><font size="2"> against upper bound.</font><br><font size="2"> - SCEV has the concept of set of conditions that are true on entry to the </font><br><font size="2"> loop. See whether that concept is applicable/helpful in the case of </font><br><font size="2"> detecting loop guards? (Whitney)</font><br><font size="2"> - In addition to loop fusion, we need to detect loop guards for loop </font><br><font size="2"> interchange because otherwise simple loop nests may be incorrectly </font><br><font size="2"> diagnosed as imperfect.</font><br><font size="2"> - check jump-threading to see if it has a bug leaving duplicate </font><br><font size="2"> branches (Whitney)</font><br><font size="2"> - change the loop guard detection code to bale out if multiple exit-blocks </font><br><font size="2"> are present.</font><br><font size="2"> - in theory we could do better and detect loop guards for multi-exit </font><br><font size="2"> loops as long as all the exit blocks converge to a basic block that </font><br><font size="2"> is post-dominated by the successor of the guard. However, this is </font><br><font size="2"> currently not possible due to unavailability of post-dominator tree </font><br><font size="2"> support in loop passes.</font><br><br><font size="2"> - *** Looking for volunteers to help add support for post-dominator tree</font><br><font size="2"> in loop passes. ***</font><br><br><font size="2">- Delinearization/Multi-dimensional array indexing (Gary Elsesser, Siddharth)</font><br><font size="2"> - First impression is that MLIR diverges from LLVM-IR itself, requiring all </font><br><font size="2"> transforms to be redone at MLIR level.</font><br><font size="2"> - Could have transforms done at a higher-level IR, but LLVM IR also needs </font><br><font size="2"> that info.</font><br><font size="2"> - Discuss the LLVM IR extension RFC in one of the future calls.</font><br><br><font size="2">- Status Updates</font><br><font size="2"> - Three submissions made for the LLVM Developers Conference in Oct 2019:</font><br><font size="2"> - Loop Optimization Working Group</font><br><font size="2"> - Writing Loop Optimizations in LLVM</font><br><font size="2"> - Intelligent Loop Fission</font><br><font size="2"> - Data Dependence Graph (</font><a href="https://reviews.llvm.org/D65350"><font size="2">https://reviews.llvm.org/D65350</font></a><font size="2">)</font><br><font size="2"> - Awaiting further comments. Please take the time to review. Thank you.</font><br><br><font size="2">---------------------------</font><br><font size="2">Tentative Agenda for Aug 28</font><br><font size="2">---------------------------</font><br><font size="2">- Delinearization/Multi-dimensional array indexing RFC </font><br><font size="2"> (Siddharth, Gary, Michael F., Michael K., et al)</font><br><br><font size="2">- Status Updates</font><br><font size="2"> - Data Dependence Graph (</font><a href="https://reviews.llvm.org/D65350"><font size="2">https://reviews.llvm.org/D65350</font></a><font size="2">) (Bardia)</font><br><font size="2"> - Follow up on Loop Guard Investigation (Whitney)</font><br><font size="2"> - Impact of Loop Rotation on existing passes (Min-Yih)</font><br><font size="2"> - Bugzilla bugs update (Vivek)</font><br><font size="2"> - Others?</font><br><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>