From 4e63c5a956e100d2151fdffb40d65f277ad1d2fd Mon Sep 17 00:00:00 2001 From: Fan Yang Date: Sat, 20 Aug 2022 14:47:08 -0700 Subject: [PATCH 1/2] Only enable Arm intrinsics for full aot --- src/mono/mono/mini/simd-intrinsics.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mono/mono/mini/simd-intrinsics.c b/src/mono/mono/mini/simd-intrinsics.c index c9e95c058d9654..c0639fec7d4f1b 100644 --- a/src/mono/mono/mini/simd-intrinsics.c +++ b/src/mono/mono/mini/simd-intrinsics.c @@ -718,6 +718,14 @@ emit_hardware_intrinsics ( if (!info) goto support_probe_complete; id = info->id; + +#ifdef TARGET_ARM64 + if (!(cfg->compile_aot && cfg->full_aot)) { + goto support_probe_complete; + } + +#endif + // Hardware intrinsics are LLVM-only. if (!COMPILE_LLVM (cfg) && !intrin_group->jit_supported) goto support_probe_complete; @@ -986,7 +994,7 @@ is_element_type_primitive (MonoType *vector_type) static MonoInst* emit_sri_vector (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **args) -{ +{ if (!COMPILE_LLVM (cfg)) return NULL; From 708d72d7bc47b30fae0b7582656f50f79986068e Mon Sep 17 00:00:00 2001 From: Fan Yang Date: Mon, 22 Aug 2022 09:13:05 -0700 Subject: [PATCH 2/2] Make sure AOT doesn't fall back to interpreter --- src/mono/mono/mini/simd-intrinsics.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/mono/mono/mini/simd-intrinsics.c b/src/mono/mono/mini/simd-intrinsics.c index c0639fec7d4f1b..ff5f699c60526a 100644 --- a/src/mono/mono/mini/simd-intrinsics.c +++ b/src/mono/mono/mini/simd-intrinsics.c @@ -720,10 +720,9 @@ emit_hardware_intrinsics ( id = info->id; #ifdef TARGET_ARM64 - if (!(cfg->compile_aot && cfg->full_aot)) { + if (!(cfg->compile_aot && cfg->full_aot && !cfg->interp) && !intrin_group->jit_supported) { goto support_probe_complete; } - #endif // Hardware intrinsics are LLVM-only.