]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
middle-end: Fix mask length arg in call to vect_get_loop_mask [PR96342]
authorVictor Do Nascimento <victor.donascimento@arm.com>
Wed, 11 Dec 2024 11:58:55 +0000 (11:58 +0000)
committerTamar Christina <tamar.christina@arm.com>
Wed, 11 Dec 2024 11:59:24 +0000 (11:59 +0000)
When issuing multiple calls to a simdclone in a vectorized loop,
TYPE_VECTOR_SUBPARTS(vectype) gives the incorrect number when compared
to the TYPE_VECTOR_SUBPARTS result we get from the mask type derived
from the relevant `rgroup_controls' entry within `vect_get_loop_mask'.

By passing `masktype' instead, we are able to get the correct number of
vector subparts and thu eliminate the ICE in the call to
`vect_get_loop_mask' when the data type for which we retrieve the mask
is wider than the one used when defining the mask at mask registration
time.

gcc/ChangeLog:

PR target/96342
* tree-vect-stmts.cc (vectorizable_simd_clone_call):
s/vectype/masktype/ in call to vect_get_loop_mask.

gcc/tree-vect-stmts.cc

index 497a31322accba8672b82dee00f5403b40dca22b..be1139a423c85608755f10750bb68e70223a84ea 100644 (file)
@@ -4964,7 +4964,7 @@ vectorizable_simd_clone_call (vec_info *vinfo, stmt_vec_info stmt_info,
                {
                  vec_loop_masks *loop_masks = &LOOP_VINFO_MASKS (loop_vinfo);
                  mask = vect_get_loop_mask (loop_vinfo, gsi, loop_masks,
-                                            ncopies, vectype, j);
+                                            ncopies, masktype, j);
                }
              else
                mask = vect_build_all_ones_mask (vinfo, stmt_info, masktype);