from lit.llvm import llvm_config if not config.mlir_include_integration_tests: config.unsupported = True def configure_aarch64_lli_and_mcr_cmd(): lli_cmd = "lli" mcr_cmd = "mlir-cpu-runner" # NOTE: If the SVE tests are disabled and the SME tests are enabled to run # under emulation, the SVE specific RUN lines in the SparseTensor tests # will run under emulation. if not (config.mlir_run_arm_sve_tests or config.mlir_run_arm_sme_tests): return (lli_cmd, mcr_cmd) config.substitutions.append( ( "%mlir_native_utils_lib_dir", config.arm_emulator_utils_lib_dir or config.mlir_lib_dir, ) ) if config.arm_emulator_executable: if config.arm_emulator_lli_executable: lli_cmd = config.arm_emulator_lli_executable else: # Top-level lit config adds llvm_tools_dir to PATH but this is lost # when running under an emulator. If the user didn't specify an lli # executable, use absolute path %llvm_tools_dir/lli. lli_cmd = llvm_config.use_llvm_tool( "lli", search_env="LLI", required=True, search_paths=[config.llvm_tools_dir], use_installed=False, ) if config.arm_emulator_mlir_cpu_runner_executable: mcr_cmd = config.arm_emulator_mlir_cpu_runner_executable else: # Top-level LIT config adds llvm_tools_dir to PATH but this is lost # when running under an emulator. If the user didn't specify an # mlir-cpu-runner executable, use absolute path # %llvm_tools_dir/mlir-cpu-runner. mcr_cmd = llvm_config.use_llvm_tool( "mlir-cpu-runner", search_env="MLIR_CPU_RUNNER", required=True, search_paths=[config.mlir_tools_dir], use_installed=False, ) # Run test in emulator (qemu or armie) emulation_cmd = ( f"{config.arm_emulator_executable} {config.arm_emulator_options}" ) lli_cmd = f"{emulation_cmd} {lli_cmd}" mcr_cmd = f"{emulation_cmd} {mcr_cmd}" return (lli_cmd, mcr_cmd) aarch64_lli_cmd, aarch64_mcr_cmd = configure_aarch64_lli_and_mcr_cmd() # Configure the following AArch64 substitutions: # # * %lli_aarch64_cmd - Invokes lli. For tests that _will_ run on AArch64 (ArmSVE, ArmSME). # * %lli_host_or_aarch64_cmd - Invokes lli. For tests that _may_ run on AArch64 (SparseTensor). # * %mcr_aarch64_cmd - Invokes mlir-cpu-runner. For tests that _will_ # run on AArch64. May invoke mlir-cpu-runner under # an AArch64 emulator (when # `config.arm_emulator_executable` is set). # # AArch64 tests will run under emulation if configured at build time by the # following CMake options: # # * ARM_EMULATOR_EXECUTABLE - emulator to use. # * ARM_EMULATOR_OPTIONS - options for emulator. # * ARM_EMULATOR_LLI_EXECUTABLE - AArch64 native lli to support cross-compilation. # * ARM_EMULATOR_UTILS_LIB_DIR - AArch64 native utilites library to support cross-compilation. # # Functionally the two substitutions are equivalent, i.e. %lli_aarch64_cmd # could be used in the SparseTensor tests where necessary, but the meaning # conveyed by the substitution name would be a misnomer if the host target # is not AArch64 and MLIR_RUN_ARM_SVE_TESTS=OFF. config.substitutions.append(("%lli_aarch64_cmd", aarch64_lli_cmd)) config.substitutions.append(("%lli_host_or_aarch64_cmd", aarch64_lli_cmd)) config.substitutions.append(("%mcr_aarch64_cmd", aarch64_mcr_cmd))