################################################################################
# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
# tests/e2e/models/BUILD                                                       #
#                                                                              #
# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary   #
# CMake-only content.                                                          #
#                                                                              #
# To disable autogeneration for this file entirely, delete this header.        #
################################################################################

iree_add_all_subdirs()

iree_lit_test_suite(
  NAME
    lit
  SRCS
    "collatz.mlir"
    "edge_detection.mlir"
    "fragment_000.mlir"
    "fullyconnected.mlir"
    "mnist_fake_weights.mlir"
    "resnet50_fake_weights.mlir"
    "unidirectional_lstm.mlir"
  TOOLS
    ${IREE_LLD_TARGET}
    FileCheck
    iree-run-mlir
  LABELS
    "hostonly"
    "optonly"
  TIMEOUT
    900
)

iree_check_single_backend_test_suite(
  NAME
    check_llvm-cpu_local-task
  SRCS
    "bert_encoder_unrolled_fake_weights.mlir"
    "mobilenetv3_fake_weights.mlir"
  TARGET_BACKEND
    "llvm-cpu"
  DRIVER
    "local-task"
  COMPILER_FLAGS
    "--iree-input-type=mhlo"
)

iree_check_single_backend_test_suite(
  NAME
    check_vulkan-spirv_vulkan
  SRCS
    "bert_encoder_unrolled_fake_weights.mlir"
    "mobilenetv3_fake_weights.mlir"
  TARGET_BACKEND
    "vulkan-spirv"
  DRIVER
    "vulkan"
  COMPILER_FLAGS
    "--iree-input-type=mhlo"
  TIMEOUT
    900
)

iree_check_single_backend_test_suite(
  NAME
    check_cuda_cuda
  SRCS
    "bert_encoder_unrolled_fake_weights.mlir"
    "mobilenetv3_fake_weights.mlir"
  TARGET_BACKEND
    "cuda"
  DRIVER
    "cuda"
  COMPILER_FLAGS
    "--iree-input-type=mhlo"
  LABELS
    "noasan"
    "nomsan"
    "notsan"
    "noubsan"
    "requires-gpu-nvidia"
  TIMEOUT
    900
)

### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###

iree_static_linker_test(
  NAME
    mnist_fake_weights_llvm_cpu_static_bytecode_test
  SRC
    "mnist_fake_weights.mlir"
  STATIC_LIB_PREFIX
    mnist_fake_weights_linked_llvm_cpu
  ENTRY_FUNCTION
    "predict"
  FUNCTION_INPUTS
    "1x28x28x1xf32"
  COMPILER_FLAGS
    "--iree-input-type=mhlo"
)

iree_static_linker_test(
  NAME
    mnist_fake_weights_llvm_cpu_static_c_test
  SRC
    "mnist_fake_weights.mlir"
  STATIC_LIB_PREFIX
    mnist_fake_weights_linked_llvm_cpu
  ENTRY_FUNCTION
    "predict"
  FUNCTION_INPUTS
    "1x28x28x1xf32"
  COMPILER_FLAGS
    "--iree-input-type=mhlo"
    "--iree-vm-target-index-bits=32"
  EMITC
)

iree_static_linker_test(
  NAME
    simple_mul_llvm_cpu_static_bytecode_test
  SRC
    "${IREE_ROOT_DIR}/samples/static_library/simple_mul.mlir"
  STATIC_LIB_PREFIX
    simple_mul_dispatch_0
  ENTRY_FUNCTION
    "simple_mul"
  FUNCTION_INPUTS
    "4xf32,4xf32"
)

iree_static_linker_test(
  NAME
    simple_mul_llvm_cpu_static_c_test
  SRC
    "${IREE_ROOT_DIR}/samples/static_library/simple_mul.mlir"
  STATIC_LIB_PREFIX
    simple_mul_dispatch_0
  ENTRY_FUNCTION
    "simple_mul"
  FUNCTION_INPUTS
    "4xf32,4xf32"
  COMPILER_FLAGS
    "--iree-vm-target-index-bits=32"
  EMITC
)

iree_benchmark_suite_module_test(
  NAME
    mobilenet_v1_fp32_correctness_test
  BENCHMARK_MODULE_SRC
    "TFLite/MobileNetV1-fp32,imagenet"
  DRIVER
    "local-sync"
  RUNNER_ARGS
    "--entry_function=main"
    "--function_input=1x224x224x3xf32=0"
  EXPECTED_OUTPUT
    "mobilenet_v1_fp32_expected_output.txt"
  UNSUPPORTED_PLATFORMS
    "android-arm64-v8a"
    "riscv32-Linux"
)

iree_benchmark_suite_module_test(
  NAME
    efficientnet_int8_correctness_test
  BENCHMARK_MODULE_SRC
    "TFLite/EfficientNet-int8"
  DRIVER
    "local-sync"
  RUNNER_ARGS
    "--entry_function=main"
    "--function_input=1x224x224x3xui8=0"
  EXPECTED_OUTPUT
    "efficientnet_int8_expected_output.txt"
  UNSUPPORTED_PLATFORMS
    "android-arm64-v8a"
)

# Need to download deeplab_v3_fp32_input_0_expected_output.npy from GCS
# iree-model-artifacts.
#TODO(#10748): Disabled due to `iree-import-tflite` failure.
# iree_benchmark_suite_module_test(
#   NAME
#     deeplab_v3_fp32_correctness_test
#   BENCHMARK_MODULE_SRC
#     "TFLite/DeepLabV3-fp32"
#   DRIVER
#     "local-sync"
#   RUNNER_ARGS
#     "--entry_function=main"
#     "--function_input=1x257x257x3xf32=0"
#     "--expected_f32_threshold=0.001"
#   EXPECTED_OUTPUT
#     "deeplab_v3_fp32_input_0_expected_output.npy"
#   UNSUPPORTED_PLATFORMS
#     "riscv32-Linux"
# )

iree_benchmark_suite_module_test(
  NAME
    person_detect_int8_correctness_test
  BENCHMARK_MODULE_SRC
    "TFLite/PersonDetect-int8"
  DRIVER
    "local-sync"
  RUNNER_ARGS
    "--entry_function=main"
    "--function_input=1x96x96x1xi8=0"
  EXPECTED_OUTPUT
    "1x2xi8=[72 -72]"
  UNSUPPORTED_PLATFORMS
    "android-arm64-v8a"
)
