diff options
author | Richard Biener <rguenther@suse.de> | 2015-12-14 15:33:20 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2015-12-14 15:33:20 +0000 |
commit | 150cf34781103ff73f2c930777cb514882f73ef2 (patch) | |
tree | dfb1ae36ce6b9b99e640afd0f53f3d93f3ad33cd /gcc | |
parent | 603cca934439bff931f1902e93416ec34922a80a (diff) | |
download | gcc-150cf34781103ff73f2c930777cb514882f73ef2.zip gcc-150cf34781103ff73f2c930777cb514882f73ef2.tar.gz gcc-150cf34781103ff73f2c930777cb514882f73ef2.tar.bz2 |
re PR tree-optimization/68707 (testcase gcc.dg/vect/O3-pr36098.c vectorized using VEC_PERM_EXPR rather than VEC_LOAD_LANES)
2015-12-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/68707
PR tree-optimization/67323
* tree-vect-slp.c (vect_analyze_slp_instance): Drop SLP instances
if they can be vectorized using load/store-lane instructions.
From-SVN: r231620
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/tree-vect-slp.c | 27 |
2 files changed, 8 insertions, 27 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35a0586..ed6f28e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2015-12-14 Richard Biener <rguenther@suse.de> + Revert accidentially applied + PR tree-optimization/68707 + PR tree-optimization/67323 + * tree-vect-slp.c (vect_analyze_slp_instance): Drop SLP instances + if they can be vectorized using load/store-lane instructions. + +2015-12-14 Richard Biener <rguenther@suse.de> + PR tree-optimization/68852 * tree-vectorizer.h (struct _slp_tree): Add def_type member. (SLP_TREE_DEF_TYPE): New accessor. diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index b87b3d41..3fdc988 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -1808,33 +1808,6 @@ vect_analyze_slp_instance (vec_info *vinfo, } } - /* If the loads and stores can be handled with load/store-lane - instructions do not generate this SLP instance. */ - if (is_a <loop_vec_info> (vinfo) - && loads_permuted - && dr && vect_store_lanes_supported (vectype, group_size)) - { - slp_tree load_node; - FOR_EACH_VEC_ELT (loads, i, load_node) - { - gimple *first_stmt = GROUP_FIRST_ELEMENT - (vinfo_for_stmt (SLP_TREE_SCALAR_STMTS (load_node)[0])); - stmt_vec_info stmt_vinfo = vinfo_for_stmt (first_stmt); - if (! vect_load_lanes_supported (STMT_VINFO_VECTYPE (stmt_vinfo), - GROUP_SIZE (stmt_vinfo))) - break; - } - if (i == loads.length ()) - { - if (dump_enabled_p ()) - dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, - "Built SLP cancelled: can use " - "load/store-lanes\n"); - vect_free_slp_instance (new_instance); - return false; - } - } - vinfo->slp_instances.safe_push (new_instance); if (dump_enabled_p ()) |