# Copyright 2019 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 for end-to-end IREE support specific to the vulkan-spirv lowering.

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

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

iree_check_single_backend_test_suite(
    name = "check_vulkan-spirv_vulkan_f16",
    srcs = [
        "add_f16.mlir",
        "dot_f16.mlir",
    ],
    compiler_flags = [
        "--iree-input-type=stablehlo",
        "--iree-vulkan-target-triple=valhall-unknown-android31",
    ],
    driver = "vulkan",
    tags = [
        "manual",
        "notap",
        "vulkan_uses_vk_khr_shader_float16_int8",
    ],
    target_backend = "vulkan-spirv",
)

iree_check_single_backend_test_suite(
    name = "check_vulkan-spirv_vulkan_conv",
    srcs = [
        "conv.mlir",
    ],
    compiler_flags = [
        "--iree-input-type=stablehlo",
        "--iree-vulkan-target-triple=valhall-unknown-android31",
    ],
    driver = "vulkan",
    target_backend = "vulkan-spirv",
)

iree_check_single_backend_test_suite(
    name = "check_vulkan-spirv_vulkan_i64_emulation",
    srcs = [
        "add_i64.mlir",
        "mul_i64.mlir",
    ],
    compiler_flags = [
        "--iree-input-type=stablehlo",
        "--iree-input-demote-i64-to-i32=false",
        "--iree-vulkan-target-triple=valhall-unknown-android31",
    ],
    driver = "vulkan",
    tags = [
        "manual",
        "notap",
        "vulkan_uses_shader_int64",
    ],
    target_backend = "vulkan-spirv",
)
