To run integration tests using qemu-aarch64 on x64 host, below flags are
added to the cmake command when building mlir/llvm:
-DMLIR_INCLUDE_INTEGRATION_TESTS=ON \
-DMLIR_RUN_ARM_SVE_TESTS=ON \
-DMLIR_RUN_ARM_SME_TESTS=ON \
-DARM_EMULATOR_EXECUTABLE="<...>/qemu-aarch64" \
-DARM_EMULATOR_OPTIONS="-L /usr/aarch64-linux-gnu" \
-DARM_EMULATOR_MLIR_CPU_RUNNER_EXECUTABLE="<llvm_arm64_build_top>/bin/mlir-cpu-runner-arm64"
\
-DARM_EMULATOR_LLI_EXECUTABLE="<llvm_arm64_build_top>/bin/lli" \
-DARM_EMULATOR_UTILS_LIB_DIR="<llvm_arm64_build_top>/lib"
The last three above are prebuilt on, or cross-built for, an aarch64
host.
This patch introduced substittutions of "%native_mlir_runner_utils" etc. and use
them in SVE/SME integration tests. When configured to run using qemu-aarch64,
mlir runtime util libs will be loaded from ARM_EMULATOR_UTILS_LIB_DIR, if set.
Some tests marked with 'UNSUPPORTED: target=aarch64{{.*}}' are still run
when configured with ARM_EMULATOR_EXECUTABLE and the default target is
not aarch64.
A lit config feature 'mlir_arm_emulator' is added in
mlir/test/lit.site.cfg.py.in and to UNSUPPORTED list of such tests.
17 lines
497 B
INI
17 lines
497 B
INI
import sys
|
|
from lit.llvm import llvm_config
|
|
|
|
# No JIT on win32.
|
|
if sys.platform == "win32":
|
|
config.unsupported = True
|
|
|
|
# ArmSVE tests must be enabled via build flag.
|
|
if config.mlir_run_arm_sve_tests:
|
|
config.substitutions.append(("%ENABLE_VLA", "true"))
|
|
config.substitutions.append(
|
|
("%VLA_ARCH_ATTR_OPTIONS", '--march=aarch64 --mattr="+sve"')
|
|
)
|
|
else:
|
|
config.substitutions.append(("%ENABLE_VLA", "false"))
|
|
config.substitutions.append(("%VLA_ARCH_ATTR_OPTIONS", ""))
|