From: Manuel Freiberger Date: Sat, 9 Nov 2019 20:14:39 +0000 (-0800) Subject: Add a short TableGen HowTo to tutorial chapter 2. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1328f93e9180c32a46c89bf5114e137db75c90ef;p=platform%2Fupstream%2Fllvm.git Add a short TableGen HowTo to tutorial chapter 2. Add a note to chapter 2 of the Toy tutorial stating how to invoke mlir-tblgen to check the generated C++ code. IMHO this is incredibly useful when getting acquainted with TableGen/ODS. Closes tensorflow/mlir#228 COPYBARA_INTEGRATE_REVIEW=https://github.com/tensorflow/mlir/pull/228 from ombre5733:toy-ch2-howto-mlir-tblgen a051a3734ca8bbf4f12027fe737aca07c64ca59d PiperOrigin-RevId: 279518989 --- diff --git a/mlir/g3doc/Tutorials/Toy/Ch-2.md b/mlir/g3doc/Tutorials/Toy/Ch-2.md index 0e1ffe0..c444ebe 100755 --- a/mlir/g3doc/Tutorials/Toy/Ch-2.md +++ b/mlir/g3doc/Tutorials/Toy/Ch-2.md @@ -330,6 +330,18 @@ def ConstantOp : Toy_Op<"constant", [NoSideEffect]> { } ``` +At this point you probably might want to know what the C++ code generated by +TableGen looks like. Simply run the `mlir-tblgen` command with the +`gen-op-decls` or the `gen-op-defs` action like so: + +``` +${build_root}/bin/mlir-tblgen -gen-op-defs ${mlir_src_root}/examples/toy/Ch2/include/toy/Ops.td -I ${mlir_src_root}/include/ +``` + +Depending on the selected action, this will print either the `ConstantOp` class +declaration or its implementation. Comparing this output to the hand-crafted +implementation is incredibly useful when getting started with TableGen. + #### Defining Arguments and Results With the shell of the operation defined, we can now provide the @@ -539,7 +551,8 @@ module { You can build `toyc-ch2` and try yourself: `toyc-ch2 test/codegen.toy -emit=mlir -mlir-print-debuginfo`. We can also check our RoundTrip: `toyc-ch2 test/codegen.toy -emit=mlir -mlir-print-debuginfo 2> codegen.mlir` followed by -`toyc-ch2 codegen.mlir -emit=mlir`. +`toyc-ch2 codegen.mlir -emit=mlir`. You should also use `mlir-tblgen` on the +final definition file and study the generated C++ code. At this point MLIR knows about our Toy dialect and operations. In the [next chapter](Ch-3.md) we will leverage our new dialect to implement some