1# Rationale
2
3This section contains a collection of documents describing the motivation and
4rationale for some of the design decisions behind MLIR.
5
6[MLIR: Incremental Application to Graph Algorithms in ML Frameworks](MLIRForGraphAlgorithms.md)
7:   A discussion of how the adoption of MLIR can be taken in incremental steps,
8    with each step providing tangible benefits along the way. Refutes the idea
9    that full adoption of MLIR is required before we can reap the benefits of
10    MLIR.
11
12[MLIR Rationale](Rationale.md)
13:   Introduces the motivation for MLIR and captures design discussions and
14    decisions made for various core features of MLIR.
15
16[Generic DAG Rewriter Infrastructure Rationale](RationaleGenericDAGRewriter.md)
17:   Details the rationale behind a general DAG-to-DAG rewrite infrastructure for
18    MLIR.
19
20[Linalg Dialect Rationale: The Case for Compiler-Friendly Custom Operations](RationaleLinalgDialect.md)
21:   Describes the key design principles that led to the existing implementation
22    of Linalg and lessons learned along the way.
23
24[MLIR: The case for a simplified polyhedral form](RationaleSimplifiedPolyhedralForm.md)
25:   An early design proposal exploring the tradeoffs of using a simplified form
26    for polyhedral compiler techniques in MLIR instead of the traditional
27    polyhedral schedule list form.
28
29[Usage of 'const' in MLIR, for core IR types](UsageOfConst.md)
30:   Explains the rationale for eschewing the use of `const` entirely for the
31    core IR types in MLIR.
32