(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.oacc-c-c++-common/
parallel-loop-2.h
       1  #ifndef VARS
       2  #define VARS
       3  int a[1500];
       4  float b[10][15][10];
       5  #pragma acc routine
       6  __attribute__((noreturn)) void
       7  noreturn (void)
       8  {
       9    for (;;);
      10  }
      11  #endif
      12  #ifndef SC
      13  #define SC
      14  #endif
      15  
      16  __attribute__((noinline, noclone)) void
      17  N(f0) (void)
      18  {
      19    int i;
      20  #pragma acc PK loop L F
      21    for (i = 0; i < 1500; i++)
      22      a[i] += 2;
      23  }
      24  
      25  __attribute__((noinline, noclone)) void
      26  N(f1) (void)
      27  {
      28  #pragma acc PK loop L F
      29    for (unsigned int i = __INT_MAX__; i < 3000U + __INT_MAX__; i += 2)
      30      a[(i - __INT_MAX__) >> 1] -= 2;
      31  }
      32  
      33  __attribute__((noinline, noclone)) void
      34  N(f2) (void)
      35  {
      36    unsigned long long i;
      37  #pragma acc PK loop L F
      38    for (i = __LONG_LONG_MAX__ + 4500ULL - 27;
      39         i > __LONG_LONG_MAX__ - 27ULL; i -= 3)
      40      a[(i + 26LL - __LONG_LONG_MAX__) / 3] -= 4;
      41  }
      42  
      43  __attribute__((noinline, noclone)) void
      44  N(f3) (long long n1, long long n2, long long s3)
      45  {
      46  #pragma acc PK loop L F
      47    for (long long i = n1 + 23; i > n2 - 25; i -= s3)
      48      a[i + 48] += 7;
      49  }
      50  
      51  __attribute__((noinline, noclone)) void
      52  N(f4) (void)
      53  {
      54    unsigned int i;
      55  #pragma acc PK loop L F
      56    for (i = 30; i < 20; i += 2)
      57      a[i] += 10;
      58  }
      59  
      60  __attribute__((noinline, noclone)) void
      61  N(f5) (int n11, int n12, int n21, int n22, int n31, int n32,
      62         int s1, int s2, int s3)
      63  {
      64    SC int v1, v2, v3;
      65  #pragma acc PK loop L F
      66    for (v1 = n11; v1 < n12; v1 += s1)
      67  #pragma acc loop S
      68      for (v2 = n21; v2 < n22; v2 += s2)
      69        for (v3 = n31; v3 < n32; v3 += s3)
      70  	b[v1][v2][v3] += 2.5;
      71  }
      72  
      73  __attribute__((noinline, noclone)) void
      74  N(f6) (int n11, int n12, int n21, int n22, long long n31, long long n32,
      75         int s1, int s2, long long int s3)
      76  {
      77    SC int v1, v2;
      78    SC long long v3;
      79  #pragma acc PK loop L F
      80    for (v1 = n11; v1 > n12; v1 += s1)
      81  #pragma acc loop S
      82      for (v2 = n21; v2 > n22; v2 += s2)
      83        for (v3 = n31; v3 > n32; v3 += s3)
      84  	b[v1][v2 / 2][v3] -= 4.5;
      85  }
      86  
      87  __attribute__((noinline, noclone)) void
      88  N(f7) (void)
      89  {
      90    SC unsigned int v1, v3;
      91    SC unsigned long long v2;
      92  #pragma acc PK loop L F
      93    for (v1 = 0; v1 < 20; v1 += 2)
      94  #pragma acc loop S
      95      for (v2 = __LONG_LONG_MAX__ + 16ULL;
      96  	 v2 > __LONG_LONG_MAX__ - 29ULL; v2 -= 3)
      97        for (v3 = 10; v3 > 0; v3--)
      98  	b[v1 >> 1][(v2 - __LONG_LONG_MAX__ + 64) / 3 - 12][v3 - 1] += 5.5;
      99  }
     100  
     101  __attribute__((noinline, noclone)) void
     102  N(f8) (void)
     103  {
     104    SC long long v1, v2, v3;
     105  #pragma acc PK loop L F
     106    for (v1 = 0; v1 < 20; v1 += 2)
     107  #pragma acc loop S
     108      for (v2 = 30; v2 < 20; v2++)
     109        for (v3 = 10; v3 < 0; v3--)
     110  	b[v1][v2][v3] += 5.5;
     111  }
     112  
     113  __attribute__((noinline, noclone)) void
     114  N(f9) (void)
     115  {
     116    int i;
     117  #pragma acc PK loop L F
     118    for (i = 20; i < 10; i++)
     119      {
     120        a[i] += 2;
     121        noreturn ();
     122        a[i] -= 4;
     123      }
     124  }
     125  
     126  __attribute__((noinline, noclone)) void
     127  N(f10) (void)
     128  {
     129    SC int i;
     130  #pragma acc PK loop L F
     131    for (i = 0; i < 10; i++)
     132  #pragma acc loop S
     133      for (int j = 10; j < 8; j++)
     134        for (long k = -10; k < 10; k++)
     135  	{
     136  	  b[i][j][k] += 4;
     137  	  noreturn ();
     138  	  b[i][j][k] -= 8;
     139  	}
     140  }
     141  
     142  __attribute__((noinline, noclone)) void
     143  N(f11) (int n)
     144  {
     145    int i;
     146  #pragma acc PK loop L F
     147    for (i = 20; i < n; i++)
     148      {
     149        a[i] += 8;
     150        noreturn ();
     151        a[i] -= 16;
     152      }
     153  }
     154  
     155  __attribute__((noinline, noclone)) void
     156  N(f12) (int n)
     157  {
     158    SC int i;
     159  #pragma acc PK loop L F
     160    for (i = 0; i < 10; i++)
     161  #pragma acc loop S
     162      for (int j = n; j < 8; j++)
     163        for (long k = -10; k < 10; k++)
     164  	{
     165  	  b[i][j][k] += 16;
     166  	  noreturn ();
     167  	  b[i][j][k] -= 32;
     168  	}
     169  }
     170  
     171  __attribute__((noinline, noclone)) void
     172  N(f13) (void)
     173  {
     174    int *i;
     175  #pragma acc PK loop L F
     176    for (i = a; i < &a[1500]; i++)
     177      i[0] += 2;
     178  }
     179  
     180  __attribute__((noinline, noclone)) void
     181  N(f14) (void)
     182  {
     183    SC float *i;
     184  #pragma acc PK loop L F
     185    for (i = &b[0][0][0]; i < &b[0][0][10]; i++)
     186  #pragma acc loop S
     187      for (float *j = &b[0][15][0]; j > &b[0][0][0]; j -= 10)
     188        for (float *k = &b[0][0][10]; k > &b[0][0][0]; --k)
     189  	b[i - &b[0][0][0]][(j - &b[0][0][0]) / 10 - 1][(k - &b[0][0][0]) - 1]
     190  	  -= 3.5;
     191  }
     192  
     193  __attribute__((noinline, noclone)) int
     194  N(test) (void)
     195  {
     196    int i, j, k;
     197    for (i = 0; i < 1500; i++)
     198      a[i] = i - 25;
     199    N(f0) ();
     200    for (i = 0; i < 1500; i++)
     201      if (a[i] != i - 23)
     202        return 1;
     203    N(f1) ();
     204    for (i = 0; i < 1500; i++)
     205      if (a[i] != i - 25)
     206        return 1;
     207    N(f2) ();
     208    for (i = 0; i < 1500; i++)
     209      if (a[i] != i - 29)
     210        return 1;
     211    N(f3) (1500LL - 1 - 23 - 48, -1LL + 25 - 48, 1LL);
     212    for (i = 0; i < 1500; i++)
     213      if (a[i] != i - 22)
     214        return 1;
     215    N(f3) (1500LL - 1 - 23 - 48, 1500LL - 1, 7LL);
     216    for (i = 0; i < 1500; i++)
     217      if (a[i] != i - 22)
     218        return 1;
     219    N(f4) ();
     220    for (i = 0; i < 1500; i++)
     221      if (a[i] != i - 22)
     222        return 1;
     223    for (i = 0; i < 10; i++)
     224      for (j = 0; j < 15; j++)
     225        for (k = 0; k < 10; k++)
     226  	b[i][j][k] = i - 2.5 + 1.5 * j - 1.5 * k;
     227    N(f5) (0, 10, 0, 15, 0, 10, 1, 1, 1);
     228    for (i = 0; i < 10; i++)
     229      for (j = 0; j < 15; j++)
     230        for (k = 0; k < 10; k++)
     231  	if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
     232  	  return 1;
     233    N(f5) (0, 10, 30, 15, 0, 10, 4, 5, 6);
     234    for (i = 0; i < 10; i++)
     235      for (j = 0; j < 15; j++)
     236        for (k = 0; k < 10; k++)
     237  	if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
     238  	  return 1;
     239    N(f6) (9, -1, 29, 0, 9, -1, -1, -2, -1);
     240    for (i = 0; i < 10; i++)
     241      for (j = 0; j < 15; j++)
     242        for (k = 0; k < 10; k++)
     243  	if (b[i][j][k] != i - 4.5 + 1.5 * j - 1.5 * k)
     244  	  return 1;
     245    N(f7) ();
     246    for (i = 0; i < 10; i++)
     247      for (j = 0; j < 15; j++)
     248        for (k = 0; k < 10; k++)
     249  	if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
     250  	  return 1;
     251    N(f8) ();
     252    for (i = 0; i < 10; i++)
     253      for (j = 0; j < 15; j++)
     254        for (k = 0; k < 10; k++)
     255  	if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
     256  	  return 1;
     257    N(f9) ();
     258    N(f10) ();
     259    N(f11) (10);
     260    N(f12) (12);
     261    for (i = 0; i < 1500; i++)
     262      if (a[i] != i - 22)
     263        return 1;
     264    for (i = 0; i < 10; i++)
     265      for (j = 0; j < 15; j++)
     266        for (k = 0; k < 10; k++)
     267  	if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
     268  	  return 1;
     269    N(f13) ();
     270    N(f14) ();
     271    for (i = 0; i < 1500; i++)
     272      if (a[i] != i - 20)
     273        return 1;
     274    for (i = 0; i < 10; i++)
     275      for (j = 0; j < 15; j++)
     276        for (k = 0; k < 10; k++)
     277  	if (b[i][j][k] != i - 2.5 + 1.5 * j - 1.5 * k)
     278  	  return 1;
     279    return 0;
     280  }