• Canonicalization in MLIR There have been enough RFCs, presentations and discussions about what does it mean, in MLIR, to have a canonical form and how to converge to such forms. • There also, in equal measure, a disagreement (implicit or explicit) of what we mean about canonical and normal forms, and how do we keep them upstream and use them downstream. • To help steer this discussion, I have recently written adocument, with the help of@ftynse@matthias-springer@jpienaar@KFAF, that exposes the current approach, discusses the pros and cons, and proposes some changes to the status quo. • This post is the first step towards a common understanding, documented, agreed and implemented, of canonical and normal forms in MLIR, as well as the upstream infrastructure to keep them verified, and the APIs to keep downstream infrastructure in sync. • The document is a dump of a lot of things, and the hope of a single reference to make this discussion clearer. • So far, nothing actionable.

Article Summaries:

  • Thanks Renato. If there will be small - but significant - changes then compilers which use existing canonicalization pass out of the box will be impacted. Much like ‘old bufferizer’ new ‘one-shot-bufferizer’ historical precedence, would it be easier to have a new canonicalizer approach that we can all participate in? just a suggestion. thanks. Someone mentioned you in a post. There have been enough RFCs, presentations and discussions about what does it mean, in MLIR, to have a canonical form and how to converge to such forms. There also, in equal measure, a disagreement (implicit or explicit)

Sources: