(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
slp-36.c
       1  /* { dg-do compile } */
       2  /* { dg-require-effective-target vect_int } */
       3  /* { dg-require-effective-target vect_shift } */
       4  
       5  #define N 32
       6  
       7  /* All the loops are vectorizable on platforms with vector shift argument.  */
       8  
       9  void
      10  test_1 (void)
      11  {
      12    static unsigned int bm[N];
      13    static unsigned int cm[N];
      14    int j;
      15  
      16    /* Vectorizable on platforms with scalar shift argument.  */
      17    for (j = 0; j < N/2; j++)
      18     {
      19      bm[2*j] <<= 8;
      20      bm[2*j+1] <<= 8;
      21     }
      22  
      23    /* Not vectorizable on platforms with scalar shift argument.  */
      24    for (j = 0; j < N/2; j++)
      25     {
      26      cm[2*j] <<= 8;
      27      cm[2*j+1] <<= 7;
      28     }
      29  }
      30  
      31  void
      32  test_2 (int a, int b)
      33  {
      34    static unsigned int bm[N];
      35    static unsigned int cm[N];
      36    int j;
      37  
      38    /* Vectorizable on platforms with scalar shift argument.  */
      39    for (j = 0; j < N/2; j++)
      40     {
      41      bm[2*j] <<= a;
      42      bm[2*j+1] <<= a;
      43     }
      44  
      45    /* Not vectorizable on platforms with scalar shift argument.  */
      46    for (j = 0; j < N/2; j++)
      47     {
      48      cm[2*j] <<= a;
      49      cm[2*j+1] <<= b;
      50     }
      51  }
      52  
      53  void
      54  test_3 (void)
      55  {
      56   static unsigned int bm[N];
      57   int am[N];
      58   int j;
      59  
      60   /* Not vectorizable on platforms with scalar shift argument.  */
      61   for (j = 0; j < N/2; j++)
      62     {
      63      bm[2*j] <<= am[j];
      64      bm[2*j+1] <<= am[j];
      65     }
      66  
      67   /* Not vectorizable on platforms with scalar shift argument.  */
      68   for (j = 0; j < N/2; j++)
      69     {
      70      bm[2*j] <<= am[2*j];
      71      bm[2*j+1] <<= am[2*j+1];
      72     }
      73  
      74  }
      75