diff --git a/core/iwasm/aot/aot_intrinsic.c b/core/iwasm/aot/aot_intrinsic.c index 34e6cd7c..06400b41 100644 --- a/core/iwasm/aot/aot_intrinsic.c +++ b/core/iwasm/aot/aot_intrinsic.c @@ -394,10 +394,11 @@ aot_intrinsic_fill_capability_flags(AOTCompContext *comp_ctx) return; if (!strncmp(comp_ctx->target_arch, "thumb", 5)) { - if (!strcmp(comp_ctx->target_cpu, "cortex-m4")) { - add_f32_common_intrinsics_for_thumb2_fpu(comp_ctx); + if (!strcmp(comp_ctx->target_cpu, "cortex-m7")) {} + else if (!strcmp(comp_ctx->target_cpu, "cortex-m4")) { + add_f64_common_intrinsics_for_thumb2_fpu(comp_ctx); } - else if (!strcmp(comp_ctx->target_cpu, "cortex-m7")) { + else { add_f32_common_intrinsics_for_thumb2_fpu(comp_ctx); add_f64_common_intrinsics_for_thumb2_fpu(comp_ctx); } diff --git a/core/iwasm/compilation/aot_emit_numberic.c b/core/iwasm/compilation/aot_emit_numberic.c index df83bc25..29835385 100644 --- a/core/iwasm/compilation/aot_emit_numberic.c +++ b/core/iwasm/compilation/aot_emit_numberic.c @@ -147,9 +147,10 @@ call_llvm_float_experimental_constrained_intrinsic(AOTCompContext *comp_ctx, va_list param_value_list; LLVMValueRef ret; LLVMTypeRef param_types[4], ret_type = is_f32 ? F32_TYPE : F64_TYPE; - int param_count = ((comp_ctx->disable_llvm_intrinsics == false) - || aot_intrinsic_check_capability(comp_ctx, intrinsic)) - ? 4 : 2; + int param_count = (comp_ctx->disable_llvm_intrinsics + && aot_intrinsic_check_capability(comp_ctx, intrinsic)) + ? 2 + : 4; param_types[0] = param_types[1] = ret_type; param_types[2] = param_types[3] = MD_TYPE; diff --git a/core/iwasm/compilation/aot_llvm.c b/core/iwasm/compilation/aot_llvm.c index 1275a21b..7de87b23 100644 --- a/core/iwasm/compilation/aot_llvm.c +++ b/core/iwasm/compilation/aot_llvm.c @@ -2024,7 +2024,7 @@ __call_llvm_intrinsic(const AOTCompContext *comp_ctx, int32 func_idx; if (comp_ctx->disable_llvm_intrinsics - && (aot_intrinsic_check_capability(comp_ctx, name) == false)) { + && aot_intrinsic_check_capability(comp_ctx, name)) { if (func_ctx == NULL) { aot_set_last_error_v("invalid func_ctx for intrinsic: %s", name); return NULL;