diff --git a/mlir/docs/Tutorials/Toy/Ch-1.md b/mlir/docs/Tutorials/Toy/Ch-1.md --- a/mlir/docs/Tutorials/Toy/Ch-1.md +++ b/mlir/docs/Tutorials/Toy/Ch-1.md @@ -1,43 +1,7 @@ -# Chapter 1: Toy Tutorial Introduction +# Chapter 1: Toy Language and AST [TOC] -This tutorial runs through the implementation of a basic toy language on top of -MLIR. The goal of this tutorial is to introduce the concepts of MLIR; in -particular, how [dialects](../../LangRef.md#dialects) can help easily support -language specific constructs and transformations while still offering an easy -path to lower to LLVM or other codegen infrastructure. This tutorial is based on -the model of the -[LLVM Kaleidoscope Tutorial](https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html). - -This tutorial assumes you have cloned and built MLIR; if you have not yet done -so, see -[Getting started with MLIR](https://mlir.llvm.org/getting_started/). - -## The Chapters - -This tutorial is divided in the following chapters: - -- [Chapter #1](Ch-1.md): Introduction to the Toy language and the definition - of its AST. -- [Chapter #2](Ch-2.md): Traversing the AST to emit a dialect in MLIR, - introducing base MLIR concepts. Here we show how to start attaching - semantics to our custom operations in MLIR. -- [Chapter #3](Ch-3.md): High-level language-specific optimization using - pattern rewriting system. -- [Chapter #4](Ch-4.md): Writing generic dialect-independent transformations - with Interfaces. Here we will show how to plug dialect specific information - into generic transformations like shape inference and inlining. -- [Chapter #5](Ch-5.md): Partially lowering to lower-level dialects. We'll - convert some of our high level language specific semantics towards a generic - affine oriented dialect for optimization. -- [Chapter #6](Ch-6.md): Lowering to LLVM and code generation. Here we'll - target LLVM IR for code generation, and detail more of the lowering - framework. -- [Chapter #7](Ch-7.md): Extending Toy: Adding support for a composite type. - We'll demonstrate how to add a custom type to MLIR, and how it fits in the - existing pipeline. - ## The Language This tutorial will be illustrated with a toy language that we’ll call “Toy” diff --git a/mlir/docs/Tutorials/Toy/Ch-2.md b/mlir/docs/Tutorials/Toy/Ch-2.md old mode 100755 new mode 100644 diff --git a/mlir/docs/Tutorials/Toy/_index.md b/mlir/docs/Tutorials/Toy/_index.md new file mode 100644 --- /dev/null +++ b/mlir/docs/Tutorials/Toy/_index.md @@ -0,0 +1,37 @@ +# Toy Tutorial + +This tutorial runs through the implementation of a basic toy language on top of +MLIR. The goal of this tutorial is to introduce the concepts of MLIR; in +particular, how [dialects](../../LangRef.md#dialects) can help easily support +language specific constructs and transformations while still offering an easy +path to lower to LLVM or other codegen infrastructure. This tutorial is based on +the model of the +[LLVM Kaleidoscope Tutorial](https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html). + +This tutorial assumes you have cloned and built MLIR; if you have not yet done +so, see +[Getting started with MLIR](https://mlir.llvm.org/getting_started/). + +This tutorial is divided in the following chapters: + +- [Chapter #1](Ch-1.md): Introduction to the Toy language and the definition + of its AST. +- [Chapter #2](Ch-2.md): Traversing the AST to emit a dialect in MLIR, + introducing base MLIR concepts. Here we show how to start attaching + semantics to our custom operations in MLIR. +- [Chapter #3](Ch-3.md): High-level language-specific optimization using + pattern rewriting system. +- [Chapter #4](Ch-4.md): Writing generic dialect-independent transformations + with Interfaces. Here we will show how to plug dialect specific information + into generic transformations like shape inference and inlining. +- [Chapter #5](Ch-5.md): Partially lowering to lower-level dialects. We'll + convert some of our high level language specific semantics towards a generic + affine oriented dialect for optimization. +- [Chapter #6](Ch-6.md): Lowering to LLVM and code generation. Here we'll + target LLVM IR for code generation, and detail more of the lowering + framework. +- [Chapter #7](Ch-7.md): Extending Toy: Adding support for a composite type. + We'll demonstrate how to add a custom type to MLIR, and how it fits in the + existing pipeline. + +The [first chapter](Ch-1.md) will introduce the Toy language and AST. diff --git a/mlir/docs/Tutorials/_index.md b/mlir/docs/Tutorials/_index.md new file mode 100644 --- /dev/null +++ b/mlir/docs/Tutorials/_index.md @@ -0,0 +1,4 @@ +# Tutorials + +This section contains multiple MLIR tutorials. +See [Toy tutorial](toy) for an introduction to using MLIR infrastructure.