Stream: cranelift

Topic: ISLE RFC -- motion to finalize


view this post on Zulip Chris Fallin (Nov 03 2021 at 00:41):

Hi all -- just wanted to leave a note here that (as of yesterday) I made a Motion to Finalize the RFC regarding our instruction-selector DSL. Here is the link: https://github.com/bytecodealliance/rfcs/pull/15. @fitzgen (he/him) gave an excellent presentation on the latest progress yesterday as well (link).

Merging this RFC would mean that we've decided to move forward with defining our instruction-selection backends in Cranelift with the DSL we've been prototyping. The details of the bindings and definitions can of course be tweaked over time, just as for any other part of the codebase.

So far it has a few approvals but I wanted to make sure folks saw this -- especially if you've participated in conversations so far, and are ok with this direction, please do head over to the RFC and let us know if you give final approval! Or, if not, let us know if any issues still remain.

cc @Benjamin Bouvier @Anton Kirilov @Sam Parker @Johnnie Birch @Ulrich Weigand especially, who have participated actively in the last several discussions in our meetings -- thanks for the time and patience on this :-)

Rendered This RFC proposes a new DSL for the instruction selectors in Cranelift, automating the generation of the backends based on a list of term-rewriting rules provided by the backend author. Th...
ISLE Instruction Selection DSL Update Nick Fitzgerald Cranelift Bi-Weekly 2021-11-01

view this post on Zulip Benjamin Bouvier (Nov 03 2021 at 10:57):

Hi! I was absent from the meeting because of a public holiday here. I was a bit curious about the next steps, especially around the approach: does it mean we're going to have the new system checked in in code in wasmtime soon? And then starting to rewrite incrementally lowering so as to use the new system (as opposed as having the new system be developed on the side, and have a one-time switch of the backends to the new systems entirely)? In the latter cases, do we have benchmarks running on a very frequent basis, to make sure that the compile times don't get bad?

view this post on Zulip Chris Fallin (Nov 03 2021 at 15:59):

Hey Ben -- sorry, didn't realize the date was a conflict for .fr! (FWIW this seems like a totally valid reason to ask for agenda items to move in the future, if important folks can't make it :-) )

The tl;dr of my answer is (i) gradual, not all-at-once switch, and (ii) yes, we'll benchmark, and avoid any perf regressions. In more detail:

After linearizing rule patterns for a given term, but before we insert those linear match ops into the trie, we should do a custom topological sort of the linear match ops's data-flow graph tha...

Last updated: Dec 23 2024 at 13:07 UTC