[llvm-commits] Using SCEVExpander for Polly (was Re: [PATCH] Multidimensional Array Index Delinearization Analysis)
Andrew Trick
atrick at apple.com
Wed Oct 10 17:24:59 PDT 2012
On Oct 10, 2012, at 1:32 PM, Sebastian Pop <spop at codeaurora.org> wrote:
> Hi Andy,
>
> On Mon, Oct 1, 2012 at 1:00 PM, Andrew Trick <atrick at apple.com> wrote:
>> A related problem is that we don't know where the boundary of SCEV analysis should be. It is designed as a global analysis, but the client usually wants an expression only involving the current loop nest. LCSSA bounds the analysis in some cases, but it is entirely arbitrary.
>>
>> So, for your sibling loops:
>> for i
>> for j
>> for k
>>
>> Recurrences over k may or may not contain recurrences over i.
>
> The way I implemented the scalar evolution analysis in GCC is to be
> a function of a loop nest: that restricts the scope of the analysis.
> So the analysis is split into two phases: first a symbolic analysis bounded
> to the loop containing the analyzed scalar, and then an instantiation
> phase that will analyze and instantiate all the symbolic names in an outer
> loop nest.
>
> You may want to have a look at this paper that describes this "delayed"
> mechanism: Induction Variable Analysis with Delayed Abstractions.
> http://www.cri.ensmp.fr/classement/doc/A-371.pdf
That makes sense to me. Thanks for pointing me to your work. It's a great reference for anyone thinking about improving SCEV.
-Andy
More information about the llvm-commits
mailing list