(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c-c++-common/
simd-16.c
       1  /* { dg-do run } */
       2  /* { dg-additional-options "-msse2" { target sse2_runtime } } */
       3  /* { dg-additional-options "-mavx" { target avx_runtime } } */
       4  /* { dg-additional-options "-std=c99" {target c } } */
       5  
       6  int
       7  main ()
       8  {
       9    int b, c = 0;
      10    b = 7;
      11    #pragma omp simd linear(b:2) reduction(+:c)
      12    for (int i = 0; i < 64; i++)
      13      {
      14        c = c + (b != 7 + 2 * i);
      15        b = b + 2;
      16      }
      17    if (c || b != 7 + 64 * 2)
      18      __builtin_abort ();
      19    b = 7;
      20    #pragma omp simd linear(b:3) reduction(+:c)
      21    for (int i = 0; i < 64; i += 4)
      22      {
      23        c = c + (b != 7 + i / 4 * 3);
      24        b = b + 3;
      25      }
      26    if (c || b != 7 + 16 * 3)
      27      __builtin_abort ();
      28    b = 7;
      29    #pragma omp simd collapse (2) linear(b:2) reduction(+:c)
      30    for (int i = 0; i < 8; i++)
      31      for (int j = 0; j < 8; j++)
      32        {
      33  	c = c + (b != 7 + 2 * j + 2 * 8 * i);
      34  	b = b + 2;
      35        }
      36    if (c || b != 7 + 64 * 2)
      37      __builtin_abort ();
      38    b = 7;
      39    #pragma omp parallel for simd schedule (static, 4) linear(b:2) reduction(+:c)
      40    for (int i = 0; i < 64; i++)
      41      {
      42        c = c + (b != 7 + 2 * i);
      43        b = b + 2;
      44      }
      45    if (c || b != 7 + 64 * 2)
      46      __builtin_abort ();
      47    b = 7;
      48    #pragma omp parallel for simd schedule (static, 4) linear(b:3) reduction(+:c)
      49    for (int i = 0; i < 64; i += 4)
      50      {
      51        c = c + (b != 7 + i / 4 * 3);
      52        b = b + 3;
      53      }
      54    if (c || b != 7 + 16 * 3)
      55      __builtin_abort ();
      56    b = 7;
      57    #pragma omp parallel for simd collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
      58    for (int i = 0; i < 8; i++)
      59      for (int j = 0; j < 8; j++)
      60        {
      61  	c = c + (b != 7 + 2 * j + 2 * 8 * i);
      62  	b = b + 2;
      63        }
      64    if (c || b != 7 + 64 * 2)
      65      __builtin_abort ();
      66    return 0;
      67  }