diff options
author | Richard Biener <rguenther@suse.de> | 2020-02-21 10:40:25 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-05-13 15:26:45 +0200 |
commit | ab5934a8fe1dc70030fd73703c0fb6c68e96b086 (patch) | |
tree | 0c72e0cd5770bfdeea7d86edc5dc862f2f416861 /gcc/tree-vectorizer.h | |
parent | 9b56828c573910e4210fa05138ddf5aabb8e4b03 (diff) | |
download | gcc-ab5934a8fe1dc70030fd73703c0fb6c68e96b086.zip gcc-ab5934a8fe1dc70030fd73703c0fb6c68e96b086.tar.gz gcc-ab5934a8fe1dc70030fd73703c0fb6c68e96b086.tar.bz2 |
Remove SLP_INSTANCE_GROUP_SIZE
This removes the SLP_INSTANCE_GROUP_SIZE member since the number of
lanes throughout a SLP subgraph is not necessarily constant.
2020-05-13 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (SLP_INSTANCE_GROUP_SIZE): Remove.
(_slp_instance::group_size): Likewise.
* tree-vect-loop.c (vectorizable_reduction): The group size
is the number of lanes in the node.
* tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Likewise.
(vect_analyze_slp_instance): Do not set SLP_INSTANCE_GROUP_SIZE,
verify it matches the instance trees number of lanes.
(vect_slp_analyze_node_operations_1): Use the numer of lanes
in the node as group size.
(vect_bb_vectorization_profitable_p): Use the instance root
number of lanes for the size of life.
(vect_schedule_slp_instance): Use the number of lanes as
group_size.
* tree-vect-stmts.c (vectorizable_load): Remove SLP instance
parameter. Use the number of lanes of the load for the group
size in the gap adjustment code.
(vect_analyze_stmt): Adjust.
(vect_transform_stmt): Likewise.
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index aa8bd33..2078425 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -119,13 +119,16 @@ typedef struct _slp_tree *slp_tree; struct _slp_tree { /* Nodes that contain def-stmts of this node statements operands. */ vec<slp_tree> children; + /* A group of scalar stmts to be vectorized together. */ vec<stmt_vec_info> stmts; /* A group of scalar operands to be vectorized together. */ vec<tree> ops; + /* Load permutation relative to the stores, NULL if there is no permutation. */ vec<unsigned> load_permutation; + /* Vectorized stmt/s. */ vec<stmt_vec_info> vec_stmts; /* Number of vector stmts that are created to replace the group of scalar @@ -133,6 +136,7 @@ struct _slp_tree { scalar elements in one scalar iteration (GROUP_SIZE) multiplied by VF divided by vector size. */ unsigned int vec_stmts_size; + /* Reference count in the SLP graph. */ unsigned int refcnt; /* The maximum number of vector elements for the subtree rooted @@ -156,9 +160,6 @@ public: from, NULL otherwise. */ stmt_vec_info root_stmt; - /* Size of groups of scalar stmts that will be replaced by SIMD stmt/s. */ - unsigned int group_size; - /* The unrolling factor required to vectorized this SLP instance. */ poly_uint64 unrolling_factor; @@ -172,7 +173,6 @@ public: /* Access Functions. */ #define SLP_INSTANCE_TREE(S) (S)->root -#define SLP_INSTANCE_GROUP_SIZE(S) (S)->group_size #define SLP_INSTANCE_UNROLLING_FACTOR(S) (S)->unrolling_factor #define SLP_INSTANCE_LOADS(S) (S)->loads #define SLP_INSTANCE_ROOT_STMT(S) (S)->root_stmt |