On Thu, Sep 14, 2023 at 5:12 AM Kewen Lin <li...@linux.ibm.com> wrote: > > This patch is to simplify the costing on the case > vectorizable_scan_store without calling function > vect_model_store_cost any more. > > I considered if moving the costing into function > vectorizable_scan_store is a good idea, for doing > that, we have to pass several variables down which > are only used for costing, and for now we just > want to keep the costing as the previous, haven't > tried to make this costing consistent with what the > transforming does, so I think we can leave it for now.
OK > gcc/ChangeLog: > > * tree-vect-stmts.cc (vectorizable_store): Adjust costing on > vectorizable_scan_store without calling vect_model_store_cost > any more. > --- > gcc/tree-vect-stmts.cc | 18 +++++++++++++++--- > 1 file changed, 15 insertions(+), 3 deletions(-) > > diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc > index 3f908242fee..048c14d291c 100644 > --- a/gcc/tree-vect-stmts.cc > +++ b/gcc/tree-vect-stmts.cc > @@ -8432,11 +8432,23 @@ vectorizable_store (vec_info *vinfo, > else if (STMT_VINFO_SIMD_LANE_ACCESS_P (stmt_info) >= 3) > { > gcc_assert (memory_access_type == VMAT_CONTIGUOUS); > + gcc_assert (!slp); > if (costing_p) > { > - vect_model_store_cost (vinfo, stmt_info, ncopies, > memory_access_type, > - alignment_support_scheme, misalignment, > - vls_type, slp_node, cost_vec); > + unsigned int inside_cost = 0, prologue_cost = 0; > + if (vls_type == VLS_STORE_INVARIANT) > + prologue_cost += record_stmt_cost (cost_vec, 1, scalar_to_vec, > + stmt_info, 0, vect_prologue); > + vect_get_store_cost (vinfo, stmt_info, ncopies, > + alignment_support_scheme, misalignment, > + &inside_cost, cost_vec); > + > + if (dump_enabled_p ()) > + dump_printf_loc (MSG_NOTE, vect_location, > + "vect_model_store_cost: inside_cost = %d, " > + "prologue_cost = %d .\n", > + inside_cost, prologue_cost); > + > return true; > } > return vectorizable_scan_store (vinfo, stmt_info, gsi, vec_stmt, > ncopies); > -- > 2.31.1 >