Re: Make do_loop use estimated_num_iterations/expected_num_iterations

2016-05-20 Thread Richard Biener
On Thu, 19 May 2016, Jan Hubicka wrote:

> Hi,
> this patch makes doloop_optimize to use the
> get_estimated_loop_iterations_int/get_max_loop_iterations_int instead of 
> weakter
> check for const_iter.  Bootstrapped/regtested x86_64-linux, OK?

Ok.

Thanks,
Richard.

> Honza
> 
>   * loop-doloop.c (doloop_optimize): Use get_estimated_loop_iterations_int
>   and get_max_loop_iterations_int.
> Index: loop-doloop.c
> ===
> --- loop-doloop.c (revision 236450)
> +++ loop-doloop.c (working copy)
> @@ -610,7 +610,8 @@ doloop_optimize (struct loop *loop)
>widest_int iterations, iterations_max;
>rtx_code_label *start_label;
>rtx condition;
> -  unsigned level, est_niter;
> +  unsigned level;
> +  HOST_WIDE_INT est_niter;
>int max_cost;
>struct niter_desc *desc;
>unsigned word_mode_size;
> @@ -635,21 +636,16 @@ doloop_optimize (struct loop *loop)
>  }
>mode = desc->mode;
>  
> -  est_niter = 3;
> -  if (desc->const_iter)
> -est_niter = desc->niter;
> -  /* If the estimate on number of iterations is reliable (comes from profile
> - feedback), use it.  Do not use it normally, since the expected number
> - of iterations of an unrolled loop is 2.  */
> -  if (loop->header->count)
> -est_niter = expected_loop_iterations (loop);
> +  est_niter = get_estimated_loop_iterations_int (loop);
> +  if (est_niter == -1)
> +est_niter = get_max_loop_iterations_int (loop);
>  
> -  if (est_niter < 3)
> +  if (est_niter >= 0 && est_niter < 3)
>  {
>if (dump_file)
>   fprintf (dump_file,
>"Doloop: Too few iterations (%u) to be profitable.\n",
> -  est_niter);
> +  (unsigned int)est_niter);
>return false;
>  }
>  
> 
> 

-- 
Richard Biener 
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 
21284 (AG Nuernberg)


Make do_loop use estimated_num_iterations/expected_num_iterations

2016-05-19 Thread Jan Hubicka
Hi,
this patch makes doloop_optimize to use the
get_estimated_loop_iterations_int/get_max_loop_iterations_int instead of weakter
check for const_iter.  Bootstrapped/regtested x86_64-linux, OK?

Honza

* loop-doloop.c (doloop_optimize): Use get_estimated_loop_iterations_int
and get_max_loop_iterations_int.
Index: loop-doloop.c
===
--- loop-doloop.c   (revision 236450)
+++ loop-doloop.c   (working copy)
@@ -610,7 +610,8 @@ doloop_optimize (struct loop *loop)
   widest_int iterations, iterations_max;
   rtx_code_label *start_label;
   rtx condition;
-  unsigned level, est_niter;
+  unsigned level;
+  HOST_WIDE_INT est_niter;
   int max_cost;
   struct niter_desc *desc;
   unsigned word_mode_size;
@@ -635,21 +636,16 @@ doloop_optimize (struct loop *loop)
 }
   mode = desc->mode;
 
-  est_niter = 3;
-  if (desc->const_iter)
-est_niter = desc->niter;
-  /* If the estimate on number of iterations is reliable (comes from profile
- feedback), use it.  Do not use it normally, since the expected number
- of iterations of an unrolled loop is 2.  */
-  if (loop->header->count)
-est_niter = expected_loop_iterations (loop);
+  est_niter = get_estimated_loop_iterations_int (loop);
+  if (est_niter == -1)
+est_niter = get_max_loop_iterations_int (loop);
 
-  if (est_niter < 3)
+  if (est_niter >= 0 && est_niter < 3)
 {
   if (dump_file)
fprintf (dump_file,
 "Doloop: Too few iterations (%u) to be profitable.\n",
-est_niter);
+(unsigned int)est_niter);
   return false;
 }