[gcc r11-3038] vec: Revert "dead code removal in tree-vect-loop.c" and add a comment.

Andrea Corallo akrl@gcc.gnu.org
Mon Sep 7 17:50:48 GMT 2020


https://gcc.gnu.org/g:e147bb0faad95ed8699c426484ed3dd026fd3366

commit r11-3038-ge147bb0faad95ed8699c426484ed3dd026fd3366
Author: Andrea Corallo <andrea.corallo@arm.com>
Date:   Mon Sep 7 13:45:47 2020 +0100

    vec: Revert "dead code removal in tree-vect-loop.c" and add a comment.
    
    gcc/ChangeLog
    
    2020-09-07  Andrea Corallo  <andrea.corallo@arm.com>
    
            * tree-vect-loop.c (vect_estimate_min_profitable_iters): Revert
            dead-code removal introduced by 09fa6acd8d9 + add a comment to
            clarify.

Diff:
---
 gcc/tree-vect-loop.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index a0c3c5cc858..80e78f7adf4 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -4089,6 +4089,8 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo,
 
   if (vec_outside_cost <= 0)
     min_profitable_estimate = 0;
+  /* ??? This "else if" arm is written to handle all cases; see below for
+     what we would do for !LOOP_VINFO_USING_PARTIAL_VECTORS_P.  */
   else if (LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo))
     {
       /* This is a repeat of the code above, but with + SOC rather
@@ -4101,10 +4103,17 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo,
       if (outside_overhead > 0)
 	min_vec_niters = outside_overhead / saving_per_viter + 1;
 
-      int threshold = (vec_inside_cost * min_vec_niters
-		       + vec_outside_cost
-		       + scalar_outside_cost);
-      min_profitable_estimate = threshold / scalar_single_iter_cost + 1;
+      if (LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo))
+	{
+	  int threshold = (vec_inside_cost * min_vec_niters
+			   + vec_outside_cost
+			   + scalar_outside_cost);
+	  min_profitable_estimate = threshold / scalar_single_iter_cost + 1;
+	}
+      else
+	min_profitable_estimate = (min_vec_niters * assumed_vf
+				   + peel_iters_prologue
+				   + peel_iters_epilogue);
     }
   else
     {


More information about the Gcc-cvs mailing list