[llvm-dev] questionabout loop rotation

Johannes Doerfert via llvm-dev llvm-dev at lists.llvm.org
Fri Mar 20 00:25:28 PDT 2020


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 />/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 /
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130520/49bb14f9/attachment.html>
> **
>
>
>
>
> _______________________________________________
> 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/30675d16/attachment-0001.html>


More information about the llvm-dev mailing list