On Tue, Jul 01, 2025 at 02:50:40PM -0500, Segher Boessenkool wrote: > No tests become good tests without effort. And tests that are not good > tests require constant maintenance!
Here are two patches, either just the first one or both can be used and both were tested on powerpc64le-linux. The first one removes all the checking etc. stuff from the testcases, as they are just dg-do compile, for the vectorize dump checks all we care about are the vectorized loops they want to test. The second one adds further 8 tests, which are dg-do run which #include the former tests, don't do any dump tests and just define the checking/main for those. Ok for trunk (both or just the first one)? Jakub
2025-07-02 Jakub Jelinek <ja...@redhat.com> PR testsuite/118567 * gcc.target/powerpc/vsx-vectorize-1.c: Remove includes, checking part of main1 and main. * gcc.target/powerpc/vsx-vectorize-2.c: Remove includes, replace bar definition with declaration, remove main. * 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. --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c.jj 2024-06-03 20:17:52.287099944 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c 2025-07-02 10:42:31.855099110 +0200 @@ -4,8 +4,6 @@ /* { dg-require-effective-target powerpc_vsx } */ /* Taken from vect/vect-align-1.c. */ -#include <stdlib.h> -#include <stdarg.h> /* Compile time known misalignment. Cannot use loop peeling to align the store. */ @@ -28,23 +26,6 @@ main1 (struct foo * __restrict__ p) { p->y[i] = x[i]; } - - /* check results: */ - for (i = 0; i < N; i++) - { - if (p->y[i] != x[i]) - abort (); - } - return 0; -} - - -int main (void) -{ - int i; - struct foo *p = malloc (2*sizeof (struct foo)); - - main1 (p); return 0; } --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c.jj 2024-06-03 20:17:52.287099944 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c 2025-07-02 10:43:12.688576248 +0200 @@ -4,28 +4,10 @@ /* { dg-require-effective-target powerpc_vsx } */ /* Taken from vect/vect-95.c. */ -#include <stdlib.h> -#include <stdarg.h> #define N 256 -__attribute__ ((noinline)) -void bar (float *pd, float *pa, float *pb, float *pc) -{ - int i; - - /* check results: */ - for (i = 0; i < N; i++) - { - if (pa[i] != (pb[i] * pc[i])) - abort (); - if (pd[i] != 5.0) - abort (); - } - - return; -} - +void bar (float *pd, float *pa, float *pb, float *pc); __attribute__ ((noinline)) int main1 (int n, float * __restrict__ pd, float * __restrict__ pa, float * __restrict__ pb, float * __restrict__ pc) @@ -42,20 +24,6 @@ main1 (int n, float * __restrict__ pd, f return 0; } - -int main (void) -{ - int i; - float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - float d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; - - main1 (N,&d[1],a,b,c); - main1 (N-2,&d[1],a,b,c); - - return 0; -} /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c.jj 2024-06-03 20:17:52.287099944 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c 2025-07-02 10:43:32.358324384 +0200 @@ -4,26 +4,10 @@ /* { dg-require-effective-target powerpc_vsx } */ /* Taken from vect/vect-95.c. */ -#include <stdlib.h> -#include <stdarg.h> #define N 256 -__attribute__ ((noinline)) -void bar (short *pa, short *pb, short *pc) -{ - int i; - - /* check results: */ - for (i = 0; i < N; i++) - { - if (pa[i] != (pb[i] * pc[i])) - abort (); - } - - return; -} - +void bar (short *pa, short *pb, short *pc); __attribute__ ((noinline)) int main1 (int n, short * __restrict__ pa, short * __restrict__ pb, short * __restrict__ pc) @@ -39,19 +23,6 @@ main1 (int n, short * __restrict__ pa, s return 0; } - -int main (void) -{ - int i; - short a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - short b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - short c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; - - main1 (N,a,b,c); - main1 (N-2,a,b,c); - - return 0; -} /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */ --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c.jj 2024-06-03 20:17:52.287099944 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c 2025-07-02 10:43:48.658115669 +0200 @@ -4,26 +4,10 @@ /* { dg-require-effective-target powerpc_vsx } */ /* Taken from vect/vect-95.c. */ -#include <stdlib.h> -#include <stdarg.h> #define N 256 -__attribute__ ((noinline)) -void bar (double *pa, double *pb, double *pc) -{ - int i; - - /* check results: */ - for (i = 0; i < N; i++) - { - if (pa[i] != (pb[i] * pc[i])) - abort (); - } - - return; -} - +void bar (double *pa, double *pb, double *pc); __attribute__ ((noinline)) int main1 (int n, double * __restrict__ pa, double * __restrict__ pb, double * __restrict__ pc) @@ -39,19 +23,6 @@ main1 (int n, double * __restrict__ pa, return 0; } - -int main (void) -{ - int i; - double a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - double b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - double c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; - - main1 (N,a,b,c); - main1 (N-2,a,b,c); - - return 0; -} /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c.jj 2024-06-03 20:17:52.287099944 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c 2025-07-02 10:44:03.293928259 +0200 @@ -4,26 +4,10 @@ /* { dg-require-effective-target powerpc_vsx } */ /* Taken from vect/vect-95.c. */ -#include <stdlib.h> -#include <stdarg.h> #define N 256 -__attribute__ ((noinline)) -void bar (char *pa, char *pb, char *pc) -{ - int i; - - /* check results: */ - for (i = 0; i < N; i++) - { - if (pa[i] != (pb[i] + pc[i])) - abort (); - } - - return; -} - +void bar (char *pa, char *pb, char *pc); __attribute__ ((noinline)) int main1 (int n, char * __restrict__ pa, char * __restrict__ pb, char * __restrict__ pc) @@ -39,19 +23,6 @@ main1 (int n, char * __restrict__ pa, ch return 0; } - -int main (void) -{ - int i; - char a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - char b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - char c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; - - main1 (N,a,b,c); - main1 (N-2,a,b,c); - - return 0; -} /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */ --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c.jj 2024-06-03 20:17:52.287099944 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c 2025-07-02 10:44:27.106623344 +0200 @@ -4,28 +4,10 @@ /* { dg-require-effective-target powerpc_vsx } */ /* Taken from vect/vect-95.c. */ -#include <stdlib.h> -#include <stdarg.h> #define N 256 -__attribute__ ((noinline)) -void bar (double *pd, double *pa, double *pb, double *pc) -{ - int i; - - /* check results: */ - for (i = 0; i < N; i++) - { - if (pa[i] != (pb[i] * pc[i])) - abort (); - if (pd[i] != 5.0) - abort (); - } - - return; -} - +void bar (double *pd, double *pa, double *pb, double *pc); __attribute__ ((noinline)) int main1 (int n, double * __restrict__ pd, double * __restrict__ pa, double * __restrict__ pb, double * __restrict__ pc) @@ -42,20 +24,6 @@ main1 (int n, double * __restrict__ pd, return 0; } - -int main (void) -{ - int i; - double a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - double d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - double b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - double c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; - - main1 (N,&d[1],a,b,c); - main1 (N-2,&d[1],a,b,c); - - return 0; -} /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c.jj 2024-06-03 20:17:52.287099944 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c 2025-07-02 10:44:42.419427269 +0200 @@ -4,28 +4,10 @@ /* { dg-require-effective-target powerpc_vsx } */ /* Taken from vect/vect-95.c. */ -#include <stdlib.h> -#include <stdarg.h> #define N 256 -__attribute__ ((noinline)) -void bar (int *pd, int *pa, int *pb, int *pc) -{ - int i; - - /* check results: */ - for (i = 0; i < N; i++) - { - if (pa[i] != (pb[i] * pc[i])) - abort (); - if (pd[i] != 5.0) - abort (); - } - - return; -} - +void bar (int *pd, int *pa, int *pb, int *pc); __attribute__ ((noinline)) int main1 (int n, int * __restrict__ pd, int * __restrict__ pa, int * __restrict__ pb, int * __restrict__ pc) @@ -42,20 +24,6 @@ main1 (int n, int * __restrict__ pd, int return 0; } - -int main (void) -{ - int i; - int a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - int d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - int b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - int c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; - - main1 (N,&d[1],a,b,c); - main1 (N-2,&d[1],a,b,c); - - return 0; -} /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */ --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c.jj 2024-06-03 20:17:52.287099944 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c 2025-07-02 10:44:57.427235100 +0200 @@ -4,28 +4,10 @@ /* { dg-require-effective-target powerpc_vsx } */ /* Taken from vect/vect-95.c. */ -#include <stdlib.h> -#include <stdarg.h> #define N 256 -__attribute__ ((noinline)) -void bar (short *pd, short *pa, short *pb, short *pc) -{ - int i; - - /* check results: */ - for (i = 0; i < N; i++) - { - if (pa[i] != (pb[i] * pc[i])) - abort (); - if (pd[i] != 5.0) - abort (); - } - - return; -} - +void bar (short *pd, short *pa, short *pb, short *pc); __attribute__ ((noinline)) int main1 (int n, short * __restrict__ pd, short * __restrict__ pa, short * __restrict__ pb, short * __restrict__ pc) @@ -42,20 +24,6 @@ main1 (int n, short * __restrict__ pd, s return 0; } - -int main (void) -{ - int i; - short a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - short d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); - short b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - short c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; - - main1 (N,&d[1],a,b,c); - main1 (N-2,&d[1],a,b,c); - - return 0; -} /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
2025-07-02 Jakub Jelinek <ja...@redhat.com> PR testsuite/118567 * gcc.target/powerpc/vsx-vectorize-9.c: New test. * gcc.target/powerpc/vsx-vectorize-10.c: New test. * gcc.target/powerpc/vsx-vectorize-11.c: New test. * gcc.target/powerpc/vsx-vectorize-12.c: New test. * gcc.target/powerpc/vsx-vectorize-13.c: New test. * gcc.target/powerpc/vsx-vectorize-14.c: New test. * gcc.target/powerpc/vsx-vectorize-15.c: New test. * gcc.target/powerpc/vsx-vectorize-16.c: New test. --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-9.c.jj 2025-07-02 10:48:41.691356387 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-9.c 2025-07-02 10:50:13.488174196 +0200 @@ -0,0 +1,24 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -ftree-vectorize -fno-tree-loop-distribute-patterns -fno-vect-cost-model -fdump-tree-vect-details" } */ + +/* Taken from vect/vect-align-1.c. */ +#include <stdlib.h> +#include <stdarg.h> + +#include "vsx-vectorize-1.c" + +int main (void) +{ + int i; + struct foo *p = malloc (2*sizeof (struct foo)); + + main1 (p); + + /* check results: */ + for (i = 0; i < N; i++) + { + if (p->y[i] != x[i]) + abort (); + } + return 0; +} --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-10.c.jj 2025-07-02 10:50:33.455917043 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-10.c 2025-07-02 10:51:25.366248522 +0200 @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -ftree-vectorize -fno-vect-cost-model -fdump-tree-vect-details" } */ + +/* Taken from vect/vect-95.c. */ +#include <stdlib.h> +#include <stdarg.h> + +#include "vsx-vectorize-2.c" + +__attribute__ ((noinline)) +void bar (float *pd, float *pa, float *pb, float *pc) +{ + int i; + + /* check results: */ + for (i = 0; i < N; i++) + { + if (pa[i] != (pb[i] * pc[i])) + abort (); + if (pd[i] != 5.0) + abort (); + } + + return; +} + +int main (void) +{ + int i; + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + + main1 (N,&d[1],a,b,c); + main1 (N-2,&d[1],a,b,c); + + return 0; +} --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-11.c.jj 2025-07-02 10:52:09.401681420 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-11.c 2025-07-02 10:53:05.951953148 +0200 @@ -0,0 +1,36 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -ftree-vectorize -fno-vect-cost-model -fdump-tree-vect-details" } */ + +/* Taken from vect/vect-95.c. */ +#include <stdlib.h> +#include <stdarg.h> + +#include "vsx-vectorize-3.c" + +__attribute__ ((noinline)) +void bar (short *pa, short *pb, short *pc) +{ + int i; + + /* check results: */ + for (i = 0; i < N; i++) + { + if (pa[i] != (pb[i] * pc[i])) + abort (); + } + + return; +} + +int main (void) +{ + int i; + short a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + short b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + short c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + + main1 (N,a,b,c); + main1 (N-2,a,b,c); + + return 0; +} --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-12.c.jj 2025-07-02 10:52:09.401681420 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-12.c 2025-07-02 10:53:44.876451862 +0200 @@ -0,0 +1,36 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -ftree-vectorize -fno-vect-cost-model -fdump-tree-vect-details" } */ + +/* Taken from vect/vect-95.c. */ +#include <stdlib.h> +#include <stdarg.h> + +#include "vsx-vectorize-4.c" + +__attribute__ ((noinline)) +void bar (double *pa, double *pb, double *pc) +{ + int i; + + /* check results: */ + for (i = 0; i < N; i++) + { + if (pa[i] != (pb[i] * pc[i])) + abort (); + } + + return; +} + +int main (void) +{ + int i; + double a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + double b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + double c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + + main1 (N,a,b,c); + main1 (N-2,a,b,c); + + return 0; +} --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-13.c.jj 2025-07-02 10:52:09.401681420 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-13.c 2025-07-02 10:54:12.153100586 +0200 @@ -0,0 +1,36 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -ftree-vectorize -fno-vect-cost-model -fdump-tree-vect-details" } */ + +/* Taken from vect/vect-95.c. */ +#include <stdlib.h> +#include <stdarg.h> + +#include "vsx-vectorize-5.c" + +__attribute__ ((noinline)) +void bar (char *pa, char *pb, char *pc) +{ + int i; + + /* check results: */ + for (i = 0; i < N; i++) + { + if (pa[i] != (pb[i] + pc[i])) + abort (); + } + + return; +} + +int main (void) +{ + int i; + char a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + char b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + char c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + + main1 (N,a,b,c); + main1 (N-2,a,b,c); + + return 0; +} --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-14.c.jj 2025-07-02 10:52:09.401681420 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-14.c 2025-07-02 10:54:37.754770882 +0200 @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -ftree-vectorize -fno-vect-cost-model -fdump-tree-vect-details" } */ + +/* Taken from vect/vect-95.c. */ +#include <stdlib.h> +#include <stdarg.h> + +#include "vsx-vectorize-6.c" + +__attribute__ ((noinline)) +void bar (double *pd, double *pa, double *pb, double *pc) +{ + int i; + + /* check results: */ + for (i = 0; i < N; i++) + { + if (pa[i] != (pb[i] * pc[i])) + abort (); + if (pd[i] != 5.0) + abort (); + } + + return; +} + +int main (void) +{ + int i; + double a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + double d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + double b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + double c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + + main1 (N,&d[1],a,b,c); + main1 (N-2,&d[1],a,b,c); + + return 0; +} --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-15.c.jj 2025-07-02 10:52:14.139620403 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-15.c 2025-07-02 10:55:05.884408617 +0200 @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -ftree-vectorize -fno-vect-cost-model -fdump-tree-vect-details" } */ + +/* Taken from vect/vect-95.c. */ +#include <stdlib.h> +#include <stdarg.h> + +#include "vsx-vectorize-7.c" + +__attribute__ ((noinline)) +void bar (int *pd, int *pa, int *pb, int *pc) +{ + int i; + + /* check results: */ + for (i = 0; i < N; i++) + { + if (pa[i] != (pb[i] * pc[i])) + abort (); + if (pd[i] != 5.0) + abort (); + } + + return; +} + +int main (void) +{ + int i; + int a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + int d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + int b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + int c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + + main1 (N,&d[1],a,b,c); + main1 (N-2,&d[1],a,b,c); + + return 0; +} --- gcc/testsuite/gcc.target/powerpc/vsx-vectorize-16.c.jj 2025-07-02 10:52:18.959558337 +0200 +++ gcc/testsuite/gcc.target/powerpc/vsx-vectorize-16.c 2025-07-02 10:55:30.839087246 +0200 @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -ftree-vectorize -fno-vect-cost-model -fdump-tree-vect-details" } */ + +/* Taken from vect/vect-95.c. */ +#include <stdlib.h> +#include <stdarg.h> + +#include "vsx-vectorize-8.c" + +__attribute__ ((noinline)) +void bar (short *pd, short *pa, short *pb, short *pc) +{ + int i; + + /* check results: */ + for (i = 0; i < N; i++) + { + if (pa[i] != (pb[i] * pc[i])) + abort (); + if (pd[i] != 5.0) + abort (); + } + + return; +} + +int main (void) +{ + int i; + short a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + short d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + short b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + short c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + + main1 (N,&d[1],a,b,c); + main1 (N-2,&d[1],a,b,c); + + return 0; +}