From d7f5b6b7da3b671aa7a4f4e3dd0300e76a8a9bbd 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 4ce3b622a47679..374f234f36a3e4 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 bd9cba1635668efbe96b7759e3e85a4b2641b4e9 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 374f234f36a3e4..376f2b69386ceb 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.