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
>

Reply via email to