• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("//tensorflow/core/platform:rules_cc.bzl", "cc_library")
2
3# buildifier: disable=same-origin-load
4load("//tensorflow:tensorflow.bzl", "get_compatible_with_cloud")
5load("@llvm-project//mlir:tblgen.bzl", "gentbl_cc_library", "gentbl_filegroup", "td_library")
6
7# TODO(b/160617323): Decouple MLIR HLO from TensorFlow/XLA
8load("//tensorflow:tensorflow.bzl", "tf_cc_test")
9
10package(
11    default_visibility = [":friends"],
12    licenses = ["notice"],
13)
14
15package_group(
16    name = "friends",
17    packages = [
18        "//babelfish/device/...",
19        "//learning/brain/experimental/dtensor/...",
20        "//learning/brain/experimental/mlir/...",
21        "//learning/brain/google/xla/kernels/...",
22        "//learning/brain/google/xla/mlir/...",
23        "//learning/deepmind/partir/...",
24        "//learning/pathways/data_parallel/tf2xla/...",
25        "//platforms/darwinn/tools/mlir_fuzzer/...",
26        "//platforms/xla/...",
27        "//third_party/iree/...",
28        "//third_party/mlir_edge/...",
29        "//third_party/py/mlir/...",
30        "//tensorflow/compiler/mlir/...",
31        "//tensorflow/compiler/tf2xla/...",
32        "//tensorflow/compiler/xla/...",
33        # Allow visibility from the mlir language server.
34        "//learning/brain/mlir/mlir_lsp_server/...",
35    ],
36)
37
38exports_files([
39    "include/mlir-hlo/Dialect/mhlo/IR/clo_ops.td",
40    "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops.td",
41    "include/mlir-hlo/Dialect/mhlo/IR/lhlo_ops.td",
42])
43
44# Python extension sources.
45exports_files(["python/MlirHloModule.cpp"])
46
47filegroup(
48    name = "hlo_ops_td_filegroup",
49    srcs = glob(["include/mlir-hlo/Dialect/mhlo/IR/*.td"]),
50)
51
52td_library(
53    name = "hlo_ops_td_files",
54    srcs = glob(["include/mlir-hlo/Dialect/mhlo/IR/*.td"]),
55    compatible_with = get_compatible_with_cloud(),
56    includes = ["include"],
57    deps = [
58        "@llvm-project//mlir:ControlFlowInterfacesTdFiles",
59        "@llvm-project//mlir:CopyOpInterfaceTdFiles",
60        "@llvm-project//mlir:InferTypeOpInterfaceTdFiles",
61        "@llvm-project//mlir:LoopLikeInterfaceTdFiles",
62        "@llvm-project//mlir:MemRefOpsTdFiles",
63        "@llvm-project//mlir:OpBaseTdFiles",
64        "@llvm-project//mlir:ShapeOpsTdFiles",
65        "@llvm-project//mlir:SideEffectTdFiles",
66        "@llvm-project//mlir:ViewLikeInterfaceTdFiles",
67    ],
68)
69
70gentbl_cc_library(
71    name = "MhloPassIncGen",
72    compatible_with = get_compatible_with_cloud(),
73    strip_include_prefix = "include",
74    tbl_outs = [
75        (
76            [
77                "-gen-pass-decls",
78                "-name=MHLO",
79            ],
80            "include/mlir-hlo/Dialect/mhlo/transforms/mhlo_passes.h.inc",
81        ),
82    ],
83    tblgen = "@llvm-project//mlir:mlir-tblgen",
84    td_file = "include/mlir-hlo/Dialect/mhlo/transforms/mhlo_passes.td",
85    deps = [
86        "@llvm-project//mlir:PassBaseTdFiles",
87    ],
88)
89
90gentbl_cc_library(
91    name = "LmhloPassIncGen",
92    compatible_with = get_compatible_with_cloud(),
93    strip_include_prefix = "include",
94    tbl_outs = [
95        (
96            [
97                "-gen-pass-decls",
98                "-name=LMHLO",
99            ],
100            "include/mlir-hlo/Dialect/mhlo/transforms/lmhlo_passes.h.inc",
101        ),
102    ],
103    tblgen = "@llvm-project//mlir:mlir-tblgen",
104    td_file = "include/mlir-hlo/Dialect/mhlo/transforms/lmhlo_passes.td",
105    deps = [
106        "@llvm-project//mlir:PassBaseTdFiles",
107    ],
108)
109
110gentbl_cc_library(
111    name = "chlo_ops_inc_gen",
112    compatible_with = get_compatible_with_cloud(),
113    strip_include_prefix = "include",
114    tbl_outs = [
115        (
116            ["-gen-op-decls"],
117            "include/mlir-hlo/Dialect/mhlo/IR/chlo_ops.h.inc",
118        ),
119        (
120            ["-gen-op-defs"],
121            "include/mlir-hlo/Dialect/mhlo/IR/chlo_ops.cc.inc",
122        ),
123    ],
124    tblgen = "@llvm-project//mlir:mlir-tblgen",
125    td_file = "include/mlir-hlo/Dialect/mhlo/IR/chlo_ops.td",
126    deps = [":hlo_ops_td_files"],
127)
128
129gentbl_cc_library(
130    name = "hlo_ops_inc_gen",
131    compatible_with = get_compatible_with_cloud(),
132    strip_include_prefix = "include",
133    tbl_outs = [
134        (
135            ["-gen-op-decls"],
136            "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops.h.inc",
137        ),
138        (
139            ["-gen-op-defs"],
140            "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops.cc.inc",
141        ),
142    ],
143    tblgen = "@llvm-project//mlir:mlir-tblgen",
144    td_file = "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops.td",
145    deps = [":hlo_ops_td_files"],
146)
147
148gentbl_cc_library(
149    name = "hlo_ops_base_inc_gen",
150    compatible_with = get_compatible_with_cloud(),
151    strip_include_prefix = "include",
152    tbl_outs = [
153        (
154            ["-gen-op-decls"],
155            "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base.h.inc",
156        ),
157        (
158            ["-gen-op-defs"],
159            "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base.cc.inc",
160        ),
161    ],
162    tblgen = "@llvm-project//mlir:mlir-tblgen",
163    td_file = "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base.td",
164    deps = [":hlo_ops_td_files"],
165)
166
167gentbl_cc_library(
168    name = "hlo_ops_base_structs_inc_gen",
169    compatible_with = get_compatible_with_cloud(),
170    tbl_outs = [
171        (
172            ["-gen-struct-attr-decls"],
173            "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base_structs.h.inc",
174        ),
175        (
176            ["-gen-struct-attr-defs"],
177            "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base_structs.cc.inc",
178        ),
179    ],
180    tblgen = "@llvm-project//mlir:mlir-tblgen",
181    td_file = "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base.td",
182    deps = [":hlo_ops_td_files"],
183)
184
185gentbl_cc_library(
186    name = "hlo_ops_base_enums_inc_gen",
187    compatible_with = get_compatible_with_cloud(),
188    tbl_outs = [
189        (
190            ["-gen-enum-decls"],
191            "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base_enums.h.inc",
192        ),
193        (
194            ["-gen-enum-defs"],
195            "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base_enums.cc.inc",
196        ),
197    ],
198    tblgen = "@llvm-project//mlir:mlir-tblgen",
199    td_file = "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base.td",
200    deps = [":hlo_ops_td_files"],
201)
202
203gentbl_cc_library(
204    name = "hlo_ops_pattern_gen",
205    compatible_with = get_compatible_with_cloud(),
206    strip_include_prefix = "lib/Dialect/mhlo/IR/",
207    tbl_outs = [
208        (
209            ["-gen-rewriters"],
210            "lib/Dialect/mhlo/IR/hlo_patterns.cc.inc",
211        ),
212    ],
213    tblgen = "@llvm-project//mlir:mlir-tblgen",
214    td_file = "lib/Dialect/mhlo/IR/hlo_patterns.td",
215    deps = [
216        ":hlo_ops_td_files",
217        "@llvm-project//mlir:StdOpsTdFiles",
218        "@llvm-project//mlir:TensorOpsTdFiles",
219    ],
220)
221
222gentbl_cc_library(
223    name = "lhlo_ops_structs_inc_gen",
224    compatible_with = get_compatible_with_cloud(),
225    strip_include_prefix = "include",
226    tbl_outs = [
227        (
228            ["-gen-struct-attr-decls"],
229            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_ops_structs.h.inc",
230        ),
231        (
232            ["-gen-struct-attr-defs"],
233            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_ops_structs.cc.inc",
234        ),
235    ],
236    tblgen = "@llvm-project//mlir:mlir-tblgen",
237    td_file = "include/mlir-hlo/Dialect/mhlo/IR/lhlo_ops_structs.td",
238    deps = [":hlo_ops_td_files"],
239)
240
241gentbl_cc_library(
242    name = "lhlo_ops_inc_gen",
243    compatible_with = get_compatible_with_cloud(),
244    strip_include_prefix = "include",
245    tbl_outs = [
246        (
247            ["-gen-op-decls"],
248            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_ops.h.inc",
249        ),
250        (
251            ["-gen-op-defs"],
252            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_ops.cc.inc",
253        ),
254    ],
255    tblgen = "@llvm-project//mlir:mlir-tblgen",
256    td_file = "include/mlir-hlo/Dialect/mhlo/IR/lhlo_ops.td",
257    deps = [":hlo_ops_td_files"],
258)
259
260gentbl_cc_library(
261    name = "lhlo_gpu_ops_structs_inc_gen",
262    compatible_with = get_compatible_with_cloud(),
263    strip_include_prefix = "include",
264    tbl_outs = [
265        (
266            ["-gen-struct-attr-decls"],
267            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_structs.h.inc",
268        ),
269        (
270            ["-gen-struct-attr-defs"],
271            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_structs.cc.inc",
272        ),
273    ],
274    tblgen = "@llvm-project//mlir:mlir-tblgen",
275    td_file = "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_structs.td",
276    deps = [":hlo_ops_td_files"],
277)
278
279gentbl_cc_library(
280    name = "lhlo_gpu_ops_enums_inc_gen",
281    compatible_with = get_compatible_with_cloud(),
282    strip_include_prefix = "include",
283    tbl_outs = [
284        (
285            ["-gen-enum-decls"],
286            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_enums.h.inc",
287        ),
288        (
289            ["-gen-enum-defs"],
290            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_enums.cc.inc",
291        ),
292    ],
293    tblgen = "@llvm-project//mlir:mlir-tblgen",
294    td_file = "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_enums.td",
295    deps = [":hlo_ops_td_files"],
296)
297
298gentbl_filegroup(
299    name = "hlo_ops_doc_gen",
300    compatible_with = get_compatible_with_cloud(),
301    tbl_outs = [
302        (
303            ["-gen-dialect-doc"],
304            "g3doc/hlo_ops.md",
305        ),
306    ],
307    tblgen = "@llvm-project//mlir:mlir-tblgen",
308    td_file = "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops.td",
309    deps = [":hlo_ops_td_files"],
310)
311
312gentbl_filegroup(
313    name = "lhlo_ops_doc_gen",
314    compatible_with = get_compatible_with_cloud(),
315    tbl_outs = [
316        (
317            ["-gen-dialect-doc"],
318            "g3doc/lhlo_ops.md",
319        ),
320    ],
321    tblgen = "@llvm-project//mlir:mlir-tblgen",
322    td_file = "include/mlir-hlo/Dialect/mhlo/IR/lhlo_ops.td",
323    deps = [":hlo_ops_td_files"],
324)
325
326cc_library(
327    name = "hlo_ops_common",
328    srcs = ["lib/Dialect/mhlo/IR/hlo_ops_common.cc"],
329    hdrs = ["include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_common.h"],
330    includes = ["include"],
331    deps = [
332        "@llvm-project//llvm:Support",
333        "@llvm-project//mlir:IR",
334        "@llvm-project//mlir:Support",
335    ],
336)
337
338cc_library(
339    name = "lhlo_gpu_ops_structs",
340    srcs = [
341        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_structs.cc.inc",
342        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_structs.h.inc",
343        "lib/Dialect/mhlo/IR/lhlo_gpu_ops_structs.cc",
344    ],
345    hdrs = [
346        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_structs.h",
347    ],
348    includes = ["include"],
349    deps = [
350        ":lhlo_gpu_ops_structs_inc_gen",
351        "@llvm-project//mlir:IR",
352        "@llvm-project//mlir:Support",
353    ],
354)
355
356cc_library(
357    name = "lhlo_gpu_ops_enums",
358    srcs = [
359        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_enums.cc.inc",
360        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_enums.h.inc",
361        "lib/Dialect/mhlo/IR/lhlo_gpu_ops_enums.cc",
362    ],
363    hdrs = [
364        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops_enums.h",
365    ],
366    includes = ["include"],
367    deps = [
368        ":lhlo_gpu_ops_enums_inc_gen",
369        "@llvm-project//llvm:Support",
370    ],
371)
372
373gentbl_cc_library(
374    name = "lhlo_gpu_ops_inc_gen",
375    compatible_with = get_compatible_with_cloud(),
376    strip_include_prefix = "include",
377    tbl_outs = [
378        (
379            ["-gen-op-decls"],
380            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops.h.inc",
381        ),
382        (
383            ["-gen-op-defs"],
384            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops.cc.inc",
385        ),
386    ],
387    tblgen = "@llvm-project//mlir:mlir-tblgen",
388    td_file = "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops.td",
389    deps = [":hlo_ops_td_files"],
390)
391
392#TODO(aminim): revisit the naming and grouping of these rules post-move.
393gentbl_cc_library(
394    name = "canonicalize_inc_gen",
395    compatible_with = get_compatible_with_cloud(),
396    strip_include_prefix = "lib/Dialect/mhlo/IR/",
397    tbl_outs = [
398        (
399            ["-gen-rewriters"],
400            "lib/Dialect/mhlo/IR/mhlo_canonicalize.inc",
401        ),
402    ],
403    tblgen = "@llvm-project//mlir:mlir-tblgen",
404    td_file = "lib/Dialect/mhlo/IR/mhlo_canonicalize.td",
405    deps = [":hlo_ops_td_files"],
406)
407
408gentbl_cc_library(
409    name = "infer_fusibility_op_interface_gen",
410    compatible_with = get_compatible_with_cloud(),
411    tbl_outs = [
412        (
413            ["-gen-op-interface-decls"],
414            "include/mlir-hlo/Dialect/mhlo/IR/infer_fusibility_op_interface.h.inc",
415        ),
416        (
417            ["-gen-op-interface-defs"],
418            "include/mlir-hlo/Dialect/mhlo/IR/infer_fusibility_op_interface.cpp.inc",
419        ),
420    ],
421    tblgen = "@llvm-project//mlir:mlir-tblgen",
422    td_file = "include/mlir-hlo/Dialect/mhlo/IR/infer_fusibility_op_interface.td",
423    deps = [":hlo_ops_td_files"],
424)
425
426cc_library(
427    name = "infer_fusibility_op_interface",
428    srcs = [
429        "lib/Dialect/mhlo/IR/infer_fusibility_op_interface.cc",
430    ],
431    hdrs = [
432        "include/mlir-hlo/Dialect/mhlo/IR/infer_fusibility_op_interface.h",
433        "include/mlir-hlo/Dialect/mhlo/IR/infer_fusibility_op_interface.h.inc",
434    ],
435    includes = ["include"],
436    deps = [
437        ":infer_fusibility_op_interface_gen",
438        "@llvm-project//mlir:IR",
439        "@llvm-project//mlir:Support",
440    ],
441    alwayslink = 1,
442)
443
444gentbl_cc_library(
445    name = "lhlo_structured_interface_gen",
446    compatible_with = get_compatible_with_cloud(),
447    tbl_outs = [
448        (
449            ["-gen-op-interface-decls"],
450            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_structured_interface.h.inc",
451        ),
452        (
453            ["-gen-op-interface-defs"],
454            "include/mlir-hlo/Dialect/mhlo/IR/lhlo_structured_interface.cpp.inc",
455        ),
456    ],
457    tblgen = "@llvm-project//mlir:mlir-tblgen",
458    td_file = "include/mlir-hlo/Dialect/mhlo/IR/lhlo_structured_interface.td",
459    deps = [":hlo_ops_td_files"],
460)
461
462cc_library(
463    name = "lhlo_structured_interface",
464    srcs = [
465        "lib/Dialect/mhlo/IR/lhlo_structured_interface.cc",
466    ],
467    hdrs = [
468        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_structured_interface.h",
469        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_structured_interface.h.inc",
470    ],
471    includes = ["include"],
472    deps = [
473        ":lhlo_structured_interface_gen",
474        "@llvm-project//mlir:IR",
475        "@llvm-project//mlir:Support",
476    ],
477)
478
479cc_library(
480    name = "hlo_ops_base_structs",
481    srcs = [
482        "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base_structs.h.inc",
483        "lib/Dialect/mhlo/IR/hlo_ops_base_structs.cc",
484    ],
485    hdrs = [
486        "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base_structs.h",
487    ],
488    includes = ["include"],
489    deps = [
490        ":hlo_ops_base_structs_inc_gen",
491        "@llvm-project//mlir:IR",
492        "@llvm-project//mlir:Support",
493    ],
494)
495
496cc_library(
497    name = "hlo_ops_base_enums",
498    srcs = [
499        "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base_enums.h.inc",
500        "lib/Dialect/mhlo/IR/hlo_ops_base_enums.cc",
501    ],
502    hdrs = [
503        "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base_enums.h",
504    ],
505    includes = ["include"],
506    deps = [
507        ":hlo_ops_base_enums_inc_gen",
508        "@llvm-project//llvm:Support",
509        "@llvm-project//mlir:IR",
510    ],
511)
512
513cc_library(
514    name = "convert_op_folder",
515    srcs = ["lib/utils/convert_op_folder.cc"],
516    hdrs = ["include/mlir-hlo/utils/convert_op_folder.h"],
517    includes = ["include"],
518    deps = [
519        "@llvm-project//mlir:IR",
520    ],
521)
522
523cc_library(
524    name = "hlo",
525    srcs = [
526        "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops.cc.inc",
527        "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops.h.inc",
528        "lib/Dialect/mhlo/IR/chlo_ops.cc",
529        "lib/Dialect/mhlo/IR/hlo_ops.cc",
530        "lib/utils/broadcast_utils.cc",
531        "lib/utils/hlo_utils.cc",
532    ],
533    hdrs = [
534        "include/mlir-hlo/Dialect/mhlo/IR/chlo_ops.h",
535        "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops.h",
536        "include/mlir-hlo/Dialect/mhlo/IR/hlo_ops_base.h",
537        "include/mlir-hlo/utils/broadcast_utils.h",
538        "include/mlir-hlo/utils/hlo_utils.h",
539    ],
540    includes = ["include"],
541    deps = [
542        ":canonicalize_inc_gen",
543        ":chlo_ops_inc_gen",
544        ":convert_op_folder",
545        ":hlo_ops_base_enums",
546        ":hlo_ops_base_inc_gen",
547        ":hlo_ops_base_structs",
548        ":hlo_ops_common",
549        ":hlo_ops_inc_gen",
550        ":hlo_ops_pattern_gen",
551        ":infer_fusibility_op_interface",
552        "@llvm-project//llvm:Support",
553        "@llvm-project//mlir:Analysis",
554        "@llvm-project//mlir:ControlFlowInterfaces",
555        "@llvm-project//mlir:IR",
556        "@llvm-project//mlir:InferTypeOpInterface",
557        "@llvm-project//mlir:MemRefDialect",
558        "@llvm-project//mlir:Pass",
559        "@llvm-project//mlir:Shape",
560        "@llvm-project//mlir:SideEffects",
561        "@llvm-project//mlir:StandardOps",
562        "@llvm-project//mlir:Support",
563        "@llvm-project//mlir:TensorDialect",
564        "@llvm-project//mlir:TransformUtils",
565        "@llvm-project//mlir:Transforms",
566    ],
567    alwayslink = 1,
568)
569
570cc_library(
571    name = "lhlo",
572    srcs = [
573        "lib/Dialect/mhlo/IR/lhlo_ops.cc",
574        "lib/Dialect/mhlo/IR/lhlo_ops_structs.cc",
575    ],
576    hdrs = [
577        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_ops.h",
578        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_ops_structs.h",
579        "include/mlir-hlo/utils/lhlo_utils.h",
580    ],
581    includes = ["include"],
582    deps = [
583        ":hlo_ops_base_enums",
584        ":hlo_ops_base_inc_gen",
585        ":hlo_ops_base_structs",
586        ":hlo_ops_common",
587        ":lhlo_ops_inc_gen",
588        ":lhlo_ops_structs_inc_gen",
589        ":lhlo_structured_interface",
590        "@llvm-project//llvm:Support",
591        "@llvm-project//mlir:Analysis",
592        "@llvm-project//mlir:ControlFlowInterfaces",
593        "@llvm-project//mlir:CopyOpInterface",
594        "@llvm-project//mlir:IR",
595        "@llvm-project//mlir:LoopLikeInterface",
596        "@llvm-project//mlir:MemRefDialect",
597        "@llvm-project//mlir:Pass",
598        "@llvm-project//mlir:SideEffects",
599        "@llvm-project//mlir:StandardOps",
600        "@llvm-project//mlir:Support",
601        "@llvm-project//mlir:TransformUtils",
602        "@llvm-project//mlir:Transforms",
603        "@llvm-project//mlir:ViewLikeInterface",
604    ],
605    alwayslink = 1,
606)
607
608cc_library(
609    name = "lhlo_gpu",
610    srcs = [
611        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops.cc.inc",
612        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops.h.inc",
613        "lib/Dialect/mhlo/IR/lhlo_gpu_ops.cc",
614    ],
615    hdrs = [
616        "include/mlir-hlo/Dialect/mhlo/IR/lhlo_gpu_ops.h",
617    ],
618    includes = ["include"],
619    deps = [
620        ":hlo",
621        ":hlo_ops_base_enums",
622        ":hlo_ops_base_structs",
623        ":hlo_ops_common",
624        ":infer_fusibility_op_interface",
625        ":lhlo",
626        ":lhlo_gpu_ops_enums",
627        ":lhlo_gpu_ops_inc_gen",
628        ":lhlo_gpu_ops_structs",
629        "@llvm-project//llvm:Support",
630        "@llvm-project//mlir:Analysis",
631        "@llvm-project//mlir:ControlFlowInterfaces",
632        "@llvm-project//mlir:CopyOpInterface",
633        "@llvm-project//mlir:IR",
634        "@llvm-project//mlir:InferTypeOpInterface",
635        "@llvm-project//mlir:LoopLikeInterface",
636        "@llvm-project//mlir:Pass",
637        "@llvm-project//mlir:SideEffects",
638        "@llvm-project//mlir:StandardOps",
639        "@llvm-project//mlir:Support",
640        "@llvm-project//mlir:TransformUtils",
641        "@llvm-project//mlir:Transforms",
642        "@llvm-project//mlir:ViewLikeInterface",
643    ],
644    alwayslink = 1,
645)
646
647gentbl_cc_library(
648    name = "DiscRalPassIncGen",
649    compatible_with = get_compatible_with_cloud(),
650    strip_include_prefix = "include",
651    tbl_outs = [
652        (
653            [
654                "-gen-pass-decls",
655                "-name=RAL",
656            ],
657            "include/mlir-hlo/Dialect/mhlo/transforms/disc_ral_passes.h.inc",
658        ),
659    ],
660    tblgen = "@llvm-project//mlir:mlir-tblgen",
661    td_file = "include/mlir-hlo/Dialect/mhlo/transforms/disc_ral_passes.td",
662    deps = [
663        "@llvm-project//mlir:PassBaseTdFiles",
664    ],
665)
666
667gentbl_cc_library(
668    name = "disc_ral_ops_inc_gen",
669    compatible_with = get_compatible_with_cloud(),
670    strip_include_prefix = "include",
671    tbl_outs = [
672        (
673            ["-gen-op-decls"],
674            "include/mlir-hlo/Dialect/mhlo/IR/disc_ral_ops.h.inc",
675        ),
676        (
677            ["-gen-op-defs"],
678            "include/mlir-hlo/Dialect/mhlo/IR/disc_ral_ops.cc.inc",
679        ),
680    ],
681    tblgen = "@llvm-project//mlir:mlir-tblgen",
682    td_file = "include/mlir-hlo/Dialect/mhlo/IR/disc_ral_ops.td",
683    deps = [":hlo_ops_td_files"],
684)
685
686cc_library(
687    name = "disc_ral",
688    srcs = [
689        "include/mlir-hlo/Dialect/mhlo/IR/disc_ral_ops.cc.inc",
690        "include/mlir-hlo/Dialect/mhlo/IR/disc_ral_ops.h.inc",
691        "lib/Dialect/mhlo/IR/disc_ral_ops.cc",
692    ],
693    hdrs = [
694        "include/mlir-hlo/Dialect/mhlo/IR/disc_ral_ops.h",
695    ],
696    includes = ["include"],
697    deps = [
698        ":disc_ral_ops_inc_gen",
699        "@llvm-project//llvm:Support",
700        "@llvm-project//mlir:Analysis",
701        "@llvm-project//mlir:ControlFlowInterfaces",
702        "@llvm-project//mlir:CopyOpInterface",
703        "@llvm-project//mlir:IR",
704        "@llvm-project//mlir:InferTypeOpInterface",
705        "@llvm-project//mlir:LoopLikeInterface",
706        "@llvm-project//mlir:MemRefDialect",
707        "@llvm-project//mlir:Pass",
708        "@llvm-project//mlir:SideEffects",
709        "@llvm-project//mlir:StandardOps",
710        "@llvm-project//mlir:Support",
711        "@llvm-project//mlir:TransformUtils",
712        "@llvm-project//mlir:Transforms",
713        "@llvm-project//mlir:ViewLikeInterface",
714    ],
715    alwayslink = 1,
716)
717
718cc_library(
719    name = "ral_inject_execution_context",
720    srcs = ["lib/Dialect/mhlo/transforms/ral_inject_execution_context.cc"],
721    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/passes.h"],
722    deps = [
723        ":disc_ral",
724        ":pass_details",
725        "@llvm-project//llvm:Support",
726        "@llvm-project//mlir:IR",
727        "@llvm-project//mlir:Pass",
728        "@llvm-project//mlir:SCFDialect",
729        "@llvm-project//mlir:Shape",
730        "@llvm-project//mlir:StandardOps",
731        "@llvm-project//mlir:TensorDialect",
732        "@llvm-project//mlir:Transforms",
733    ],
734    alwayslink = 1,
735)
736
737cc_library(
738    name = "ral_lower_to_library_call",
739    srcs = ["lib/Dialect/mhlo/transforms/ral_lower_to_library_call.cc"],
740    hdrs = [
741        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
742        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
743    ],
744    deps = [
745        ":disc_ral",
746        ":pass_details",
747        "@llvm-project//llvm:Support",
748        "@llvm-project//llvm:TransformUtils",
749        "@llvm-project//mlir:IR",
750        "@llvm-project//mlir:Pass",
751        "@llvm-project//mlir:Shape",
752        "@llvm-project//mlir:StandardOps",
753        "@llvm-project//mlir:Support",
754        "@llvm-project//mlir:TensorDialect",
755        "@llvm-project//mlir:TensorTransforms",
756        "@llvm-project//mlir:Transforms",
757    ],
758    alwayslink = 1,
759)
760
761cc_library(
762    name = "ral_legalize_to_llvm",
763    srcs = ["lib/Dialect/mhlo/transforms/ral_legalize_to_llvm.cc"],
764    hdrs = [
765        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
766        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
767    ],
768    deps = [
769        ":disc_ral",
770        ":pass_details",
771        "@llvm-project//llvm:Support",
772        "@llvm-project//llvm:TransformUtils",
773        "@llvm-project//mlir:Affine",
774        "@llvm-project//mlir:AllPassesAndDialects",
775        "@llvm-project//mlir:Analysis",
776        "@llvm-project//mlir:GPUDialect",
777        "@llvm-project//mlir:GPUToGPURuntimeTransforms",
778        "@llvm-project//mlir:IR",
779        "@llvm-project//mlir:LLVMCommonConversion",
780        "@llvm-project//mlir:LLVMDialect",
781        "@llvm-project//mlir:LLVMTransforms",
782        "@llvm-project//mlir:MathDialect",
783        "@llvm-project//mlir:MemRefDialect",
784        "@llvm-project//mlir:Pass",
785        "@llvm-project//mlir:StandardOps",
786        "@llvm-project//mlir:StandardOpsTransforms",
787        "@llvm-project//mlir:Support",
788        "@llvm-project//mlir:ToLLVMIRTranslation",
789        "@llvm-project//mlir:Transforms",
790    ],
791    alwayslink = 1,
792)
793
794cc_library(
795    name = "hlo_dialect_registration",
796    srcs = ["lib/Dialect/mhlo/IR/init.cc"],
797    hdrs = ["include/mlir-hlo/Dialect/mhlo/IR/register.h"],
798    deps = [
799        ":disc_ral",
800        ":hlo",
801        ":lhlo",
802        ":lhlo_gpu",
803        "@llvm-project//mlir:IR",
804    ],
805)
806
807cc_library(
808    name = "sink_constants_to_control_flow",
809    srcs = [
810        "lib/Dialect/mhlo/transforms/sink_constants_to_control_flow.cc",
811    ],
812    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/passes.h"],
813    deps = [
814        ":hlo",
815        ":pass_details",
816        "@llvm-project//llvm:Support",
817        "@llvm-project//mlir:IR",
818        "@llvm-project//mlir:Pass",
819        "@llvm-project//mlir:SCFDialect",
820        "@llvm-project//mlir:StandardOps",
821        "@llvm-project//mlir:Support",
822        "@llvm-project//mlir:Transforms",
823    ],
824    alwayslink = 1,
825)
826
827cc_library(
828    name = "mhlo_control_flow_to_scf",
829    srcs = ["lib/Dialect/mhlo/transforms/mhlo_control_flow_to_scf.cc"],
830    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/passes.h"],
831    deps = [
832        ":hlo",
833        ":pass_details",
834        "@llvm-project//llvm:Support",
835        "@llvm-project//mlir:IR",
836        "@llvm-project//mlir:Pass",
837        "@llvm-project//mlir:SCFDialect",
838        "@llvm-project//mlir:StandardOps",
839        "@llvm-project//mlir:Support",
840        "@llvm-project//mlir:TensorDialect",
841    ],
842)
843
844cc_library(
845    name = "mhlo_mark_shape_calc",
846    srcs = ["lib/Dialect/mhlo/transforms/mhlo_mark_shape_calc.cc"],
847    deps = [
848        ":hlo",
849        ":pass_details",
850        "@llvm-project//llvm:Support",
851        "@llvm-project//mlir:IR",
852        "@llvm-project//mlir:Pass",
853        "@llvm-project//mlir:StandardOps",
854        "@llvm-project//mlir:Transforms",
855    ],
856)
857
858cc_library(
859    name = "type_conversion",
860    srcs = ["lib/Dialect/mhlo/transforms/type_conversion.cc"],
861    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/type_conversion.h"],
862    includes = ["include"],
863    deps = [
864        "@llvm-project//mlir:IR",
865        "@llvm-project//mlir:Transforms",
866    ],
867)
868
869cc_library(
870    name = "map_lmhlo_to_scalar_op",
871    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/map_lmhlo_to_scalar_op.h"],
872    deps = [
873        ":hlo",
874        ":lhlo",
875        ":map_hlo_to_lhlo_op",
876        "@llvm-project//llvm:Support",
877        "@llvm-project//mlir:ComplexDialect",
878        "@llvm-project//mlir:IR",
879        "@llvm-project//mlir:MathDialect",
880        "@llvm-project//mlir:SCFDialect",
881        "@llvm-project//mlir:StandardOps",
882    ],
883)
884
885cc_library(
886    name = "map_chlo_to_hlo_op",
887    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/map_chlo_to_hlo_op.h"],
888    deps = [
889        ":hlo",
890        "@llvm-project//mlir:IR",
891    ],
892)
893
894cc_library(
895    name = "map_hlo_to_lhlo_op",
896    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/map_hlo_to_lhlo_op.h"],
897    deps = [
898        ":hlo",
899        ":lhlo",
900    ],
901)
902
903cc_library(
904    name = "lhlo_legalize_to_affine",
905    srcs = ["lib/Dialect/mhlo/transforms/lhlo_legalize_to_affine.cc"],
906    deps = [
907        ":hlo",
908        ":lhlo",
909        ":map_lmhlo_to_scalar_op",
910        ":pass_details",
911        "@llvm-project//llvm:Support",
912        "@llvm-project//mlir:Affine",
913        "@llvm-project//mlir:IR",
914        "@llvm-project//mlir:Pass",
915        "@llvm-project//mlir:StandardOps",
916        "@llvm-project//mlir:TransformUtils",
917    ],
918    alwayslink = 1,
919)
920
921cc_library(
922    name = "lhlo_legalize_to_parallel_loops",
923    srcs = ["lib/Dialect/mhlo/transforms/lhlo_legalize_to_parallel_loops.cc"],
924    deps = [
925        ":lhlo",
926        ":pass_details",
927        "@llvm-project//llvm:Support",
928        "@llvm-project//mlir:IR",
929        "@llvm-project//mlir:LinalgOps",
930        "@llvm-project//mlir:MemRefDialect",
931        "@llvm-project//mlir:Pass",
932        "@llvm-project//mlir:SCFDialect",
933        "@llvm-project//mlir:StandardOps",
934        "@llvm-project//mlir:Transforms",
935    ],
936    alwayslink = 1,
937)
938
939cc_library(
940    name = "codegen_utils",
941    srcs = ["lib/utils/codegen_utils.cc"],
942    hdrs = ["include/mlir-hlo/utils/codegen_utils.h"],
943    includes = ["include"],
944    deps = [
945        "@llvm-project//llvm:Support",
946        "@llvm-project//mlir:IR",
947        "@llvm-project//mlir:LLVMDialect",
948        "@llvm-project//mlir:MemRefDialect",
949        "@llvm-project//mlir:Pass",
950        "@llvm-project//mlir:StandardOps",
951        "@llvm-project//mlir:Support",
952    ],
953)
954
955cc_library(
956    name = "placement_utils",
957    hdrs = ["include/mlir-hlo/utils/placement_utils.h"],
958    includes = ["include"],
959    deps = [
960        "@llvm-project//llvm:Support",
961        "@llvm-project//mlir:Support",
962    ],
963)
964
965cc_library(
966    name = "lhlo_elemental_utils",
967    srcs = ["lib/Dialect/mhlo/transforms/lhlo_elemental_utils.cc"],
968    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/lhlo_elemental_utils.h"],
969    deps = [
970        ":codegen_utils",
971        ":hlo",
972        ":lhlo",
973        ":map_lmhlo_to_scalar_op",
974        "@com_google_absl//absl/memory",
975        "@llvm-project//llvm:Support",
976        "@llvm-project//mlir:GPUDialect",
977        "@llvm-project//mlir:IR",
978        "@llvm-project//mlir:MemRefDialect",
979        "@llvm-project//mlir:Pass",
980        "@llvm-project//mlir:SCFDialect",
981        "@llvm-project//mlir:StandardOps",
982        "@llvm-project//mlir:Transforms",
983    ],
984)
985
986cc_library(
987    name = "fusion_utils",
988    srcs = ["lib/Dialect/mhlo/transforms/fusion_utils.cc"],
989    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/fusion_utils.h"],
990    deps = [
991        ":lhlo",
992        "@llvm-project//llvm:Core",
993        "@llvm-project//llvm:Support",
994        "@llvm-project//mlir:IR",
995        "@llvm-project//mlir:Shape",
996        "@llvm-project//mlir:StandardOps",
997        "@llvm-project//mlir:Support",
998    ],
999)
1000
1001cc_library(
1002    name = "disc_supported_list",
1003    hdrs = ["include/mlir-hlo/utils/disc_supported_list.h.inc"],
1004)
1005
1006cc_library(
1007    name = "lhlo_legalize_roots_to_loops",
1008    srcs = ["lib/Dialect/mhlo/transforms/lhlo_legalize_roots_to_loops.cc"],
1009    deps = [
1010        ":LmhloPassIncGen",
1011        ":codegen_utils",
1012        ":disc_supported_list",
1013        ":fusion_utils",
1014        ":hlo",
1015        ":lhlo",
1016        ":lhlo_elemental_utils",
1017        ":map_lmhlo_to_scalar_op",
1018        ":placement_utils",
1019        "@com_google_absl//absl/memory",
1020        "@llvm-project//llvm:Support",
1021        "@llvm-project//mlir:GPUDialect",
1022        "@llvm-project//mlir:IR",
1023        "@llvm-project//mlir:MemRefDialect",
1024        "@llvm-project//mlir:Pass",
1025        "@llvm-project//mlir:SCFDialect",
1026        "@llvm-project//mlir:StandardOps",
1027        "@llvm-project//mlir:Support",
1028        "@llvm-project//mlir:Transforms",
1029    ],
1030    alwayslink = 1,
1031)
1032
1033cc_library(
1034    name = "input_inline_fusion",
1035    srcs = ["lib/Dialect/mhlo/transforms/input_inline_fusion_pass.cc"],
1036    deps = [
1037        ":LmhloPassIncGen",
1038        ":disc_supported_list",
1039        ":hlo",
1040        ":lhlo",
1041        ":lhlo_elemental_utils",
1042        ":map_lmhlo_to_scalar_op",
1043        "@com_google_absl//absl/memory",
1044        "@llvm-project//llvm:Support",
1045        "@llvm-project//mlir:Analysis",
1046        "@llvm-project//mlir:IR",
1047        "@llvm-project//mlir:MemRefDialect",
1048        "@llvm-project//mlir:Pass",
1049        "@llvm-project//mlir:SCFDialect",
1050        "@llvm-project//mlir:StandardOps",
1051        "@llvm-project//mlir:Transforms",
1052    ],
1053    alwayslink = 1,
1054)
1055
1056cc_library(
1057    name = "legalize_to_linalg",
1058    srcs = ["lib/Dialect/mhlo/transforms/legalize_to_linalg.cc"],
1059    hdrs = [
1060        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1061        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1062    ],
1063    deps = [
1064        ":hlo",
1065        ":lhlo",
1066        ":map_lmhlo_to_scalar_op",
1067        ":pass_details",
1068        ":type_conversion",
1069        "@llvm-project//llvm:Support",
1070        "@llvm-project//mlir:Affine",
1071        "@llvm-project//mlir:IR",
1072        "@llvm-project//mlir:LinalgOps",
1073        "@llvm-project//mlir:MathDialect",
1074        "@llvm-project//mlir:MemRefDialect",
1075        "@llvm-project//mlir:Pass",
1076        "@llvm-project//mlir:SCFDialect",
1077        "@llvm-project//mlir:Shape",
1078        "@llvm-project//mlir:StandardOps",
1079        "@llvm-project//mlir:Support",
1080        "@llvm-project//mlir:TensorDialect",
1081        "@llvm-project//mlir:Transforms",
1082    ],
1083    alwayslink = 1,
1084)
1085
1086cc_library(
1087    name = "broadcast_propagation",
1088    srcs = ["lib/Dialect/mhlo/transforms/broadcast_propagation.cc"],
1089    hdrs = [
1090        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1091        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1092    ],
1093    deps = [
1094        ":hlo",
1095        ":map_chlo_to_hlo_op",
1096        ":pass_details",
1097        "@llvm-project//llvm:Support",
1098        "@llvm-project//mlir:IR",
1099        "@llvm-project//mlir:InferTypeOpInterface",
1100        "@llvm-project//mlir:Pass",
1101        "@llvm-project//mlir:SCFDialect",
1102        "@llvm-project//mlir:Shape",
1103        "@llvm-project//mlir:StandardOps",
1104        "@llvm-project//mlir:TensorDialect",
1105        "@llvm-project//mlir:Transforms",
1106    ],
1107    alwayslink = 1,
1108)
1109
1110cc_library(
1111    name = "rank_specialization",
1112    srcs = ["lib/Dialect/mhlo/transforms/rank_specialization.cc"],
1113    hdrs = [
1114        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1115        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1116    ],
1117    deps = [
1118        ":hlo",
1119        ":pass_details",
1120        "@llvm-project//llvm:Support",
1121        "@llvm-project//mlir:IR",
1122        "@llvm-project//mlir:InferTypeOpInterface",
1123        "@llvm-project//mlir:Pass",
1124        "@llvm-project//mlir:SCFDialect",
1125        "@llvm-project//mlir:Shape",
1126        "@llvm-project//mlir:StandardOps",
1127        "@llvm-project//mlir:TensorDialect",
1128        "@llvm-project//mlir:Transforms",
1129    ],
1130    alwayslink = 1,
1131)
1132
1133cc_library(
1134    name = "lhlo_legalize_to_gpu",
1135    srcs = ["lib/Dialect/mhlo/transforms/lhlo_legalize_to_gpu.cc"],
1136    deps = [
1137        ":hlo",
1138        ":lhlo",
1139        ":map_lmhlo_to_scalar_op",
1140        ":pass_details",
1141        "@llvm-project//llvm:Support",
1142        "@llvm-project//mlir:Affine",
1143        "@llvm-project//mlir:GPUDialect",
1144        "@llvm-project//mlir:IR",
1145        "@llvm-project//mlir:LinalgOps",
1146        "@llvm-project//mlir:MemRefDialect",
1147        "@llvm-project//mlir:Pass",
1148        "@llvm-project//mlir:SCFDialect",
1149        "@llvm-project//mlir:StandardOps",
1150        "@llvm-project//mlir:Transforms",
1151    ],
1152    alwayslink = 1,
1153)
1154
1155cc_library(
1156    name = "lhlo_fuse_linalg",
1157    srcs = ["lib/Dialect/mhlo/transforms/lhlo_fuse_linalg.cc"],
1158    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/passes.h"],
1159    deps = [
1160        ":lhlo",
1161        ":pass_details",
1162        "@llvm-project//llvm:Support",
1163        "@llvm-project//mlir:Affine",
1164        "@llvm-project//mlir:IR",
1165        "@llvm-project//mlir:LinalgTransforms",
1166        "@llvm-project//mlir:MemRefDialect",
1167        "@llvm-project//mlir:Pass",
1168        "@llvm-project//mlir:SCFDialect",
1169        "@llvm-project//mlir:StandardOps",
1170        "@llvm-project//mlir:Support",
1171        "@llvm-project//mlir:TensorDialect",
1172        "@llvm-project//mlir:TransformUtils",
1173        "@llvm-project//mlir:ViewLikeInterface",
1174    ],
1175    alwayslink = 1,
1176)
1177
1178cc_library(
1179    name = "mhlo_canonicalize_reduction",
1180    srcs = ["lib/Dialect/mhlo/transforms/mhlo_canonicalize_reduction.cc"],
1181    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/passes.h"],
1182    deps = [
1183        ":hlo",
1184        ":pass_details",
1185        "@llvm-project//llvm:Support",
1186        "@llvm-project//mlir:TensorDialect",
1187    ],
1188)
1189
1190cc_library(
1191    name = "hlo_legalize_to_lhlo",
1192    srcs = ["lib/Dialect/mhlo/transforms/hlo_legalize_to_lhlo.cc"],
1193    hdrs = [
1194        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1195        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1196    ],
1197    deps = [
1198        ":hlo",
1199        ":lhlo",
1200        ":map_hlo_to_lhlo_op",
1201        ":pass_details",
1202        "@llvm-project//llvm:Support",
1203        "@llvm-project//mlir:IR",
1204        "@llvm-project//mlir:MemRefDialect",
1205        "@llvm-project//mlir:Pass",
1206        "@llvm-project//mlir:Shape",
1207        "@llvm-project//mlir:ShapeTransforms",
1208        "@llvm-project//mlir:StandardOps",
1209        "@llvm-project//mlir:StandardOpsTransforms",
1210        "@llvm-project//mlir:Support",
1211        "@llvm-project//mlir:TensorDialect",
1212        "@llvm-project//mlir:Transforms",
1213    ],
1214    alwayslink = 1,
1215)
1216
1217cc_library(
1218    name = "hlo_legalize_to_memref",
1219    srcs = ["lib/Dialect/mhlo/transforms/hlo_legalize_to_memref.cc"],
1220    hdrs = [
1221        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1222        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1223    ],
1224    deps = [
1225        ":hlo",
1226        ":pass_details",
1227        ":type_conversion",
1228        "@llvm-project//llvm:Support",
1229        "@llvm-project//mlir:IR",
1230        "@llvm-project//mlir:MemRefDialect",
1231        "@llvm-project//mlir:Pass",
1232        "@llvm-project//mlir:Shape",
1233        "@llvm-project//mlir:ShapeTransforms",
1234        "@llvm-project//mlir:StandardOps",
1235        "@llvm-project//mlir:StandardOpsTransforms",
1236        "@llvm-project//mlir:Support",
1237        "@llvm-project//mlir:TensorDialect",
1238        "@llvm-project//mlir:Transforms",
1239    ],
1240    alwayslink = 1,
1241)
1242
1243cc_library(
1244    name = "cycle_detector",
1245    srcs = ["lib/utils/cycle_detector.cc"],
1246    hdrs = ["include/mlir-hlo/utils/cycle_detector.h"],
1247    includes = ["include"],
1248    deps = [
1249        "@llvm-project//llvm:Support",
1250    ],
1251    alwayslink = 1,
1252)
1253
1254tf_cc_test(
1255    name = "cycle_detector_test",
1256    srcs = ["lib/utils/cycle_detector_test.cc"],
1257    deps = [
1258        ":cycle_detector",
1259        # TODO(b/160617323): Decouple MLIR HLO from TensorFlow/XLA
1260        "//tensorflow/compiler/xla:test",
1261        "//tensorflow/core:test_main",
1262    ],
1263)
1264
1265cc_library(
1266    name = "mhlo_fusion",
1267    srcs = ["lib/Dialect/mhlo/transforms/mhlo_fusion.cc"],
1268    deps = [
1269        ":cycle_detector",
1270        ":hlo",
1271        ":pass_details",
1272        "@llvm-project//llvm:Core",
1273        "@llvm-project//llvm:Support",
1274        "@llvm-project//mlir:IR",
1275        "@llvm-project//mlir:Pass",
1276        "@llvm-project//mlir:StandardOps",
1277        "@llvm-project//mlir:Support",
1278        "@llvm-project//mlir:TransformUtils",
1279    ],
1280    alwayslink = 1,
1281)
1282
1283gentbl_cc_library(
1284    name = "legalize_to_standard_inc_gen",
1285    compatible_with = get_compatible_with_cloud(),
1286    strip_include_prefix = "lib/Dialect/mhlo/transforms/",
1287    tbl_outs = [
1288        (
1289            ["-gen-rewriters"],
1290            "lib/Dialect/mhlo/transforms/generated_legalize_to_standard.inc",
1291        ),
1292    ],
1293    tblgen = "@llvm-project//mlir:mlir-tblgen",
1294    td_file = "lib/Dialect/mhlo/transforms/legalize_to_standard_patterns.td",
1295    deps = [
1296        ":hlo_ops_td_files",
1297        "@llvm-project//mlir:StdOpsTdFiles",
1298    ],
1299)
1300
1301cc_library(
1302    name = "legalize_control_flow",
1303    srcs = ["lib/Dialect/mhlo/transforms/legalize_control_flow.cc"],
1304    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/passes.h"],
1305    deps = [
1306        ":hlo",
1307        ":pass_details",
1308        "@llvm-project//llvm:Support",
1309        "@llvm-project//mlir:IR",
1310        "@llvm-project//mlir:Pass",
1311        "@llvm-project//mlir:StandardOps",
1312        "@llvm-project//mlir:Support",
1313        "@llvm-project//mlir:TensorDialect",
1314    ],
1315    alwayslink = 1,
1316)
1317
1318cc_library(
1319    name = "legalize_to_standard",
1320    srcs = ["lib/Dialect/mhlo/transforms/legalize_to_standard.cc"],
1321    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/passes.h"],
1322    deps = [
1323        ":hlo",
1324        ":legalize_to_standard_inc_gen",
1325        ":legalize_trigonometric_to_approximation",
1326        ":pass_details",
1327        "@llvm-project//llvm:Support",
1328        "@llvm-project//mlir:IR",
1329        "@llvm-project//mlir:Pass",
1330        "@llvm-project//mlir:StandardOps",
1331        "@llvm-project//mlir:Support",
1332        "@llvm-project//mlir:TransformUtils",
1333    ],
1334    alwayslink = 1,
1335)
1336
1337cc_library(
1338    name = "legalize_einsum_to_dot_general",
1339    srcs = ["lib/Dialect/mhlo/transforms/legalize_einsum_to_dot_general.cc"],
1340    hdrs = [
1341        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1342        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1343    ],
1344    deps = [
1345        ":hlo",
1346        ":pass_details",
1347        "@llvm-project//llvm:Support",
1348        "@llvm-project//mlir:IR",
1349        "@llvm-project//mlir:Pass",
1350        "@llvm-project//mlir:StandardOps",
1351        "@llvm-project//mlir:Support",
1352        "@llvm-project//mlir:Transforms",
1353    ],
1354    alwayslink = 1,
1355)
1356
1357cc_library(
1358    name = "legalize_gather_to_torch_index_select",
1359    srcs = ["lib/Dialect/mhlo/transforms/legalize_gather_to_torch_index_select.cc"],
1360    hdrs = [
1361        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1362        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1363    ],
1364    deps = [
1365        ":hlo",
1366        ":pass_details",
1367        "@llvm-project//llvm:Support",
1368        "@llvm-project//mlir:IR",
1369        "@llvm-project//mlir:Pass",
1370        "@llvm-project//mlir:StandardOps",
1371        "@llvm-project//mlir:Support",
1372        "@llvm-project//mlir:Transforms",
1373    ],
1374    alwayslink = 1,
1375)
1376
1377cc_library(
1378    name = "legalize_trigonometric_to_approximation",
1379    srcs = ["lib/Dialect/mhlo/transforms/legalize_trigonometric_to_approximation.cc"],
1380    hdrs = [
1381        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1382        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1383    ],
1384    includes = ["include"],
1385    deps = [
1386        ":pass_details",
1387        "@llvm-project//llvm:Support",
1388        "@llvm-project//mlir:IR",
1389        "@llvm-project//mlir:MathDialect",
1390        "@llvm-project//mlir:Pass",
1391        "@llvm-project//mlir:StandardOps",
1392        "@llvm-project//mlir:Support",
1393        "@llvm-project//mlir:Transforms",
1394    ],
1395    alwayslink = 1,
1396)
1397
1398gentbl_cc_library(
1399    name = "lower_complex_inc_gen",
1400    compatible_with = get_compatible_with_cloud(),
1401    strip_include_prefix = "lib/Dialect/mhlo/transforms/",
1402    tbl_outs = [
1403        (
1404            ["-gen-rewriters"],
1405            "lib/Dialect/mhlo/transforms/generated_lower_complex.inc",
1406        ),
1407    ],
1408    tblgen = "@llvm-project//mlir:mlir-tblgen",
1409    td_file = "lib/Dialect/mhlo/transforms/lower_complex_patterns.td",
1410    deps = [
1411        ":hlo_ops_td_files",
1412        "@llvm-project//mlir:StdOpsTdFiles",
1413    ],
1414)
1415
1416cc_library(
1417    #TODO(aminim): find a better name here?
1418    name = "mhlo_to_mhlo_lowering_patterns",
1419    srcs = [
1420        "lib/Dialect/mhlo/transforms/lower_complex.cc",
1421        "lib/Dialect/mhlo/transforms/lower_general_dot.cc",
1422        "lib/Dialect/mhlo/transforms/optimize_mhlo.cc",
1423    ],
1424    hdrs = [
1425        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1426        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1427    ],
1428    deps = [
1429        ":hlo",
1430        ":lower_complex_inc_gen",
1431        ":pass_details",
1432        "@llvm-project//llvm:Support",
1433        "@llvm-project//mlir:Analysis",
1434        "@llvm-project//mlir:IR",
1435        "@llvm-project//mlir:Pass",
1436        "@llvm-project//mlir:StandardOps",
1437        "@llvm-project//mlir:Support",
1438        "@llvm-project//mlir:Transforms",
1439    ],
1440    alwayslink = 1,
1441)
1442
1443cc_library(
1444    name = "materialize_broadcasts",
1445    srcs = [
1446        "lib/Dialect/mhlo/transforms/materialize_broadcasts.cc",
1447    ],
1448    hdrs = [
1449        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1450        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1451    ],
1452    deps = [
1453        ":hlo",
1454        "@llvm-project//llvm:Support",
1455        "@llvm-project//mlir:IR",
1456        "@llvm-project//mlir:StandardOps",
1457        "@llvm-project//mlir:Transforms",
1458    ],
1459)
1460
1461cc_library(
1462    name = "unfuse_batch_norm",
1463    srcs = ["lib/Dialect/mhlo/transforms/unfuse_batch_norm.cc"],
1464    hdrs = [
1465        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1466    ],
1467    deps = [
1468        ":hlo",
1469        "@llvm-project//llvm:Support",
1470        "@llvm-project//mlir:IR",
1471        "@llvm-project//mlir:MemRefDialect",
1472        "@llvm-project//mlir:StandardOps",
1473        "@llvm-project//mlir:TensorDialect",
1474        "@llvm-project//mlir:Transforms",
1475    ],
1476)
1477
1478cc_library(
1479    name = "legalize_tensor_load_op",
1480    srcs = ["lib/Dialect/mhlo/transforms/legalize_tensor_load_op.cc"],
1481    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/passes.h"],
1482    deps = [
1483        ":lhlo",
1484        ":pass_details",
1485        "@llvm-project//llvm:Support",
1486        "@llvm-project//mlir:IR",
1487        "@llvm-project//mlir:MemRefDialect",
1488        "@llvm-project//mlir:Pass",
1489        "@llvm-project//mlir:Shape",
1490        "@llvm-project//mlir:StandardOps",
1491        "@llvm-project//mlir:Support",
1492        "@llvm-project//mlir:TensorDialect",
1493        "@llvm-project//mlir:Transforms",
1494    ],
1495)
1496
1497cc_library(
1498    name = "mhlo_flatten_tuple",
1499    srcs = ["lib/Dialect/mhlo/transforms/mhlo_flatten_tuple.cc"],
1500    hdrs = [
1501        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1502    ],
1503    deps = [
1504        ":hlo",
1505        ":pass_details",
1506        ":transforms_pass_details",
1507        "@llvm-project//llvm:Support",
1508        "@llvm-project//mlir:IR",
1509        "@llvm-project//mlir:MemRefDialect",
1510        "@llvm-project//mlir:StandardOps",
1511        "@llvm-project//mlir:TensorDialect",
1512        "@llvm-project//mlir:Transforms",
1513    ],
1514)
1515
1516cc_library(
1517    name = "lhlo_fusion",
1518    srcs = ["lib/Dialect/mhlo/transforms/lhlo_fusion.cc"],
1519    deps = [
1520        ":cycle_detector",
1521        ":fusion_utils",
1522        ":lhlo",
1523        ":pass_details",
1524        "@llvm-project//llvm:Core",
1525        "@llvm-project//llvm:Support",
1526        "@llvm-project//mlir:IR",
1527        "@llvm-project//mlir:Pass",
1528        "@llvm-project//mlir:Shape",
1529        "@llvm-project//mlir:StandardOps",
1530        "@llvm-project//mlir:Support",
1531        "@llvm-project//mlir:TransformUtils",
1532    ],
1533    alwayslink = 1,
1534)
1535
1536cc_library(
1537    name = "lhlo_fusion_inliner",
1538    srcs = ["lib/Dialect/mhlo/transforms/lhlo_fusion_inliner.cc"],
1539    deps = [
1540        ":lhlo",
1541        ":pass_details",
1542        "@llvm-project//mlir:Pass",
1543    ],
1544    alwayslink = 1,
1545)
1546
1547cc_library(
1548    name = "chlo_legalize_to_hlo",
1549    srcs = ["lib/Dialect/mhlo/transforms/chlo_legalize_to_hlo.cc"],
1550    hdrs = ["include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h"],
1551    deps = [
1552        ":chlo_legalize_to_hlo_inc_gen",
1553        ":hlo",
1554        ":map_chlo_to_hlo_op",
1555        "@llvm-project//llvm:Support",
1556        "@llvm-project//mlir:IR",
1557        "@llvm-project//mlir:SCFDialect",
1558        "@llvm-project//mlir:Shape",
1559        "@llvm-project//mlir:StandardOps",
1560        "@llvm-project//mlir:TensorDialect",
1561        "@llvm-project//mlir:Transforms",
1562    ],
1563)
1564
1565gentbl_cc_library(
1566    name = "chlo_legalize_to_hlo_inc_gen",
1567    compatible_with = get_compatible_with_cloud(),
1568    strip_include_prefix = "lib/Dialect/mhlo/transforms/",
1569    tbl_outs = [
1570        (
1571            ["-gen-rewriters"],
1572            "lib/Dialect/mhlo/transforms/generated_chlo_legalize_to_hlo.inc",
1573        ),
1574    ],
1575    tblgen = "@llvm-project//mlir:mlir-tblgen",
1576    td_file = "lib/Dialect/mhlo/transforms/chlo_legalize_to_hlo_patterns.td",
1577    deps = [":hlo_ops_td_files"],
1578)
1579
1580cc_library(
1581    name = "expand_hlo_tuples",
1582    srcs = [
1583        "lib/Dialect/mhlo/transforms/expand_hlo_tuples.cc",
1584    ],
1585    hdrs = [
1586        "include/mlir-hlo/Dialect/mhlo/transforms/passes.h",
1587    ],
1588    deps = [
1589        ":hlo",
1590        ":pass_details",
1591        "@com_google_absl//absl/strings",
1592        "@llvm-project//llvm:Support",
1593        "@llvm-project//mlir:IR",
1594        "@llvm-project//mlir:Pass",
1595        "@llvm-project//mlir:StandardOps",
1596    ],
1597)
1598
1599cc_library(
1600    name = "pass_details",
1601    hdrs = [
1602        "include/mlir-hlo/Dialect/mhlo/transforms/PassDetail.h",
1603    ],
1604    visibility = [
1605        "//visibility:private",  # This target is a private detail of pass implementations
1606    ],
1607    deps = [
1608        ":DiscRalPassIncGen",
1609        ":LmhloPassIncGen",
1610        ":MhloPassIncGen",
1611        "@llvm-project//mlir:Pass",
1612    ],
1613)
1614
1615cc_library(
1616    name = "test_passes",
1617    srcs = [
1618        "include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h",
1619        "lib/Analysis/test_userange_analysis.cc",
1620        "lib/Dialect/mhlo/transforms/chlo_legalize_to_hlo_pass.cc",
1621        "lib/Dialect/mhlo/transforms/materialize_broadcasts_pass.cc",
1622        "lib/Dialect/mhlo/transforms/optimize_mhlo_pass.cc",
1623        "lib/Dialect/mhlo/transforms/test_infer_shaped_type_pass.cc",
1624        "lib/Dialect/mhlo/transforms/unfuse_batch_norm_pass.cc",
1625    ],
1626    deps = [
1627        ":chlo_legalize_to_hlo",  # build-cleaner: keep
1628        ":hlo",
1629        ":lhlo",
1630        ":materialize_broadcasts",  # build-cleaner: keep
1631        ":pass_details",
1632        ":transforms_pass_details",
1633        ":unfuse_batch_norm",  # build-cleaner: keep
1634        ":userange_analysis",
1635        "@llvm-project//mlir:Analysis",
1636        "@llvm-project//mlir:IR",
1637        "@llvm-project//mlir:InferTypeOpInterface",
1638        "@llvm-project//mlir:LLVMDialect",
1639        "@llvm-project//mlir:LLVMTransforms",
1640        "@llvm-project//mlir:MemRefDialect",
1641        "@llvm-project//mlir:Pass",
1642        "@llvm-project//mlir:SCFDialect",
1643        "@llvm-project//mlir:Shape",
1644        "@llvm-project//mlir:StandardOps",
1645        "@llvm-project//mlir:TensorDialect",
1646        "@llvm-project//mlir:Transforms",
1647    ],
1648    alwayslink = 1,
1649)
1650
1651cc_library(
1652    name = "all_passes",
1653    hdrs = [
1654        "include/mlir-hlo/Dialect/mhlo/transforms/register_passes.h",
1655        "include/mlir-hlo/Transforms/register_passes.h",
1656    ],
1657    visibility = [
1658        ":friends",
1659    ],
1660    deps = [
1661        ":DiscRalPassIncGen",
1662        ":LmhloPassIncGen",
1663        ":MhloPassIncGen",
1664        ":broadcast_propagation",
1665        ":buffer_reuse",
1666        ":chlo_legalize_to_hlo",
1667        ":expand_hlo_tuples",
1668        ":hlo_legalize_to_lhlo",
1669        ":hlo_legalize_to_memref",
1670        ":input_inline_fusion",
1671        ":legalize_control_flow",
1672        ":legalize_einsum_to_dot_general",
1673        ":legalize_gather_to_torch_index_select",
1674        ":legalize_tensor_load_op",
1675        ":legalize_to_linalg",
1676        ":legalize_to_standard",
1677        ":legalize_trigonometric_to_approximation",
1678        ":lhlo",
1679        ":lhlo_fuse_linalg",
1680        ":lhlo_fusion",
1681        ":lhlo_fusion_inliner",
1682        ":lhlo_legalize_roots_to_loops",
1683        ":lhlo_legalize_to_affine",
1684        ":lhlo_legalize_to_gpu",
1685        ":lhlo_legalize_to_parallel_loops",
1686        ":mhlo_canonicalize_reduction",
1687        ":mhlo_control_flow_to_scf",
1688        ":mhlo_flatten_tuple",
1689        ":mhlo_fusion",
1690        ":mhlo_mark_shape_calc",
1691        ":mhlo_to_mhlo_lowering_patterns",
1692        ":ral_inject_execution_context",
1693        ":ral_legalize_to_llvm",
1694        ":ral_lower_to_library_call",
1695        ":rank_specialization",
1696        ":sink_constants_to_control_flow",
1697        ":test_passes",
1698        ":transforms_pass_details",
1699        ":transforms_pass_inc_gen",
1700        ":userange_analysis",
1701        "@llvm-project//mlir:Pass",
1702    ],
1703)
1704
1705gentbl_cc_library(
1706    name = "transforms_pass_inc_gen",
1707    compatible_with = get_compatible_with_cloud(),
1708    strip_include_prefix = "include",
1709    tbl_outs = [
1710        (
1711            [
1712                "-gen-pass-decls",
1713                "-name=LMHLOTransforms",
1714            ],
1715            "include/mlir-hlo/Transforms/passes.h.inc",
1716        ),
1717    ],
1718    tblgen = "@llvm-project//mlir:mlir-tblgen",
1719    td_file = "include/mlir-hlo/Transforms/passes.td",
1720    deps = [
1721        "@llvm-project//mlir:PassBaseTdFiles",
1722    ],
1723)
1724
1725cc_library(
1726    name = "transforms_pass_details",
1727    hdrs = [
1728        "include/mlir-hlo/Transforms/PassDetail.h",
1729        "include/mlir-hlo/Transforms/passes.h",
1730    ],
1731    visibility = [
1732        "//visibility:private",  # This target is a private detail of pass implementations
1733    ],
1734    deps = [
1735        ":transforms_pass_inc_gen",
1736        "@llvm-project//mlir:Pass",
1737    ],
1738)
1739
1740cc_library(
1741    name = "userange_analysis",
1742    srcs = ["lib/Analysis/userange_analysis.cc"],
1743    hdrs = [
1744        "include/mlir-hlo/Analysis/userange_analysis.h",
1745    ],
1746    includes = ["include"],
1747    deps = [
1748        ":hlo",
1749        ":transforms_pass_inc_gen",
1750        "@llvm-project//llvm:Support",
1751        "@llvm-project//mlir:Analysis",
1752        "@llvm-project//mlir:IR",
1753        "@llvm-project//mlir:LoopLikeInterface",
1754        "@llvm-project//mlir:Transforms",
1755    ],
1756)
1757
1758cc_library(
1759    name = "buffer_reuse",
1760    srcs = ["lib/Transforms/buffer_reuse.cc"],
1761    hdrs = [
1762        "include/mlir-hlo/Analysis/userange_analysis.h",
1763        "include/mlir-hlo/Transforms/PassDetail.h",
1764        "include/mlir-hlo/Transforms/passes.h",
1765    ],
1766    deps = [
1767        ":hlo",
1768        ":transforms_pass_inc_gen",
1769        "@llvm-project//mlir:Analysis",
1770        "@llvm-project//mlir:IR",
1771        "@llvm-project//mlir:LoopLikeInterface",
1772        "@llvm-project//mlir:MemRefDialect",
1773        "@llvm-project//mlir:Pass",
1774        "@llvm-project//mlir:Transforms",
1775    ],
1776)
1777
1778cc_library(
1779    name = "CAPI",
1780    srcs = [
1781        "lib/CAPI/Dialects.cpp",
1782    ],
1783    hdrs = [
1784        "include/mlir-hlo-c/Dialects.h",
1785    ],
1786    deps = [
1787        ":hlo",
1788        "@llvm-project//mlir:CAPIIR",
1789    ],
1790)
1791
1792cc_binary(
1793    name = "mlir-hlo-opt",
1794    srcs = [
1795        "tools/mlir-hlo-opt/mlir-hlo-opt.cpp",
1796    ],
1797    deps = [
1798        ":all_passes",
1799        ":disc_ral",
1800        ":hlo",
1801        ":lhlo",
1802        ":lhlo_gpu",
1803        "@llvm-project//llvm:Support",
1804        "@llvm-project//mlir:AllPassesAndDialects",
1805        "@llvm-project//mlir:IR",
1806        "@llvm-project//mlir:MlirOptLib",
1807        "@llvm-project//mlir:Pass",
1808        "@llvm-project//mlir:Support",
1809    ],
1810)
1811
1812# Python library.
1813
1814td_library(
1815    name = "MhloOpsPyTdFiles",
1816    srcs = [
1817        "@llvm-project//mlir:include/mlir/Bindings/Python/Attributes.td",
1818    ],
1819    includes = ["include"],
1820    deps = [
1821        ":hlo_ops_td_files",
1822        "@llvm-project//mlir:OpBaseTdFiles",
1823    ],
1824)
1825
1826gentbl_filegroup(
1827    name = "MhloOpsPyGen",
1828    tbl_outs = [
1829        (
1830            [
1831                "-gen-python-op-bindings",
1832                "-bind-dialect=mhlo",
1833            ],
1834            "python/mlir/dialects/_mhlo_ops_gen.py",
1835        ),
1836    ],
1837    tblgen = "@llvm-project//mlir:mlir-tblgen",
1838    td_file = "python/mlir/dialects/MhloOps.td",
1839    deps = [
1840        ":MhloOpsPyTdFiles",
1841    ],
1842)
1843
1844gentbl_filegroup(
1845    name = "ChloOpsPyGen",
1846    tbl_outs = [
1847        (
1848            [
1849                "-gen-python-op-bindings",
1850                "-bind-dialect=chlo",
1851            ],
1852            "python/mlir/dialects/_chlo_ops_gen.py",
1853        ),
1854    ],
1855    tblgen = "@llvm-project//mlir:mlir-tblgen",
1856    td_file = "python/mlir/dialects/ChloOps.td",
1857    deps = [
1858        ":MhloOpsPyTdFiles",
1859    ],
1860)
1861
1862filegroup(
1863    name = "MhloOpsPyFiles",
1864    srcs = [
1865        "python/mlir/dialects/chlo.py",
1866        "python/mlir/dialects/mhlo.py",
1867        ":ChloOpsPyGen",
1868        ":MhloOpsPyGen",
1869    ],
1870)
1871