xref: /llvm-project/utils/bazel/llvm-project-overlay/mlir/examples/toy/Ch6/BUILD.bazel (revision 6e58efac16958ccb99060f4329b48737be7d8d36)
1# Description:
2#   MLIR Tutorial
3
4load("//mlir:tblgen.bzl", "gentbl_cc_library", "td_library")
5
6licenses(["notice"])
7
8package(default_visibility = ["//visibility:public"])
9
10td_library(
11    name = "ToyOpsTdFiles",
12    srcs = [
13        "include/toy/Ops.td",
14        "include/toy/ShapeInferenceInterface.td",
15    ],
16    includes = ["include"],
17    deps = [
18        "//mlir:CallInterfacesTdFiles",
19        "//mlir:CastInterfacesTdFiles",
20        "//mlir:FunctionInterfacesTdFiles",
21        "//mlir:OpBaseTdFiles",
22        "//mlir:SideEffectInterfacesTdFiles",
23    ],
24)
25
26gentbl_cc_library(
27    name = "ToyInterfacesIncGen",
28    tbl_outs = [
29        (
30            ["-gen-op-interface-decls"],
31            "include/toy/ShapeInferenceOpInterfaces.h.inc",
32        ),
33        (
34            ["-gen-op-interface-defs"],
35            "include/toy/ShapeInferenceOpInterfaces.cpp.inc",
36        ),
37    ],
38    tblgen = "//mlir:mlir-tblgen",
39    td_file = "include/toy/ShapeInferenceInterface.td",
40    deps = [":ToyOpsTdFiles"],
41)
42
43gentbl_cc_library(
44    name = "ToyOpsIncGen",
45    tbl_outs = [
46        (
47            ["-gen-op-decls"],
48            "include/toy/Ops.h.inc",
49        ),
50        (
51            ["-gen-op-defs"],
52            "include/toy/Ops.cpp.inc",
53        ),
54        (
55            ["-gen-dialect-decls"],
56            "include/toy/Dialect.h.inc",
57        ),
58        (
59            ["-gen-dialect-defs"],
60            "include/toy/Dialect.cpp.inc",
61        ),
62    ],
63    tblgen = "//mlir:mlir-tblgen",
64    td_file = "include/toy/Ops.td",
65    deps = [":ToyOpsTdFiles"],
66)
67
68gentbl_cc_library(
69    name = "ToyCombineIncGen",
70    strip_include_prefix = "mlir",
71    tbl_outs = [
72        (
73            ["-gen-rewriters"],
74            "mlir/ToyCombine.inc",
75        ),
76    ],
77    tblgen = "//mlir:mlir-tblgen",
78    td_file = "mlir/ToyCombine.td",
79    deps = [":ToyOpsTdFiles"],
80)
81
82cc_binary(
83    name = "toyc-ch6",
84    srcs = [
85        "mlir/Dialect.cpp",
86        "mlir/LowerToAffineLoops.cpp",
87        "mlir/LowerToLLVM.cpp",
88        "mlir/MLIRGen.cpp",
89        "mlir/ShapeInferencePass.cpp",
90        "mlir/ToyCombine.cpp",
91        "parser/AST.cpp",
92        "toyc.cpp",
93    ] + glob(["include/toy/*.h"]),
94    includes = ["include/"],
95    deps = [
96        ":ToyCombineIncGen",
97        ":ToyInterfacesIncGen",
98        ":ToyOpsIncGen",
99        "//llvm:Core",
100        "//llvm:OrcJIT",
101        "//llvm:Support",
102        "//mlir:AffineDialect",
103        "//mlir:AffineToStandard",
104        "//mlir:AffineTransforms",
105        "//mlir:AllPassesAndDialects",
106        "//mlir:Analysis",
107        "//mlir:ArithDialect",
108        "//mlir:ArithToLLVM",
109        "//mlir:BuiltinToLLVMIRTranslation",
110        "//mlir:BytecodeReader",
111        "//mlir:CallOpInterfaces",
112        "//mlir:CastInterfaces",
113        "//mlir:ControlFlowToLLVM",
114        "//mlir:ExecutionEngine",
115        "//mlir:ExecutionEngineUtils",
116        "//mlir:FuncDialect",
117        "//mlir:FuncExtensions",
118        "//mlir:FuncToLLVM",
119        "//mlir:FunctionInterfaces",
120        "//mlir:IR",
121        "//mlir:InliningUtils",
122        "//mlir:LLVMCommonConversion",
123        "//mlir:LLVMDialect",
124        "//mlir:LLVMIRTransforms",
125        "//mlir:LLVMToLLVMIRTranslation",
126        "//mlir:MemRefDialect",
127        "//mlir:MemRefToLLVM",
128        "//mlir:Parser",
129        "//mlir:Pass",
130        "//mlir:SCFDialect",
131        "//mlir:SCFToControlFlow",
132        "//mlir:SideEffectInterfaces",
133        "//mlir:Support",
134        "//mlir:ToLLVMIRTranslation",
135        "//mlir:TransformUtils",
136        "//mlir:Transforms",
137    ],
138)
139