https://gcc.gnu.org/g:6293272e9a47e6e7debe4acd8195a2ae2d9ef0df

commit r15-4404-g6293272e9a47e6e7debe4acd8195a2ae2d9ef0df
Author: Richard Biener <rguent...@suse.de>
Date:   Wed Oct 16 11:37:31 2024 +0200

    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.

Diff:
---
 gcc/tree-vect-slp.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index 629c4b433ab5..d35c2ea02dce 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)
        {

Reply via email to