[llvm-dev] InstCombine, graph rewriting, Equality saturation

Sean Silva via llvm-dev llvm-dev at lists.llvm.org
Mon Sep 11 08:50:05 PDT 2017


On Mon, Sep 11, 2017 at 8:14 AM, Daniel Neilson via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

>
> Just thinking out loud…. I’m really not familiar with the vast majority of
> what instcombine does, so please excuse me if my naiveté is too obvious. I
> can’t help but notice all of the uses of ‘and’ in Daniel B’s description of
> what instcombine is right now:
>
> > On Sep 8, 2017, at 11:27 PM, Daniel Berlin via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> >
> > FWIW, Before getting to "how to do it", I think InstCombine needs an
> actual goal.
> > Right now it's "do a bunch of instruction combination and
> canonicalization and random kinds of semi-local optimization with some
> weird analysis and other stuff in the middle.
> > Iterate this as hard as we can"
> > Nobody can really draw any real dividing line for what should be there
> or not except based on how easy or expensive it is to shove it in.
> > That's a recipe for pass creep.
>
> This makes me wonder… is it sensible to be talking about splitting up
> instcombine into multiple separate passes? Would such a thing even be
> possible? For example, split by functionality into separate passes that
> each do one of:
> * instruction combinations
> * canonicalization
> * semi-local optimizations
> * etc…
>
>  Or something like that.
>
>  As separate passes, each would probably have a natural way to be
> implemented effectively and those implementations might vary.
>

One obstacle to that is that currently instcombine has an internal
fixed-point iteration that it does.

So when splitting it into separate passes we would need to either add
fixed-point iteration to the pass manager running the separate instcombine
passes (extending the pass management in this way is doable and has been
explored in the past, e.g. https://www.youtube.com/watch?v=c7iP43an5_Q ) or
demonstrate/measure that we don't regress without the fixed-point iteration
across separate instcombine passes.

-- Sean Silva


>
> -Daniel
>
> ---
> Daniel Neilson, Ph.D.
> Azul Systems
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://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/20170911/1dcbd156/attachment.html>


More information about the llvm-dev mailing list