<html><body><p><font size="2">---------------------------</font><br><font size="2">Wed, July 31, 2019:</font><br><font size="2">---------------------------</font><br><font size="2">- Status Updates</font><br><font size="2">  - Impact of Loop Rotation on existing passes (Min-Yih)</font><br><font size="2">    - Overview of findings: </font><br><font size="2">      </font><a href="https://medium.com/@mshockwave/llvm-loop-lr-survey-6df55f8dff74"><font size="2">https://medium.com/@mshockwave/llvm-loop-lr-survey-6df55f8dff74</font></a><br><font size="2">    - In this experiment the Old Pass Manager was used. OPM runs lcssa</font><br><font size="2">      before loop rotation, causing some of the LIT tests to fail. Perhaps </font><br><font size="2">      we need to focus on the NPM.</font><br><font size="2">    - Challenges:</font><br><font size="2">      - Adding a restriction to existing passes is not very practical.</font><br><font size="2">        eg if LICM started requiring rotated form, it would make people </font><br><font size="2">        working with down-stream code unhappy.</font><br><font size="2">      - Having loop rotation as part of the canonical form requires</font><br><font size="2">        strong justification, and careful examination of its impact.</font><br><font size="2">        Instead of making it part of canonical form, start making loop </font><br><font size="2">        passes work with loop rotated form and make it a requirement</font><br><font size="2">        gradually. It's easy to have new passes require rotated form.</font><br><font size="2">      - Loop rotation impact on code size needs to be investigated. </font><br><font size="2">        Does anyone know of a good test suite to use?</font><br><br><font size="2">  - Bugzilla bugs update (Vivek)</font><br><font size="2">    - somewhat common problem in loop vectorization: small loop </font><br><font size="2">      vectorization created bad performing code when SCEV cannot determine </font><br><font size="2">      the iteration count of the loop.</font><br><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">    - All comments are addressed. Ready to commit.</font><br><br><font size="2">  - Loop Guard API (</font><a href="https://reviews.llvm.org/D63885"><font size="2">https://reviews.llvm.org/D63885</font></a><font size="2">) (Whitney)</font><br><font size="2">    - Committed, but further changes needed to make the code more useful.</font><br><font size="2">      Whitney has a presentation that she will share next time.</font><br><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">    - Directed graph work committed. First patch of DDG work is up for</font><br><font size="2">      review and awaiting more comments.</font><br><br><font size="2">  - Loop Terminology doc (</font><a href="https://reviews.llvm.org/D65164"><font size="2">https://reviews.llvm.org/D65164</font></a><font size="2">) (Philip Reames)</font><br><font size="2">    - Documentation is now available and ready to to grow as we continue</font><br><font size="2">      discussion on canonical loop forms.</font><br><br><font size="2">- Delinearization/Multi-dimensional array indexing (Gary, Siddharth)</font><br><font size="2">  (</font><a href="http://lists.llvm.org/pipermail/llvm-dev/2019-July/134063.html"><font size="2">http://lists.llvm.org/pipermail/llvm-dev/2019-July/134063.html</font></a><font size="2">) </font><br><font size="2">  - All in agreement on the importance of this topic. More time needed to</font><br><font size="2">    read through the proposals (including MLIR).</font><br><br><font size="2">- Loop vs Function pass (Jamie Schmeiser)</font><br><font size="2">        - loop sink pass appears to be the only outlier where its implemented</font><br><font size="2">      as a different kind of pass in the NPM vs OPM.</font><br><font size="2">        - loop passes are mostly there for compile-time efficiency....</font><br><font size="2">      When writing new passes start with function pass to prototype and </font><br><font size="2">      overtime evolve it into a loop pass.</font><br><br><br><font size="2">- People interested in vectorizing loops with early exist please </font><br><font size="2">  contact Philip Reames.</font><br><br><br><br><font size="2">------------------------------------------------------------</font><br><font size="2">Tentative Agenda for next meeting (Aug 14th @ 11:00 am EST):</font><br><font size="2">------------------------------------------------------------</font><br><font size="2">- Presentation on Loop Guard (Whitney)</font><br><font size="2">- Delinearization/Multi-dimensional array indexing (Gary Elsesser, Siddharth)</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">  - 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>