<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Nov 29, 2018, at 07:31, Quentin Colombet <<a href="mailto:quentin.colombet@gmail.com" class="">quentin.colombet@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><div dir="auto" class="">Hi David,</div></div><div class=""><br class=""><div class="gmail_quote"><div dir="ltr" class="">Le jeu. 29 nov. 2018 à 07:04, David Greene <<a href="mailto:dag@cray.com" class="">dag@cray.com</a>> a écrit :<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Quentin Colombet <<a href="mailto:quentin.colombet@gmail.com" target="_blank" class="">quentin.colombet@gmail.com</a>> writes:<br class="">
<br class="">
>> I don't think I'd want to see things go that way.  Current SDISel<br class="">
>> patterns are very limited and impose a lot of hacky workarounds for<br class="">
>> not-too-uncommon things.  If anything, I anticipate migrating isel to<br class="">
>> what Daniel outlines rather than migrating combine to SDISel and then<br class="">
>> migrating to yet another thing after that.<br class="">
><br class="">
> Interesting, I wasn't seeing this that way (the porting combine to SDISel bit).<br class="">
<br class="">
Ok.  I though that's what you meant by, "use the syntax we already have<br class="">
for SDISel."  What do you have in mind?</blockquote><div dir="auto" class=""><br class=""></div><div dir="auto" class="">That’s what I meant but for me it was not porting. I guess you’re thinking porting because of all your SDISel C++ code that you would be writing again in tablegen. I was thinking we were developing new code, not porting the C++ code, which is a mistake I realize now.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="">
> The advantage I was seeing in reusing what we have is that ISel and<br class="">
> combines are fundamentally the same problem <br class="">
<br class="">
Yes!<br class="">
<br class="">
> and any improvement (in particular compile time) that we would have<br class="">
> made to the existing matching state machine would have benefited<br class="">
> everything.<br class="">
<br class="">
Whatever underlying algorithm is used, the TableGen syntax for the<br class="">
current SDISel could be improved.  It's never handled multiple outputs<br class="">
well, subregisters cause pain and so on.</blockquote><div dir="auto" class=""><br class=""></div><div dir="auto" class="">Agree.</div><div dir="auto" class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="">
<br class="">
I'm agnostic on the underlying algorithm.</blockquote><div dir="auto" class=""><br class=""></div><div dir="auto" class="">The algorithm is my concern to be honest :). The syntax as long as it is easy enough and expressive enough, I don’t really care. Though I keep thinking MIR is not the right abstraction.</div><div dir="auto" class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="">
<br class="">
> One thing I assumed from this proposal is that the new syntax would<br class="">
> imply a new matching state machine and thus fragmented our effort.<br class="">
<br class="">
I think Daniel's intent is indeed to craft a new algorithm, but he<br class="">
should confirm that.  I don't know enough about the current algorithm to<br class="">
form an opinion on whether a new algorithm is justified.  I suspect the<br class="">
current algorithm reflects constraints in the current TableGen syntax,<br class="">
where it is hard to do certain realtively common things, but I don't<br class="">
know that for sure.</blockquote><div dir="auto" class=""><br class=""></div><div dir="auto" class="">Agree and that’s where I believe we will start to fragment our effort.</div></div></div></div></blockquote><div><br class=""></div><div>I do have plans for a new combine algorithm but I'm still expecting to share the underlying matching state machine generator/optimizer/runner between Combine and ISel. The algorithm work I'm looking into is more about how it decides what matching rules to apply and when to apply them rather than how the pattern matching happens. I'll go into more detail on that in a separate thread once I've tested the idea on real code. Even if that ultimately fails and we stick with the current core algorithm, there's still some useful features that are enabled by having the tablegen definitions such as ruleset bisection, rule coverage, testing individual rules, opting out of certain target independent combines, less matching boilerplate, etc.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><div class="gmail_quote"><div dir="auto" class="">Cheers,</div><div dir="auto" class="">Q</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="">
<br class="">
                               -David<br class="">
</blockquote></div></div>
</div></blockquote></div><br class=""></body></html>