<div dir="ltr">Hi Aditya,<br><br>Hmm, interesting! Could you point me to a specific test case (e.g. with a nested if) ? Maybe one from the patch.<br><br>Best,<br>Stefanos</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Στις Κυρ, 22 Μαρ 2020 στις 1:13 π.μ., ο/η Aditya K <<a href="mailto:hiraditya@msn.com">hiraditya@msn.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">Hi Stefanos,<br>
<br>
Thanks for your comments. I added both as reviewer.<br>
<br>
> One question though. Are you sure that this:<br>
> This helps with LICM when instructions inside a conditional is loop invariant <br>
> is not achieved with the current LoopRotate pass? Because AFAIK, it does. Basically it inserts<br>
> a guard (that branches to the preheader) and then passes like LICM hoist invariant instructions to the preheader.<br>
> Also, it does itself host some invariant instructions but only on the header and very limited ones.<br>
<br>
Currently LICM does some of it but not all. If there are more than 2 conditionals,<br>
LICM would fail to move loop invariant from the second conditional because loop rotation didn't peel all the conditionals.<br>
My observation is from a while ago so happy to be corrected.<br>
<br>
-Aditya<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
From: Stefanos Baziotis <<a href="mailto:stefanos.baziotis@gmail.com" target="_blank">stefanos.baziotis@gmail.com</a>><br>
<br>
Sent: Saturday, March 21, 2020 1:42 PM<br>
<br>
To: Aditya K <<a href="mailto:hiraditya@msn.com" target="_blank">hiraditya@msn.com</a>>; 林政宗 <<a href="mailto:jackie_linzz@126.com" target="_blank">jackie_linzz@126.com</a>>; Johannes Doerfert <<a href="mailto:johannesdoerfert@gmail.com" target="_blank">johannesdoerfert@gmail.com</a>><br>
<br>
Cc: llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<br>
Subject: Re: [llvm-dev] questionabout loop rotation<br>
<br>
 <br>
<br>
<br>
Hi Aditya,<br>
<br>
<br>
<br>
Glad to hear that. I want to read the patch but it's kind of big and unfortunately right now I so don't have time.<br>
<br>
I'll try to take a look when there is some time. In the meantime, you may want to add Kit Barton and Michael Kruse<br>
<br>
as reviewers.<br>
<br>
<br>
<br>
One question though. Are you sure that this:<br>
<br>
> This helps with LICM when instructions inside a conditional is loop invariant<br>
<br>
is not achieved with the current LoopRotate pass? Because AFAIK, it does. Basically it inserts<br>
<br>
a guard (that branches to the preheader) and then passes like LICM hoist invariant instructions to the preheader.<br>
<br>
Also, it does itself host some invariant instructions but only on the header and very limited ones.<br>
<br>
<br>
<br>
Kind regards,<br>
<br>
Stefanos Baziotis<br>
<br>
<br>
<br>
P.S. I re-CC'd the other participants.<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
Στις Σάβ, 21 Μαρ 2020 στις 8:41 μ.μ., ο/η Aditya K via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> έγραψε:<br>
<br>
<br>
<br>
hi,<br>
<br>
I had an implementation of loop-rotation that peels the loop such that each conditional is executed at least once.<br>
<br>
<a href="https://reviews.llvm.org/D22630" rel="noreferrer" target="_blank">https://reviews.llvm.org/D22630</a><br>
<br>
<br>
<br>
This helps with LICM when instructions inside a conditional is loop invariant. The patch has decent number of test cases.<br>
<br>
All the requested comments were addressed at that time. I'm happy to rebase and put the patch again.<br>
<br>
<br>
<br>
-Aditya<br>
<br>
_______________________________________________<br>
<br>
LLVM Developers mailing list<br>
<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<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>
<br>
</blockquote></div>