(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr68956.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -ffast-math -mfpmath=sse -mavx2 -ftree-vectorize" } */
       3  /* { dg-require-effective-target avx2 } */
       4  
       5  #include "avx2-check.h"
       6  
       7  extern void abort (void);
       8  
       9  int l;
      10  
      11  static void __attribute__((noclone,noinline))
      12  test1 (double *in1, double *in2, double *out,
      13         int l1, int l2, int *n)
      14  {
      15    double sum;
      16    int na = n[0];
      17    int nb = n[1];
      18    int i;
      19    _Bool ic, jc;
      20  
      21    jc = (l > na) && (l > nb);
      22    for (int i = 0; i < l2; i++)
      23      {
      24        ic = (i <= na) && (i <= nb);
      25        sum = 0;
      26        if (ic && jc)
      27  	sum = in1[i] + in2[i];
      28        out[i] = sum;
      29      }
      30  }
      31  
      32  static void
      33  avx2_test (void)
      34  {
      35    double in1[40], in2[40], out[40], sum;
      36    int n[2],l1,l2,i,na,nb;
      37    _Bool ic, jc;
      38  
      39    l = 0;
      40    l1 = 8;
      41    l2 = 40;
      42    n[0] = 14;
      43    n[1] = 13;
      44  
      45    for (i = 0; i < l2; i++)
      46      {
      47        in1[i] = i;
      48        in2[i] = i;
      49        out[i] = 0;
      50      }
      51  
      52    test1 (in1, in2, out, l1, l2, n);
      53  
      54    na = n[0];
      55    nb = n[1];
      56  
      57    jc = (l > na) && (l > nb);
      58    for (int i = 0; i < l2; i++)
      59      {
      60        ic = (i <= na) && (i <= nb);
      61        sum = 0;
      62        if (ic && jc)
      63  	sum = in1[i] + in2[i];
      64        if (out[i] != sum)
      65  	abort ();
      66      }
      67  }