https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111156

--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> ---
diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index 7cf9504398c..8deeecfd4aa 100644
--- a/gcc/tree-vect-slp.cc
+++ b/gcc/tree-vect-slp.cc
@@ -1280,8 +1280,11 @@ vect_build_slp_tree_1 (vec_info *vinfo, unsigned char
*swap,
                    && rhs_code.is_tree_code ()
                    && (TREE_CODE_CLASS (tree_code (first_stmt_code))
                        == tcc_comparison)
-                   && (swap_tree_comparison (tree_code (first_stmt_code))
-                       == tree_code (rhs_code)))
+                   && ((swap_tree_comparison (tree_code (first_stmt_code))
+                        == tree_code (rhs_code))
+                       || ((TREE_CODE_CLASS (tree_code (alt_stmt_code))
+                            == tcc_comparison)
+                           && rhs_code == alt_stmt_code)))
               && !(STMT_VINFO_GROUPED_ACCESS (stmt_info)
                    && (first_stmt_code == ARRAY_REF
                        || first_stmt_code == BIT_FIELD_REF

should get you SLP but:

t.c:8:26: note:   === vect_slp_analyze_operations ===
t.c:8:26: note:   ==> examining statement: pretmp_29 = *_28;
t.c:8:26: missed:   unsupported load permutation
t.c:10:30: missed:   not vectorized: relevant stmt not supported: pretmp_29 =
*_28;

t.c:8:26: note:   op template: pretmp_29 = *_28;
t.c:8:26: note:         stmt 0 pretmp_29 = *_28;
t.c:8:26: note:         stmt 1 pretmp_29 = *_28;
t.c:8:26: note:         load permutation { 0 0 }

Reply via email to