1  /* { dg-require-effective-target vect_int } */
       2  
       3  #include <stdarg.h>
       4  #include "tree-vect.h"
       5  
       6  #define N 16 
       7  
       8  unsigned int b[N];
       9  unsigned int out[N];
      10  unsigned int in[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
      11  
      12  __attribute__ ((noinline)) int
      13  main1 (unsigned int x, unsigned int y)
      14  {
      15    int i;
      16    unsigned int a0, a1, a2, a3;
      17  
      18    a0 = in[0] + 23;
      19    a1 = in[1] + 142;
      20    a2 = in[2] + 2;
      21    a3 = in[3] + 31;
      22  
      23    if (x > y)
      24      {
      25        b[0] = a0;
      26        b[1] = a1;
      27        b[2] = a2;
      28        b[3] = a3;
      29      }
      30    else
      31      {
      32        out[0] = a0 * (x + 1);
      33        out[1] = a1 * (y + 1);
      34        out[2] = a2 * (x + 1);
      35        out[3] = a3 * (y + 1);
      36      }
      37  
      38    if (x)
      39      __asm__ volatile ("" : : : "memory");
      40  
      41    /* Check results.  */
      42    if ((x <= y 
      43         && (out[0] != (in[0] + 23) * (x + 1)
      44             || out[1] != (in[1] + 142) * (y + 1)
      45             || out[2] != (in[2] + 2) * (x + 1)
      46             || out[3] != (in[3] + 31) * (y + 1)))
      47         || (x > y
      48             && (b[0] != (in[0] + 23)
      49                 || b[1] != (in[1] + 142)
      50                 || b[2] != (in[2] + 2)
      51                 || b[3] != (in[3] + 31))))
      52      abort();
      53  
      54    return 0;
      55  }
      56  
      57  int main (void)
      58  {
      59    check_vect ();
      60  
      61    main1 (2, 3);
      62  
      63    return 0;
      64  }
      65  
      66  /* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" } } */
      67  /* { dg-final { scan-tree-dump "vectorizing SLP node starting from: _\[0-9\]+ = _\[0-9\]+ \\\* a0" "slp2" { target vect_int_mult  } } } */