Re: [21/46] Make grouped_stores and reduction_chains use stmt_vec_infos

2018-07-25 Thread Richard Biener
On Tue, Jul 24, 2018 at 12:01 PM Richard Sandiford
 wrote:
>
> This patch changes the SLP lists grouped_stores and reduction_chains
> from auto_vec to auto_vec.  It was easier
> to do them together due to the way vect_analyze_slp is structured.

OK.

>
> 2018-07-24  Richard Sandiford  
>
> gcc/
> * tree-vectorizer.h (vec_info::grouped_stores): Change from
> an auto_vec to an auto_vec.
> (_loop_vec_info::reduction_chains): Likewise.
> * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): Update
> accordingly.
> * tree-vect-slp.c (vect_analyze_slp): Likewise.
>
> Index: gcc/tree-vectorizer.h
> ===
> --- gcc/tree-vectorizer.h   2018-07-24 10:23:08.536970400 +0100
> +++ gcc/tree-vectorizer.h   2018-07-24 10:23:12.060939107 +0100
> @@ -259,7 +259,7 @@ struct vec_info {
>
>/* All interleaving chains of stores, represented by the first
>   stmt in the chain.  */
> -  auto_vec grouped_stores;
> +  auto_vec grouped_stores;
>
>/* Cost data used by the target cost model.  */
>void *target_cost_data;
> @@ -479,7 +479,7 @@ typedef struct _loop_vec_info : public v
>
>/* All reduction chains in the loop, represented by the first
>   stmt in the chain.  */
> -  auto_vec reduction_chains;
> +  auto_vec reduction_chains;
>
>/* Cost vector for a single scalar iteration.  */
>auto_vec scalar_cost_vec;
> Index: gcc/tree-vect-loop.c
> ===
> --- gcc/tree-vect-loop.c2018-07-24 10:23:08.532970436 +0100
> +++ gcc/tree-vect-loop.c2018-07-24 10:23:12.060939107 +0100
> @@ -677,13 +677,13 @@ vect_fixup_reduc_chain (gimple *stmt)
>  static void
>  vect_fixup_scalar_cycles_with_patterns (loop_vec_info loop_vinfo)
>  {
> -  gimple *first;
> +  stmt_vec_info first;
>unsigned i;
>
>FOR_EACH_VEC_ELT (LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo), i, first)
> -if (STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (first)))
> +if (STMT_VINFO_IN_PATTERN_P (first))
>{
> -   stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (vinfo_for_stmt 
> (first));
> +   stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (first);
> while (next)
>   {
> if (! STMT_VINFO_IN_PATTERN_P (next))
> @@ -696,7 +696,7 @@ vect_fixup_scalar_cycles_with_patterns (
>   {
> vect_fixup_reduc_chain (first);
> LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo)[i]
> - = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (first));
> + = STMT_VINFO_RELATED_STMT (first);
>   }
>}
>  }
> Index: gcc/tree-vect-slp.c
> ===
> --- gcc/tree-vect-slp.c 2018-07-24 10:23:08.536970400 +0100
> +++ gcc/tree-vect-slp.c 2018-07-24 10:23:12.060939107 +0100
> @@ -2202,7 +2202,7 @@ vect_analyze_slp_instance (vec_info *vin
>  vect_analyze_slp (vec_info *vinfo, unsigned max_tree_size)
>  {
>unsigned int i;
> -  gimple *first_element;
> +  stmt_vec_info first_element;
>
>DUMP_VECT_SCOPE ("vect_analyze_slp");
>
> @@ -2220,17 +2220,15 @@ vect_analyze_slp (vec_info *vinfo, unsig
>  max_tree_size))
>   {
> /* Dissolve reduction chain group.  */
> -   gimple *stmt = first_element;
> -   while (stmt)
> +   stmt_vec_info vinfo = first_element;
> +   while (vinfo)
>   {
> -   stmt_vec_info vinfo = vinfo_for_stmt (stmt);
> stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (vinfo);
> REDUC_GROUP_FIRST_ELEMENT (vinfo) = NULL;
> REDUC_GROUP_NEXT_ELEMENT (vinfo) = NULL;
> -   stmt = next;
> +   vinfo = next;
>   }
> -   STMT_VINFO_DEF_TYPE (vinfo_for_stmt (first_element))
> - = vect_internal_def;
> +   STMT_VINFO_DEF_TYPE (first_element) = vect_internal_def;
>   }
> }
>


[21/46] Make grouped_stores and reduction_chains use stmt_vec_infos

2018-07-24 Thread Richard Sandiford
This patch changes the SLP lists grouped_stores and reduction_chains
from auto_vec to auto_vec.  It was easier
to do them together due to the way vect_analyze_slp is structured.


2018-07-24  Richard Sandiford  

gcc/
* tree-vectorizer.h (vec_info::grouped_stores): Change from
an auto_vec to an auto_vec.
(_loop_vec_info::reduction_chains): Likewise.
* tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): Update
accordingly.
* tree-vect-slp.c (vect_analyze_slp): Likewise.

Index: gcc/tree-vectorizer.h
===
--- gcc/tree-vectorizer.h   2018-07-24 10:23:08.536970400 +0100
+++ gcc/tree-vectorizer.h   2018-07-24 10:23:12.060939107 +0100
@@ -259,7 +259,7 @@ struct vec_info {
 
   /* All interleaving chains of stores, represented by the first
  stmt in the chain.  */
-  auto_vec grouped_stores;
+  auto_vec grouped_stores;
 
   /* Cost data used by the target cost model.  */
   void *target_cost_data;
@@ -479,7 +479,7 @@ typedef struct _loop_vec_info : public v
 
   /* All reduction chains in the loop, represented by the first
  stmt in the chain.  */
-  auto_vec reduction_chains;
+  auto_vec reduction_chains;
 
   /* Cost vector for a single scalar iteration.  */
   auto_vec scalar_cost_vec;
Index: gcc/tree-vect-loop.c
===
--- gcc/tree-vect-loop.c2018-07-24 10:23:08.532970436 +0100
+++ gcc/tree-vect-loop.c2018-07-24 10:23:12.060939107 +0100
@@ -677,13 +677,13 @@ vect_fixup_reduc_chain (gimple *stmt)
 static void
 vect_fixup_scalar_cycles_with_patterns (loop_vec_info loop_vinfo)
 {
-  gimple *first;
+  stmt_vec_info first;
   unsigned i;
 
   FOR_EACH_VEC_ELT (LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo), i, first)
-if (STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (first)))
+if (STMT_VINFO_IN_PATTERN_P (first))
   {
-   stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (vinfo_for_stmt (first));
+   stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (first);
while (next)
  {
if (! STMT_VINFO_IN_PATTERN_P (next))
@@ -696,7 +696,7 @@ vect_fixup_scalar_cycles_with_patterns (
  {
vect_fixup_reduc_chain (first);
LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo)[i]
- = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (first));
+ = STMT_VINFO_RELATED_STMT (first);
  }
   }
 }
Index: gcc/tree-vect-slp.c
===
--- gcc/tree-vect-slp.c 2018-07-24 10:23:08.536970400 +0100
+++ gcc/tree-vect-slp.c 2018-07-24 10:23:12.060939107 +0100
@@ -2202,7 +2202,7 @@ vect_analyze_slp_instance (vec_info *vin
 vect_analyze_slp (vec_info *vinfo, unsigned max_tree_size)
 {
   unsigned int i;
-  gimple *first_element;
+  stmt_vec_info first_element;
 
   DUMP_VECT_SCOPE ("vect_analyze_slp");
 
@@ -2220,17 +2220,15 @@ vect_analyze_slp (vec_info *vinfo, unsig
 max_tree_size))
  {
/* Dissolve reduction chain group.  */
-   gimple *stmt = first_element;
-   while (stmt)
+   stmt_vec_info vinfo = first_element;
+   while (vinfo)
  {
-   stmt_vec_info vinfo = vinfo_for_stmt (stmt);
stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (vinfo);
REDUC_GROUP_FIRST_ELEMENT (vinfo) = NULL;
REDUC_GROUP_NEXT_ELEMENT (vinfo) = NULL;
-   stmt = next;
+   vinfo = next;
  }
-   STMT_VINFO_DEF_TYPE (vinfo_for_stmt (first_element))
- = vect_internal_def;
+   STMT_VINFO_DEF_TYPE (first_element) = vect_internal_def;
  }
}