[llvm-dev] [GlobalISel] Prioritizing long patterns in combiner over short ones

Jay Foad via llvm-dev llvm-dev at lists.llvm.org
Thu Dec 17 02:14:40 PST 2020


I am really surprised that "the combiner runs top-down". Surely it's
better to combine smaller sub-expressions before combining larger
expressions? Or is there actually a good reason to keep the top-down
order??

DAGCombiner also runs mostly top-down (but it can also add nodes to
the worklist in a bottom-up direction for certain cases). The top-down
order causes problems when you have deep expressions trees that could
be simplified away to nothing. Outer combines see these subexpression
unsimplified. They can use recursive helper functions like
computeKnownBits to try to analyse the unsimplified expression, but
the recursive helper functions typically have a max recursion depth of
6. which is easy to hit.

DAGCombiner is so embedded now that it is hard to change the basic
top-down order, but I would hope we could change the GlobalISel
combiner.

Jay.

On Tue, 15 Dec 2020 at 15:09, Dominik Montada via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
>
> Hi,
>
> I'm currently writing target specific combiners with GlobalISel. I have
> a case where a sub-node of a larger pattern also matches another,
> smaller combiner pattern. Because the combiner runs top-down, the
> smaller pattern is matched before the larger pattern has a chance to be
> matched. Do I have to teach my larger pattern to handle this case or is
> there a better way to do this?
>
> More importantly, are there any plans to improve this behavior?
>
> Cheers,
>
> Dominik
>
> --
> ----------------------------------------------------------------------
> Dominik Montada                   Email: dominik.montada at hightec-rt.com
> HighTec EDV-Systeme GmbH          Phone: +49 681 92613 19
> Europaallee 19                    Fax:   +49-681-92613-26
> D-66113 Saarbrücken               WWW: http://www.hightec-rt.com
>
> Managing Director: Vera Strothmann
> Register Court: Saarbrücken, HRB 10445, VAT ID: DE 138344222
>
> This e-mail may contain confidential and/or privileged information. If
> you are not the intended recipient please notify the sender immediately
> and destroy this e-mail. Any unauthorised copying, disclosure or
> distribution of the material in this e-mail is strictly forbidden.
> ---
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list