1# Description:
2#   GPU-specific components in XLA service implementation.
3
4licenses(["notice"])  # Apache 2.0
5
6package(default_visibility = [":friends"])
7
8package_group(
9    name = "friends",
10    includes = [
11        "//tensorflow/compiler/xla:friends",
12    ],
13)
14
15# Filegroup used to collect source files for dependency checking.
16filegroup(
17    name = "c_srcs",
18    data = glob([
19        "**/*.cc",
20        "**/*.h",
21    ]),
22)
23
24load("//tensorflow:tensorflow.bzl", "tf_cc_test")
25
26cc_library(
27    name = "gpu_constants",
28    srcs = ["gpu_constants.cc"],
29    hdrs = ["gpu_constants.h"],
30    deps = [
31        "//tensorflow/compiler/xla:types",
32    ],
33)
34
35cc_library(
36    name = "partition_assignment",
37    srcs = [
38        "partition_assignment.cc",
39    ],
40    hdrs = [
41        "partition_assignment.h",
42    ],
43    deps = [
44        "//tensorflow/compiler/xla:shape_util",
45        "//tensorflow/compiler/xla:types",
46        "//tensorflow/compiler/xla:util",
47        "//tensorflow/compiler/xla/service:hlo",
48        "//tensorflow/core:lib",
49        "//tensorflow/core:stream_executor_no_cuda",
50    ],
51)
52
53# TODO(b/29140563) This target is flaky, disabled until flakiness is
54# root-caused. Failed on 2016-06-08.
55#tf_cc_test(
56#    name = "partition_assignment_test",
57#    srcs = [
58#        "partition_assignment_test.cc",
59#    ],
60#    tags = [
61#        "requires-gpu-sm35",
62#    ],
63#    deps = [
64#        ":partition_assignment",
65#        "//tensorflow/core:stream_executor_no_cuda",
66#        "//tensorflow/compiler/xla:shape_util",
67#        "//tensorflow/compiler/xla:xla_data_proto",
68#        "//tensorflow/compiler/xla/service:gpu_plugin",
69#        "//tensorflow/compiler/xla/service:hlo",
70#        "//tensorflow/compiler/xla/tests:hlo_test_base",
71#        "//tensorflow/core:test_main",
72#    ],
73#)
74
75cc_library(
76    name = "stream_assignment",
77    srcs = ["stream_assignment.cc"],
78    hdrs = ["stream_assignment.h"],
79    deps = [
80        ":ir_emission_utils",
81        "//tensorflow/compiler/xla:util",
82        "//tensorflow/compiler/xla/service:hlo",
83        "//tensorflow/compiler/xla/service:hlo_reachability",
84        "//tensorflow/core:lib",
85    ],
86)
87
88tf_cc_test(
89    name = "stream_assignment_test",
90    srcs = [
91        "stream_assignment_test.cc",
92    ],
93    deps = [
94        ":stream_assignment",
95        "//tensorflow/compiler/xla:test_helpers",
96        "//tensorflow/compiler/xla:types",
97        "//tensorflow/compiler/xla/service:hlo",
98        "//tensorflow/compiler/xla/tests:hlo_test_base",
99        "//tensorflow/compiler/xla/tests:xla_internal_test_main",
100        "//tensorflow/core:lib",
101    ],
102)
103
104cc_library(
105    name = "hlo_to_ir_bindings",
106    srcs = ["hlo_to_ir_bindings.cc"],
107    hdrs = ["hlo_to_ir_bindings.h"],
108    deps = [
109        ":ir_emission_utils",
110        "//tensorflow/compiler/xla:util",
111        "//tensorflow/compiler/xla/service:buffer_assignment",
112        "//tensorflow/compiler/xla/service:hlo",
113        "//tensorflow/compiler/xla/service/llvm_ir:alias_analysis",
114        "//tensorflow/compiler/xla/service/llvm_ir:ir_array",
115        "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
116        "//tensorflow/compiler/xla/service/llvm_ir:tuple_ops",
117        "//tensorflow/core:lib",
118        "@llvm//:core",
119    ],
120)
121
122cc_library(
123    name = "ir_emitter",
124    srcs = [
125        "ir_emitter.cc",
126        "ir_emitter_nested.cc",
127        "ir_emitter_unnested.cc",
128    ],
129    hdrs = [
130        "ir_emitter.h",
131        "ir_emitter_context.h",
132        "ir_emitter_nested.h",
133        "ir_emitter_unnested.h",
134    ],
135    deps = [
136        ":cudnn_convolution_runner",
137        ":elemental_ir_emitter",
138        ":gpu_constants",
139        ":gpu_executable",
140        ":hlo_to_ir_bindings",
141        ":ir_emission_utils",
142        ":parallel_loop_emitter",
143        ":partition_assignment",
144        ":while_transformer",
145        "//tensorflow/compiler/xla:literal_util",
146        "//tensorflow/compiler/xla:shape_util",
147        "//tensorflow/compiler/xla:status_macros",
148        "//tensorflow/compiler/xla:statusor",
149        "//tensorflow/compiler/xla:types",
150        "//tensorflow/compiler/xla:util",
151        "//tensorflow/compiler/xla:window_util",
152        "//tensorflow/compiler/xla:xla_data_proto",
153        "//tensorflow/compiler/xla/service:buffer_assignment",
154        "//tensorflow/compiler/xla/service:elemental_ir_emitter",
155        "//tensorflow/compiler/xla/service:hlo",
156        "//tensorflow/compiler/xla/service:name_uniquer",
157        "//tensorflow/compiler/xla/service/llvm_ir:fused_ir_emitter",
158        "//tensorflow/compiler/xla/service/llvm_ir:ir_array",
159        "//tensorflow/compiler/xla/service/llvm_ir:llvm_loop",
160        "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
161        "//tensorflow/compiler/xla/service/llvm_ir:loop_emitter",
162        "//tensorflow/compiler/xla/service/llvm_ir:ops",
163        "//tensorflow/compiler/xla/service/llvm_ir:tuple_ops",
164        "//tensorflow/core:lib",
165        "//tensorflow/core:stream_executor_no_cuda",
166        "@llvm//:core",
167        "@llvm//:support",
168    ],
169)
170
171cc_library(
172    name = "parallel_loop_emitter",
173    srcs = ["parallel_loop_emitter.cc"],
174    hdrs = ["parallel_loop_emitter.h"],
175    deps = [
176        ":partition_assignment",
177        "//tensorflow/compiler/xla:shape_util",
178        "//tensorflow/compiler/xla:xla_data_proto",
179        "//tensorflow/compiler/xla/service/llvm_ir:ir_array",
180        "//tensorflow/compiler/xla/service/llvm_ir:llvm_loop",
181        "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
182        "//tensorflow/compiler/xla/service/llvm_ir:loop_emitter",
183        "//tensorflow/core:lib",
184        "@llvm//:core",
185    ],
186)
187
188cc_library(
189    name = "elemental_ir_emitter",
190    srcs = ["elemental_ir_emitter.cc"],
191    hdrs = ["elemental_ir_emitter.h"],
192    deps = [
193        "//tensorflow/compiler/xla:literal_util",
194        "//tensorflow/compiler/xla:shape_util",
195        "//tensorflow/compiler/xla:status_macros",
196        "//tensorflow/compiler/xla:statusor",
197        "//tensorflow/compiler/xla:types",
198        "//tensorflow/compiler/xla:util",
199        "//tensorflow/compiler/xla:window_util",
200        "//tensorflow/compiler/xla:xla_data_proto",
201        "//tensorflow/compiler/xla/service:elemental_ir_emitter",
202        "//tensorflow/compiler/xla/service:hlo",
203        "//tensorflow/compiler/xla/service:hlo_module_config",
204        "//tensorflow/compiler/xla/service/llvm_ir:ir_array",
205        "//tensorflow/compiler/xla/service/llvm_ir:llvm_loop",
206        "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
207        "//tensorflow/compiler/xla/service/llvm_ir:loop_emitter",
208        "//tensorflow/core:lib",
209        "@llvm//:core",
210        "@llvm//:support",
211    ],
212)
213
214cc_library(
215    name = "buffer_allocations",
216    srcs = ["buffer_allocations.cc"],
217    hdrs = ["buffer_allocations.h"],
218    deps = [
219        ":gpu_constants",
220        "//tensorflow/compiler/xla:status_macros",
221        "//tensorflow/compiler/xla:statusor",
222        "//tensorflow/compiler/xla:types",
223        "//tensorflow/compiler/xla:util",
224        "//tensorflow/compiler/xla/service:buffer_assignment",
225        "//tensorflow/compiler/xla/service:device_memory_allocator",
226        "//tensorflow/core:lib",
227        "//tensorflow/core:stream_executor_no_cuda",
228    ],
229)
230
231cc_library(
232    name = "gpu_executable",
233    srcs = [
234        "conditional_thunk.cc",
235        "convolution_thunk.cc",
236        "copy_thunk.cc",
237        "cudnn_batchnorm_thunk.cc",
238        "fft_thunk.cc",
239        "for_thunk.cc",
240        "gemm_thunk.cc",
241        "gpu_executable.cc",
242        "infeed_thunk.cc",
243        "kernel_thunk.cc",
244        "sequential_thunk.cc",
245        "thunk_schedule.cc",
246        "tuple_thunk.cc",
247        "while_thunk.cc",
248    ],
249    hdrs = [
250        "conditional_thunk.h",
251        "convolution_thunk.h",
252        "copy_thunk.h",
253        "cudnn_batchnorm_thunk.h",
254        "fft_thunk.h",
255        "for_thunk.h",
256        "gemm_thunk.h",
257        "gpu_executable.h",
258        "infeed_thunk.h",
259        "kernel_thunk.h",
260        "sequential_thunk.h",
261        "thunk.h",
262        "thunk_schedule.h",
263        "tuple_thunk.h",
264        "while_thunk.h",
265    ],
266    deps = [
267        ":buffer_allocations",
268        ":cudnn_convolution_runner",
269        ":infeed_manager",
270        ":ir_emission_utils",
271        ":partition_assignment",
272        ":stream_assignment",
273        "//tensorflow/compiler/xla:array2d",
274        "//tensorflow/compiler/xla:shape_tree",
275        "//tensorflow/compiler/xla:shape_util",
276        "//tensorflow/compiler/xla:status_macros",
277        "//tensorflow/compiler/xla:statusor",
278        "//tensorflow/compiler/xla:types",
279        "//tensorflow/compiler/xla:util",
280        "//tensorflow/compiler/xla:xla_data_proto",
281        "//tensorflow/compiler/xla/service:buffer_assignment",
282        "//tensorflow/compiler/xla/service:device_memory_allocator",
283        "//tensorflow/compiler/xla/service:executable",
284        "//tensorflow/compiler/xla/service:hlo",
285        "//tensorflow/compiler/xla/service:hlo_execution_profile",
286        "//tensorflow/compiler/xla/service:logical_buffer",
287        "//tensorflow/compiler/xla/service:shaped_buffer",
288        "//tensorflow/compiler/xla/service:transfer_manager",
289        "//tensorflow/compiler/xla/service:tuple_points_to_analysis",
290        "//tensorflow/core:lib",
291        "//tensorflow/core:stream_executor_no_cuda",
292        "//tensorflow/core/platform/default/build_config:cublas_plugin",
293        "//tensorflow/core/platform/default/build_config:cudnn_plugin",
294        "//tensorflow/core/platform/default/build_config:cufft_plugin",
295        "//tensorflow/core/platform/default/build_config:stream_executor_cuda",  # build_cleaner: keep
296    ],
297)
298
299cc_library(
300    name = "ir_emission_utils",
301    srcs = ["ir_emission_utils.cc"],
302    hdrs = ["ir_emission_utils.h"],
303    deps = [
304        "//tensorflow/compiler/xla:shape_util",
305        "//tensorflow/compiler/xla:util",
306        "//tensorflow/compiler/xla:window_util",
307        "//tensorflow/compiler/xla:xla_data_proto",
308        "//tensorflow/compiler/xla/service:hlo",
309        "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
310        "//tensorflow/core:lib",
311        "@llvm//:core",
312    ],
313)
314
315cc_library(
316    name = "cudnn_convolution_algorithm_picker",
317    srcs = ["cudnn_convolution_algorithm_picker.cc"],
318    hdrs = ["cudnn_convolution_algorithm_picker.h"],
319    deps = [
320        ":cudnn_convolution_runner",
321        ":gpu_executable",
322        ":ir_emission_utils",
323        "//tensorflow/compiler/xla/service:device_memory_allocator",
324        "//tensorflow/compiler/xla/service:hlo",
325        "//tensorflow/compiler/xla/service:hlo_pass",
326        "//tensorflow/core:lib",
327        "//tensorflow/core:stream_executor_no_cuda",
328    ],
329)
330
331cc_library(
332    name = "cudnn_convolution_runner",
333    srcs = ["cudnn_convolution_runner.cc"],
334    hdrs = ["cudnn_convolution_runner.h"],
335    deps = [
336        "//tensorflow/compiler/xla:shape_util",
337        "//tensorflow/compiler/xla:status",
338        "//tensorflow/compiler/xla:status_macros",
339        "//tensorflow/compiler/xla:statusor",
340        "//tensorflow/compiler/xla:types",
341        "//tensorflow/compiler/xla:util",
342        "//tensorflow/compiler/xla:xla_data_proto",
343        "//tensorflow/core:stream_executor_no_cuda",
344    ],
345)
346
347cc_library(
348    name = "cudnn_convolution_rewriter",
349    srcs = ["cudnn_convolution_rewriter.cc"],
350    hdrs = ["cudnn_convolution_rewriter.h"],
351    deps = [
352        ":ir_emission_utils",
353        "//tensorflow/compiler/xla:literal_util",
354        "//tensorflow/compiler/xla:util",
355        "//tensorflow/compiler/xla:window_util",
356        "//tensorflow/compiler/xla:xla_data_proto",
357        "//tensorflow/compiler/xla/service:hlo",
358        "//tensorflow/compiler/xla/service:hlo_pass",
359        "//tensorflow/core:lib",
360    ],
361)
362
363tf_cc_test(
364    name = "cudnn_convolution_rewriter_test",
365    srcs = ["cudnn_convolution_rewriter_test.cc"],
366    deps = [
367        ":cudnn_convolution_rewriter",
368        ":ir_emission_utils",
369        "//tensorflow/compiler/xla:test",
370        "//tensorflow/compiler/xla:test_helpers",
371        "//tensorflow/compiler/xla/service:hlo",
372        "//tensorflow/compiler/xla/service:hlo_matchers",
373        "//tensorflow/compiler/xla/service:shape_inference",
374        "//tensorflow/compiler/xla/tests:hlo_test_base",
375        "//tensorflow/compiler/xla/tests:xla_internal_test_main",  # fixdeps: keep
376        "//tensorflow/core:test",
377    ],
378)
379
380cc_library(
381    name = "instruction_fusion",
382    srcs = ["instruction_fusion.cc"],
383    hdrs = ["instruction_fusion.h"],
384    deps = [
385        ":ir_emission_utils",
386        "//tensorflow/compiler/xla:shape_util",
387        "//tensorflow/compiler/xla/service:hlo",
388        "//tensorflow/compiler/xla/service:instruction_fusion",
389    ],
390)
391
392tf_cc_test(
393    name = "instruction_fusion_test",
394    srcs = ["instruction_fusion_test.cc"],
395    deps = [
396        ":instruction_fusion",
397        "//tensorflow/compiler/xla/service:hlo_matchers",
398        "//tensorflow/compiler/xla/tests:hlo_test_base",
399        "//tensorflow/compiler/xla/tests:xla_internal_test_main",
400    ],
401)
402
403cc_library(
404    name = "gpu_copy_insertion",
405    srcs = ["gpu_copy_insertion.cc"],
406    hdrs = ["gpu_copy_insertion.h"],
407    deps = [
408        ":ir_emission_utils",
409        "//tensorflow/compiler/xla/service:call_graph",
410        "//tensorflow/compiler/xla/service:copy_insertion",
411        "//tensorflow/compiler/xla/service:hlo",
412        "//tensorflow/compiler/xla/service:hlo_dataflow_analysis",
413        "//tensorflow/compiler/xla/service:hlo_pass",
414        "//tensorflow/core:lib",
415    ],
416)
417
418cc_library(
419    name = "fusion_merger",
420    srcs = ["fusion_merger.cc"],
421    hdrs = ["fusion_merger.h"],
422    deps = [
423        ":instruction_fusion",
424        "//tensorflow/compiler/xla:shape_util",
425        "//tensorflow/compiler/xla:util",
426        "//tensorflow/compiler/xla/service:hlo",
427        "//tensorflow/compiler/xla/service:hlo_cost_analysis",
428        "//tensorflow/compiler/xla/service:hlo_pass",
429        "//tensorflow/core:lib",
430    ],
431)
432
433tf_cc_test(
434    name = "fusion_merger_test",
435    srcs = ["fusion_merger_test.cc"],
436    deps = [
437        ":fusion_merger",
438        ":instruction_fusion",
439        "//tensorflow/compiler/xla:test_helpers",
440        "//tensorflow/compiler/xla/tests:hlo_test_base",
441        "//tensorflow/compiler/xla/tests:xla_internal_test_main",
442    ],
443)
444
445cc_library(
446    name = "pad_insertion",
447    srcs = ["pad_insertion.cc"],
448    hdrs = ["pad_insertion.h"],
449    deps = [
450        ":ir_emission_utils",
451        "//tensorflow/compiler/xla:literal_util",
452        "//tensorflow/compiler/xla:util",
453        "//tensorflow/compiler/xla:window_util",
454        "//tensorflow/compiler/xla:xla_data_proto",
455        "//tensorflow/compiler/xla/service:hlo_pass",
456        "//tensorflow/compiler/xla/service:shape_inference",
457    ],
458)
459
460cc_library(
461    name = "gpu_transfer_manager",
462    srcs = ["gpu_transfer_manager.cc"],
463    hdrs = ["gpu_transfer_manager.h"],
464    deps = [
465        ":gpu_compiler",
466        "//tensorflow/compiler/xla:literal_util",
467        "//tensorflow/compiler/xla:shape_util",
468        "//tensorflow/compiler/xla:status_macros",
469        "//tensorflow/compiler/xla:statusor",
470        "//tensorflow/compiler/xla:types",
471        "//tensorflow/compiler/xla:util",
472        "//tensorflow/compiler/xla:xla_data_proto",
473        "//tensorflow/compiler/xla/service:generic_transfer_manager",
474        "//tensorflow/compiler/xla/service:transfer_manager",
475        "//tensorflow/compiler/xla/service/gpu:infeed_manager",
476        "//tensorflow/core:lib",
477        "//tensorflow/core:stream_executor_no_cuda",
478        "@llvm//:core",
479    ],
480    alwayslink = True,  # Contains per-platform transfer manager registration
481)
482
483cc_library(
484    name = "gpu_compiler",
485    srcs = ["gpu_compiler.cc"],
486    hdrs = ["gpu_compiler.h"],
487    deps = [
488        ":cudnn_convolution_algorithm_picker",
489        ":cudnn_convolution_rewriter",
490        ":fusion_merger",
491        ":gpu_constants",
492        ":gpu_copy_insertion",
493        ":gpu_executable",
494        ":gpu_hlo_support_checker",
495        ":gpu_layout_assignment",
496        ":hlo_schedule",
497        ":instruction_fusion",
498        ":ir_emission_utils",
499        ":ir_emitter",
500        ":pad_insertion",
501        ":partition_assignment",
502        ":stream_assignment",
503        "//tensorflow/compiler/xla:protobuf_util",
504        "//tensorflow/compiler/xla:status_macros",
505        "//tensorflow/compiler/xla:statusor",
506        "//tensorflow/compiler/xla:types",
507        "//tensorflow/compiler/xla:util",
508        "//tensorflow/compiler/xla/service:algebraic_simplifier",
509        "//tensorflow/compiler/xla/service:batchnorm_expander",
510        "//tensorflow/compiler/xla/service:buffer_assignment",
511        "//tensorflow/compiler/xla/service:buffer_liveness",
512        "//tensorflow/compiler/xla/service:call_inliner",
513        "//tensorflow/compiler/xla/service:dot_decomposer",
514        "//tensorflow/compiler/xla/service:executable",
515        "//tensorflow/compiler/xla/service:flatten_call_graph",
516        "//tensorflow/compiler/xla/service:hlo",
517        "//tensorflow/compiler/xla/service:hlo_constant_folding",
518        "//tensorflow/compiler/xla/service:hlo_cse",
519        "//tensorflow/compiler/xla/service:hlo_dce",
520        "//tensorflow/compiler/xla/service:hlo_element_type_converter",
521        "//tensorflow/compiler/xla/service:hlo_pass",
522        "//tensorflow/compiler/xla/service:hlo_pass_pipeline",
523        "//tensorflow/compiler/xla/service:hlo_proto",
524        "//tensorflow/compiler/xla/service:hlo_proto_util",
525        "//tensorflow/compiler/xla/service:hlo_subcomputation_unification",
526        "//tensorflow/compiler/xla/service:hlo_verifier",
527        "//tensorflow/compiler/xla/service:llvm_compiler",
528        "//tensorflow/compiler/xla/service:reduce_precision_insertion",
529        "//tensorflow/compiler/xla/service:reshape_mover",
530        "//tensorflow/compiler/xla/service:transpose_folding",
531        "//tensorflow/compiler/xla/service:tuple_simplifier",
532        "//tensorflow/compiler/xla/service:while_loop_simplifier",
533        "//tensorflow/compiler/xla/service:zero_sized_hlo_elimination",
534        "//tensorflow/compiler/xla/service/gpu:cudnn_batchnorm_rewriter",
535        "//tensorflow/compiler/xla/service/gpu/llvm_gpu_backend",
536        "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
537        "//tensorflow/core:cuda_libdevice_path",
538        "//tensorflow/core:lib",
539        "//tensorflow/core:lib_internal",
540        "//tensorflow/core:regexp_internal",
541        "//tensorflow/core:stream_executor_no_cuda",
542        "@llvm//:core",
543        "@llvm//:support",
544    ],
545    alwayslink = True,  # Contains compiler registration
546)
547
548cc_library(
549    name = "cudnn_batchnorm_rewriter",
550    srcs = ["cudnn_batchnorm_rewriter.cc"],
551    hdrs = ["cudnn_batchnorm_rewriter.h"],
552    deps = [
553        ":ir_emission_utils",
554        "//tensorflow/compiler/xla:literal_util",
555        "//tensorflow/compiler/xla/service:hlo",
556        "//tensorflow/compiler/xla/service:hlo_pass",
557    ],
558)
559
560cc_library(
561    name = "infeed_manager",
562    srcs = ["infeed_manager.cc"],
563    hdrs = ["infeed_manager.h"],
564    deps = [
565        "//tensorflow/compiler/xla:types",
566        "//tensorflow/compiler/xla:util",
567        "//tensorflow/core:lib",
568        "//tensorflow/core:stream_executor_no_cuda",
569    ],
570)
571
572cc_library(
573    name = "gpu_layout_assignment",
574    srcs = ["gpu_layout_assignment.cc"],
575    hdrs = ["gpu_layout_assignment.h"],
576    deps = [
577        ":ir_emission_utils",
578        "//tensorflow/compiler/xla:shape_util",
579        "//tensorflow/compiler/xla:status_macros",
580        "//tensorflow/compiler/xla:xla_data_proto",
581        "//tensorflow/compiler/xla/service:computation_layout",
582        "//tensorflow/compiler/xla/service:hlo",
583        "//tensorflow/compiler/xla/service:layout_assignment",
584        "//tensorflow/core:lib",
585    ],
586)
587
588tf_cc_test(
589    name = "gpu_layout_assignment_test",
590    srcs = ["gpu_layout_assignment_test.cc"],
591    deps = [
592        ":gpu_layout_assignment",
593        ":ir_emission_utils",
594        "//tensorflow/compiler/xla:shape_layout",
595        "//tensorflow/compiler/xla:shape_util",
596        "//tensorflow/compiler/xla:xla_data_proto",
597        "//tensorflow/compiler/xla/service:computation_layout",
598        "//tensorflow/compiler/xla/service:hlo",
599        "//tensorflow/compiler/xla/tests:hlo_test_base",
600        "//tensorflow/compiler/xla/tests:xla_internal_test_main",  # build_cleaner: keep
601    ],
602)
603
604cc_library(
605    name = "hlo_schedule",
606    srcs = ["hlo_schedule.cc"],
607    hdrs = ["hlo_schedule.h"],
608    deps = [
609        ":stream_assignment",
610        "//tensorflow/compiler/xla:statusor",
611        "//tensorflow/compiler/xla:types",
612        "//tensorflow/compiler/xla:util",
613        "//tensorflow/compiler/xla/service:hlo",
614        "//tensorflow/compiler/xla/service:hlo_ordering",
615        "//tensorflow/compiler/xla/service:hlo_reachability",
616        "//tensorflow/compiler/xla/service:hlo_scheduling",
617    ],
618)
619
620tf_cc_test(
621    name = "hlo_schedule_test",
622    srcs = [
623        "hlo_schedule_test.cc",
624    ],
625    deps = [
626        ":hlo_schedule",
627        ":stream_assignment",
628        "//tensorflow/compiler/xla:test_helpers",
629        "//tensorflow/compiler/xla:types",
630        "//tensorflow/compiler/xla/service:hlo",
631        "//tensorflow/compiler/xla/tests:hlo_test_base",
632        "//tensorflow/compiler/xla/tests:xla_internal_test_main",
633    ],
634)
635
636cc_library(
637    name = "while_transformer",
638    srcs = ["while_transformer.cc"],
639    hdrs = ["while_transformer.h"],
640    deps = [
641        "//tensorflow/compiler/xla:literal_util",
642        "//tensorflow/compiler/xla:shape_util",
643        "//tensorflow/compiler/xla:status_macros",
644        "//tensorflow/compiler/xla:statusor",
645        "//tensorflow/compiler/xla:util",
646        "//tensorflow/compiler/xla/service:hlo",
647        "//tensorflow/core:lib",
648    ],
649)
650
651tf_cc_test(
652    name = "while_transformer_test",
653    srcs = ["while_transformer_test.cc"],
654    deps = [
655        ":instruction_fusion",
656        ":while_transformer",
657        "//tensorflow/compiler/xla:shape_util",
658        "//tensorflow/compiler/xla:test",
659        "//tensorflow/compiler/xla:test_helpers",
660        "//tensorflow/compiler/xla/service:copy_insertion",
661        "//tensorflow/compiler/xla/service:hlo_verifier",
662        "//tensorflow/compiler/xla/tests:hlo_test_base",
663        "//tensorflow/compiler/xla/tests:xla_internal_test_main",
664        "//tensorflow/core:test",
665    ],
666)
667
668cc_library(
669    name = "gpu_hlo_support_checker",
670    srcs = ["gpu_hlo_support_checker.cc"],
671    hdrs = ["gpu_hlo_support_checker.h"],
672    deps = [
673        "//tensorflow/compiler/xla:shape_util",
674        "//tensorflow/compiler/xla:xla_data_proto",
675        "//tensorflow/compiler/xla/service:hlo_pass",
676        "//tensorflow/core:lib",
677    ],
678)
679
680tf_cc_test(
681    name = "gpu_hlo_support_checker_test",
682    srcs = ["gpu_hlo_support_checker_test.cc"],
683    deps = [
684        ":gpu_hlo_support_checker",
685        "//tensorflow/compiler/xla:shape_util",
686        "//tensorflow/compiler/xla:test",
687        "//tensorflow/compiler/xla/tests:hlo_test_base",
688        "//tensorflow/compiler/xla/tests:xla_internal_test_main",
689        "//tensorflow/core:protos_all_cc",
690        "//tensorflow/core:test",
691    ],
692)
693
694# -----------------------------------------------------------------------------
695
696filegroup(
697    name = "all_files",
698    srcs = glob(
699        ["**/*"],
700        exclude = [
701            "**/METADATA",
702            "**/OWNERS",
703        ],
704    ),
705    visibility = ["//tensorflow:__subpackages__"],
706)
707