Hi, After the recent alignment peeling enhancements in the vectorizer we started vectorizing the "checking" loops (that check for the right result) in gcc.target/powerpc/vsx-vectorize-*.c, thus skewing the expected counts of various scan-dump-times tests (causing them to FAIL). This adds #pragma GCC novector above the relevant loops to prevent them from being vectorized, thereby fixing the test failures.
Tested with RUNTESTFLAGS="powerpc.exp=vsx-vectorize-*.c" on powerpc64le-linux-gnu (cfarm29): no FAILs observed wtih the patch applied. OK for trunk? Thanks, Alex gcc/testsuite/ChangeLog: PR testsuite/118567 * gcc.target/powerpc/vsx-vectorize-1.c: Add #pragma to block vectorization of result-checking loop. * gcc.target/powerpc/vsx-vectorize-2.c: Likewise. * gcc.target/powerpc/vsx-vectorize-3.c: Likewise. * gcc.target/powerpc/vsx-vectorize-4.c: Likewise. * gcc.target/powerpc/vsx-vectorize-5.c: Likewise. * gcc.target/powerpc/vsx-vectorize-6.c: Likewise. * gcc.target/powerpc/vsx-vectorize-7.c: Likewise. * gcc.target/powerpc/vsx-vectorize-8.c: Likewise.
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c index a0e0496d345..927a523568b 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c @@ -30,6 +30,7 @@ main1 (struct foo * __restrict__ p) } /* check results: */ +#pragma GCC novector for (i = 0; i < N; i++) { if (p->y[i] != x[i]) diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c index 52c49b27cb7..84a63b3c42f 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c @@ -15,6 +15,7 @@ void bar (float *pd, float *pa, float *pb, float *pc) int i; /* check results: */ +#pragma GCC novector for (i = 0; i < N; i++) { if (pa[i] != (pb[i] * pc[i])) diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c index f2f838a77fc..33054feef57 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c @@ -15,6 +15,7 @@ void bar (short *pa, short *pb, short *pc) int i; /* check results: */ +#pragma GCC novector for (i = 0; i < N; i++) { if (pa[i] != (pb[i] * pc[i])) diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c index 8bf9dff1712..05262cf76d9 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c @@ -15,6 +15,7 @@ void bar (double *pa, double *pb, double *pc) int i; /* check results: */ +#pragma GCC novector for (i = 0; i < N; i++) { if (pa[i] != (pb[i] * pc[i])) diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c index 1446e40b1d3..5478390f2ec 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c @@ -15,6 +15,7 @@ void bar (char *pa, char *pb, char *pc) int i; /* check results: */ +#pragma GCC novector for (i = 0; i < N; i++) { if (pa[i] != (pb[i] + pc[i])) diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c index 6f49ccbbb6a..e1dc35bfd4d 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c @@ -15,6 +15,7 @@ void bar (double *pd, double *pa, double *pb, double *pc) int i; /* check results: */ +#pragma GCC novector for (i = 0; i < N; i++) { if (pa[i] != (pb[i] * pc[i])) diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c index fde65a521d9..9a1ffd33881 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c @@ -15,6 +15,7 @@ void bar (int *pd, int *pa, int *pb, int *pc) int i; /* check results: */ +#pragma GCC novector for (i = 0; i < N; i++) { if (pa[i] != (pb[i] * pc[i])) diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c index fb50cd54fd9..2f6fbfb443d 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c @@ -15,6 +15,7 @@ void bar (short *pd, short *pa, short *pb, short *pc) int i; /* check results: */ +#pragma GCC novector for (i = 0; i < N; i++) { if (pa[i] != (pb[i] * pc[i]))