(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
pr61194.c
       1  /* { dg-require-effective-target vect_cond_mixed } */
       2  /* { dg-require-effective-target vect_float } */
       3  
       4  #include "tree-vect.h"
       5  
       6  static float x[1024];
       7  static float y[1024];
       8  static float z[1024];
       9  static float w[1024];
      10  
      11  void __attribute__((noinline,noclone)) barX()
      12  {
      13    int i;
      14    for (i=0; i<1024; ++i)
      15      z[i] = ((x[i]>0) & (w[i]<0)) ? z[i] : y[i];
      16  }
      17  
      18  int main()
      19  {
      20    int i;
      21  
      22    check_vect ();
      23  
      24    for (i = 0; i < 1024; ++i)
      25      {
      26        x[i] = -10 + i;
      27        w[i] = 100 - i;
      28        z[i] = 0.;
      29        y[i] = 1.;
      30        __asm__ volatile ("" : : : "memory");
      31      }
      32  
      33    barX();
      34  
      35    for (i = 0; i < 1024; ++i)
      36      if (z[i] != ((x[i]>0 && w[i]<0) ? 0. : 1.))
      37        abort ();
      38  
      39    return 0;
      40  }
      41  
      42  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */