(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.oacc-c/
nested-function-2.c
       1  /* Exercise nested function decomposition, gcc/tree-nested.c.  */
       2  
       3  int
       4  main (void)
       5  {
       6    int p1 = 2, p2 = 6, p3 = 0, p4 = 4, p5 = 13, p6 = 18, p7 = 1, p8 = 1, p9 = 1;
       7  
       8    void test1 ()
       9    {
      10      int i, j, k;
      11      int a[4][4][4];
      12  
      13      __builtin_memset (a, '\0', sizeof (a));
      14  
      15  #pragma acc parallel
      16  #pragma acc loop collapse(3)
      17      for (i = 1; i <= 3; i++)
      18        for (j = 1; j <= 3; j++)
      19  	for (k = 2; k <= 3; k++)
      20  	  a[i][j][k] = 1;
      21  
      22      for (i = 1; i <= 3; i++)
      23        for (j = 1; j <= 3; j++)
      24  	for (k = 2; k <= 3; k++)
      25  	  if (a[i][j][k] != 1)
      26  	    __builtin_abort();
      27    }
      28  
      29    void test2 (int v1, int v2, int v3, int v4, int v5, int v6)
      30    {
      31      int i, j, k, l = 0, r = 0;
      32      int a[7][5][19];
      33      int b[7][5][19];
      34  
      35      __builtin_memset (a, '\0', sizeof (a));
      36      __builtin_memset (b, '\0', sizeof (b));
      37  
      38  #pragma acc parallel reduction (||:l)
      39  #pragma acc loop reduction (||:l) collapse(3)
      40      for (i = v1; i <= v2; i++)
      41        for (j = v3; j <= v4; j++)
      42  	for (k = v5; k <= v6; k++)
      43  	  {
      44  	    l = l || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
      45  	    if (!l)
      46  	      a[i][j][k] += 1;
      47  	  }
      48  
      49      for (i = v1; i <= v2; i++)
      50        for (j = v3; j <= v4; j++)
      51  	for (k = v5; k <= v6; k++)
      52  	  {
      53  	    r = r || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
      54  	    if (!r)
      55  	      b[i][j][k] += 1;
      56  	  }
      57  
      58      if (l != r)
      59        __builtin_abort ();
      60  
      61      for (i = v1; i <= v2; i++)
      62        for (j = v3; j <= v4; j++)
      63  	for (k = v5; k <= v6; k++)
      64  	  if (b[i][j][k] != a[i][j][k])
      65  	    __builtin_abort ();
      66    }
      67  
      68    void test3 (int v1, int v2, int v3, int v4, int v5, int v6, int v7, int v8,
      69        int v9)
      70    {
      71      int i, j, k, l = 0, r = 0;
      72      int a[7][5][19];
      73      int b[7][5][19];
      74  
      75      __builtin_memset (a, '\0', sizeof (a));
      76      __builtin_memset (b, '\0', sizeof (b));
      77  
      78  #pragma acc parallel reduction (||:l)
      79  #pragma acc loop reduction (||:l) collapse(3)
      80      for (i = v1; i <= v2; i += v7)
      81        for (j = v3; j <= v4; j += v8)
      82  	for (k = v5; k <= v6; k += v9)
      83  	  {
      84  	    l = l || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
      85  	    if (!l)
      86  	      a[i][j][k] += 1;
      87  	  }
      88  
      89      for (i = v1; i <= v2; i += v7)
      90        for (j = v3; j <= v4; j += v8)
      91  	for (k = v5; k <= v6; k += v9)
      92  	  {
      93  	    r = r || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
      94  	    if (!r)
      95  	      b[i][j][k] += 1;
      96  	  }
      97  
      98      if (l != r)
      99        __builtin_abort ();
     100  
     101      for (i = v1; i <= v2; i++)
     102        for (j = v3; j <= v4; j++)
     103  	for (k = v5; k <= v6; k++)
     104  	  if (b[i][j][k] != a[i][j][k])
     105  	    __builtin_abort ();
     106    }
     107  
     108    void test4 ()
     109    {
     110      int i, j, k, l = 0, r = 0;
     111      int a[7][5][19];
     112      int b[7][5][19];
     113      int v1 = p1, v2 = p2, v3 = p3, v4 = p4, v5 = p5, v6 = p6, v7 = p7, v8 = p8,
     114        v9 = p9;
     115  
     116      __builtin_memset (a, '\0', sizeof (a));
     117      __builtin_memset (b, '\0', sizeof (b));
     118  
     119  #pragma acc parallel reduction (||:l)
     120  #pragma acc loop reduction (||:l) collapse(3)
     121      for (i = v1; i <= v2; i += v7)
     122        for (j = v3; j <= v4; j += v8)
     123  	for (k = v5; k <= v6; k += v9)
     124  	  {
     125  	    l = l || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
     126  	    if (!l)
     127  	      a[i][j][k] += 1;
     128  	  }
     129  
     130      for (i = v1; i <= v2; i += v7)
     131        for (j = v3; j <= v4; j += v8)
     132  	for (k = v5; k <= v6; k += v9)
     133  	  {
     134  	    r = r || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
     135  	    if (!r)
     136  	      b[i][j][k] += 1;
     137  	  }
     138  
     139      if (l != r)
     140        __builtin_abort ();
     141  
     142      for (i = v1; i <= v2; i++)
     143        for (j = v3; j <= v4; j++)
     144  	for (k = v5; k <= v6; k++)
     145  	  if (b[i][j][k] != a[i][j][k])
     146  	    __builtin_abort ();
     147    }
     148  
     149    test1 ();
     150    test2 (p1, p2, p3, p4, p5, p6);
     151    test3 (p1, p2, p3, p4, p5, p6, p7, p8, p9);
     152    test4 ();
     153  
     154    return 0;
     155  }