# Copyright 2022 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# Tests of end-to-end IREE support for individual ops in the TOSA dialect.
# Each test file should have a name matching the corresponding TOSA op and test only the
# functionality of that op (though may make use of other ops where necessary). Tests should be
# written using the IREE Check framework.
# See https://iree.dev/developers/general/testing-guide/#iree-core-end-to-end-e2e-tests.

load("//build_tools/bazel:enforce_glob.bzl", "enforce_glob")
load("//build_tools/bazel:iree_check_test.bzl", "iree_check_single_backend_test_suite")

package(
    features = ["layering_check"],
    licenses = ["notice"],  # Apache 2.0
)

LLVM_SRCS = enforce_glob(
    [
        "conv2d.mlir",
        "i4_to_f32.mlir",
    ],
    include = ["*.mlir"],
    exclude = [
        "large_linalg_matmul.mlir",
        "f32_to_i4.mlir",
    ],
)

LLVM_I4_SRCS = [
    "f32_to_i4.mlir",
]

iree_check_single_backend_test_suite(
    name = "check_llvm-cpu_local-task",
    srcs = LLVM_SRCS,
    driver = "local-task",
    target_backend = "llvm-cpu",
)

iree_check_single_backend_test_suite(
    name = "check_i4_llvm-cpu_local-task",
    srcs = LLVM_I4_SRCS,
    driver = "local-task",
    tags = [
        # TODO(#15540): RISC-V needs sub-byte emulation for vector.maskedstore
        # ops. Enable the test after it is supported.
        "noriscv",
    ],
    target_backend = "llvm-cpu",
)

iree_check_single_backend_test_suite(
    name = "check_winograd_llvm-cpu_local-task",
    srcs = LLVM_SRCS,
    compiler_flags = [
        "--iree-preprocessing-pass-pipeline=builtin.module\\(func.func\\(iree-linalg-ext-convert-conv2d-to-winograd\\)\\)",
    ],
    driver = "local-task",
    target_backend = "llvm-cpu",
)

VMVX_SRCS = enforce_glob(
    [
        "conv2d.mlir",
    ],
    include = ["*.mlir"],
    exclude = [
        "large_linalg_matmul.mlir",
        "i4_to_f32.mlir",
        "f32_to_i4.mlir",
    ],
)

iree_check_single_backend_test_suite(
    name = "check_vmvx_local-task",
    srcs = VMVX_SRCS,
    driver = "local-task",
    target_backend = "vmvx",
)

VULKAN_SRCS = enforce_glob(
    [
        "conv2d.mlir",
        "i4_to_f32.mlir",
    ],
    include = ["*.mlir"],
    exclude = [
        "large_linalg_matmul.mlir",
        "f32_to_i4.mlir",
    ],
)

iree_check_single_backend_test_suite(
    name = "check_vulkan-spirv_vulkan",
    srcs = VULKAN_SRCS,
    driver = "vulkan",
    target_backend = "vulkan-spirv",
)

iree_check_single_backend_test_suite(
    name = "check_winograd_vulkan-spirv_vulkan",
    srcs = VULKAN_SRCS,
    compiler_flags = [
        "--iree-preprocessing-pass-pipeline=builtin.module\\(func.func\\(iree-linalg-ext-convert-conv2d-to-winograd\\)\\)",
    ],
    driver = "vulkan",
    target_backend = "vulkan-spirv",
)

iree_check_single_backend_test_suite(
    name = "check_large_linalg_matmul_cuda",
    srcs =
        [
            # currently only enabled on cuda as it can be slow on other backends.
            "large_linalg_matmul.mlir",
        ],
    driver = "cuda",
    tags = [
        # CUDA cuInit fails with sanitizer on.
        "noasan",
        "nomsan",
        "notsan",
        "noubsan",
        "requires-gpu-nvidia",
    ],
    target_backend = "cuda",
)

test_suite(
    name = "check",
    tests = [
        ":check_large_linalg_matmul_cuda",
        ":check_llvm-cpu_local-task",
        ":check_vmvx_local-task",
        ":check_vulkan-spirv_vulkan",
        ":check_winograd_llvm-cpu_local-task",
        ":check_winograd_vulkan-spirv_vulkan",
    ],
)
