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

Dominik Montada via llvm-dev llvm-dev at lists.llvm.org
Tue Dec 15 08:19:25 PST 2020


Hi Jason,


thanks for the reply. That's what we're already using but it's not 
useful in this case. It seems that the order only actually matters when 
the roots are the same. In my case, the roots are different. In one case 
I'm trying to match a G_AND and in the other one I'm trying to match 
G_OR. The G_AND pattern also shows up in the larger G_OR pattern. Since 
the combiner walks top-down, it sees the G_AND before the G_OR and 
matches the smaller pattern. When it then reaches the G_OR later on, the 
larger pattern doesn't match anymore because the G_AND has been combined 
away. If the combiner would walk bottom-up, it would see the G_OR before 
the G_AND and my use-case would work as expected.


So this is not a problem of priority, but rather a problem of the 
traversal that the combiner does. I do understand though that simply 
switching the traversal to bottom-up won't work in every case and might 
even cause the same problem.


Cheers,


Dominik


Am 15.12.20 um 17:05 schrieb Jason Eckhardt:
> GICombineGroup may be of use:
>
> // A group of combine rules that can be added to a GICombiner or 
> another group.
> class GICombineGroup<list<GICombine> rules> : GICombine {
>   // The rules contained in this group. The rules in a group are 
> flattened into
>   // a single list and sorted into whatever order is most efficient. 
> However,
>   // they will never be re-ordered such that behaviour differs from the
>   // specified order. It is therefore possible to use the order of 
> rules in this
>   // list to describe priorities.
>   let Rules = rules;
> }
>
>
> ------------------------------------------------------------------------
> *From:* llvm-dev <llvm-dev-bounces at lists.llvm.org> on behalf of 
> Dominik Montada via llvm-dev <llvm-dev at lists.llvm.org>
> *Sent:* Tuesday, December 15, 2020 9:09 AM
> *To:* LLVM Developers' List <llvm-dev at lists.llvm.org>
> *Subject:* [llvm-dev] [GlobalISel] Prioritizing long patterns in 
> combiner over short ones
> External email: Use caution opening links or attachments
>
>
> 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.
> ---
>
-- 
----------------------------------------------------------------------
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.
---

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20201215/5dc3deb4/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 6822 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20201215/5dc3deb4/attachment.bin>


More information about the llvm-dev mailing list