Multi-Level IR Compiler Framework


This section contains a collection of documents describing the motivation and rationale for some of the design decisions behind MLIR.

MLIR: Incremental Application to Graph Algorithms in ML Frameworks
A discussion of how the adoption of MLIR can be taken in incremental steps, with each step providing tangible benefits along the way. Refutes the idea that full adoption of MLIR is required before we can reap the benefits of MLIR.
MLIR Rationale
Introduces the motivation for MLIR and captures design discussions and decisions made for various core features of MLIR.
Generic DAG Rewriter Infrastructure Rationale
Details the rationale behind a general DAG-to-DAG rewrite infrastructure for MLIR.
Linalg Dialect Rationale: The Case for Compiler-Friendly Custom Operations
Describes the key design principles that led to the existing implementation of Linalg and lessons learned along the way.
MLIR: The case for a simplified polyhedral form
An early design proposal exploring the tradeoffs of using a simplified form for polyhedral compiler techniques in MLIR instead of the traditional polyhedral schedule list form.
Usage of ‘const’ in MLIR, for core IR types
Explains the rationale for eschewing the use of const entirely for the core IR types in MLIR.

Rationale Docs