We now never have hybrid SLP (if we have, we fail immediately).

        * tree-vect-data-refs.cc (vect_get_data_access_cost): Use
        ncopies == 1.
        * tree-vect-slp.cc (vect_remove_slp_scalar_calls): Remove
        hybrid/loop SLP skip.
        * tree-vect-stmts.cc (vectorizable_store): Remove pure SLP assert.
---
 gcc/tree-vect-data-refs.cc | 11 ++---------
 gcc/tree-vect-slp.cc       |  2 --
 gcc/tree-vect-stmts.cc     |  4 ----
 3 files changed, 2 insertions(+), 15 deletions(-)

diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc
index b34d0179408..2e47e76f748 100644
--- a/gcc/tree-vect-data-refs.cc
+++ b/gcc/tree-vect-data-refs.cc
@@ -1856,21 +1856,14 @@ vect_get_data_access_cost (vec_info *vinfo, dr_vec_info 
*dr_info,
                           stmt_vector_for_cost *prologue_cost_vec)
 {
   stmt_vec_info stmt_info = dr_info->stmt;
-  loop_vec_info loop_vinfo = dyn_cast <loop_vec_info> (vinfo);
-  int ncopies;
-
-  if (PURE_SLP_STMT (stmt_info))
-    ncopies = 1;
-  else
-    ncopies = vect_get_num_copies (loop_vinfo, STMT_VINFO_VECTYPE (stmt_info));
 
   if (DR_IS_READ (dr_info->dr))
-    vect_get_load_cost (vinfo, stmt_info, NULL, ncopies,
+    vect_get_load_cost (vinfo, stmt_info, NULL, 1,
                        alignment_support_scheme, misalignment, true,
                        inside_cost, outside_cost, prologue_cost_vec,
                        body_cost_vec, false);
   else
-    vect_get_store_cost (vinfo,stmt_info, NULL, ncopies,
+    vect_get_store_cost (vinfo,stmt_info, NULL, 1,
                         alignment_support_scheme, misalignment, inside_cost,
                         body_cost_vec);
 
diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index d1d36833217..530932037a1 100644
--- a/gcc/tree-vect-slp.cc
+++ b/gcc/tree-vect-slp.cc
@@ -11563,8 +11563,6 @@ vect_remove_slp_scalar_calls (vec_info *vinfo,
     {
       if (!stmt_info)
        continue;
-      if (!PURE_SLP_STMT (stmt_info))
-       continue;
       stmt_info = vect_orig_stmt (stmt_info);
       gcall *stmt = dyn_cast <gcall *> (stmt_info->stmt);
       if (!stmt || gimple_bb (stmt) == NULL)
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index 5b363bb6a4d..ee6db260bfc 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -7781,10 +7781,6 @@ vectorizable_store (vec_info *vinfo,
        return false;
     }
 
-  /* Cannot have hybrid store SLP -- that would mean storing to the
-     same location twice.  */
-  gcc_assert (PURE_SLP_STMT (stmt_info));
-
   tree vectype = SLP_TREE_VECTYPE (stmt_info), rhs_vectype = NULL_TREE;
   poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (vectype);
 
-- 
2.43.0

Reply via email to