Allow scalar fallback for pattern root stmt
authorRichard Biener <rguenther@suse.de>
Thu, 10 Dec 2020 09:34:32 +0000 (10:34 +0100)
committerRichard Biener <rguenther@suse.de>
Thu, 10 Dec 2020 09:39:53 +0000 (10:39 +0100)
commit154e9b831b6fc7d8493b5b0d56b9c5cdeff968e9
tree48b6335383e0cabebcee8d89ff3414cc7f7c1d5e
parent8d63e3c229f32d441e6ead0cb62923095b54c5f9
Allow scalar fallback for pattern root stmt

This adjusts the SLP build to allow a pattern root stmt to be
built from scalars.  I've noticed this in PR98211 where we fail
to promote a SLP subtree to a simple splat operation and instead
emit a series of uniform vector operations.  The bb-slp-div-1.c
testcase is now vectorized on x86_64 but only the store so I
adjusted it to expect the load to be vectorized.

2020-12-10  Richard Biener  <rguenther@suse.de>

* tree-vect-slp.c (vect_get_and_check_slp_defs): Do
not mark the defs to occur in a pattern if it is the
pattern root and record the original stmt defs in that
case.

* gcc.dg/vect/bb-slp-div-1.c: Expect the load to be
vectorized.
gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c
gcc/tree-vect-slp.c