This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [gomp4 simd, RFC] Simple fix to override vectorization cost estimation.

On Tue, Nov 12, 2013 at 05:46:14PM +0400, Sergey Ostanevich wrote:
> ivdep just substitutes all cross-iteration data analysis,
> nothing related to cost model. ICC does not cancel its
> cost model in case of #pragma ivdep
> as for the safelen - OMP standart treats it as a limitation
> for the vector length. this means if no safelen is present
> an arbitrary vector length can be used.

I was talking about GCC loop->safelen, which is INT_MAX for #pragma omp simd
without safelen clause or #pragma simd without vectorlength clause.

> so I believe loop->force_vect is the only trigger to disregard
> the cost model

Anyway, in that case I think the originally posted patch is wrong,
if we want to treat force_vect as disregard all the cost model and
force vectorization (well, the name of the field already kind of suggest
that), then IMHO we should treat it the same as -fvect-cost-model=unlimited
for those loops.

Thus (untested):

2013-11-12  Jakub Jelinek  <>

	* tree-vect-loop.c (vect_estimate_min_profitable_iters): Use
	unlimited cost model also for force_vect loops.

--- gcc/tree-vect-loop.c.jj	2013-11-12 12:09:40.000000000 +0100
+++ gcc/tree-vect-loop.c	2013-11-12 15:11:43.821404330 +0100
@@ -2702,7 +2702,7 @@ vect_estimate_min_profitable_iters (loop
   void *target_cost_data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo);
   /* Cost model disabled.  */
-  if (unlimited_cost_model ())
+  if (unlimited_cost_model () || LOOP_VINFO_LOOP (loop_vinfo)->force_vect)
       dump_printf_loc (MSG_NOTE, vect_location, "cost model disabled.\n");
       *ret_min_profitable_niters = 0;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]