################################################################################
# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
# tools/test/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
    "executable_benchmarks.mlir"
    "iree-benchmark-module.mlir"
    "iree-run-mlir.mlir"
    "iree-run-module-expected.mlir"
    "iree-run-module.mlir"
    "multiple_args.mlir"
    "multiple_exported_functions.mlir"
    "null_values.mlir"
    "repeated_return.mlir"
    "scalars.mlir"
  TOOLS
    ${IREE_LLD_TARGET}
    FileCheck
    iree-benchmark-module
    iree-compile
    iree-run-mlir
    iree-run-module
    not
  LABELS
    "hostonly"
)

iree_lit_test_suite(
  NAME
    benchmark_flags
  SRCS
    "benchmark_flags.txt"
  TOOLS
    FileCheck
    iree-benchmark-module
    iree-compile
  LABELS
    "hostonly"
)

### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
