1  /* Check for vectorization of mixed conditionals.  */
       2  /* { dg-do compile { target { s390*-*-* } } } */
       3  /* { dg-options "-O2 -march=z14 -mzarch -ftree-vectorize -fdump-tree-vect-details" } */
       4  
       5  float xf[1024];
       6  float zf[1024];
       7  float wf[1024];
       8  
       9  int xi[1024];
      10  int zi[1024];
      11  int wi[1024];
      12  
      13  void fooif ()
      14  {
      15    int i;
      16    for (i = 0; i < 1024; ++i)
      17      zf[i] = xi[i] ? zf[i] : wf[i];
      18  }
      19  
      20  void foofi ()
      21  {
      22    int i;
      23    for (i = 0; i < 1024; ++i)
      24      zi[i] = xf[i] ? zi[i] : wi[i];
      25  }
      26  
      27  void fooif2 ()
      28  {
      29    int i;
      30    for (i = 0; i < 1024; ++i)
      31      zf[i] = (xf[i] > 0) ? zf[i] : wf[i];
      32  }
      33  
      34  void fooif3 ()
      35  {
      36    int i;
      37    for (i = 0; i < 1024; ++i)
      38      zf[i] = (xf[i] > 0.f & wf[i] < 0.f) ? zf[i] : wf[i];
      39  }
      40  
      41  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */