|  | # Copyright 2020 Google LLC | 
|  | # | 
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | # you may not use this file except in compliance with the License. | 
|  | # You may obtain a copy of the License at | 
|  | # | 
|  | #      https://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, software | 
|  | # distributed under the License is distributed on an "AS IS" BASIS, | 
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | # See the License for the specific language governing permissions and | 
|  | # limitations under the License. | 
|  |  | 
|  | # Run all(ish) IREE tests with CTest. Designed for CI, but can be run manually. | 
|  | # Assumes that the project has already been built at ${REPO_ROOT}/build (e.g. | 
|  | # with build_tools/cmake/clean_build.sh) | 
|  |  | 
|  | set -x | 
|  | set -e | 
|  |  | 
|  | ROOT_DIR=$(git rev-parse --show-toplevel) | 
|  |  | 
|  | # Respect the user setting, but default to as many jobs as we have cores. | 
|  | export CTEST_PARALLEL_LEVEL=${CTEST_PARALLEL_LEVEL:-$(nproc)} | 
|  |  | 
|  | # Respect the user setting, but default to turning off the vulkan tests | 
|  | # and turning on the llvmaot ones. | 
|  | export IREE_VULKAN_DISABLE=${IREE_VULKAN_DISABLE:-0} | 
|  | export IREE_LLVMAOT_DISABLE=${IREE_LLVMAOT_DISABLE:-0} | 
|  | # CUDA is off by default. | 
|  | export IREE_CUDA_DISABLE=${IREE_CUDA_DISABLE:-1} | 
|  | # The VK_KHR_shader_float16_int8 extension is optional prior to Vulkan 1.2. | 
|  | # We test on SwiftShader, which does not support this extension. | 
|  | export IREE_VULKAN_F16_DISABLE=${IREE_VULKAN_F16_DISABLE:-1} | 
|  |  | 
|  | # Tests to exclude by label. In addition to any custom labels (which are carried | 
|  | # over from Bazel tags), every test should be labeled with the directory it is | 
|  | # in. | 
|  | declare -a label_exclude_args=( | 
|  | # Exclude specific labels. | 
|  | # Put the whole label with anchors for exact matches. | 
|  | # For example: | 
|  | #   ^nokokoro$ | 
|  | ^nokokoro$ | 
|  |  | 
|  | # Exclude all tests in a directory. | 
|  | # Put the whole directory with anchors for exact matches. | 
|  | # For example: | 
|  | #   ^bindings/python/iree/runtime$ | 
|  |  | 
|  | # Exclude all tests in some subdirectories. | 
|  | # Put the whole parent directory with only a starting anchor. | 
|  | # Use a trailing slash to avoid prefix collisions. | 
|  | # For example: | 
|  | #   ^bindings/ | 
|  | ) | 
|  |  | 
|  | if [[ "${IREE_VULKAN_DISABLE?}" == 1 ]]; then | 
|  | label_exclude_args+=("^driver=vulkan$") | 
|  | fi | 
|  | if [[ "${IREE_LLVMAOT_DISABLE?}" == 1 ]]; then | 
|  | label_exclude_args+=("^driver=dylib$") | 
|  | fi | 
|  | if [[ "${IREE_CUDA_DISABLE?}" == 1 ]]; then | 
|  | label_exclude_args+=("^driver=cuda$") | 
|  | fi | 
|  | if [[ "${IREE_VULKAN_F16_DISABLE?}" == 1 ]]; then | 
|  | label_exclude_args+=("^vulkan_uses_vk_khr_shader_float16_int8$") | 
|  | fi | 
|  |  | 
|  | # Join on "|" | 
|  | label_exclude_regex="($(IFS="|" ; echo "${label_exclude_args[*]?}"))" | 
|  |  | 
|  | cd ${ROOT_DIR?}/build | 
|  | ctest --output-on-failure --label-exclude "${label_exclude_regex?}" |