[LLVMdev] The implementation algorithm behind LLVM's RegionInfo class
Paul Vario
paul.paul.mit at gmail.com
Fri Jun 27 13:04:39 PDT 2014
Hi Tobi,
I have one additional question about the RegionInfo::isRegion
function. In the second case (i.e. Entry dominates Exit), why is checking
the following two conditions are equivalent to checking it's a refined
region:
For any BB in DF(exit), 1) BB should be in DF(entry)
2) BB reachable only from entry through
a path passing exit.
I.e., why is checking these two conditions is equivalent to ensure
single-entry, single-exit in the sense of Refined Region.
Best Regards,
Paul
On Thu, Feb 6, 2014 at 3:40 PM, Tobias Grosser <tobias at grosser.es> wrote:
> On 02/06/2014 09:14 PM, Paul Vario wrote:
>
>> Hi Tobias,
>>
>> Thanks a lot for the detailed reply. I am working on several new
>> optimizations for OpenCL kernels for a DSP architecture. The project
>> itself
>> has an NDA associated with it, so I cannot go into more details, but the
>> source will be open to public after completion. One of the first steps is
>> to serialize the work-items in a work-group (e.g., insert nested loops
>> around REGIONs in between barriers). At this point, I thought I should
>> implement a full-featured structural analysis, but some one in my team
>> suggested to first explore what was already in the LLVM. That's what lead
>> me to the RegionInfo class. If it's not much trouble, could you send the
>> draft to my forum email? Also, are you aware of any plan on having the
>> interval/structural analysis supported in LLVM. Thanks again.
>>
>
> Maybe this is interesting to you:
>
> lib/Transforms/Scalar/StructurizeCFG.cpp
>
>
> P.S. One thing I need to find out from reading the implementation is why a
>> sequence of basic blocks do not get to form a region as a whole.
>>
>
> A sequence of basic blocks can form a region. The reason the RegionInfo
> does not form such reason is that there is no canonical way to form such
> regions. Hence, RegionInfo is only forming minimal regions, which can then
> be easily joined to larger reasons by connecting sequences of them (e.g.
> using the expandRegion()).
>
> Btw, depending how complex your transformations will be, you might also be
> interested in polly.llvm.org or other automatic transformation in the
> area of automatic GPU/accelerator code generation. Those won't be finished
> solutions, but the frameworks/algorithms that exist there may allow to
> develop optimizations for your hardware a lot faster.
>
> Tobi
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140627/b93f2155/attachment.html>
More information about the llvm-dev
mailing list