aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-10-16 11:37:31 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2024-10-17 08:48:38 +0200
commit6293272e9a47e6e7debe4acd8195a2ae2d9ef0df (patch)
tree62433170e4b6f3132204998186cdb4ce747bef86
parente020116db056352d9a7495e85d37e66c36f6ea32 (diff)
downloadgcc-6293272e9a47e6e7debe4acd8195a2ae2d9ef0df.zip
gcc-6293272e9a47e6e7debe4acd8195a2ae2d9ef0df.tar.gz
gcc-6293272e9a47e6e7debe4acd8195a2ae2d9ef0df.tar.bz2
Fix gcc.dg/vect/vect-early-break_39.c FAIL with forced SLP
The testcases shows single-element interleaving of size three being exempted from permutation lowering via heuristics (see also PR116973). But it wasn't supposed to apply to non-power-of-two sizes so this amends the check to ensure the sub-group is aligned even when the number of lanes is one. * tree-vect-slp.cc (vect_lower_load_permutations): Avoid exempting non-power-of-two group sizes from lowering.
-rw-r--r--gcc/tree-vect-slp.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index 629c4b4..d35c2ea 100644
--- a/gcc/tree-vect-slp.cc
+++ b/gcc/tree-vect-slp.cc
@@ -4427,6 +4427,7 @@ vect_lower_load_permutations (loop_vec_info loop_vinfo,
&& contiguous
&& (SLP_TREE_LANES (load) > 1 || loads.size () == 1)
&& pow2p_hwi (SLP_TREE_LANES (load))
+ && pow2p_hwi (group_lanes)
&& SLP_TREE_LOAD_PERMUTATION (load)[0] % SLP_TREE_LANES (load) == 0
&& group_lanes % SLP_TREE_LANES (load) == 0)
{