From 150cf34781103ff73f2c930777cb514882f73ef2 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Mon, 14 Dec 2015 15:33:20 +0000 Subject: [PATCH] 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 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 --- gcc/ChangeLog | 8 ++++++++ gcc/tree-vect-slp.c | 27 --------------------------- 2 files changed, 8 insertions(+), 27 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35a05864a25..ed6f28e1db1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2015-12-14 Richard Biener + + 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 PR tree-optimization/68852 diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index b87b3d4124d..3fdc988b4d6 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 (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 ())