Index: mlir/docs/Tutorials/Toy/Ch-2.md =================================================================== --- mlir/docs/Tutorials/Toy/Ch-2.md +++ mlir/docs/Tutorials/Toy/Ch-2.md @@ -118,7 +118,7 @@ MLIR is designed to be a completely extensible system, and as such, the infrastructure has the capability to opaquely represent all of its core components: attributes, operations, types, etc. This allows MLIR to parse, -represent, and [round-trip](../../Glossary.md#round-trip) any valid IR. For +represent, and [round-trip](https://mlir.llvm.org/getting_started/Glossary/#round-trip) any valid IR. For example, we could place our Toy operation from above into an `.mlir` file and round-trip through *mlir-opt* without registering anything: Index: mlir/docs/Tutorials/Toy/Ch-5.md =================================================================== --- mlir/docs/Tutorials/Toy/Ch-5.md +++ mlir/docs/Tutorials/Toy/Ch-5.md @@ -24,7 +24,7 @@ # Dialect Conversions MLIR has many different dialects, so it is important to have a unified framework -for [converting](../../Glossary.md#conversion) between them. This is where the +for [converting](https://mlir.llvm.org/getting_started/Glossary/#conversion) between them. This is where the `DialectConversion` framework comes into play. This framework allows for transforming a set of `illegal` operations to a set of `legal` ones. To use this framework, we need to provide two things (and an optional third): @@ -34,7 +34,7 @@ - This is the formal specification of what operations or dialects are legal for the conversion. Operations that aren't legal will require rewrite patterns to perform - [legalization](../../Glossary.md#legalization). + [legalization](https://mlir.llvm.org/getting_started/Glossary/#legalization). * A set of [Rewrite Patterns](../../DialectConversion.md#rewrite-pattern-specification) Index: mlir/docs/Tutorials/Toy/Ch-6.md =================================================================== --- mlir/docs/Tutorials/Toy/Ch-6.md +++ mlir/docs/Tutorials/Toy/Ch-6.md @@ -16,7 +16,7 @@ Before going over the conversion to LLVM, let's lower the `toy.print` operation. We will lower this operation to a non-affine loop nest that invokes `printf` for each element. Note that, because the dialect conversion framework supports -[transitive lowering](Glossary.md#transitive-lowering), we don't need to +[transitive lowering](https://mlir.llvm.org/getting_started/Glossary/#transitive-lowering), we don't need to directly emit operations in the LLVM dialect. By transitive lowering, we mean that the conversion framework may apply multiple patterns to fully legalize an operation. In this example, we are generating a structured loop nest instead of @@ -86,7 +86,7 @@ combination of `toy`, `affine`, and `std` operations. Luckily, the `std` and `affine` dialects already provide the set of patterns needed to transform them into LLVM dialect. These patterns allow for lowering the IR in multiple stages -by relying on [transitive lowering](Glossary.md#transitive-lowering). +by relying on [transitive lowering](https://mlir.llvm.org/getting_started/Glossary/#transitive-lowering). ```c++ mlir::OwningRewritePatternList patterns;