This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][RFC] Handle commutative operations in SLP tree build

On Wed, 10 Apr 2013, Richard Biener wrote:

> This handles commutative operations during SLP tree build in the
> way that if one configuration does not match, the build will
> try again with commutated operands for.  This allows to remove
> the special-casing of commutated loads in a complex addition
> that was in the end handled as "permutation".  It of course
> also applies more generally.  Permutation is currently limited
> to 3 unsuccessful permutes to avoid running into the inherently
> exponential complexity of tree matching.
> The gcc.dg/vect/vect-complex-?.c testcases provide some testing
> coverage (previously handled by the special-casing).  I have
> seen failed SLP in the wild previously but it's usually on
> larger testcases and dependent on operand order of commutative
> operands.
> I've discussed ideas to restrict the cases where we try a permutation
> with Matz, but I'll rather defer that to an eventual followup.
> (compute per SSA name a value dependent on the shape of its
> use-def tree and use that as a quick check whether sub-trees
> can possibly match)
> Bootstrap and regtest running on x86_64-unknown-linux-gnu.
> Any comments?

Committed to trunk.


> 2013-04-10  Richard Biener  <>
> 	* tree-vect-slp.c (vect_build_slp_tree_1): Split out from ...
> 	(vect_build_slp_tree): ... here.
> 	(vect_build_slp_tree_1): Compute which stmts of the SLP group
> 	match.  Remove special-casing of mismatched complex loads.
> 	(vect_build_slp_tree): Based on the result from vect_build_slp_tree_1
> 	re-try the match with swapped commutative operands.
> 	(vect_supported_load_permutation_p): Remove special-casing of
> 	mismatched complex loads.
> 	(vect_analyze_slp_instance): Adjust.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]