diff --git a/src/mono/mono/mini/simd-intrinsics.c b/src/mono/mono/mini/simd-intrinsics.c index da2f83be0d5571..e839ce05ca29c3 100644 --- a/src/mono/mono/mini/simd-intrinsics.c +++ b/src/mono/mono/mini/simd-intrinsics.c @@ -6717,21 +6717,29 @@ mono_emit_common_intrinsics (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSi static gboolean decompose_vtype_opt_uses_simd_intrinsics (MonoCompile *cfg, MonoInst *ins) { - if (cfg->uses_simd_intrinsics) - return TRUE; + switch (ins->opcode) { + case OP_XCALL: + case OP_XCALL_REG: + case OP_XCALL_MEMBASE: + return FALSE; + } + + if (cfg->uses_simd_intrinsics) + return TRUE; + + switch (ins->opcode) { + case OP_XMOVE: + case OP_XZERO: + case OP_XPHI: + case OP_LOADX_MEMBASE: + case OP_LOADX_ALIGNED_MEMBASE: + case OP_STOREX_MEMBASE: + case OP_STOREX_ALIGNED_MEMBASE_REG: + return TRUE; + default: + return FALSE; + } - switch (ins->opcode) { - case OP_XMOVE: - case OP_XZERO: - case OP_XPHI: - case OP_LOADX_MEMBASE: - case OP_LOADX_ALIGNED_MEMBASE: - case OP_STOREX_MEMBASE: - case OP_STOREX_ALIGNED_MEMBASE_REG: - return TRUE; - default: - return FALSE; - } } static void