aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-06-07 09:41:11 +0200
committerRichard Biener <rguenther@suse.de>2024-06-07 11:40:56 +0200
commitdd6f942c266533b2f72610f354bc9184f8276beb (patch)
treeef1698d6ae7f88f0f6c3996a88dc6cc4347ac526
parent94997567ea5cbeb35571e94cf76d7f99ea3f9c43 (diff)
downloadgcc-dd6f942c266533b2f72610f354bc9184f8276beb.zip
gcc-dd6f942c266533b2f72610f354bc9184f8276beb.tar.gz
gcc-dd6f942c266533b2f72610f354bc9184f8276beb.tar.bz2
Fix fold-left reduction vectorization with multiple stmt copies
There's a typo when code generating the mask operand for conditional fold-left reductions in the case we have multiple stmt copies. The latter is now allowed for SLP and possibly disabled for non-SLP by accident. This fixes the observed run-FAIL for gcc.dg/vect/vect-cond-reduc-in-order-2-signed-zero.c with AVX512 and 256bit sized vectors. * tree-vect-loop.cc (vectorize_fold_left_reduction): Fix mask vector operand indexing.
-rw-r--r--gcc/tree-vect-loop.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index ceb9215..0286926 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -7217,7 +7217,7 @@ vectorize_fold_left_reduction (loop_vec_info loop_vinfo,
if (LOOP_VINFO_FULLY_MASKED_P (loop_vinfo))
mask = vect_get_loop_mask (loop_vinfo, gsi, masks, vec_num, vectype_in, i);
else if (is_cond_op)
- mask = vec_opmask[0];
+ mask = vec_opmask[i];
if (LOOP_VINFO_FULLY_WITH_LENGTH_P (loop_vinfo))
{
len = vect_get_loop_len (loop_vinfo, gsi, lens, vec_num, vectype_in,