<div dir="ltr"><div>Hello Whitney,</div><div><br></div><div>I spent some good time going through the exact implementation of a few 
loop transformation passes in llvm and for others, I tried to quickly 
get an idea of what is going inside them with respect to the 
implementation in llvm.<br><br>I also went through the CodeMoverUtils [1], I 
really appreciate the effort of keeping it generic and decoupled from 
loop though being derived from loop and aimed to be used for loop 
transformation. I also analyzed Loop Fuse pass [2] as a reference as it 
already uses CodeMoverUtils which helped me to concrete my understanding 
of the vision behind the unification of code motion checks. <br><br>LICM
 [3] does hoisting [4] as well as sinking [5]. I thought about extending 
the already available isSafeToMoveBefore [6] for hoisting the code from 
loop body to the pre-header. In my opinion, hosting and sinking are the basic code motions, exposing them in a robust and flexible way will
 also help other transformations (maybe other non-loop 
transformations).<br><br>I also saw that Loop Sink pass [7] uses the 
same checks [8] from LICM and also found another code hoisting 
opportunity in Loop Rotation pass where we once hoist to the pre-header 
[9]. I also analyzed passes like Loop Unswitch [10] in the hope for some
 code motion opportunities but it seems the passes which are expected to
 run after LICM are void of them (may not be true for all). I limited 
myself to the loop passes in Transform/Scalar and I'm planning to take a
 look into other loop passes as well. <br><br>Having said that, my 
concern right now is the proposal whose deadline is approaching in 4 
days, I would like to get a small feedback before the deadline. I am 
aiming to prepare a draft by Monday morning (PST) so then I may have a 
short window to incorporate the feedback. I also have two coursework 
assignment deadlines end of this week which is also demanding some of my
 effort other than attending the lectures.   <br><br>I'll be glad to 
hear about your expectations for the proposal. I'm planning to somehow 
meet them and will also continue to look into loop passes for more code 
motion checks after the proposal deadline. Does this look good to you? 
In my proposal can I focus on the findings that I'm able to do before 
the deadline and keep some buffer for things that I may find later as 
identifying all the existing ways for code motion in loop 
transformations is a big portion of the proposed project.<br><br>1. <a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp</a><br>2. <a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LoopFuse.cpp" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LoopFuse.cpp</a><br>3. <a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LICM.cpp" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LICM.cpp</a><br>4. <a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LICM.cpp#L353" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LICM.cpp#L353</a><br>5. <a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LICM.cpp#L348" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LICM.cpp#L348</a><br>6. <a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp#L299" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp#L299</a><br>7. <a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LoopSink.cpp" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LoopSink.cpp</a><br>8. <a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LoopSink.cpp#L303" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LoopSink.cpp#L303</a><br>9. <a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp#L403" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp#L403</a><br>10. <a href="https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp" target="_blank">https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp</a></div><div><br></div><div>Best,</div><div>Rithik<br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 24 Mar 2020 at 23:30, Stefanos Baziotis <<a href="mailto:stefanos.baziotis@gmail.com">stefanos.baziotis@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Np, good luck! :)<br><br>- Stefanos</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Στις Τρί, 24 Μαρ 2020 στις 8:55 μ.μ., ο/η RITHIK SHARMA <<a href="mailto:rithiksh02@gmail.com" target="_blank">rithiksh02@gmail.com</a>> έγραψε:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Many thanks, Stefanos! I really appreciate your help :) I heard from Whitney. <br></div><div><br></div><div>Best,</div><div>Rithik<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 24 Mar 2020 at 23:08, Stefanos Baziotis <<a href="mailto:stefanos.baziotis@gmail.com" target="_blank">stefanos.baziotis@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi Rithik,<br><br>I CC'd the 2 other mentors and hopefully you'll get answer. Sorry, but I don't know of any other way to help. :/<br>You may also try to contact them privately.<br><br>Best,<br>Stefanos</div><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Στις Τρί, 24 Μαρ 2020 στις 7:35 μ.μ., ο/η RITHIK SHARMA via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> έγραψε:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Ping!</div><div>I'm bit concern about the approaching deadline next week, some pointers will be really appreciated and will be very helpful to me.<br></div><div><br></div><div>Best regards,</div><div>Rithik Sharma<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 22 Mar 2020 at 01:24, RITHIK SHARMA <<a href="mailto:rithiksh02@gmail.com" target="_blank">rithiksh02@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hello,</div><div><br></div><div>I am an undergrad from India. This summer I'm interested in working on unifying the code motion checks as a GSoC intern with LLVM. I started reading about classical data flow analysis since few months, I see this as a great opportunity to start contributing to LLVM. The idea of unifying all the code motion checks into one place seems very rational and interesting to me. As in the project description LICM was mentioned, I have a basic idea about it and I spent some time to go through its implementation in LLVM. It makes a lot of sense to me to keep all code motion checks at one place, say an analysis pass, I also looked into GVN hoist & sink passes as they also have some code motion logic. I'll start drafting the proposal after your initial feedback/suggestions. I'm really very excited to work on this.</div><div><br></div><div>Best Regards,</div><div>Rithik Sharma<br></div></div>
</blockquote></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>