This is the mail archive of the gcc-patches@gcc.gnu.org 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: Protect against min_profitable_iters going negative


On 11/08/2017 09:49 AM, Richard Sandiford wrote:
> We had:
> 
>       if (vec_outside_cost <= 0)
>         min_profitable_iters = 0;
>       else
>         {
> 	  min_profitable_iters = ((vec_outside_cost - scalar_outside_cost)
> 				  * assumed_vf
> 				  - vec_inside_cost * peel_iters_prologue
> 				  - vec_inside_cost * peel_iters_epilogue)
> 				 / ((scalar_single_iter_cost * assumed_vf)
> 				    - vec_inside_cost);
> 
> which can lead to negative min_profitable_iters when the *_outside_costs
> are the same and peel_iters_epilogue is nonzero (e.g. if we're peeling
> for gaps).
> 
> This is tested as part of the patch that adds support for fully-predicated
> loops.
> 
> Tested on aarch64-linux-gnu (both with and without SVE), x86_64-linux-gnu
> and powerpc64le-linux-gnu.  OK to install?
> 
> Thanks,
> Richard
> 
> 
> 2017-11-08  Richard Sandiford  <richard.sandiford@linaro.org>
> 	    Alan Hayward  <alan.hayward@arm.com>
> 	    David Sherwood  <david.sherwood@arm.com>
> 
> gcc/
> 	* tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
> 	min_profitable_iters doesn't go negative.
OK.
jeff


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