[llvm-dev] questionabout loop rotation

Stefanos Baziotis via llvm-dev llvm-dev at lists.llvm.org
Fri Mar 20 04:54:28 PDT 2020


Hi Jerry,

I also didn't understand the example. Note that very recently,
documentation about loop terminology was added
to the loop terminology:
https://llvm.org/docs/LoopTerminology.html#rotated-loops. We tried to do it
in a tutorial style so it may help.
If it does not answer your question, please post the LLVM IR example.

Kind regards,
Stefanos

Στις Παρ, 20 Μαρ 2020 στις 9:26 π.μ., ο/η Johannes Doerfert via llvm-dev <
llvm-dev at lists.llvm.org> έγραψε:

> Hi Jerry,
>
>
> I cannot follow your example nor do I understand your question.
>
> Could you please post a minimal but complete LLVM-IR example and rephrase
> the question.
>
>
> Thanks,
>
>   Johannes
>
>
>
> On 3/19/20 8:47 PM, 林政宗 via llvm-dev wrote:
>
> Hi,
> I have read an email from the mail list. And I have a question about loop
> rotation. What is it if it is the case below.
> --------------------------------------------------------------------------
> loop:
> A br X B br Y C br loop, Z
> ------------------------------------------------- Thanks! Jerry [LLVMdev]
> Loop rotation and loop inversion in LLVM? *Andrew Trick* atrick at
> apple.com *Mon May 20 10:36:00 PDT 2013*
>
>    - Previous message: [LLVMdev] Loop rotation and loop inversion in
>    LLVM? <http://lists.llvm.org/pipermail/llvm-dev/2013-May/062185.html>
>    - Next message: [LLVMdev] Vararg Intrinsics still supported?
>    <http://lists.llvm.org/pipermail/llvm-dev/2013-May/062186.html>
>    - *Messages sorted by:* [ date ]
>    <http://lists.llvm.org/pipermail/llvm-dev/2013-May/date.html#62260> [
>    thread ]
>    <http://lists.llvm.org/pipermail/llvm-dev/2013-May/thread.html#62260> [
>    subject ]
>    <http://lists.llvm.org/pipermail/llvm-dev/2013-May/subject.html#62260> [
>    author ]
>    <http://lists.llvm.org/pipermail/llvm-dev/2013-May/author.html#62260>
>
> ------------------------------
>
> On May 16, 2013, at 5:07 PM, Paul Sokolovsky <pmiscml at gmail.com <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>> wrote:
>
> >* Hello,
> *> >* I'd be interested in knowing which pass performs loop inversion, i.e.
> *>* transforms while loop into do/while wrapped with if. So, it's pretty
> *>* easy to understand concept, http://en.wikipedia.org/wiki/Loop_inversion <http://en.wikipedia.org/wiki/Loop_inversion>
> *>* provides description of how its done and motivation, googling gives
> *>* several relevant references, i.e. it's pretty settled term.
> *> >* I also see this transform to be actually performed on trivial strlen
> *>* function by clang -O2. However opt --help or grepping LLVM doesn't give
> *>* any hints.
> *> >* However, -loop-rotate calls attention, described as "A simple loop
> *>* rotation transformation." However, Wikipedia doesn't gives hits for
> *>* that related to compilation/optimization theory, nor google hits are
> *>* relevant either - mostly LLVM-related hits just mentioning the term.
> *> >* Trying -loop-rotate, I see loop being converted to post-condition, but
> *>* don't see if wrapper around it.
> *> >* So, can anyone suggest if LLVM loop rotation is related to loop
> *>* inversion in Wikipedia terms, and if not, what it is.
> *
> On simple ‘for’ loops, rotation degenerates to inversion. Rotation is a more general transform that spans the range from inversion to loop peeling...
>
> loop:
> A
> br X
> B
> br loop, Y
>
> A’
> br X
> loop:
> B
> br Y
> A
> br loop, X
>
> Sorry I don’t know of a text-book reference off-hand. I’ve seen it in practice before and assumed it was pretty standard. In LLVM it’s mostly used to put loops in a canonical form, but it’s also a cheap and dirty way to expose LICM. Another benefit is simplifying trip count expressions.
>
> >* And I hope that this feedback will allow maintainers to make
> *>* documentation clearer and more user-friendly.
> *
> Me too :) Not sure if I’ll get around to it, but I’d be happy to review a patch.
>
> -Andy
>
> >* Thanks,
> *>* Paul                          mailto:pmiscml at gmail.com <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
> *>* _______________________________________________
> *>* LLVM Developers mailing list
> *>* LLVMdev at cs.uiuc.edu <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>         http://llvm.cs.uiuc.edu <http://llvm.cs.uiuc.edu/>
> *>* http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev>
> *
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130520/49bb14f9/attachment.html>
>
>
>
>
>
>
> _______________________________________________
> LLVM Developers mailing listllvm-dev at lists.llvm.orghttps://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
> _______________________________________________
> 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/20200320/fe1b445d/attachment.html>


More information about the llvm-dev mailing list