/* { dg-require-effective-target vect_condition } */

#include "tree-vect.h"

#define N 128

/* Comparison in short, then/else and result in int.  */
static inline int
foo (short x, short y, int a, int b)
{
  if (x >= y)
    return a;
  else
    return b;
}

__attribute__((noinline, noclone)) void
bar (short * __restrict__ a, short * __restrict__ b,
     short * __restrict__ c, short * __restrict__ d,
     int * __restrict__ e, int w)
{
  int i;
  int stride = 16;

  for (i = 0; i < N/stride; i++, a += stride, b += stride, c += stride,
                                d += stride, e += stride)
    {
      e[0] = foo (c[0], d[0], a[0], b[0]);
      e[1] = foo (c[1], d[1], a[1], b[1]);
      e[2] = foo (c[2], d[2], a[2], b[2]);
      e[3] = foo (c[3], d[3], a[3], b[3]);
      e[4] = foo (c[4], d[4], a[4], b[4]);
      e[5] = foo (c[5], d[5], a[5], b[5]);
      e[6] = foo (c[6], d[6], a[6], b[6]);
      e[7] = foo (c[7], d[7], a[7], b[7]);
      e[8] = foo (c[8], d[8], a[8], b[8]);
      e[9] = foo (c[9], d[9], a[9], b[9]);
      e[10] = foo (c[10], d[10], a[10], b[10]);
      e[11] = foo (c[11], d[11], a[11], b[11]);
      e[12] = foo (c[12], d[12], a[12], b[12]);
      e[13] = foo (c[13], d[13], a[13], b[13]);
      e[14] = foo (c[14], d[14], a[14], b[14]);
      e[15] = foo (c[15], d[15], a[15], b[15]);
    }
}


short a[N], b[N], c[N], d[N];
int e[N];

int main ()
{
  int i;

  check_vect ();

  for (i = 0; i < N; i++)
    {
      a[i] = i;
      b[i] = 5;
      e[i] = 0;

      switch (i % 9)
        {
        case 0: asm (""); c[i] = - i - 1; d[i] = i + 1; break;
        case 1: c[i] = 0; d[i] = 0; break;
        case 2: c[i] = i + 1; d[i] = - i - 1; break;
        case 3: c[i] = i; d[i] = i + 7; break;
        case 4: c[i] = i; d[i] = i; break;
        case 5: c[i] = i + 16; d[i] = i + 3; break;
        case 6: c[i] = - i - 5; d[i] = - i; break;
        case 7: c[i] = - i; d[i] = - i; break;
        case 8: c[i] = - i; d[i] = - i - 7; break;
        }
    }

  bar (a, b, c, d, e, 2);
  for (i = 0; i < N; i++)
    if (e[i] != ((i % 3) == 0 ? 5 : i))
      abort ();

  return 0;
}

/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
