| #!/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. |
| |
| set -xeuo pipefail |
| |
| # Print the UTC time when set -x is on |
| export PS4='[$(date -u "+%T %Z")] ' |
| |
| ROOT_DIR="${ROOT_DIR:-$(git rev-parse --show-toplevel)}" |
| IREE_IMPORT_TFLITE_BIN="${IREE_IMPORT_TFLITE_BIN:-iree-import-tflite}" |
| LLVM_BIN_DIR="${LLVM_BIN_DIR}" |
| |
| # Environment variable used by the emulator and iree-compile for the |
| # llvm-cpu bytecode codegen. |
| export RISCV_TOOLCHAIN_ROOT="${RISCV_RV64_LINUX_TOOLCHAIN_ROOT}" |
| |
| function generate_llvm_cpu_vmfb { |
| local target="${1}"; shift |
| local compile_args=( |
| --iree-hal-target-backends=llvm-cpu |
| --iree-llvm-embedded-linker-path="${IREE_HOST_BINARY_ROOT}/bin/lld" |
| --iree-llvm-target-triple=riscv64 |
| --iree-llvm-target-cpu=generic-rv64 |
| --iree-llvm-target-abi=lp64d |
| ) |
| if [[ "${target}" == "mhlo" ]]; then |
| compile_args+=( |
| --iree-input-type=mhlo |
| --iree-llvm-target-cpu-features="+m,+a,+f,+d,+c" |
| ) |
| elif [[ "${target}" == "tosa" ]]; then |
| local input_file="${1}"; shift |
| "${IREE_IMPORT_TFLITE_BIN}" -o "${BUILD_RISCV_DIR}/tosa.mlir" "${input_file}" |
| compile_args+=( |
| --iree-input-type=tosa |
| --iree-llvm-target-cpu-features="+m,+a,+f,+d,+c" |
| "${BUILD_RISCV_DIR}/tosa.mlir" |
| ) |
| elif [[ "${target}" == "tosa-rvv" ]]; then |
| local input_file="${1}"; shift |
| "${IREE_IMPORT_TFLITE_BIN}" -o "${BUILD_RISCV_DIR}/tosa.mlir" "${input_file}" |
| compile_args+=( |
| --iree-input-type=tosa |
| --iree-llvm-target-cpu-features="+m,+a,+f,+d,+c,+v" |
| --riscv-v-fixed-length-vector-lmul-max=8 |
| --riscv-v-vector-bits-min=512 |
| "${BUILD_RISCV_DIR}/tosa.mlir" |
| ) |
| fi |
| "${IREE_HOST_BINARY_ROOT}/bin/iree-compile" "${compile_args[@]}" "$@" |
| } |
| |
| generate_llvm_cpu_vmfb mhlo \ |
| "${ROOT_DIR}/tools/test/iree-run-module.mlir" \ |
| -o "${BUILD_RISCV_DIR}/iree-run-module-llvm_cpu.vmfb" |
| |
| wget -P "${BUILD_RISCV_DIR}/" "https://storage.googleapis.com/iree-model-artifacts/person_detect.tflite" |
| |
| generate_llvm_cpu_vmfb tosa \ |
| "${BUILD_RISCV_DIR}/person_detect.tflite" \ |
| -o "${BUILD_RISCV_DIR}/person_detect.vmfb" |
| |
| generate_llvm_cpu_vmfb tosa-rvv \ |
| "${BUILD_RISCV_DIR}/person_detect.tflite" \ |
| -o "${BUILD_RISCV_DIR}/person_detect_rvv.vmfb" |
| |
| ${PYTHON_BIN} "${ROOT_DIR}/third_party/llvm-project/llvm/utils/lit/lit.py" \ |
| -v --path "${LLVM_BIN_DIR}" "${ROOT_DIR}/tests/riscv64" |
| |
| # Test runtime unit tests |
| ctest --test-dir ${BUILD_RISCV_DIR}/runtime/ --timeout 900 --output-on-failure \ |
| --no-tests=error --label-exclude \ |
| '(^nokokoro$|^driver=vulkan$|^driver=cuda$|^vulkan_uses_vk_khr_shader_float16_int8$|^requires-filesystem$|^requires-dtz$)' |
| |
| # Test e2e models. Excluding mobilebert, fp16, and lowering_config regression |
| # tests for now. |
| # TODO(#10462): Investigate the lowering_config test issue. |
| ctest --test-dir ${BUILD_RISCV_DIR}/tests/e2e --timeout 900 --output-on-failure \ |
| --no-tests=error --label-exclude \ |
| '(^nokokoro$|^driver=vulkan$|^driver=cuda$|^vulkan_uses_vk_khr_shader_float16_int8$)' \ |
| -E '(bert|fp16|regression_llvm-cpu_lowering_config)' |