On Tue, Oct 8, 2024 at 10:36 AM liuhongt <[email protected]> wrote:
>
> >So should we adjust very-cheap to allow niter peeling as proposed or
> >should we switch the default at -O2 to cheap?
> I prefer the former.
>
> Update in V2:
> Adjust testcase after relax O2 vectorization.
>
> Ok for trunk?
OK.
Thanks,
Richard.
> gcc/ChangeLog:
>
> * tree-vect-loop.cc (vect_analyze_loop_costing): Enable
> vectorization for LOOP_VINFO_PEELING_FOR_NITER in very cheap
> cost model.
> (vect_analyze_loop): Disable epilogue vectorization in very
> cheap cost model.
> ---
> gcc/tree-vect-loop.cc | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
> index 242d5e2d916..06afd8cae79 100644
> --- a/gcc/tree-vect-loop.cc
> +++ b/gcc/tree-vect-loop.cc
> @@ -2356,8 +2356,7 @@ vect_analyze_loop_costing (loop_vec_info loop_vinfo,
> a copy of the scalar code (even if we might be able to vectorize it).
> */
> if (loop_cost_model (loop) == VECT_COST_MODEL_VERY_CHEAP
> && (LOOP_VINFO_PEELING_FOR_ALIGNMENT (loop_vinfo)
> - || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)
> - || LOOP_VINFO_PEELING_FOR_NITER (loop_vinfo)))
> + || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)))
> {
> if (dump_enabled_p ())
> dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
> @@ -3638,7 +3637,8 @@ vect_analyze_loop (class loop *loop, vec_info_shared
> *shared)
> /* No code motion support for multiple epilogues
> so for now
> not supported when multiple exits. */
> && !LOOP_VINFO_EARLY_BREAKS (first_loop_vinfo)
> - && !loop->simduid);
> + && !loop->simduid
> + && loop_cost_model (loop) >
> VECT_COST_MODEL_VERY_CHEAP);
> if (!vect_epilogues)
> return first_loop_vinfo;
>
> --
> 2.31.1
>