(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
bb-slp-28.c
       1  /* { dg-require-effective-target vect_int } */
       2  
       3  #include <stdarg.h>
       4  #include "tree-vect.h"
       5  
       6  #define A 300
       7  #define N 16
       8  
       9  char src[N];
      10  short dst[N];
      11  short src1[N], dst1[N];
      12  
      13  void foo (int a)
      14  {
      15    dst[0] = (short) (a * (int) src[0]);
      16    dst[1] = (short) (a * (int) src[1]);
      17    dst[2] = (short) (a * (int) src[2]);
      18    dst[3] = (short) (a * (int) src[3]);
      19    dst[4] = (short) (a * (int) src[4]);
      20    dst[5] = (short) (a * (int) src[5]);
      21    dst[6] = (short) (a * (int) src[6]);
      22    dst[7] = (short) (a * (int) src[7]);
      23    dst[8] = (short) (a * (int) src[8]);
      24    dst[9] = (short) (a * (int) src[9]);
      25    dst[10] = (short) (a * (int) src[10]);
      26    dst[11] = (short) (a * (int) src[11]);
      27    dst[12] = (short) (a * (int) src[12]);
      28    dst[13] = (short) (a * (int) src[13]);
      29    dst[14] = (short) (a * (int) src[14]);
      30    dst[15] = (short) (a * (int) src[15]);
      31  
      32    dst1[0] += src1[0];
      33    dst1[1] += src1[1];
      34    dst1[2] += src1[2];
      35    dst1[3] += src1[3];
      36    dst1[4] += src1[4];
      37    dst1[5] += src1[5];
      38    dst1[6] += src1[6];
      39    dst1[7] += src1[7];
      40  }
      41  
      42  
      43  int main (void)
      44  {
      45    int i;
      46  
      47    check_vect ();
      48  
      49    for (i = 0; i < N; i++)
      50      {
      51        dst[i] = 2;
      52        dst1[i] = 0;
      53        src[i] = i;
      54        src1[i] = i+2;
      55      }
      56  
      57    foo (A);
      58  
      59    for (i = 0; i < N; i++)
      60      {
      61        if (dst[i] != A * i
      62            || (i < N/2 && dst1[i] != i + 2))
      63          abort ();
      64      }
      65  
      66    return 0;
      67  }
      68  
      69  /* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" { target { vect_int_mult &&  { vect_pack_trunc && vect_unpack } } } } } */
      70