aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-11-13 15:05:00 +0100
committerRichard Biener <rguenth@gcc.gnu.org>2024-11-14 09:24:53 +0100
commit72df175c93d81d4eea67d889d76fda7381fb6743 (patch)
tree4e7e2601306d61c5e618704fcd7dbc159d97865a /gcc
parentba192895d17c4fc4676444fe1bd4a593d20e6def (diff)
downloadgcc-72df175c93d81d4eea67d889d76fda7381fb6743.zip
gcc-72df175c93d81d4eea67d889d76fda7381fb6743.tar.gz
gcc-72df175c93d81d4eea67d889d76fda7381fb6743.tar.bz2
tree-optimization/117554 - correct single-element interleaving check
In addition to a single DR we also require a single lane, not a splat. PR tree-optimization/117554 * tree-vect-stmts.cc (get_group_load_store_type): We can use gather/scatter only for a single-lane single element group access.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-vect-stmts.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index 2b3dd52..3147ff2 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -2277,6 +2277,7 @@ get_group_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info,
if ((*memory_access_type == VMAT_ELEMENTWISE
|| *memory_access_type == VMAT_STRIDED_SLP)
&& single_element_p
+ && (!slp_node || SLP_TREE_LANES (slp_node) == 1)
&& loop_vinfo
&& vect_use_strided_gather_scatters_p (stmt_info, loop_vinfo,
masked_p, gs_info))