[llvm-dev] questionabout loop rotation

Stefanos Baziotis via llvm-dev llvm-dev at lists.llvm.org
Sat Mar 21 17:35:29 PDT 2020


Hi Aditya,

Hmm, interesting! Could you point me to a specific test case (e.g. with a
nested if) ? Maybe one from the patch.

Best,
Stefanos

Στις Κυρ, 22 Μαρ 2020 στις 1:13 π.μ., ο/η Aditya K <hiraditya at msn.com>
έγραψε:

> Hi Stefanos,
>
> Thanks for your comments. I added both as reviewer.
>
> > One question though. Are you sure that this:
> > This helps with LICM when instructions inside a conditional is loop
> invariant
> > is not achieved with the current LoopRotate pass? Because AFAIK, it
> does. Basically it inserts
> > a guard (that branches to the preheader) and then passes like LICM hoist
> invariant instructions to the preheader.
> > Also, it does itself host some invariant instructions but only on the
> header and very limited ones.
>
> Currently LICM does some of it but not all. If there are more than 2
> conditionals,
> LICM would fail to move loop invariant from the second conditional because
> loop rotation didn't peel all the conditionals.
> My observation is from a while ago so happy to be corrected.
>
> -Aditya
>
>
>
>
>
>
>
>
>
> From: Stefanos Baziotis <stefanos.baziotis at gmail.com>
>
> Sent: Saturday, March 21, 2020 1:42 PM
>
> To: Aditya K <hiraditya at msn.com>; 林政宗 <jackie_linzz at 126.com>; Johannes
> Doerfert <johannesdoerfert at gmail.com>
>
> Cc: llvm-dev <llvm-dev at lists.llvm.org>
>
> Subject: Re: [llvm-dev] questionabout loop rotation
>
>
>
>
> Hi Aditya,
>
>
>
> 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.
>
> 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
>
> as reviewers.
>
>
>
> One question though. Are you sure that this:
>
> > This helps with LICM when instructions inside a conditional is loop
> invariant
>
> is not achieved with the current LoopRotate pass? Because AFAIK, it does.
> Basically it inserts
>
> a guard (that branches to the preheader) and then passes like LICM hoist
> invariant instructions to the preheader.
>
> Also, it does itself host some invariant instructions but only on the
> header and very limited ones.
>
>
>
> Kind regards,
>
> Stefanos Baziotis
>
>
>
> P.S. I re-CC'd the other participants.
>
>
>
>
>
>
>
>
> Στις Σάβ, 21 Μαρ 2020 στις 8:41 μ.μ., ο/η Aditya K via llvm-dev <
> llvm-dev at lists.llvm.org> έγραψε:
>
>
>
> hi,
>
> I had an implementation of loop-rotation that peels the loop such that
> each conditional is executed at least once.
>
> https://reviews.llvm.org/D22630
>
>
>
> This helps with LICM when instructions inside a conditional is loop
> invariant. The patch has decent number of test cases.
>
> All the requested comments were addressed at that time. I'm happy to
> rebase and put the patch again.
>
>
>
> -Aditya
>
> _______________________________________________
>
> LLVM Developers mailing list
>
> llvm-dev at lists.llvm.org
>
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200322/fba87bff/attachment.html>


More information about the llvm-dev mailing list