On Tue, Nov 17, 2020 at 12:25 PM Richard Sandiford via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > SLP vectorisation of gcc.dg/vect/fast-math-vect-call-1.c involves > a group of 3 floats, which requires the same permutation as > vect_perm3_int. > > The load/store_lanes XFAILs in gcc.dg/vect/slp-perm-6.c implicitly > assumed vect_perm3_int, which is true for Advanced SIMD but not for > VLA SVE. Whether it's true for fixed-length SVE depends on the > vector length. > > The xfail selector applies on top of the target selector, so it's > not necessary to make the xfail selector a strict subset of the > target selector. > > Tested on aarch64-linux-gnu (with and without SVE), arm-linux-gnueabihf > and x86_64-linux-gnu. OK to install?
OK > Richard > > > gcc/testsuite/ > * gcc.dg/vect/fast-math-vect-call-1.c: Only expect SLP to be used > on vect_perm3_int targets. > * gcc.dg/vect/slp-perm-6.c: Likewise. Only XFAIL the LOAD/STORE_LANES > tests on vect_perm3_int targets. > --- > gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c | 2 +- > gcc/testsuite/gcc.dg/vect/slp-perm-6.c | 8 ++++---- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c > b/gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c > index 877de4eb5be..495c0319c9d 100644 > --- a/gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c > +++ b/gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c > @@ -97,4 +97,4 @@ main () > } > > /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" { target > { vect_call_copysignf && vect_call_sqrtf } } } } */ > -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" > { target { vect_call_copysignf && vect_call_sqrtf } } } } */ > +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" > { target { { vect_call_copysignf && vect_call_sqrtf } && vect_perm3_int } } } > } */ > diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-6.c > b/gcc/testsuite/gcc.dg/vect/slp-perm-6.c > index cc863de76bf..5f121b52ffb 100644 > --- a/gcc/testsuite/gcc.dg/vect/slp-perm-6.c > +++ b/gcc/testsuite/gcc.dg/vect/slp-perm-6.c > @@ -106,7 +106,7 @@ int main (int argc, const char* argv[]) > /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" > { target { vect_perm3_int && { {! vect_load_lanes } && {! > vect_partial_vectors_usage_1 } } } } } } */ > /* The epilogues are vectorized using partial vectors. */ > /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" > { target { vect_perm3_int && { {! vect_load_lanes } && > vect_partial_vectors_usage_1 } } } } } */ > -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" > { target vect_load_lanes } } } */ > -/* { dg-final { scan-tree-dump "Built SLP cancelled: can use > load/store-lanes" "vect" { target { vect_perm3_int && vect_load_lanes } xfail > { vect_perm3_int && vect_load_lanes } } } } */ > -/* { dg-final { scan-tree-dump "LOAD_LANES" "vect" { target { > vect_load_lanes } xfail { vect_load_lanes } } } } */ > -/* { dg-final { scan-tree-dump "STORE_LANES" "vect" { target { > vect_load_lanes } xfail { vect_load_lanes } } } } */ > +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" > { target { vect_perm3_int && vect_load_lanes } } } } */ > +/* { dg-final { scan-tree-dump "Built SLP cancelled: can use > load/store-lanes" "vect" { target { vect_perm3_int && vect_load_lanes } xfail > *-*-* } } } */ > +/* { dg-final { scan-tree-dump "LOAD_LANES" "vect" { target vect_load_lanes > xfail vect_perm3_int } } } */ > +/* { dg-final { scan-tree-dump "STORE_LANES" "vect" { target vect_load_lanes > xfail vect_perm3_int } } } */