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-ch4", 84 srcs = [ 85 "mlir/Dialect.cpp", 86 "mlir/MLIRGen.cpp", 87 "mlir/ShapeInferencePass.cpp", 88 "mlir/ToyCombine.cpp", 89 "parser/AST.cpp", 90 "toyc.cpp", 91 ] + glob(["include/toy/*.h"]), 92 includes = ["include/"], 93 deps = [ 94 ":ToyCombineIncGen", 95 ":ToyInterfacesIncGen", 96 ":ToyOpsIncGen", 97 "//llvm:Support", 98 "//mlir:Analysis", 99 "//mlir:BytecodeReader", 100 "//mlir:CallOpInterfaces", 101 "//mlir:CastInterfaces", 102 "//mlir:FunctionInterfaces", 103 "//mlir:IR", 104 "//mlir:InliningUtils", 105 "//mlir:Parser", 106 "//mlir:Pass", 107 "//mlir:SideEffectInterfaces", 108 "//mlir:Support", 109 "//mlir:TransformUtils", 110 "//mlir:Transforms", 111 ], 112) 113