<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>