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