• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Description:
2#   The MLIR "Multi-Level Intermediate Representation" Compiler Infrastructure
3
4load("@org_tensorflow//third_party/mlir:tblgen.bzl", "gentbl")
5
6licenses(["notice"])
7
8package(default_visibility = [":friends"])
9
10package_group(
11    name = "subpackages",
12    packages = ["//..."],
13)
14
15package_group(
16    name = "friends",
17    packages = ["//..."],
18)
19
20exports_files([
21    "LICENSE.TXT",
22    "include/mlir/Dialect/LLVMIR/LLVMOps.td",
23    "run_lit.sh",
24])
25
26cc_library(
27    name = "DialectSymbolRegistry",
28    # strip_include_prefix does not apply to textual_hdrs.
29    hdrs = ["include/mlir/IR/DialectSymbolRegistry.def"],
30    strip_include_prefix = "include/mlir/IR",
31    textual_hdrs = ["include/mlir/IR/DialectSymbolRegistry.def"],
32)
33
34gentbl(
35    name = "OpAsmInterfacesIncGen",
36    strip_include_prefix = "include",
37    tbl_outs = [
38        (
39            "-gen-op-interface-decls",
40            "include/mlir/IR/OpAsmInterface.h.inc",
41        ),
42        (
43            "-gen-op-interface-defs",
44            "include/mlir/IR/OpAsmInterface.cpp.inc",
45        ),
46    ],
47    tblgen = ":mlir-tblgen",
48    td_file = "include/mlir/IR/OpAsmInterface.td",
49    td_srcs = [
50        ":OpBaseTdFiles",
51    ],
52)
53
54cc_library(
55    name = "IR",
56    srcs = glob([
57        "lib/IR/*.cpp",
58        "lib/IR/*.h",
59    ]),
60    hdrs = glob([
61        "include/mlir/IR/*.h",
62    ]) + [
63        "include/mlir/Analysis/CallInterfaces.h",
64    ],
65    includes = ["include"],
66    deps = [
67        ":CallOpInterfacesIncGen",
68        ":DialectSymbolRegistry",
69        ":InferTypeOpInterfaceIncGen",
70        ":OpAsmInterfacesIncGen",
71        ":Support",
72        "@llvm-project//llvm:support",
73    ],
74)
75
76cc_library(
77    name = "Pass",
78    srcs = glob([
79        "lib/Pass/*.cpp",
80        "lib/Pass/*.h",
81    ]),
82    hdrs = glob([
83        "include/mlir/Pass/*.h",
84    ]) + [
85        "include/mlir/Analysis/Verifier.h",
86    ],
87    includes = ["include"],
88    linkopts = [
89        "-lm",
90        "-lpthread",
91    ],
92    deps = [
93        ":IR",
94        ":Support",
95        "@llvm-project//llvm:support",
96    ],
97)
98
99# TODO(ntv): Update these to enable simplifying the cmake and build files.
100cc_library(
101    name = "EDSC",
102    srcs = [
103        "lib/EDSC/Builders.cpp",
104        "lib/EDSC/Helpers.cpp",
105        "lib/EDSC/Intrinsics.cpp",
106    ],
107    hdrs = [
108        "include/mlir-c/Core.h",
109        "include/mlir/EDSC/Builders.h",
110        "include/mlir/EDSC/Helpers.h",
111        "include/mlir/EDSC/Intrinsics.h",
112    ],
113    includes = ["include"],
114    deps = [
115        ":AffineOps",
116        ":IR",
117        ":LoopOps",
118        ":StandardOps",
119        ":Support",
120        ":TransformUtils",
121        "@llvm-project//llvm:support",
122    ],
123)
124
125cc_library(
126    name = "EDSCInterface",
127    srcs = [
128        "lib/EDSC/CoreAPIs.cpp",
129    ],
130    hdrs = [
131        "include/mlir-c/Core.h",
132    ],
133    includes = ["include"],
134    deps = [
135        ":IR",
136        ":Parser",
137        ":Support",
138        "@llvm-project//llvm:support",
139    ],
140)
141
142filegroup(
143    name = "OpBaseTdFiles",
144    srcs = [
145        "include/mlir/IR/OpBase.td",
146    ],
147)
148
149filegroup(
150    name = "AffineOpsTdFiles",
151    srcs = [
152        "include/mlir/Dialect/AffineOps/AffineOps.td",
153        "include/mlir/Dialect/AffineOps/AffineOpsBase.td",
154        "include/mlir/Transforms/LoopLikeInterface.td",
155        ":OpBaseTdFiles",
156    ],
157)
158
159gentbl(
160    name = "AffineOpsIncGen",
161    strip_include_prefix = "include",
162    tbl_outs = [
163        (
164            "-gen-op-decls",
165            "include/mlir/Dialect/AffineOps/AffineOps.h.inc",
166        ),
167        (
168            "-gen-op-defs",
169            "include/mlir/Dialect/AffineOps/AffineOps.cpp.inc",
170        ),
171    ],
172    tblgen = ":mlir-tblgen",
173    td_file = "include/mlir/Dialect/AffineOps/AffineOps.td",
174    td_srcs = [
175        ":AffineOpsTdFiles",
176    ],
177)
178
179filegroup(
180    name = "LoopOpsTdFiles",
181    srcs = [
182        "include/mlir/Dialect/LoopOps/LoopOps.td",
183        "include/mlir/Transforms/LoopLikeInterface.td",
184        ":OpBaseTdFiles",
185    ],
186)
187
188gentbl(
189    name = "LoopOpsIncGen",
190    strip_include_prefix = "include",
191    tbl_outs = [
192        (
193            "-gen-op-decls",
194            "include/mlir/Dialect/LoopOps/LoopOps.h.inc",
195        ),
196        (
197            "-gen-op-defs",
198            "include/mlir/Dialect/LoopOps/LoopOps.cpp.inc",
199        ),
200    ],
201    tblgen = ":mlir-tblgen",
202    td_file = "include/mlir/Dialect/LoopOps/LoopOps.td",
203    td_srcs = [
204        ":LoopOpsTdFiles",
205    ],
206)
207
208filegroup(
209    name = "StdOpsTdFiles",
210    srcs = [
211        "include/mlir/Analysis/CallInterfaces.td",
212        "include/mlir/Dialect/StandardOps/Ops.td",
213        "include/mlir/IR/OpAsmInterface.td",
214        ":OpBaseTdFiles",
215    ],
216)
217
218gentbl(
219    name = "StandardOpsIncGen",
220    strip_include_prefix = "include",
221    tbl_outs = [
222        (
223            "-gen-op-decls",
224            "include/mlir/Dialect/StandardOps/Ops.h.inc",
225        ),
226        (
227            "-gen-op-defs",
228            "include/mlir/Dialect/StandardOps/Ops.cpp.inc",
229        ),
230        (
231            "-gen-enum-decls",
232            "include/mlir/Dialect/StandardOps/OpsEnums.h.inc",
233        ),
234        (
235            "-gen-enum-defs",
236            "include/mlir/Dialect/StandardOps/OpsEnums.cpp.inc",
237        ),
238    ],
239    tblgen = ":mlir-tblgen",
240    td_file = "include/mlir/Dialect/StandardOps/Ops.td",
241    td_srcs = [
242        ":StdOpsTdFiles",
243    ],
244)
245
246cc_library(
247    name = "Dialect",
248    srcs = glob([
249        "lib/Dialect/*.cpp",
250        "lib/Dialect/*.h",
251    ]),
252    hdrs = glob([
253        "include/mlir/Dialect/*.h",
254    ]),
255    includes = ["include"],
256    deps = [
257        ":IR",
258        "@llvm-project//llvm:support",
259    ],
260)
261
262cc_library(
263    name = "DialectUtils",
264    srcs = glob([
265        "lib/Dialect/Utils/*.cpp",
266        "lib/Dialect/Utils/*.h",
267    ]),
268    hdrs = glob([
269        "include/mlir/Dialect/Utils/*.h",
270    ]),
271    includes = ["include"],
272    deps = [
273        ":IR",
274        ":Support",
275        "@llvm-project//llvm:support",
276    ],
277)
278
279cc_library(
280    name = "AffineOps",
281    srcs = glob(
282        [
283            "lib/Dialect/AffineOps/*.cpp",
284            "lib/Dialect/AffineOps/*.h",
285        ],
286        exclude = ["lib/Dialect/**/DialectRegistration.cpp"],
287    ) + [
288        "include/mlir/Transforms/InliningUtils.h",
289        "include/mlir/Transforms/LoopLikeInterface.h",
290    ],
291    hdrs = glob([
292        "include/mlir/Dialect/AffineOps/*.h",
293    ]) + [
294        "include/mlir/Transforms/SideEffectsInterface.h",
295    ],
296    includes = ["include"],
297    deps = [
298        ":AffineOpsIncGen",
299        ":IR",
300        ":LoopLikeOpInterfaceIncGen",
301        ":StandardOps",
302        ":Support",
303        "@llvm-project//llvm:support",
304    ],
305)
306
307# Library with affine dialect static initialization.
308cc_library(
309    name = "AffineDialectRegistration",
310    srcs = ["lib/Dialect/AffineOps/DialectRegistration.cpp"],
311    deps = [":AffineOps"],
312    alwayslink = 1,
313)
314
315cc_library(
316    name = "AffineToStandardTransforms",
317    srcs = glob([
318        "lib/Conversion/AffineToStandard/*.cpp",
319        "lib/Conversion/AffineToStandard/*.h",
320    ]),
321    hdrs = glob(["include/mlir/Conversion/AffineToStandard/*.h"]),
322    includes = ["include"],
323    deps = [
324        ":AffineOps",
325        ":IR",
326        ":LoopOps",
327        ":Pass",
328        ":StandardOps",
329        ":Support",
330        ":Transforms",
331    ],
332    alwayslink = 1,  # contains pass registration
333)
334
335# SDBM dialect only contains attribute components that can be constructed given
336# a dialect object, so whenever it is used it must also be registered. Therefore
337# we don't split out the registration library for it.
338cc_library(
339    name = "SDBM",
340    srcs = glob([
341        "lib/Dialect/SDBM/*.cpp",
342        "lib/Dialect/SDBM/*.h",
343    ]),
344    hdrs = glob([
345        "include/mlir/Dialect/SDBM/*.h",
346    ]),
347    includes = ["include"],
348    deps = [
349        ":IR",
350        ":Support",
351        "@llvm-project//llvm:support",
352    ],
353    alwayslink = 1,
354)
355
356cc_library(
357    name = "LoopOps",
358    srcs = glob(
359        [
360            "lib/Dialect/LoopOps/*.cpp",
361            "lib/Dialect/LoopOps/*.h",
362        ],
363        exclude = ["lib/Dialect/**/DialectRegistration.cpp"],
364    ),
365    hdrs = glob([
366        "include/mlir/Dialect/LoopOps/*.h",
367    ]) + [
368        "include/mlir/Transforms/LoopLikeInterface.h",
369        "include/mlir/Transforms/SideEffectsInterface.h",
370    ],
371    includes = ["include"],
372    deps = [
373        ":IR",
374        ":LoopLikeOpInterfaceIncGen",
375        ":LoopOpsIncGen",
376        ":StandardOps",
377        ":Support",
378        "@llvm-project//llvm:support",
379    ],
380)
381
382cc_library(
383    name = "LoopDialectRegistration",
384    srcs = ["lib/Dialect/LoopOps/DialectRegistration.cpp"],
385    deps = [":LoopOps"],
386    alwayslink = 1,
387)
388
389cc_library(
390    name = "StandardOps",
391    srcs = glob(
392        [
393            "lib/Dialect/StandardOps/*.cpp",
394            "lib/Dialect/StandardOps/*.h",
395        ],
396        exclude = ["lib/Dialect/**/DialectRegistration.cpp"],
397    ),
398    hdrs = glob([
399        "include/mlir/Dialect/StandardOps/*.h",
400    ]) + [
401        "include/mlir/Analysis/CallInterfaces.h",
402        "include/mlir/Transforms/InliningUtils.h",
403    ],
404    includes = ["include"],
405    deps = [
406        ":CallOpInterfacesIncGen",
407        ":CommonFolders",
408        ":IR",
409        ":StandardOpsIncGen",
410        ":Support",
411        "@llvm-project//llvm:support",
412    ],
413)
414
415# Library with standard dialect static initialization.
416cc_library(
417    name = "StandardDialectRegistration",
418    srcs = ["lib/Dialect/StandardOps/DialectRegistration.cpp"],
419    deps = [":StandardOps"],
420    alwayslink = 1,
421)
422
423cc_library(
424    name = "VectorOps",
425    srcs = glob(
426        [
427            "lib/Dialect/VectorOps/*.cpp",
428            "lib/Dialect/VectorOps/*.h",
429        ],
430        exclude = ["lib/Dialect/**/DialectRegistration.cpp"],
431    ),
432    hdrs = glob([
433        "include/mlir/Dialect/VectorOps/*.h",
434    ]),
435    includes = ["include"],
436    deps = [
437        ":AffineOps",
438        ":Analysis",
439        ":DialectUtils",
440        ":IR",
441        ":StandardOps",
442        ":Support",
443        ":VectorOpsIncGen",
444        ":VectorTransformPatternsIncGen",
445        "@llvm-project//llvm:support",
446    ],
447)
448
449cc_library(
450    name = "VectorDialectRegistration",
451    srcs = ["lib/Dialect/VectorOps/DialectRegistration.cpp"],
452    deps = [":VectorOps"],
453    alwayslink = 1,
454)
455
456cc_library(
457    name = "Support",
458    srcs = glob(
459        [
460            "lib/Support/*.cpp",
461            "lib/Support/*.h",
462        ],
463        exclude = [
464            # TODO(herhut): Move JitRunner out of Support so that Support does not
465            # depend on dialect.
466            "lib/Support/JitRunner.cpp",
467            # TODO(jpienaar): Move this out, else Support depends on Analysis/
468            "lib/Support/MlirOptMain.cpp",
469            # TODO(jpienaar): Move this out, else Support depends on Analysis/
470            "lib/Support/TranslateClParser.cpp",
471        ],
472    ),
473    hdrs = glob([
474        "include/mlir/ADT/*.h",
475        "include/mlir/Support/*.h",
476    ]) + [
477        "include/mlir/Translation.h",
478    ],
479    includes = ["include"],
480    deps = [
481        "@llvm-project//llvm:support",
482    ],
483)
484
485cc_library(
486    name = "ParserTokenKinds",
487    # strip_include_prefix does not apply to textual_hdrs.
488    hdrs = ["lib/Parser/TokenKinds.def"],
489    strip_include_prefix = "lib/Parser",
490    textual_hdrs = ["lib/Parser/TokenKinds.def"],
491)
492
493cc_library(
494    name = "Parser",
495    srcs = glob([
496        "lib/Parser/*.cpp",
497        "lib/Parser/*.h",
498    ]),
499    hdrs = glob([
500        "include/mlir/*.h",
501    ]),
502    includes = ["include"],
503    deps = [
504        ":Analysis",
505        ":IR",
506        ":ParserTokenKinds",
507        ":Support",
508        "@llvm-project//llvm:support",
509    ],
510)
511
512cc_library(
513    name = "LLVMDialect",
514    srcs = glob(
515        [
516            "lib/Dialect/LLVMIR/IR/*.cpp",
517            "lib/Dialect/LLVMIR/IR/*.h",
518        ],
519        exclude = [
520            "lib/Dialect/LLVMIR/IR/NVVM*.cpp",
521            "lib/Dialect/LLVMIR/IR/NVVM*.h",
522            "lib/Dialect/LLVMIR/IR/ROCDL*.cpp",
523            "lib/Dialect/LLVMIR/IR/ROCDL*.h",
524        ],
525    ),
526    hdrs = glob(
527        [
528            "include/mlir/Dialect/LLVMIR/*.h",
529        ],
530        exclude = [
531            "include/mlir/Dialect/LLVMIR/NVVM*.h",
532            "include/mlir/Dialect/LLVMIR/ROCDL*.h",
533        ],
534    ),
535    includes = ["include"],
536    deps = [
537        ":IR",
538        ":LLVMOpsIncGen",
539        ":Support",
540        "@llvm-project//llvm:asm_parser",
541        "@llvm-project//llvm:core",
542        "@llvm-project//llvm:support",
543    ],
544    alwayslink = 1,
545)
546
547filegroup(
548    name = "GPUOpsTdFiles",
549    srcs = [
550        "include/mlir/Dialect/GPU/GPUOps.td",
551        "include/mlir/Dialect/LLVMIR/LLVMOpBase.td",
552        ":OpBaseTdFiles",
553    ],
554)
555
556gentbl(
557    name = "GPUOpsIncGen",
558    strip_include_prefix = "include",
559    tbl_outs = [
560        (
561            "-gen-op-decls",
562            "include/mlir/Dialect/GPU/GPUOps.h.inc",
563        ),
564        (
565            "-gen-op-defs",
566            "include/mlir/Dialect/GPU/GPUOps.cpp.inc",
567        ),
568    ],
569    tblgen = ":mlir-tblgen",
570    td_file = "include/mlir/Dialect/GPU/GPUOps.td",
571    td_srcs = [
572        ":GPUOpsTdFiles",
573    ],
574)
575
576cc_library(
577    name = "GPUDialect",
578    srcs = glob(
579        [
580            "lib/Dialect/GPU/IR/*.cpp",
581            "lib/Dialect/GPU/IR/*.h",
582        ],
583        exclude = ["lib/Dialect/**/DialectRegistration.cpp"],
584    ),
585    hdrs = glob([
586        "include/mlir/Dialect/GPU/*.h",
587    ]),
588    includes = ["include"],
589    deps = [
590        ":GPUOpsIncGen",
591        ":IR",
592        ":LLVMDialect",
593        ":StandardOps",
594    ],
595)
596
597cc_library(
598    name = "GPUDialectRegistration",
599    srcs = ["lib/Dialect/GPU/IR/DialectRegistration.cpp"],
600    deps = [
601        ":GPUDialect",
602    ],
603    alwayslink = 1,
604)
605
606cc_library(
607    name = "GPUTransforms",
608    srcs = glob(
609        [
610            "lib/Dialect/GPU/Transforms/*.cpp",
611            "lib/Dialect/GPU/Transforms/*.h",
612        ],
613        exclude = ["lib/Dialect/**/DialectRegistration.cpp"],
614    ),
615    hdrs = ["include/mlir/Dialect/GPU/Passes.h"],
616    includes = ["include"],
617    deps = [
618        ":EDSC",
619        ":GPUDialect",
620        ":GPUDialectRegistration",
621        ":IR",
622        ":LoopOps",
623        ":Pass",
624        ":StandardOps",
625        ":Support",
626        ":Transforms",
627    ],
628    alwayslink = 1,
629)
630
631filegroup(
632    name = "LLVMOpsTdFiles",
633    srcs = [
634        "include/mlir/Dialect/LLVMIR/LLVMOpBase.td",
635        "include/mlir/Dialect/LLVMIR/LLVMOps.td",
636        ":OpBaseTdFiles",
637    ],
638)
639
640cc_library(
641    name = "GPUCommonTransforms",
642    hdrs = [
643        "lib/Conversion/GPUCommon/IndexIntrinsicsOpLowering.h",
644        "lib/Conversion/GPUCommon/OpToFuncCallLowering.h",
645    ],
646    deps = [
647        ":GPUDialect",
648        ":IR",
649        ":LLVMDialect",
650        ":LLVMTransforms",
651        ":StandardOps",
652        "@llvm-project//llvm:support",
653    ],
654)
655
656gentbl(
657    name = "GPUToNVVMGen",
658    strip_include_prefix = "lib/Conversion/GPUToNVVM",
659    tbl_outs = [
660        (
661            "-gen-rewriters",
662            "lib/Conversion/GPUToNVVM/GPUToNVVM.cpp.inc",
663        ),
664    ],
665    tblgen = ":mlir-tblgen",
666    td_file = "lib/Conversion/GPUToNVVM/GPUToNVVM.td",
667    td_srcs = [
668        ":GPUOpsTdFiles",
669        ":NVVMOpsTdFiles",
670    ],
671)
672
673cc_library(
674    name = "GPUToNVVMTransforms",
675    srcs = glob([
676        "lib/Conversion/GPUToNVVM/*.cpp",
677        "lib/Conversion/GPUToNVVM/*.h",
678    ]),
679    hdrs = glob([
680        "include/mlir/Conversion/GPUToNVVM/*.h",
681    ]),
682    includes = ["include"],
683    deps = [
684        ":GPUCommonTransforms",
685        ":GPUDialect",
686        ":GPUToNVVMGen",
687        ":IR",
688        ":LLVMTransforms",
689        ":NVVMDialect",
690        ":Pass",
691        ":Transforms",
692        "@llvm-project//llvm:support",
693    ],
694    alwayslink = 1,
695)
696
697cc_library(
698    name = "GPUToROCDLTransforms",
699    srcs = ["lib/Conversion/GPUToROCDL/LowerGpuOpsToROCDLOps.cpp"],
700    hdrs = [
701        "include/mlir/Conversion/GPUToROCDL/GPUToROCDLPass.h",
702    ],
703    includes = ["include"],
704    deps = [
705        ":GPUCommonTransforms",
706        ":GPUDialect",
707        ":LLVMTransforms",
708        ":Pass",
709        ":ROCDLDialect",
710        ":Transforms",
711    ],
712    alwayslink = 1,
713)
714
715cc_library(
716    name = "GPUToCUDATransforms",
717    srcs = [
718        "lib/Conversion/GPUToCUDA/ConvertKernelFuncToCubin.cpp",
719        "lib/Conversion/GPUToCUDA/ConvertLaunchFuncToCudaCalls.cpp",
720    ],
721    hdrs = ["include/mlir/Conversion/GPUToCUDA/GPUToCUDAPass.h"],
722    includes = ["include"],
723    deps = [
724        ":GPUDialect",
725        ":IR",
726        ":LLVMDialect",
727        ":Pass",
728        ":Support",
729        ":TargetNVVMIR",
730        "@llvm-project//llvm:core",
731        "@llvm-project//llvm:nvptx_target",  # buildcleaner: keep
732        "@llvm-project//llvm:support",
733        "@llvm-project//llvm:target",
734    ],
735    alwayslink = 1,
736)
737
738gentbl(
739    name = "GPUToSPIRVIncGen",
740    strip_include_prefix = "lib/Conversion/GPUToSPIRV",
741    tbl_outs = [
742        (
743            "-gen-rewriters",
744            "lib/Conversion/GPUToSPIRV/GPUToSPIRV.cpp.inc",
745        ),
746    ],
747    tblgen = ":mlir-tblgen",
748    td_file = "lib/Conversion/GPUToSPIRV/GPUToSPIRV.td",
749    td_srcs = [
750        ":GPUOpsTdFiles",
751        ":SPIRVOpsTdFiles",
752    ],
753)
754
755cc_library(
756    name = "GPUToSPIRVTransforms",
757    srcs = [
758        "lib/Conversion/GPUToSPIRV/ConvertGPUToSPIRV.cpp",
759        "lib/Conversion/GPUToSPIRV/ConvertGPUToSPIRVPass.cpp",
760    ],
761    hdrs = [
762        "include/mlir/Conversion/GPUToSPIRV/ConvertGPUToSPIRV.h",
763        "include/mlir/Conversion/GPUToSPIRV/ConvertGPUToSPIRVPass.h",
764    ],
765    includes = [
766        "include",
767        "lib/Conversions/GPUToSPIRV",
768    ],
769    deps = [
770        ":GPUDialect",
771        ":GPUToSPIRVIncGen",
772        ":IR",
773        ":LoopOps",
774        ":Pass",
775        ":SPIRVDialect",
776        ":SPIRVLowering",
777        ":StandardToSPIRVConversions",
778        ":Support",
779        ":Transforms",
780    ],
781    alwayslink = 1,
782)
783
784gentbl(
785    name = "LLVMOpsIncGen",
786    strip_include_prefix = "include",
787    tbl_outs = [
788        (
789            "-gen-op-decls",
790            "include/mlir/Dialect/LLVMIR/LLVMOps.h.inc",
791        ),
792        (
793            "-gen-op-defs",
794            "include/mlir/Dialect/LLVMIR/LLVMOps.cpp.inc",
795        ),
796        (
797            "-gen-enum-decls",
798            "include/mlir/Dialect/LLVMIR/LLVMOpsEnums.h.inc",
799        ),
800        (
801            "-gen-enum-defs",
802            "include/mlir/Dialect/LLVMIR/LLVMOpsEnums.cpp.inc",
803        ),
804    ],
805    tblgen = ":mlir-tblgen",
806    td_file = "include/mlir/Dialect/LLVMIR/LLVMOps.td",
807    td_srcs = [
808        ":LLVMOpsTdFiles",
809    ],
810)
811
812gentbl(
813    name = "LLVMConversionIncGen",
814    strip_include_prefix = "include",
815    tbl_outs = [
816        (
817            "-gen-llvmir-conversions",
818            "include/mlir/Dialect/LLVMIR/LLVMConversions.inc",
819        ),
820        (
821            "-gen-enum-to-llvmir-conversions",
822            "include/mlir/Dialect/LLVMIR/LLVMConversionEnumsToLLVM.inc",
823        ),
824        (
825            "-gen-enum-from-llvmir-conversions",
826            "include/mlir/Dialect/LLVMIR/LLVMConversionEnumsFromLLVM.inc",
827        ),
828    ],
829    tblgen = ":mlir-tblgen",
830    td_file = "include/mlir/Dialect/LLVMIR/LLVMOps.td",
831    td_srcs = [
832        ":LLVMOpsTdFiles",
833    ],
834)
835
836cc_library(
837    name = "NVVMDialect",
838    srcs = [
839        "lib/Dialect/LLVMIR/IR/NVVMDialect.cpp",
840    ],
841    hdrs = [
842        "include/mlir/Dialect/LLVMIR/NVVMDialect.h",
843    ],
844    includes = ["include"],
845    deps = [
846        ":IR",
847        ":LLVMDialect",
848        ":NVVMOpsIncGen",
849        ":StandardOps",
850        ":Support",
851        "@llvm-project//llvm:asm_parser",
852        "@llvm-project//llvm:core",
853        "@llvm-project//llvm:support",
854    ],
855    alwayslink = 1,
856)
857
858filegroup(
859    name = "NVVMOpsTdFiles",
860    srcs = [
861        "include/mlir/Dialect/LLVMIR/LLVMOpBase.td",
862        "include/mlir/Dialect/LLVMIR/NVVMOps.td",
863        ":OpBaseTdFiles",
864    ],
865)
866
867gentbl(
868    name = "NVVMOpsIncGen",
869    strip_include_prefix = "include",
870    tbl_outs = [
871        (
872            "-gen-op-decls",
873            "include/mlir/Dialect/LLVMIR/NVVMOps.h.inc",
874        ),
875        (
876            "-gen-op-defs",
877            "include/mlir/Dialect/LLVMIR/NVVMOps.cpp.inc",
878        ),
879    ],
880    tblgen = ":mlir-tblgen",
881    td_file = "include/mlir/Dialect/LLVMIR/NVVMOps.td",
882    td_srcs = [
883        ":NVVMOpsTdFiles",
884    ],
885)
886
887gentbl(
888    name = "NVVMConversionIncGen",
889    strip_include_prefix = "include",
890    tbl_outs = [
891        (
892            "-gen-llvmir-conversions",
893            "include/mlir/Dialect/LLVMIR/NVVMConversions.inc",
894        ),
895    ],
896    tblgen = ":mlir-tblgen",
897    td_file = "include/mlir/Dialect/LLVMIR/NVVMOps.td",
898    td_srcs = [
899        ":NVVMOpsTdFiles",
900    ],
901)
902
903cc_library(
904    name = "ROCDLDialect",
905    srcs = [
906        "lib/Dialect/LLVMIR/IR/ROCDLDialect.cpp",
907    ],
908    hdrs = [
909        "include/mlir/Dialect/LLVMIR/ROCDLDialect.h",
910    ],
911    includes = ["include"],
912    deps = [
913        ":IR",
914        ":LLVMDialect",
915        ":ROCDLOpsIncGen",
916        ":StandardOps",
917        ":Support",
918        "@llvm-project//llvm:asm_parser",
919        "@llvm-project//llvm:core",
920        "@llvm-project//llvm:support",
921    ],
922    alwayslink = 1,
923)
924
925filegroup(
926    name = "ROCDLOpsTdFiles",
927    srcs = [
928        "include/mlir/Dialect/LLVMIR/LLVMOpBase.td",
929        "include/mlir/Dialect/LLVMIR/ROCDLOps.td",
930        ":OpBaseTdFiles",
931    ],
932)
933
934gentbl(
935    name = "ROCDLOpsIncGen",
936    strip_include_prefix = "include",
937    tbl_outs = [
938        (
939            "-gen-op-decls",
940            "include/mlir/Dialect/LLVMIR/ROCDLOps.h.inc",
941        ),
942        (
943            "-gen-op-defs",
944            "include/mlir/Dialect/LLVMIR/ROCDLOps.cpp.inc",
945        ),
946    ],
947    tblgen = ":mlir-tblgen",
948    td_file = "include/mlir/Dialect/LLVMIR/ROCDLOps.td",
949    td_srcs = [
950        ":ROCDLOpsTdFiles",
951    ],
952)
953
954gentbl(
955    name = "ROCDLConversionIncGen",
956    strip_include_prefix = "include",
957    tbl_outs = [
958        (
959            "-gen-llvmir-conversions",
960            "include/mlir/Dialect/LLVMIR/ROCDLConversions.inc",
961        ),
962    ],
963    tblgen = ":mlir-tblgen",
964    td_file = "include/mlir/Dialect/LLVMIR/ROCDLOps.td",
965    td_srcs = [
966        ":ROCDLOpsTdFiles",
967    ],
968)
969
970# TODO(gcmn): Update SPIRV dependencies so that they map better to cmake files.
971filegroup(
972    name = "SPIRVOpsTdFiles",
973    srcs = [
974        "include/mlir/Analysis/CallInterfaces.td",
975        ":OpBaseTdFiles",
976    ] + glob(["include/mlir/Dialect/SPIRV/*.td"]),
977)
978
979gentbl(
980    name = "SPIRVOpsIncGen",
981    strip_include_prefix = "include",
982    tbl_outs = [
983        (
984            "-gen-op-decls",
985            "include/mlir/Dialect/SPIRV/SPIRVOps.h.inc",
986        ),
987        (
988            "-gen-op-defs",
989            "include/mlir/Dialect/SPIRV/SPIRVOps.cpp.inc",
990        ),
991        (
992            "-gen-op-doc",
993            "g3doc/Dialects/SPIRV/SPIRVOps.md",
994        ),
995        (
996            "-gen-enum-decls",
997            "include/mlir/Dialect/SPIRV/SPIRVEnums.h.inc",
998        ),
999        (
1000            "-gen-enum-defs",
1001            "include/mlir/Dialect/SPIRV/SPIRVEnums.cpp.inc",
1002        ),
1003        (
1004            "-gen-spirv-enum-avail-decls",
1005            "include/mlir/Dialect/SPIRV/SPIRVEnumAvailability.h.inc",
1006        ),
1007        (
1008            "-gen-spirv-enum-avail-defs",
1009            "include/mlir/Dialect/SPIRV/SPIRVEnumAvailability.cpp.inc",
1010        ),
1011        (
1012            "-gen-spirv-capability-implication",
1013            "include/mlir/Dialect/SPIRV/SPIRVCapabilityImplication.inc",
1014        ),
1015    ],
1016    tblgen = ":mlir-tblgen",
1017    td_file = "include/mlir/Dialect/SPIRV/SPIRVOps.td",
1018    td_srcs = [
1019        ":SPIRVOpsTdFiles",
1020    ],
1021)
1022
1023gentbl(
1024    name = "SPIRVCanonicalizationIncGen",
1025    strip_include_prefix = "lib/Dialect/SPIRV",
1026    tbl_outs = [
1027        (
1028            "-gen-rewriters",
1029            "lib/Dialect/SPIRV/SPIRVCanonicalization.inc",
1030        ),
1031    ],
1032    tblgen = ":mlir-tblgen",
1033    td_file = "lib/Dialect/SPIRV/SPIRVCanonicalization.td",
1034    td_srcs = [
1035        ":SPIRVOpsTdFiles",
1036        "lib/Dialect/SPIRV/SPIRVCanonicalization.td",
1037    ],
1038)
1039
1040gentbl(
1041    name = "StandardToSPIRVGen",
1042    strip_include_prefix = "lib/Conversion/StandardToSPIRV",
1043    tbl_outs = [
1044        (
1045            "-gen-rewriters",
1046            "lib/Conversion/StandardToSPIRV/StandardToSPIRV.cpp.inc",
1047        ),
1048    ],
1049    tblgen = ":mlir-tblgen",
1050    td_file = "lib/Conversion/StandardToSPIRV/StandardToSPIRV.td",
1051    td_srcs = [
1052        ":SPIRVOpsTdFiles",
1053        ":StdOpsTdFiles",
1054    ],
1055)
1056
1057gentbl(
1058    name = "SPIRVAvailabilityIncGen",
1059    strip_include_prefix = "include",
1060    tbl_outs = [
1061        (
1062            "-gen-avail-interface-decls",
1063            "include/mlir/Dialect/SPIRV/SPIRVAvailability.h.inc",
1064        ),
1065        (
1066            "-gen-avail-interface-defs",
1067            "include/mlir/Dialect/SPIRV/SPIRVAvailability.cpp.inc",
1068        ),
1069        (
1070            "-gen-spirv-avail-impls",
1071            "include/mlir/Dialect/SPIRV/SPIRVOpAvailabilityImpl.inc",
1072        ),
1073    ],
1074    tblgen = ":mlir-tblgen",
1075    td_file = "include/mlir/Dialect/SPIRV/SPIRVOps.td",
1076    td_srcs = [
1077        ":SPIRVOpsTdFiles",
1078    ],
1079)
1080
1081gentbl(
1082    name = "SPIRVTargetAndABIStructGen",
1083    tbl_outs = [
1084        (
1085            "-gen-struct-attr-decls",
1086            "include/mlir/Dialect/SPIRV/TargetAndABI.h.inc",
1087        ),
1088        (
1089            "-gen-struct-attr-defs",
1090            "include/mlir/Dialect/SPIRV/TargetAndABI.cpp.inc",
1091        ),
1092    ],
1093    tblgen = ":mlir-tblgen",
1094    td_file = "include/mlir/Dialect/SPIRV/TargetAndABI.td",
1095    td_srcs = [
1096        ":SPIRVOpsTdFiles",
1097        ":StdOpsTdFiles",
1098    ],
1099)
1100
1101gentbl(
1102    name = "SPIRVOpUtilsIncGen",
1103    strip_include_prefix = "include",
1104    tbl_outs = [
1105        (
1106            "-gen-spirv-op-utils",
1107            "include/mlir/Dialect/SPIRV/SPIRVOpUtils.inc",
1108        ),
1109    ],
1110    tblgen = ":mlir-tblgen",
1111    td_file = "include/mlir/Dialect/SPIRV/SPIRVBase.td",
1112    td_srcs = [
1113        ":SPIRVOpsTdFiles",
1114        ":SPIRVAvailabilityIncGen",
1115    ],
1116)
1117
1118gentbl(
1119    name = "SPIRVSerializationGen",
1120    strip_include_prefix = "include",
1121    tbl_outs = [
1122        (
1123            "-gen-spirv-serialization",
1124            "include/mlir/Dialect/SPIRV/SPIRVSerialization.inc",
1125        ),
1126    ],
1127    tblgen = ":mlir-tblgen",
1128    td_file = "include/mlir/Dialect/SPIRV/SPIRVOps.td",
1129    td_srcs = [
1130        ":SPIRVOpsTdFiles",
1131    ],
1132)
1133
1134cc_library(
1135    name = "SPIRVDialect",
1136    srcs = glob(
1137        [
1138            "lib/Dialect/SPIRV/*.cpp",
1139            "lib/Dialect/SPIRV/*.h",
1140        ],
1141        exclude = [
1142            "lib/Dialect/**/DialectRegistration.cpp",
1143            "lib/Dialect/SPIRV/SPIRVLowering.cpp",
1144        ],
1145    ) + [
1146        "include/mlir/Transforms/InliningUtils.h",
1147    ],
1148    hdrs = glob(
1149        [
1150            "include/mlir/Dialect/SPIRV/*.h",
1151        ],
1152        exclude = [
1153            "include/mlir/Dialect/SPIRV/SPIRVBinaryUtils.h",
1154            "include/mlir/Dialect/SPIRV/SPIRVLowering.h",
1155        ],
1156    ),
1157    includes = ["include"],
1158    deps = [
1159        ":CommonFolders",
1160        ":IR",
1161        ":Parser",
1162        ":Pass",
1163        ":SPIRVAvailabilityIncGen",
1164        ":SPIRVCanonicalizationIncGen",
1165        ":SPIRVOpUtilsIncGen",
1166        ":SPIRVOpsIncGen",
1167        ":SPIRVSerializationGen",
1168        ":SPIRVTargetAndABIStructGen",
1169        ":Support",
1170        ":Transforms",
1171        "@llvm-project//llvm:support",
1172    ],
1173    alwayslink = 1,
1174)
1175
1176cc_library(
1177    name = "SPIRVLowering",
1178    srcs = [
1179        "lib/Dialect/SPIRV/SPIRVLowering.cpp",
1180        "lib/Dialect/SPIRV/Transforms/DecorateSPIRVCompositeTypeLayoutPass.cpp",
1181        "lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp",
1182    ],
1183    hdrs = [
1184        "include/mlir/Dialect/SPIRV/Passes.h",
1185        "include/mlir/Dialect/SPIRV/SPIRVLowering.h",
1186        "include/mlir/Dialect/SPIRV/TargetAndABI.h",
1187    ],
1188    includes = [
1189        "include",
1190    ],
1191    deps = [
1192        ":IR",
1193        ":Pass",
1194        ":SPIRVDialect",
1195        ":SPIRVTargetAndABIStructGen",
1196        ":StandardOps",
1197        ":Support",
1198        ":Transforms",
1199        "@llvm-project//llvm:support",
1200    ],
1201    alwayslink = 1,
1202)
1203
1204cc_library(
1205    name = "StandardToSPIRVConversions",
1206    srcs = glob([
1207        "lib/Conversion/StandardToSPIRV/*.cpp",
1208        "lib/Conversion/StandardToSPIRV/*.h",
1209    ]),
1210    hdrs = glob([
1211        "include/mlir/Conversion/StandardToSPIRV/*.h",
1212    ]),
1213    includes = [
1214        "include",
1215        "lib/Conversion/StandardToSPIRV",
1216    ],
1217    deps = [
1218        ":IR",
1219        ":Pass",
1220        ":SPIRVDialect",
1221        ":SPIRVLowering",
1222        ":StandardOps",
1223        ":StandardToSPIRVGen",
1224        ":Support",
1225        ":Transforms",
1226        "@llvm-project//llvm:support",
1227    ],
1228    alwayslink = 1,
1229)
1230
1231cc_library(
1232    name = "SPIRVSerialization",
1233    srcs = glob(
1234        [
1235            "lib/Dialect/SPIRV/Serialization/*.cpp",
1236        ],
1237        exclude = [
1238            "lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp",
1239        ],
1240    ),
1241    hdrs = [
1242        "include/mlir/Dialect/SPIRV/SPIRVBinaryUtils.h",
1243        "include/mlir/Dialect/SPIRV/Serialization.h",
1244    ],
1245    includes = ["include"],
1246    deps = [
1247        ":IR",
1248        ":SPIRVDialect",
1249        ":SPIRVOpUtilsIncGen",
1250        ":SPIRVOpsIncGen",
1251        ":SPIRVSerializationGen",
1252        ":Support",
1253        ":Transforms",
1254        "@llvm-project//llvm:support",
1255    ],
1256)
1257
1258cc_library(
1259    name = "SPIRVTranslateRegistration",
1260    srcs = [
1261        "lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp",
1262    ],
1263    includes = ["include"],
1264    deps = [
1265        ":IR",
1266        ":Parser",
1267        ":SPIRVDialect",
1268        ":SPIRVSerialization",
1269        ":Support",
1270        ":Translation",
1271        "@llvm-project//llvm:support",
1272    ],
1273    alwayslink = 1,
1274)
1275
1276cc_library(
1277    name = "SPIRVDialectRegistration",
1278    srcs = ["lib/Dialect/SPIRV/DialectRegistration.cpp"],
1279    deps = [
1280        ":SPIRVDialect",
1281    ],
1282    alwayslink = 1,
1283)
1284
1285cc_library(
1286    name = "TransformUtils",
1287    srcs = glob([
1288        "lib/Transforms/Utils/*.cpp",
1289        "lib/Transforms/Utils/*.h",
1290    ]),
1291    hdrs = glob([
1292        "include/mlir/Transforms/*.h",
1293    ]),
1294    includes = ["include"],
1295    deps = [
1296        ":AffineOps",
1297        ":Analysis",
1298        ":IR",
1299        ":LoopLikeOpInterfaceIncGen",
1300        ":LoopOps",
1301        ":StandardDialectRegistration",
1302        ":StandardOps",
1303        ":Support",
1304        "@llvm-project//llvm:support",
1305    ],
1306)
1307
1308gentbl(
1309    name = "LoopLikeOpInterfaceIncGen",
1310    strip_include_prefix = "include",
1311    tbl_outs = [
1312        (
1313            "-gen-op-interface-decls",
1314            "include/mlir/Transforms/LoopLikeInterface.h.inc",
1315        ),
1316        (
1317            "-gen-op-interface-defs",
1318            "include/mlir/Transforms/LoopLikeInterface.cpp.inc",
1319        ),
1320    ],
1321    tblgen = ":mlir-tblgen",
1322    td_file = "include/mlir/Transforms/LoopLikeInterface.td",
1323    td_srcs = [
1324        ":OpBaseTdFiles",
1325    ],
1326)
1327
1328cc_library(
1329    name = "Transforms",
1330    srcs = glob([
1331        "lib/Transforms/*.cpp",
1332        "lib/Transforms/*.h",
1333    ]),
1334    hdrs = glob([
1335        "include/mlir/Transforms/*.h",
1336    ]),
1337    includes = ["include"],
1338    deps = [
1339        ":AffineOps",
1340        ":Analysis",
1341        ":EDSC",
1342        ":IR",
1343        ":LoopLikeOpInterfaceIncGen",
1344        ":LoopOps",
1345        ":Pass",
1346        ":StandardOps",
1347        ":Support",
1348        ":TransformUtils",
1349        ":VectorOps",
1350        "@llvm-project//llvm:support",
1351    ],
1352    alwayslink = 1,
1353)
1354
1355cc_library(
1356    name = "CommonFolders",
1357    srcs = [
1358    ],
1359    hdrs = [
1360        "include/mlir/Dialect/CommonFolders.h",
1361    ],
1362    includes = ["include"],
1363    deps = [
1364        ":IR",
1365        "@llvm-project//llvm:support",
1366    ],
1367)
1368
1369cc_library(
1370    name = "LoopsToGPU",
1371    srcs = [
1372        "lib/Conversion/LoopsToGPU/LoopsToGPU.cpp",
1373    ],
1374    hdrs = [
1375        "include/mlir/Conversion/LoopsToGPU/LoopsToGPU.h",
1376    ],
1377    includes = ["include"],
1378    deps = [
1379        ":AffineOps",
1380        ":AffineToStandardTransforms",
1381        ":GPUDialect",
1382        ":IR",
1383        ":LinalgTransforms",
1384        ":LoopOps",
1385        ":StandardOps",
1386        ":Support",
1387        ":TransformUtils",
1388        ":Transforms",
1389        "@llvm-project//llvm:support",
1390    ],
1391)
1392
1393cc_library(
1394    name = "LoopsToGPUPass",
1395    srcs = [
1396        "lib/Conversion/LoopsToGPU/LoopsToGPUPass.cpp",
1397    ],
1398    hdrs = [
1399        "include/mlir/Conversion/LoopsToGPU/LoopsToGPUPass.h",
1400    ],
1401    includes = ["include"],
1402    deps = [
1403        ":AffineOps",
1404        ":LoopOps",
1405        ":LoopsToGPU",
1406        ":Pass",
1407        ":StandardOps",
1408        ":Support",
1409        "@llvm-project//llvm:support",
1410    ],
1411    alwayslink = 1,
1412)
1413
1414cc_library(
1415    name = "CFGTransforms",
1416    srcs = [
1417        "lib/Conversion/LoopToStandard/ConvertLoopToStandard.cpp",
1418    ],
1419    hdrs = [
1420        "include/mlir/Conversion/LoopToStandard/ConvertLoopToStandard.h",
1421    ],
1422    includes = ["include"],
1423    deps = [
1424        ":IR",
1425        ":LLVMDialect",
1426        ":LoopOps",
1427        ":Pass",
1428        ":StandardOps",
1429        ":Support",
1430        ":TransformUtils",
1431        ":Transforms",
1432    ],
1433    alwayslink = 1,
1434)
1435
1436cc_library(
1437    name = "LLVMTransforms",
1438    srcs = [
1439        "lib/Conversion/StandardToLLVM/ConvertStandardToLLVM.cpp",
1440    ],
1441    hdrs = [
1442        "include/mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h",
1443        "include/mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h",
1444    ],
1445    includes = ["include"],
1446    deps = [
1447        ":IR",
1448        ":LLVMDialect",
1449        ":Pass",
1450        ":StandardOps",
1451        ":Support",
1452        ":TransformUtils",
1453        ":Transforms",
1454        "@llvm-project//llvm:core",
1455        "@llvm-project//llvm:support",
1456    ],
1457    alwayslink = 1,
1458)
1459
1460gentbl(
1461    name = "CallOpInterfacesIncGen",
1462    strip_include_prefix = "include",
1463    tbl_outs = [
1464        (
1465            "-gen-op-interface-decls",
1466            "include/mlir/Analysis/CallInterfaces.h.inc",
1467        ),
1468        (
1469            "-gen-op-interface-defs",
1470            "include/mlir/Analysis/CallInterfaces.cpp.inc",
1471        ),
1472    ],
1473    tblgen = ":mlir-tblgen",
1474    td_file = "include/mlir/Analysis/CallInterfaces.td",
1475    td_srcs = [
1476        ":OpBaseTdFiles",
1477    ],
1478)
1479
1480gentbl(
1481    name = "InferTypeOpInterfaceIncGen",
1482    strip_include_prefix = "include",
1483    tbl_outs = [
1484        (
1485            "-gen-op-interface-decls",
1486            "include/mlir/Analysis/InferTypeOpInterface.h.inc",
1487        ),
1488        (
1489            "-gen-op-interface-defs",
1490            "include/mlir/Analysis/InferTypeOpInterface.cpp.inc",
1491        ),
1492    ],
1493    tblgen = ":mlir-tblgen",
1494    td_file = "include/mlir/Analysis/InferTypeOpInterface.td",
1495    td_srcs = [
1496        ":OpBaseTdFiles",
1497    ],
1498)
1499
1500cc_library(
1501    name = "Analysis",
1502    srcs = glob(
1503        [
1504            "lib/Analysis/*.cpp",
1505            "lib/Analysis/*.h",
1506        ],
1507        exclude = [
1508            "lib/Analysis/Vector*.cpp",
1509            "lib/Analysis/Vector*.h",
1510        ],
1511    ),
1512    hdrs = glob(
1513        [
1514            "include/mlir/Analysis/*.h",
1515        ],
1516        exclude = [
1517            "include/mlir/Analysis/Vector*.h",
1518        ],
1519    ),
1520    includes = ["include"],
1521    deps = [
1522        ":AffineOps",
1523        ":CallOpInterfacesIncGen",
1524        ":IR",
1525        ":InferTypeOpInterfaceIncGen",
1526        ":LoopOps",
1527        ":Pass",
1528        ":StandardOps",
1529        ":Support",
1530        "@llvm-project//llvm:support",
1531    ],
1532    alwayslink = 1,
1533)
1534
1535cc_library(
1536    name = "Translation",
1537    srcs = glob([
1538        "lib/Translation/*.cpp",
1539        "lib/Translation/*.h",
1540    ]),
1541    hdrs = glob([
1542        "include/mlir/*.h",
1543    ]),
1544    includes = ["include"],
1545    deps = [
1546        ":IR",
1547        ":Parser",
1548        ":StandardOps",
1549        ":Support",
1550        "@llvm-project//llvm:support",
1551    ],
1552)
1553
1554cc_library(
1555    name = "LLVMIRModuleTranslation",
1556    srcs = [
1557        "lib/Target/LLVMIR/ModuleTranslation.cpp",
1558    ],
1559    hdrs = [
1560        "include/mlir/Target/LLVMIR/ModuleTranslation.h",
1561    ],
1562    includes = ["include"],
1563    deps = [
1564        ":IR",
1565        ":LLVMConversionIncGen",
1566        ":LLVMDialect",
1567        ":Support",
1568        "@llvm-project//llvm:core",
1569        "@llvm-project//llvm:support",
1570        "@llvm-project//llvm:transform_utils",
1571    ],
1572)
1573
1574cc_library(
1575    name = "TargetLLVMIR",
1576    srcs = [
1577        "lib/Target/LLVMIR/ConvertFromLLVMIR.cpp",
1578        "lib/Target/LLVMIR/ConvertToLLVMIR.cpp",
1579    ],
1580    hdrs = [
1581        "include/mlir/Target/LLVMIR.h",
1582    ],
1583    includes = ["include"],
1584    deps = [
1585        ":IR",
1586        ":LLVMConversionIncGen",
1587        ":LLVMDialect",
1588        ":LLVMIRModuleTranslation",
1589        ":Support",
1590        ":Translation",
1591        "@llvm-project//llvm:core",
1592        "@llvm-project//llvm:ir_reader",
1593        "@llvm-project//llvm:support",
1594    ],
1595    alwayslink = 1,
1596)
1597
1598cc_library(
1599    name = "TargetNVVMIR",
1600    srcs = [
1601        "lib/Target/LLVMIR/ConvertToNVVMIR.cpp",
1602    ],
1603    hdrs = [
1604        "include/mlir/Target/NVVMIR.h",
1605    ],
1606    includes = ["include"],
1607    deps = [
1608        ":GPUDialect",
1609        ":IR",
1610        ":LLVMDialect",
1611        ":LLVMIRModuleTranslation",
1612        ":NVVMConversionIncGen",
1613        ":NVVMDialect",
1614        ":Support",
1615        ":Translation",
1616        "@llvm-project//llvm:core",
1617        "@llvm-project//llvm:support",
1618    ],
1619    alwayslink = 1,
1620)
1621
1622cc_library(
1623    name = "TargetROCDLIR",
1624    srcs = [
1625        "lib/Target/LLVMIR/ConvertToROCDLIR.cpp",
1626    ],
1627    hdrs = [
1628        "include/mlir/Target/ROCDLIR.h",
1629    ],
1630    includes = ["include"],
1631    deps = [
1632        ":GPUDialect",
1633        ":IR",
1634        ":LLVMDialect",
1635        ":LLVMIRModuleTranslation",
1636        ":ROCDLConversionIncGen",
1637        ":ROCDLDialect",
1638        ":Support",
1639        ":Translation",
1640        "@llvm-project//llvm:core",
1641        "@llvm-project//llvm:support",
1642    ],
1643    alwayslink = 1,
1644)
1645
1646# TODO(zinenko): Update these so that we can simplify mapping to cmake.
1647cc_library(
1648    name = "ExecutionEngine",
1649    srcs = [
1650        "lib/ExecutionEngine/ExecutionEngine.cpp",
1651    ],
1652    hdrs = [
1653        "include/mlir/ExecutionEngine/ExecutionEngine.h",
1654    ],
1655    includes = ["include"],
1656    deps = [
1657        ":IR",
1658        ":LLVMDialect",
1659        ":Support",
1660        ":TargetLLVMIR",
1661        ":Translation",
1662        "@llvm-project//llvm:bit_reader",
1663        "@llvm-project//llvm:bit_writer",
1664        "@llvm-project//llvm:core",
1665        "@llvm-project//llvm:execution_engine",
1666        "@llvm-project//llvm:mc",
1667        "@llvm-project//llvm:orc_jit",
1668        "@llvm-project//llvm:support",
1669        "@llvm-project//llvm:target",  # fixdeps: keep
1670        "@llvm-project//llvm:transform_utils",
1671        "@llvm-project//llvm:x86_code_gen",  # fixdeps: keep
1672        "@llvm-project//llvm:x86_disassembler",  # fixdeps: keep
1673    ],
1674)
1675
1676cc_library(
1677    name = "ExecutionEngineUtils",
1678    srcs = [
1679        "lib/ExecutionEngine/OptUtils.cpp",
1680    ],
1681    hdrs = [
1682        "include/mlir/ExecutionEngine/OptUtils.h",
1683    ],
1684    includes = ["include"],
1685    deps = [
1686        "@llvm-project//llvm:analysis",
1687        "@llvm-project//llvm:core",
1688        "@llvm-project//llvm:ipo",
1689        "@llvm-project//llvm:support",
1690        "@llvm-project//llvm:target",
1691    ],
1692)
1693
1694# TODO(jpienaar): Update this.
1695cc_library(
1696    name = "MlirOptLib",
1697    srcs = [
1698        "lib/Support/MlirOptMain.cpp",
1699    ],
1700    hdrs = [
1701        "include/mlir/Analysis/Passes.h",
1702    ],
1703    includes = ["include"],
1704    deps = [
1705        ":Analysis",
1706        ":GPUToNVVMTransforms",
1707        ":GPUToROCDLTransforms",
1708        ":GPUToSPIRVTransforms",
1709        ":GPUTransforms",
1710        ":IR",
1711        ":LLVMDialect",
1712        ":LLVMTransforms",
1713        ":LinalgToLLVM",
1714        ":LinalgToSPIRV",
1715        ":NVVMDialect",
1716        ":Parser",
1717        ":Pass",
1718        ":QuantizerTransforms",
1719        ":SPIRVDialectRegistration",
1720        ":StandardToSPIRVConversions",
1721        ":Support",
1722        ":Transforms",
1723        ":VectorToLLVM",
1724        ":VectorToLoops",
1725        "@llvm-project//llvm:support",
1726    ],
1727)
1728
1729cc_library(
1730    name = "TranslateClParser",
1731    srcs = ["lib/Support/TranslateClParser.cpp"],
1732    hdrs = ["include/mlir/Support/TranslateClParser.h"],
1733    includes = ["include"],
1734    deps = [
1735        ":Analysis",
1736        ":IR",
1737        ":Parser",
1738        ":Support",
1739        ":Translation",
1740        "@llvm-project//llvm:support",
1741    ],
1742)
1743
1744cc_library(
1745    name = "MlirTranslateMain",
1746    srcs = ["tools/mlir-translate/mlir-translate.cpp"],
1747    deps = [
1748        ":IR",
1749        ":Parser",
1750        ":Support",
1751        ":TranslateClParser",
1752        ":Translation",
1753        "@llvm-project//llvm:support",
1754    ],
1755)
1756
1757cc_binary(
1758    name = "mlir-translate",
1759    deps = [
1760        ":LoopDialectRegistration",
1761        ":MlirTranslateMain",
1762        ":SPIRVDialectRegistration",
1763        ":SPIRVTranslateRegistration",
1764        ":StandardDialectRegistration",
1765        ":TargetLLVMIR",
1766        ":TargetNVVMIR",
1767        ":TargetROCDLIR",
1768        ":VectorDialectRegistration",
1769    ],
1770)
1771
1772# TODO(jpienaar): This library should be removed.
1773cc_library(
1774    name = "MlirOptMain",
1775    srcs = [
1776        "tools/mlir-opt/mlir-opt.cpp",
1777    ],
1778    deps = [
1779        ":Analysis",
1780        ":MlirOptLib",
1781        ":Pass",
1782        ":Support",
1783        "@llvm-project//llvm:support",
1784    ],
1785)
1786
1787cc_binary(
1788    name = "mlir-opt",
1789    deps = [
1790        ":AffineDialectRegistration",
1791        ":Analysis",
1792        ":FxpMathOps",
1793        ":FxpMathOpsDialectRegistration",
1794        ":GPUDialectRegistration",
1795        ":IR",
1796        ":LinalgDialectRegistration",
1797        ":LoopDialectRegistration",
1798        ":LoopsToGPUPass",
1799        ":MlirOptLib",
1800        ":MlirOptMain",
1801        ":OpenMPDialect",
1802        ":QuantOps",
1803        ":QuantOpsDialectRegistration",
1804        ":ROCDLDialect",
1805        ":StandardDialectRegistration",
1806        ":Transforms",
1807        ":VectorDialectRegistration",
1808        "@llvm-project//llvm:support",
1809        "@llvm-project//mlir/test:TestDialect",
1810        "@llvm-project//mlir/test:TestIR",
1811        "@llvm-project//mlir/test:TestPass",
1812        "@llvm-project//mlir/test:TestTransforms",
1813        "@llvm-project//mlir/test/Dialect/SPIRV:TestPasses",
1814    ],
1815)
1816
1817cc_library(
1818    name = "MlirJitRunner",
1819    srcs = ["lib/Support/JitRunner.cpp"],
1820    hdrs = ["include/mlir/Support/JitRunner.h"],
1821    includes = ["include"],
1822    deps = [
1823        ":AffineDialectRegistration",
1824        ":CFGTransforms",
1825        ":ExecutionEngine",
1826        ":ExecutionEngineUtils",
1827        ":IR",
1828        ":LLVMDialect",
1829        ":Parser",
1830        ":Pass",
1831        ":Support",
1832        "@llvm-project//llvm:core",
1833        "@llvm-project//llvm:orc_jit",
1834        "@llvm-project//llvm:support",
1835    ],
1836    alwayslink = 1,
1837)
1838
1839cc_binary(
1840    name = "mlir-cpu-runner",
1841    srcs = ["tools/mlir-cpu-runner/mlir-cpu-runner.cpp"],
1842    linkopts = ["-ldl"],
1843    deps = [":MlirJitRunner"],
1844)
1845
1846cc_binary(
1847    name = "tools/libcuda-runtime-wrappers.so",
1848    srcs = ["tools/mlir-cuda-runner/cuda-runtime-wrappers.cpp"],
1849    linkshared = True,
1850    deps = [
1851        "//third_party/gpus/cuda:cuda_headers",
1852        "//third_party/gpus/cuda:cuda_runtime",
1853        "//third_party/gpus/cuda:libcuda",
1854        "@llvm-project//llvm:support",
1855    ],
1856)
1857
1858cc_binary(
1859    name = "mlir-cuda-runner",
1860    srcs = ["tools/mlir-cuda-runner/mlir-cuda-runner.cpp"],
1861    data = [
1862        ":tools/libcuda-runtime-wrappers.so",
1863        "@llvm-project//mlir/test/mlir-cpu-runner:libmlir_runner_utils.so",
1864    ],
1865    deps = [
1866        ":GPUDialect",
1867        ":GPUDialectRegistration",
1868        ":GPUToNVVMTransforms",
1869        ":GPUToROCDLTransforms",
1870        ":GPUTransforms",
1871        ":IR",
1872        ":LLVMDialect",
1873        ":LLVMTransforms",
1874        ":MlirJitRunner",
1875        ":NVVMDialect",
1876        ":Pass",
1877        ":Transforms",
1878        "//devtools/build/runtime:get_runfiles_dir",
1879        "//third_party/gpus/cuda:cuda_headers",
1880        "//third_party/gpus/cuda:cuda_runtime",
1881        "//third_party/gpus/cuda:libcuda",
1882        "@llvm-project//llvm:support",
1883    ],
1884)
1885
1886cc_library(
1887    name = "TableGen",
1888    srcs = glob(["lib/TableGen/*.cpp"]),
1889    hdrs = glob(["include/mlir/TableGen/*.h"]),
1890    includes = ["include"],
1891    deps = [
1892        ":Support",
1893        "@llvm-project//llvm:support",
1894        "@llvm-project//llvm:tablegen",
1895    ],
1896)
1897
1898cc_library(
1899    name = "MlirTableGenMain",
1900    srcs = [
1901        "tools/mlir-tblgen/mlir-tblgen.cpp",
1902    ],
1903    includes = ["include"],
1904    deps = [
1905        ":Support",
1906        ":TableGen",
1907        "@llvm-project//llvm:config",
1908        "@llvm-project//llvm:support",
1909        "@llvm-project//llvm:tablegen",
1910    ],
1911)
1912
1913cc_binary(
1914    name = "mlir-tblgen",
1915    srcs = glob([
1916        "tools/mlir-tblgen/*.h",
1917        "tools/mlir-tblgen/*.cpp",
1918    ]),
1919    linkopts = [
1920        "-lm",
1921        "-lpthread",
1922    ],
1923    deps = [
1924        ":MlirTableGenMain",
1925        ":Support",
1926        ":TableGen",
1927        "@llvm-project//llvm:config",
1928        "@llvm-project//llvm:support",
1929        "@llvm-project//llvm:tablegen",
1930    ],
1931)
1932
1933## OpenMP dialect
1934gentbl(
1935    name = "OpenMPOpsIncGen",
1936    strip_include_prefix = "include",
1937    tbl_outs = [
1938        (
1939            "-gen-op-decls",
1940            "include/mlir/Dialect/OpenMP/OpenMPOps.h.inc",
1941        ),
1942        (
1943            "-gen-op-defs",
1944            "include/mlir/Dialect/OpenMP/OpenMPOps.cpp.inc",
1945        ),
1946        (
1947            "-gen-op-doc",
1948            "g3doc/Dialects/OpenMP/OpenMPOps.md",
1949        ),
1950    ],
1951    tblgen = ":mlir-tblgen",
1952    td_file = "include/mlir/Dialect/OpenMP/OpenMPOps.td",
1953    td_srcs = [
1954        ":OpBaseTdFiles",
1955    ],
1956)
1957
1958cc_library(
1959    name = "OpenMPDialect",
1960    srcs = glob(
1961        [
1962            "lib/Dialect/OpenMP/IR/*.cpp",
1963            "lib/Dialect/OpenMP/IR/*.h",
1964        ],
1965    ),
1966    hdrs = glob([
1967        "include/mlir/Dialect/OpenMP/*.h",
1968    ]),
1969    includes = ["include"],
1970    deps = [
1971        ":IR",
1972        ":OpenMPOpsIncGen",
1973        "@llvm-project//llvm:support",
1974    ],
1975    alwayslink = 1,
1976)
1977
1978filegroup(
1979    name = "QuantizationOpsTdFiles",
1980    srcs = [
1981        "include/mlir/Dialect/QuantOps/QuantOps.td",
1982        "include/mlir/Dialect/QuantOps/QuantPredicates.td",
1983        ":OpBaseTdFiles",
1984    ],
1985)
1986
1987## QuantOps dialect
1988gentbl(
1989    name = "QuantOpsIncGen",
1990    strip_include_prefix = "include",
1991    tbl_outs = [
1992        (
1993            "-gen-op-decls",
1994            "include/mlir/Dialect/QuantOps/QuantOps.h.inc",
1995        ),
1996        (
1997            "-gen-op-defs",
1998            "include/mlir/Dialect/QuantOps/QuantOps.cpp.inc",
1999        ),
2000        (
2001            "-gen-op-doc",
2002            "g3doc/Dialects/QuantOps/QuantOps.md",
2003        ),
2004    ],
2005    tblgen = ":mlir-tblgen",
2006    td_file = "include/mlir/Dialect/QuantOps/QuantOps.td",
2007    td_srcs = [
2008        ":QuantizationOpsTdFiles",
2009    ],
2010)
2011
2012cc_library(
2013    name = "QuantOps",
2014    srcs = [
2015        "lib/Dialect/QuantOps/IR/QuantOps.cpp",
2016        "lib/Dialect/QuantOps/IR/QuantTypes.cpp",
2017        "lib/Dialect/QuantOps/IR/TypeDetail.h",
2018        "lib/Dialect/QuantOps/IR/TypeParser.cpp",
2019        "lib/Dialect/QuantOps/Transforms/ConvertConst.cpp",
2020        "lib/Dialect/QuantOps/Transforms/ConvertSimQuant.cpp",
2021        "lib/Dialect/QuantOps/Utils/FakeQuantSupport.cpp",
2022        "lib/Dialect/QuantOps/Utils/QuantizeUtils.cpp",
2023        "lib/Dialect/QuantOps/Utils/UniformSupport.cpp",
2024    ],
2025    hdrs = [
2026        "include/mlir/Dialect/QuantOps/FakeQuantSupport.h",
2027        "include/mlir/Dialect/QuantOps/Passes.h",
2028        "include/mlir/Dialect/QuantOps/QuantOps.h",
2029        "include/mlir/Dialect/QuantOps/QuantTypes.h",
2030        "include/mlir/Dialect/QuantOps/QuantizeUtils.h",
2031        "include/mlir/Dialect/QuantOps/UniformSupport.h",
2032    ],
2033    includes = ["include"],
2034    deps = [
2035        ":Analysis",
2036        ":IR",
2037        ":Pass",
2038        ":QuantOpsIncGen",
2039        ":StandardOps",
2040        ":Support",
2041        ":TransformUtils",
2042        "@llvm-project//llvm:support",
2043    ],
2044    alwayslink = 1,
2045)
2046
2047cc_library(
2048    name = "QuantOpsDialectRegistration",
2049    srcs = ["lib/Dialect/QuantOps/IR/DialectRegistration.cpp"],
2050    deps = [":QuantOps"],
2051    alwayslink = 1,
2052)
2053
2054filegroup(
2055    name = "FxpMathOpsTdFiles",
2056    srcs = [
2057        "include/mlir/Dialect/FxpMathOps/FxpMathOps.td",
2058        "include/mlir/Dialect/QuantOps/QuantPredicates.td",
2059        ":OpBaseTdFiles",
2060    ],
2061)
2062
2063## FxpMathOps dialect
2064gentbl(
2065    name = "FxpMathOpsIncGen",
2066    strip_include_prefix = "include",
2067    tbl_outs = [
2068        (
2069            "-gen-op-decls",
2070            "include/mlir/Dialect/FxpMathOps/FxpMathOps.h.inc",
2071        ),
2072        (
2073            "-gen-op-defs",
2074            "include/mlir/Dialect/FxpMathOps/FxpMathOps.cpp.inc",
2075        ),
2076        (
2077            "-gen-op-doc",
2078            "g3doc/Dialects/FxpMathOps/FxpMathOps.md",
2079        ),
2080    ],
2081    tblgen = ":mlir-tblgen",
2082    td_file = "include/mlir/Dialect/FxpMathOps/FxpMathOps.td",
2083    td_srcs = [
2084        ":FxpMathOpsTdFiles",
2085    ],
2086)
2087
2088cc_library(
2089    name = "FxpMathOps",
2090    srcs = [
2091        "lib/Dialect/FxpMathOps/IR/FxpMathOps.cpp",
2092        "lib/Dialect/FxpMathOps/Transforms/LowerUniformRealMath.cpp",
2093        "lib/Dialect/FxpMathOps/Transforms/UniformKernelUtils.h",
2094    ],
2095    hdrs = [
2096        "include/mlir/Dialect/FxpMathOps/FxpMathOps.h",
2097        "include/mlir/Dialect/FxpMathOps/Passes.h",
2098    ],
2099    includes = ["include"],
2100    deps = [
2101        ":Analysis",
2102        ":FxpMathOpsIncGen",
2103        ":IR",
2104        ":Pass",
2105        ":QuantOps",
2106        ":StandardOps",
2107        ":Support",
2108        ":TransformUtils",
2109        "@llvm-project//llvm:support",
2110    ],
2111    alwayslink = 1,
2112)
2113
2114cc_library(
2115    name = "FxpMathOpsDialectRegistration",
2116    srcs = ["lib/Dialect/FxpMathOps/IR/DialectRegistration.cpp"],
2117    deps = [":FxpMathOps"],
2118    alwayslink = 1,
2119)
2120
2121filegroup(
2122    name = "LinalgOpsTdFiles",
2123    srcs = [
2124        "include/mlir/Dialect/Linalg/IR/LinalgBase.td",
2125        "include/mlir/Dialect/Linalg/IR/LinalgOps.td",
2126        "include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td",
2127        ":AffineOpsTdFiles",
2128        ":OpBaseTdFiles",
2129    ],
2130)
2131
2132gentbl(
2133    name = "LinalgOpsIncGen",
2134    strip_include_prefix = "include",
2135    tbl_outs = [
2136        (
2137            "-gen-op-decls",
2138            "include/mlir/Dialect/Linalg/IR/LinalgOps.h.inc",
2139        ),
2140        (
2141            "-gen-op-defs",
2142            "include/mlir/Dialect/Linalg/IR/LinalgOps.cpp.inc",
2143        ),
2144    ],
2145    tblgen = ":mlir-tblgen",
2146    td_file = "include/mlir/Dialect/Linalg/IR/LinalgOps.td",
2147    td_srcs = [
2148        ":LinalgOpsTdFiles",
2149    ],
2150)
2151
2152filegroup(
2153    name = "LinalgStructuredOpsTdFiles",
2154    srcs = [
2155        "include/mlir/Dialect/Linalg/IR/LinalgBase.td",
2156        "include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td",
2157        ":AffineOpsTdFiles",
2158        ":OpBaseTdFiles",
2159    ],
2160)
2161
2162gentbl(
2163    name = "LinalgStructuredOpsIncGen",
2164    strip_include_prefix = "include",
2165    tbl_outs = [
2166        (
2167            "-gen-op-decls",
2168            "include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.h.inc",
2169        ),
2170        (
2171            "-gen-op-defs",
2172            "include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.cpp.inc",
2173        ),
2174        (
2175            "-gen-op-interface-decls",
2176            "include/mlir/Dialect/Linalg/IR/LinalgStructuredOpsInterfaces.h.inc",
2177        ),
2178        (
2179            "-gen-op-interface-defs",
2180            "include/mlir/Dialect/Linalg/IR/LinalgStructuredOpsInterfaces.cpp.inc",
2181        ),
2182    ],
2183    tblgen = ":mlir-tblgen",
2184    td_file = "include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td",
2185    td_srcs = [
2186        ":LinalgStructuredOpsTdFiles",
2187    ],
2188)
2189
2190filegroup(
2191    name = "LinalgDocTdFiles",
2192    srcs = [
2193        "include/mlir/Dialect/Linalg/IR/LinalgDoc.td",
2194        ":LinalgOpsTdFiles",
2195    ],
2196)
2197
2198gentbl(
2199    name = "LinalgDocIncGen",
2200    strip_include_prefix = "include",
2201    tbl_outs = [
2202        (
2203            "-gen-op-doc",
2204            "g3doc/Dialects/Linalg/LinalgOps.md",
2205        ),
2206    ],
2207    tblgen = ":mlir-tblgen",
2208    td_file = "include/mlir/Dialect/Linalg/IR/LinalgDoc.td",
2209    td_srcs = [
2210        ":LinalgDocTdFiles",
2211    ],
2212)
2213
2214filegroup(
2215    name = "LinalgTransformPatternsTdFiles",
2216    srcs = [
2217        "include/mlir/Dialect/Linalg/Transforms/LinalgTransformPatterns.td",
2218        ":AffineOpsTdFiles",
2219        ":LinalgOpsTdFiles",
2220        ":LinalgStructuredOpsTdFiles",
2221        ":OpBaseTdFiles",
2222    ],
2223)
2224
2225gentbl(
2226    name = "LinalgTransformPatternsIncGen",
2227    tbl_outs = [
2228        (
2229            "-gen-rewriters",
2230            "include/mlir/Dialect/Linalg/Transforms/LinalgTransformPatterns.h.inc",
2231        ),
2232    ],
2233    tblgen = ":mlir-tblgen",
2234    td_file = "include/mlir/Dialect/Linalg/Transforms/LinalgTransformPatterns.td",
2235    td_srcs = [
2236        ":LinalgTransformPatternsTdFiles",
2237    ],
2238)
2239
2240cc_library(
2241    name = "LinalgToLLVM",
2242    srcs = glob([
2243        "lib/Conversion/LinalgToLLVM/*.cpp",
2244        "lib/Conversion/LinalgToLLVM/*.h",
2245    ]),
2246    hdrs = glob([
2247        "include/mlir/Conversion/LinalgToLLVM/*.h",
2248    ]),
2249    includes = ["include"],
2250    deps = [
2251        ":AffineToStandardTransforms",
2252        ":Analysis",
2253        ":CFGTransforms",
2254        ":EDSC",
2255        ":IR",
2256        ":LLVMDialect",
2257        ":LLVMTransforms",
2258        ":LinalgOps",
2259        ":LinalgTransforms",
2260        ":Pass",
2261        ":StandardOps",
2262        ":Support",
2263        ":Transforms",
2264        ":VectorToLLVM",
2265        "@llvm-project//llvm:core",
2266        "@llvm-project//llvm:support",
2267    ],
2268    alwayslink = 1,
2269)
2270
2271cc_library(
2272    name = "LinalgToSPIRV",
2273    srcs = glob([
2274        "lib/Conversion/LinalgToSPIRV/*.cpp",
2275        "lib/Conversion/LinalgToSPIRV/*.h",
2276    ]),
2277    hdrs = glob([
2278        "include/mlir/Conversion/LinalgToSPIRV/*.h",
2279    ]),
2280    includes = ["include"],
2281    deps = [
2282        ":DialectUtils",
2283        ":IR",
2284        ":LinalgOps",
2285        ":LinalgTransforms",
2286        ":Pass",
2287        ":SPIRVDialect",
2288        ":SPIRVLowering",
2289        ":StandardOps",
2290    ],
2291    alwayslink = 1,
2292)
2293
2294cc_library(
2295    name = "LinalgOps",
2296    srcs = [
2297        "lib/Dialect/Linalg/IR/LinalgOps.cpp",
2298        "lib/Dialect/Linalg/IR/LinalgTypes.cpp",
2299    ],
2300    hdrs = [
2301        "include/mlir/Dialect/Linalg/IR/LinalgOps.h",
2302        "include/mlir/Dialect/Linalg/IR/LinalgTraits.h",
2303        "include/mlir/Dialect/Linalg/IR/LinalgTypes.h",
2304    ],
2305    includes = ["include"],
2306    deps = [
2307        ":DialectUtils",
2308        ":IR",
2309        ":LinalgOpsIncGen",
2310        ":LinalgStructuredOpsIncGen",
2311        ":Parser",
2312        ":StandardOps",
2313        ":Support",
2314        "@llvm-project//llvm:support",
2315    ],
2316    alwayslink = 1,
2317)
2318
2319cc_library(
2320    name = "LinalgTransforms",
2321    srcs = [
2322        "lib/Dialect/Linalg/Analysis/DependenceAnalysis.cpp",
2323        "lib/Dialect/Linalg/EDSC/Builders.cpp",
2324        "lib/Dialect/Linalg/Transforms/Fusion.cpp",
2325        "lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp",
2326        "lib/Dialect/Linalg/Transforms/LinalgTransforms.cpp",
2327        "lib/Dialect/Linalg/Transforms/Promotion.cpp",
2328        "lib/Dialect/Linalg/Transforms/Tiling.cpp",
2329        "lib/Dialect/Linalg/Utils/Utils.cpp",
2330    ],
2331    hdrs = [
2332        "include/mlir/Dialect/Linalg/Analysis/DependenceAnalysis.h",
2333        "include/mlir/Dialect/Linalg/EDSC/Builders.h",
2334        "include/mlir/Dialect/Linalg/EDSC/Intrinsics.h",
2335        "include/mlir/Dialect/Linalg/Passes.h",
2336        "include/mlir/Dialect/Linalg/Transforms/LinalgTransforms.h",
2337        "include/mlir/Dialect/Linalg/Utils/Utils.h",
2338    ],
2339    includes = ["include"],
2340    deps = [
2341        ":AffineOps",
2342        ":AffineToStandardTransforms",
2343        ":Analysis",
2344        ":CFGTransforms",
2345        ":DialectUtils",
2346        ":EDSC",
2347        ":IR",
2348        ":LLVMDialect",
2349        ":LLVMTransforms",
2350        ":LinalgOps",
2351        ":LinalgOpsIncGen",
2352        ":LinalgStructuredOpsIncGen",
2353        ":LinalgTransformPatternsIncGen",
2354        ":LoopOps",
2355        ":Parser",
2356        ":Pass",
2357        ":StandardOps",
2358        ":Support",
2359        ":TransformUtils",
2360        ":Transforms",
2361        ":VectorOps",
2362        "@llvm-project//llvm:core",
2363        "@llvm-project//llvm:support",
2364    ],
2365    alwayslink = 1,
2366)
2367
2368cc_library(
2369    name = "LinalgDialectRegistration",
2370    srcs = ["lib/Dialect/Linalg/IR/LinalgRegistration.cpp"],
2371    deps = [":LinalgOps"],
2372    alwayslink = 1,
2373)
2374
2375cc_library(
2376    name = "QuantizerSupportLib",
2377    srcs = glob([
2378        "lib/Quantizer/Configurations/*.cpp",
2379        "lib/Quantizer/Support/*.cpp",
2380        "lib/Quantizer/Configurations/*.h",
2381        "lib/Quantizer/Support/*.h",
2382    ]),
2383    hdrs = glob([
2384        "include/mlir/Quantizer/Configurations/*.h",
2385        "include/mlir/Quantizer/Support/*.h",
2386    ]),
2387    includes = ["include"],
2388    deps = [
2389        ":FxpMathOps",
2390        ":IR",
2391        ":QuantOps",
2392        ":StandardOps",
2393        ":Support",
2394        "@llvm-project//llvm:support",
2395    ],
2396)
2397
2398cc_library(
2399    name = "QuantizerTransforms",
2400    srcs = glob([
2401        "lib/Quantizer/Transforms/*.cpp",
2402        "lib/Quantizer/Transforms/*.h",
2403    ]),
2404    hdrs = glob([
2405        "include/mlir/Quantizer/Transforms/*.h",
2406    ]),
2407    includes = ["include"],
2408    deps = [
2409        ":IR",
2410        ":Pass",
2411        ":QuantOps",
2412        ":QuantizerSupportLib",
2413        ":Support",
2414        "@llvm-project//llvm:support",
2415    ],
2416    alwayslink = 1,
2417)
2418
2419filegroup(
2420    name = "VectorOpsTdFiles",
2421    srcs = [
2422        "include/mlir/Dialect/VectorOps/VectorOps.td",
2423        ":AffineOpsTdFiles",
2424        ":OpBaseTdFiles",
2425    ],
2426)
2427
2428gentbl(
2429    name = "VectorOpsIncGen",
2430    strip_include_prefix = "include",
2431    tbl_outs = [
2432        (
2433            "-gen-op-decls",
2434            "include/mlir/Dialect/VectorOps/VectorOps.h.inc",
2435        ),
2436        (
2437            "-gen-op-defs",
2438            "include/mlir/Dialect/VectorOps/VectorOps.cpp.inc",
2439        ),
2440        (
2441            "-gen-op-doc",
2442            "g3doc/Dialects/Vector/VectorOps.md",
2443        ),
2444    ],
2445    tblgen = ":mlir-tblgen",
2446    td_file = "include/mlir/Dialect/VectorOps/VectorOps.td",
2447    td_srcs = [
2448        ":VectorOpsTdFiles",
2449    ],
2450)
2451
2452filegroup(
2453    name = "VectorTransformPatternsTdFiles",
2454    srcs = [
2455        "include/mlir/Dialect/VectorOps/VectorTransformPatterns.td",
2456        ":AffineOpsTdFiles",
2457        ":LinalgOpsTdFiles",
2458        ":LinalgStructuredOpsTdFiles",
2459        ":OpBaseTdFiles",
2460        ":StdOpsTdFiles",
2461        ":VectorOpsTdFiles",
2462    ],
2463)
2464
2465gentbl(
2466    name = "VectorTransformPatternsIncGen",
2467    tbl_outs = [
2468        (
2469            "-gen-rewriters",
2470            "include/mlir/Dialect/VectorOps/VectorTransformPatterns.h.inc",
2471        ),
2472    ],
2473    tblgen = ":mlir-tblgen",
2474    td_file = "include/mlir/Dialect/VectorOps/VectorTransformPatterns.td",
2475    td_srcs = [
2476        ":VectorTransformPatternsTdFiles",
2477    ],
2478)
2479
2480cc_library(
2481    name = "VectorToLLVM",
2482    srcs = glob([
2483        "lib/Conversion/VectorToLLVM/*.cpp",
2484        "lib/Conversion/VectorToLLVM/*.h",
2485    ]),
2486    hdrs = glob([
2487        "include/mlir/Conversion/VectorToLLVM/*.h",
2488    ]),
2489    includes = ["include"],
2490    deps = [
2491        ":EDSC",
2492        ":IR",
2493        ":LLVMDialect",
2494        ":LLVMTransforms",
2495        ":Pass",
2496        ":StandardOps",
2497        ":Support",
2498        ":Transforms",
2499        ":VectorOps",
2500        "@llvm-project//llvm:core",
2501        "@llvm-project//llvm:support",
2502    ],
2503    alwayslink = 1,
2504)
2505
2506cc_library(
2507    name = "VectorToLoops",
2508    srcs = glob([
2509        "lib/Conversion/VectorToLoops/*.cpp",
2510        "lib/Conversion/VectorToLoops/*.h",
2511    ]),
2512    hdrs = glob([
2513        "include/mlir/Conversion/VectorToLoops/*.h",
2514    ]),
2515    includes = ["include"],
2516    deps = [
2517        ":EDSC",
2518        ":IR",
2519        ":LLVMDialect",
2520        ":LLVMTransforms",
2521        ":Pass",
2522        ":StandardOps",
2523        ":Support",
2524        ":Transforms",
2525        ":VectorOps",
2526        "@llvm-project//llvm:core",
2527        "@llvm-project//llvm:support",
2528    ],
2529    alwayslink = 1,
2530)
2531
2532gentbl(
2533    name = "tpu_intrinsics_patterns_target",
2534    strip_include_prefix = "include",
2535    tbl_outs = [("-gen-llvmir-intrinsics -dialect-opclass-base LLVM_TpuOp -llvmir-intrinsics-filter int_tpu", "include/mlir/IR/llvm_tpu_ops_gen.td.inc")],
2536    tblgen = ":mlir-tblgen",
2537    td_file = "//third_party/llvm/llvm-project/llvm:include/llvm/IR/Intrinsics.td",
2538    td_includes = ["third_party/llvm/llvm-project/llvm/include/"],
2539    td_srcs = ["//third_party/llvm/llvm-project/llvm:common_target_td_sources"],
2540)
2541
2542# To reference all tablegen files here when checking for updates to them.
2543filegroup(
2544    name = "TdFiles",
2545    srcs = glob(["**/*.td"]),
2546)
2547
2548exports_files(
2549    [
2550        "include/mlir/Analysis/CallInterfaces.h",
2551        "include/mlir/Analysis/CallInterfaces.td",
2552        "include/mlir/Dialect/LLVMIR/LLVMOpBase.td",
2553        "include/mlir/Dialect/StandardOps/Ops.td",
2554        "include/mlir/IR/OpAsmInterface.td",
2555        "include/mlir/IR/OpBase.td",
2556        "include/mlir/Transforms/InliningUtils.h",
2557    ],
2558    visibility = ["@llvm-project//mlir:friends"],
2559)
2560
2561exports_files(
2562    [
2563        "include/mlir/Analysis/InferTypeOpInterface.td",
2564        "include/mlir/Transforms/LoopLikeInterface.td",
2565    ],
2566    visibility = ["@llvm-project//mlir:friends"],
2567)
2568