mlir::populateLoopToStdConversionPatterns(patterns, &getContext());
mlir::populateStdToLLVMConversionPatterns(typeConverter, patterns);
- // The only remaining operation to lower from the `toy` dialect, is the
+ // The only remaining operation, to lower from the `toy` dialect, is the
// PrintOp.
patterns.insert<PrintOpLowering>(&getContext());
```
DEFINE_SYM_KIND_RANGE(TOY) // Toy language (tutorial) Dialect
// The following ranges are reserved for experimenting with MLIR dialects in a
-// private context without having to register them here.
+// private context.
DEFINE_SYM_KIND_RANGE(PRIVATE_EXPERIMENTAL_0)
```
This new operation materializes the Nth element of a `struct` value.
```mlir
- %0 = toy.struct_constant [
- dense<[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]> : tensor<2x3xf64>
- ] : !toy.struct<tensor<*xf64>>
+ // Using %0 from above
%1 = toy.struct_access %0[0] : !toy.struct<tensor<*xf64>> -> tensor<*xf64>
```
```
We have several `toy.struct_access` operations that access into a
-`toy.struct_constant`. As detailed in [chapter 3](Ch-3.md), we can add folders
-for these `toy` operations by setting the `hasFolder` bit on the operation
-definition and providing a definition of the `*Op::fold` method.
+`toy.struct_constant`. As detailed in [chapter 3](Ch-3.md) (FoldConstantReshape),
+we can add folders for these `toy` operations by setting the `hasFolder` bit
+on the operation definition and providing a definition of the `*Op::fold`
+method.
```c++
/// Fold constants.