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 }