From 5a75c31c38d3e799ae12165dec38454674d8c81e Mon Sep 17 00:00:00 2001 From: Wenyong Huang Date: Tue, 26 Dec 2023 11:27:20 +0800 Subject: [PATCH] Add VectorCombine pass for JIT and AOT (#2923) It improves performance for some cases. And add several vectorize related passes for JIT mode. --- core/iwasm/compilation/aot_llvm_extra.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/iwasm/compilation/aot_llvm_extra.cpp b/core/iwasm/compilation/aot_llvm_extra.cpp index ed0205c3..7e7b46d3 100644 --- a/core/iwasm/compilation/aot_llvm_extra.cpp +++ b/core/iwasm/compilation/aot_llvm_extra.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include @@ -315,8 +316,11 @@ aot_apply_llvm_new_pass_manager(AOTCompContext *comp_ctx, LLVMModuleRef module) } ModulePassManager MPM; + if (comp_ctx->is_jit_mode) { const char *Passes = + "loop-vectorize,slp-vectorizer," + "load-store-vectorizer,vector-combine," "mem2reg,instcombine,simplifycfg,jump-threading,indvars"; ExitOnErr(PB.parsePassPipeline(MPM, Passes)); } @@ -327,6 +331,7 @@ aot_apply_llvm_new_pass_manager(AOTCompContext *comp_ctx, LLVMModuleRef module) FPM.addPass(LoopVectorizePass()); FPM.addPass(SLPVectorizerPass()); FPM.addPass(LoadStoreVectorizerPass()); + FPM.addPass(VectorCombinePass()); if (comp_ctx->enable_llvm_pgo || comp_ctx->use_prof_file) { /* LICM pass: loop invariant code motion, attempting to remove