| #!/bin/bash | 
 |  | 
 | # Copyright 2021 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 | 
 |  | 
 | # Test the cross-compiled RISCV 64-bit Linux targets. | 
 | # | 
 | # The desired build directory can be passed as the first argument. Otherwise, it | 
 | # uses the environment variable IREE_TARGET_BUILD_DIR, defaulting to | 
 | # "build-riscv". Designed for CI, but can be run manually. Expects to be run | 
 | # from the root of the IREE repository. | 
 |  | 
 | set -xeuo pipefail | 
 |  | 
 | BUILD_DIR="${1:-${IREE_TARGET_BUILD_DIR:-build-riscv}}" | 
 | RISCV_PLATFORM="${IREE_TARGET_PLATFORM:-linux}" | 
 | RISCV_ARCH="${IREE_TARGET_ARCH:-riscv_64}" | 
 | BUILD_PRESET="${BUILD_PRESET:-test}" | 
 |  | 
 | # Environment variable used by the emulator. | 
 | export RISCV_TOOLCHAIN_ROOT="${RISCV_RV64_LINUX_TOOLCHAIN_ROOT}" | 
 |  | 
 | export CTEST_PARALLEL_LEVEL=${CTEST_PARALLEL_LEVEL:-$(nproc)} | 
 |  | 
 | ctest_args=( | 
 |   "--timeout 900" | 
 |   "--output-on-failure" | 
 |   "--no-tests=error" | 
 | ) | 
 |  | 
 | declare -a label_exclude_args=( | 
 |   "^nodocker$" | 
 |   "^driver=vulkan$" | 
 |   "^driver=metal$" | 
 |   "^driver=cuda$" | 
 |   "^driver=rocm$" | 
 |   "^driver=hip$" | 
 |   "^vulkan_uses_vk_khr_shader_float16_int8$" | 
 |   "^requires-filesystem$" | 
 |   "^requires-dtz$" | 
 |   "^noriscv$" | 
 | ) | 
 |  | 
 | # TODO(#10462): Investigate the lowering_config test issue. | 
 | declare -a test_exclude_args=( | 
 |   "regression_llvm-cpu_lowering_config" | 
 | ) | 
 |  | 
 | if [[ "${BUILD_PRESET}" == "benchmark-suite-test" ]]; then | 
 |   declare -a label_args=( | 
 |     "^test-type=run-module-test$" | 
 |   ) | 
 |   label_include_regex="($(IFS="|" ; echo "${label_args[*]}"))" | 
 |   echo "******** Running run-module CTest ********" | 
 |   ctest --test-dir ${BUILD_DIR} ${ctest_args[@]} \ | 
 |     --label-regex ${label_include_regex} | 
 |   exit 0 | 
 | fi | 
 |  | 
 | # Test runtime unit tests | 
 | runtime_label_exclude_regex="($(IFS="|" ; echo "${label_exclude_args[*]}"))" | 
 | runtime_ctest_args=( | 
 |   "--test-dir ${BUILD_DIR}/runtime/" | 
 |   ${ctest_args[@]} | 
 |   "--label-exclude ${runtime_label_exclude_regex}" | 
 | ) | 
 | echo "******** Running runtime CTest ********" | 
 | ctest ${runtime_ctest_args[@]} | 
 |  | 
 | tools_ctest_args=( | 
 |   "--test-dir ${BUILD_DIR}/tools/test" | 
 |   ${ctest_args[@]} | 
 |   "--label-exclude ${runtime_label_exclude_regex}" | 
 | ) | 
 | echo "******** Running tools CTest ********" | 
 | ctest ${tools_ctest_args[@]} | 
 |  | 
 | if [[ "${RISCV_PLATFORM}-${RISCV_ARCH}" == "linux-riscv_32" ]]; then | 
 |   # stablehlo.power is also disabled because musl math library is not compiled for | 
 |   # 32-bit. | 
 |   test_exclude_args+=( | 
 |     "stablehlo.*llvm-cpu.*pow" | 
 |   ) | 
 | fi | 
 |  | 
 | tests_label_exclude_regex="($(IFS="|" ; echo "${label_exclude_args[*]}"))" | 
 | tests_exclude_regex="($(IFS="|" ; echo "${test_exclude_args[*]}"))" | 
 | test_ctest_args=( | 
 |   "--test-dir ${BUILD_DIR}/tests/e2e" | 
 |   ${ctest_args[@]} | 
 |   "--label-exclude ${tests_label_exclude_regex}" | 
 |   "--exclude-regex ${tests_exclude_regex}" | 
 | ) | 
 | echo "******** Running e2e CTest ********" | 
 | ctest  ${test_ctest_args[@]} |