From d5aa354d41531d39b5e108f1bdddb0d5f83c5d0a Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Fri, 30 Dec 2022 16:45:39 +0800 Subject: [PATCH] Return result directly if float cmp is called in AOT XIP (#1851) --- core/iwasm/compilation/aot_emit_numberic.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/iwasm/compilation/aot_emit_numberic.c b/core/iwasm/compilation/aot_emit_numberic.c index 396fc0e9..4c63e8a4 100644 --- a/core/iwasm/compilation/aot_emit_numberic.c +++ b/core/iwasm/compilation/aot_emit_numberic.c @@ -307,6 +307,14 @@ compile_op_float_min_max(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx, param_types, 2, left, right))) return NULL; + /* The result of XIP intrinsic is 0 or 1, should return it directly */ + + if (comp_ctx->disable_llvm_intrinsics + && aot_intrinsic_check_capability(comp_ctx, + is_f32 ? "f32_cmp" : "f64_cmp")) { + return cmp; + } + if (!(cmp = LLVMBuildSelect(comp_ctx->builder, is_eq, tmp, cmp, "cmp"))) { aot_set_last_error("llvm build select fail."); return NULL;