aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-slp.c
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2020-11-05 09:02:29 +0000
committerTamar Christina <tamar.christina@arm.com>2020-11-05 09:02:29 +0000
commite3587a2d8b005d72f882a21864fb132f8a966366 (patch)
tree057abcf3b4403444eac78664cd0483d3f0cd7454 /gcc/tree-vect-slp.c
parent025f434a87336e38bf5140fba2005081876aa911 (diff)
downloadgcc-e3587a2d8b005d72f882a21864fb132f8a966366.zip
gcc-e3587a2d8b005d72f882a21864fb132f8a966366.tar.gz
gcc-e3587a2d8b005d72f882a21864fb132f8a966366.tar.bz2
middle-end: Store and use the SLP instance kind when aborting load/store lanes
This patch stores the SLP instance kind in the SLP instance so that we can use it later when detecting load/store lanes support. This also changes the load/store lane support check to only check if the SLP kind is a store. This means that in order for the load/lanes to work all instances must be of kind store. gcc/ChangeLog: * tree-vect-loop.c (vect_analyze_loop_2): Check kind. * tree-vect-slp.c (vect_build_slp_instance): New. (enum slp_instance_kind): Move to... * tree-vectorizer.h (enum slp_instance_kind): .. Here (SLP_INSTANCE_KIND): New.
Diffstat (limited to 'gcc/tree-vect-slp.c')
-rw-r--r--gcc/tree-vect-slp.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index d498cd4..420c3c9 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -2171,13 +2171,6 @@ calculate_unrolling_factor (poly_uint64 nunits, unsigned int group_size)
return exact_div (common_multiple (nunits, group_size), group_size);
}
-enum slp_instance_kind {
- slp_inst_kind_store,
- slp_inst_kind_reduc_group,
- slp_inst_kind_reduc_chain,
- slp_inst_kind_ctor
-};
-
static bool
vect_analyze_slp_instance (vec_info *vinfo,
scalar_stmts_to_slp_tree_map_t *bst_map,
@@ -2253,6 +2246,7 @@ vect_build_slp_instance (vec_info *vinfo,
SLP_INSTANCE_UNROLLING_FACTOR (new_instance) = unrolling_factor;
SLP_INSTANCE_LOADS (new_instance) = vNULL;
SLP_INSTANCE_ROOT_STMT (new_instance) = root_stmt_info;
+ SLP_INSTANCE_KIND (new_instance) = kind;
new_instance->reduc_phis = NULL;
new_instance->cost_vec = vNULL;
new_instance->subgraph_entries = vNULL;