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