diff options
author | Richard Biener <rguenther@suse.de> | 2024-10-16 11:37:31 +0200 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2024-10-17 08:48:38 +0200 |
commit | 6293272e9a47e6e7debe4acd8195a2ae2d9ef0df (patch) | |
tree | 62433170e4b6f3132204998186cdb4ce747bef86 | |
parent | e020116db056352d9a7495e85d37e66c36f6ea32 (diff) | |
download | gcc-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.cc | 1 |
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) { |