(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
vsx-vectorize-8.c
       1  /* { dg-do compile } */
       2  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
       3  /* { dg-require-effective-target powerpc_vsx_ok } */
       4  /* { dg-options "-mdejagnu-cpu=power7 -O2 -ftree-vectorize -fno-vect-cost-model -fdump-tree-vect-details" } */
       5  
       6  /* Taken from vect/vect-95.c.  */
       7  #include <stdlib.h>
       8  #include <stdarg.h>
       9  
      10  #define N 256
      11  
      12  __attribute__ ((noinline))
      13  void bar (short *pd, short *pa, short *pb, short *pc) 
      14  {
      15    int i;
      16  
      17    /* check results:  */
      18    for (i = 0; i < N; i++)
      19      {
      20        if (pa[i] != (pb[i] * pc[i]))
      21  	abort ();
      22        if (pd[i] != 5.0)
      23  	abort ();
      24      }
      25  
      26    return;
      27  }
      28  
      29  
      30  __attribute__ ((noinline)) int
      31  main1 (int n, short * __restrict__ pd, short * __restrict__ pa, short * __restrict__ pb, short * __restrict__ pc)
      32  {
      33    int i;
      34  
      35    for (i = 0; i < n; i++)
      36      {
      37        pa[i] = pb[i] * pc[i];
      38        pd[i] = 5.0;
      39      }
      40  
      41    bar (pd,pa,pb,pc);
      42  
      43    return 0;
      44  }
      45  
      46  int main (void)
      47  {
      48    int i;
      49    short a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
      50    short d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
      51    short b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
      52    short c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
      53  
      54    main1 (N,&d[1],a,b,c);
      55    main1 (N-2,&d[1],a,b,c);
      56  
      57    return 0;
      58  }
      59  
      60  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
      61  /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
      62  /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" } } */
      63  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" } } */