[gcc r15-1465] vect: Tighten an assertion for lane-reducing in transform

Feng Xue fxue@gcc.gnu.org
Thu Jun 20 02:57:17 GMT 2024


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

commit r15-1465-gecbc96bb2873e453b0bd33d602ce34ad0d9d9cfd
Author: Feng Xue <fxue@os.amperecomputing.com>
Date:   Sun Jun 16 13:33:52 2024 +0800

    vect: Tighten an assertion for lane-reducing in transform
    
    According to logic of code nearby the assertion, all lane-reducing operations
    should not appear, not just DOT_PROD_EXPR. Since "use_mask_by_cond_expr_p"
    treats SAD_EXPR same as DOT_PROD_EXPR, and WIDEN_SUM_EXPR should not be allowed
    by the following assertion "gcc_assert (commutative_binary_op_p (...))", so
    tighten the assertion.
    
    2024-06-16 Feng Xue <fxue@os.amperecomputing.com>
    
    gcc/
            * tree-vect-loop.cc (vect_transform_reduction): Change assertion to
            cover all lane-reducing ops.

Diff:
---
 gcc/tree-vect-loop.cc | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index 1d60ac47e553..347dac97e497 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -8618,7 +8618,8 @@ vect_transform_reduction (loop_vec_info loop_vinfo,
     }
 
   bool single_defuse_cycle = STMT_VINFO_FORCE_SINGLE_CYCLE (reduc_info);
-  gcc_assert (single_defuse_cycle || lane_reducing_op_p (code));
+  bool lane_reducing = lane_reducing_op_p (code);
+  gcc_assert (single_defuse_cycle || lane_reducing);
 
   /* Create the destination vector  */
   tree scalar_dest = gimple_get_lhs (stmt_info->stmt);
@@ -8674,8 +8675,9 @@ vect_transform_reduction (loop_vec_info loop_vinfo,
       tree vop[3] = { vec_oprnds[0][i], vec_oprnds[1][i], NULL_TREE };
       if (masked_loop_p && !mask_by_cond_expr)
 	{
-	  /* No conditional ifns have been defined for dot-product yet.  */
-	  gcc_assert (code != DOT_PROD_EXPR);
+	  /* No conditional ifns have been defined for lane-reducing op
+	     yet.  */
+	  gcc_assert (!lane_reducing);
 
 	  /* Make sure that the reduction accumulator is vop[0].  */
 	  if (reduc_index == 1)


More information about the Gcc-cvs mailing list