On Wed, Mar 09, 2016 at 12:53:02PM +0100, Rainer Orth wrote:
> Richard Biener <[email protected]> writes:
>
> > On Thu, 3 Mar 2016, James Greenhalgh wrote:
> >
> >>
> >> Hi,
> >>
> >> ARM and AArch64 will still vectorize bb-slp-34.c - we're not operating
> >> with a cost model so we vectorize to a 64-bit vector of two ints, and the
> >> permutes are just element swaps.
> >>
> >> So, don't mark this test xfail for arm/aarch64.
> >>
> >> Checked on x86_64-none-linux-gnu, arm-none-eabi and aarch64-none-elf with
> >> no issues.
> >>
> >> OK?
> >
> > Ok. Indeed with using V2SI vectors the vectorization is valid.
>
> Unfortunately, the patch broke the test on sparc:
>
> FAIL: gcc.dg/vect/bb-slp-34.c -flto -ffat-lto-objects scan-tree-dump slp2
> "basic block vectorized"
> FAIL: gcc.dg/vect/bb-slp-34.c scan-tree-dump slp2 "basic block vectorized"
>
> While before the scan-tree-dump wasn't run due to missing vect_perm
> support, it now fails.
>
> I believe you meant to just not xfail the test on aarch64* and arm*,
Indeed.
> which is what the following patch does. James, could you please test
> it?
Yes, that still does the right thing for me on aarch64-none-elf, and I think
I now understand why.
Before I touched it that said:
/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target
vect_perm xfail *-*-* } } } */
Which means "only run this statement for vect_perm targets, but expect it
to fail on all targets".
Then I changed it to say :
/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { xfail { {
vect_perm } && { ! { aarch64*-*-* arm*-*-* } } } } } } */
Which means "always run this, but expect it to fail on vect_perm targets that
are not arm/aarch64".
Now you've changed it to say:
/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target
vect_perm xfail { ! { aarch64*-*-* arm*-*-* } } } } } */
Which means "only run this for vect perm targets, and expect it to fail
if the target is not arm/aarch64.
Thanks for the patch, it looks right to me and is what I was originally
trying to write. Sorry for the sparc (and presumably other
vect_int && !vect_perm targets) break.
Thanks,
James