mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
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.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user