/* { dg-require-effective-target vect_cond_mixed } */
/* { dg-require-effective-target vect_float } */

#include "tree-vect.h"

static float x[1024];
static float y[1024];
static float z[1024];
static float w[1024];

void __attribute__((noinline,noclone)) barX()
{
  int i;
  for (i=0; i<1024; ++i)
    z[i] = ((x[i]>0) & (w[i]<0)) ? z[i] : y[i];
}

int main()
{
  int i;

  check_vect ();

  for (i = 0; i < 1024; ++i)
    {
      x[i] = -10 + i;
      w[i] = 100 - i;
      z[i] = 0.;
      y[i] = 1.;
      __asm__ volatile ("" : : : "memory");
    }

  barX();

  for (i = 0; i < 1024; ++i)
    if (z[i] != ((x[i]>0 && w[i]<0) ? 0. : 1.))
      abort ();

  return 0;
}

/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
