diff options
author | Victor Do Nascimento <victor.donascimento@arm.com> | 2024-12-11 11:58:55 +0000 |
---|---|---|
committer | Tamar Christina <tamar.christina@arm.com> | 2024-12-11 11:59:24 +0000 |
commit | 240cbd2f26c0f1c1f83cfc3b69cc0271b56172e2 (patch) | |
tree | fcf144b47e24668471e078bf237695b594fa2e25 /gcc | |
parent | 561ef7c8477ba58ea64de259af9c2d0870afd9d4 (diff) | |
download | gcc-240cbd2f26c0f1c1f83cfc3b69cc0271b56172e2.zip gcc-240cbd2f26c0f1c1f83cfc3b69cc0271b56172e2.tar.gz gcc-240cbd2f26c0f1c1f83cfc3b69cc0271b56172e2.tar.bz2 |
middle-end: Fix mask length arg in call to vect_get_loop_mask [PR96342]
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-vect-stmts.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index 497a313..be1139a 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -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); |