load("@fbcode_macros//build_defs:python_unittest.bzl", "python_unittest")
load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")

oncall("executorch")

runtime.python_library(
    name = "fuse_quantized_ops",
    srcs = ["fuse_quantized_ops.py"],
    visibility = [
        "//executorch/backends/...",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/backends/transforms:utils",
        "//executorch/backends/vulkan:custom_ops_lib",
        "//executorch/backends/vulkan:utils_lib",
        "//executorch/exir:pass_base",
        "//executorch/exir:sym_util",
        "//executorch/exir/dialects:lib",
    ],
)

runtime.python_library(
    name = "insert_prepack_nodes",
    srcs = ["insert_prepack_nodes.py"],
    visibility = [
        "//executorch/backends/...",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/exir:pass_base",
        "//executorch/backends/vulkan:utils_lib",
        "//executorch/backends/vulkan:op_registry",
    ],
)

runtime.python_library(
    name = "squeeze_unsqueeze_inputs",
    srcs = [
        "squeeze_unsqueeze_inputs.py",
    ],
    visibility = [
        "//executorch/backends/...",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/backends/vulkan:custom_ops_lib",
        "//executorch/exir:pass_base",
        "//executorch/exir/dialects:lib",
    ]
)

runtime.python_library(
    name = "remove_asserts",
    srcs = ["remove_asserts.py"],
    visibility = [
        "//executorch/backends/...",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/exir:pass_base",
        "//executorch/exir/dialects:lib",
    ],
)

runtime.python_library(
    name = "remove_local_scalar_dense",
    srcs = ["remove_local_scalar_dense_ops.py"],
    visibility = [
        "//executorch/backends/...",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/exir:pass_base",
        "//executorch/exir/dialects:lib",
    ],
)

runtime.python_library(
    name = "remove_redundant_ops",
    srcs = ["remove_redundant_ops.py"],
    visibility = [
        "//executorch/backends/...",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/exir:pass_base",
        "//executorch/exir/dialects:lib",
    ],
)

runtime.python_library(
    name = "tag_memory_meta_pass",
    srcs = ["tag_memory_meta_pass.py"],
    visibility = [
        "//executorch/backends/...",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/exir:pass_base",
        "//executorch/exir/dialects:lib",
        "//executorch/backends/vulkan:utils_lib",
        "//executorch/backends/vulkan/serialization:lib",
    ],
)

runtime.python_library(
    name = "fold_qdq",
    srcs = ["fold_qdq.py"],
    visibility = [
        "//executorch/backends/...",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/backends/vulkan:utils_lib",
        "//executorch/exir:pass_base",
    ],
)

runtime.python_library(
    name = "replace_qdq",
    srcs = ["replace_qdq.py"],
    visibility = [
        "//executorch/backends/...",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/backends/vulkan:utils_lib",
        "//executorch/exir:pass_base",
    ],
)

runtime.python_library(
    name = "fuse_patterns",
    srcs = ["fuse_patterns.py"],
    visibility = [
        "//executorch/backends/...",
    ],
    deps = [
        "//caffe2:torch",
        "//executorch/backends/vulkan/patterns:vulkan_patterns",
        "//executorch/exir:lib",
        "//executorch/exir:pass_base",
        "//executorch/exir/dialects:lib",
    ],
    typing = True,
)

runtime.python_library(
    name = "vulkan_passes",
    srcs = [
        "__init__.py",
    ],
    visibility = [
        "//executorch/backends/...",
        "//executorch/examples/...",
    ],
    deps = [
        ":fold_qdq",
        ":fuse_patterns",
        ":fuse_quantized_ops",
        ":insert_prepack_nodes",
        ":remove_asserts",
        ":remove_local_scalar_dense",
        ":remove_redundant_ops",
        ":replace_qdq",
        ":squeeze_unsqueeze_inputs",
        ":tag_memory_meta_pass",
    ]
)
