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
This commit is contained in:
Richard Biener 2015-12-14 15:33:20 +00:00 committed by Richard Biener
parent 603cca9344
commit 150cf34781
2 changed files with 8 additions and 27 deletions

View File

@ -1,3 +1,11 @@
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

View File

@ -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 ())