From 6293272e9a47e6e7debe4acd8195a2ae2d9ef0df Mon Sep 17 00:00:00 2001 From: Richard Biener <rguenther@suse.de> Date: Wed, 16 Oct 2024 11:37:31 +0200 Subject: [PATCH] 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. --- 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) { -- GitLab