On Thu, Jan 26, 2017 at 04:36:31PM -0600, Bill Schmidt wrote:
> >> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {
> >> target { ! vect_no_align } } } } */
> >> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1
> >> "vect" { target { ! vect_no_align } } } } */
> >> +/* On older powerpc hardware (POWER7 and earlier), the default flag
> >> + -mno-allow-movmisalign prevents vectorization. On POWER8 and later,
> >> + when vect_hw_misalign is true, vectorization occurs. For other
> >> + targets, ! vect_no_align is a sufficient test. */
> >>
> >> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {
> >> target { { { ! vect_no_align } && { ! powerpc*-*-* } } || { powerpc*-*-*
> >> && vect_hw_misalign } } } } } */
> >> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1
> >> "vect" { target { { { ! vect_no_align } && { ! powerpc*-*-* } } || {
> >> powerpc*-*-* && vect_hw_misalign } } } } } */
> >>
> >
> > What does this do if no_align and powerpc and vect_hw_misalign? Or can that
> > not happen?
> >
> That's the usual case. Both vect_no_align and vect_hw_misalign are 1 for
> POWER8 or later, and 0 otherwise.
So for older targets it used to run the final, but not after the patch; and
for newer targets it used to not run it, but it does after the patch? So
it is meant to be two changes?
Segher