On Tue, Oct 8, 2024 at 10:36 AM liuhongt <hongtao....@intel.com> 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 >