[llvm-dev] Question on induction variable simplification pass
Sanjoy Das via llvm-dev
llvm-dev at lists.llvm.org
Mon Apr 17 11:16:38 PDT 2017
Btw, I just noticed the triple response; sorry about that. Not sure
what happened -- possibly a combination of operator error and spotty
On Mon, Apr 17, 2017 at 11:10 AM, Chawla, Pankaj
<pankaj.chawla at intel.com> wrote:
> Hi Sanjoy,
> Thanks for pointing me in the right direction. I am not really familiar with this piece of code. I will study it and then put up a patch for review.
> -----Original Message-----
> From: Sanjoy Das [mailto:sanjoy at playingwithpointers.com]
> Sent: Sunday, April 16, 2017 9:31 PM
> To: llvm-dev at lists.llvm.org; Chawla, Pankaj
> Subject: RE: [llvm-dev] Question on induction variable simplification pass
> Hi Pankaj,
> On April 14, 2017 at 4:55:16 PM, Chawla, Pankaj (pankaj.chawla at intel.com) wrote:
>> I have attached the IR I got by compiling with -O2. This is just before we widen the IV.
>> To get the backedge taken count info I ran indvars on it and then replaced zext with sext.
>> I think regardless of where we decide to add this transformation in
>> the pipeline, it should try to preserve as much information as it can.
>> This means that we should generate sext for signed IVs and vice-versa.
>> I believe this is a better approach as it preserves the information directly in the IR as opposed to relying on ScalarEvolution to deduce it.
> I'll be happy to review patches making indvars behave better here (i.e. not "break" loop trip counts like this).
> I don't think the IV is the most relevant bit here though -- it looks like (only a guess) indvars is faltering here:
> and that logic needs to be made smarter to account for how much the RHS of the LFTR'ed exit condition is simplified after extension.
>> Moving it to a different location can be done separately.
>> Do you agree?
> Sounds good!
> -- Sanjoy
More information about the llvm-dev