mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			55 lines
		
	
	
		
			756 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			756 B
		
	
	
	
		
			C
		
	
	
	
| /* This test exercises combined directives.  */
 | |
| 
 | |
| /* { dg-do run } */
 | |
| 
 | |
| #include <stdlib.h>
 | |
| 
 | |
| int
 | |
| main (int argc, char **argv)
 | |
| {
 | |
|   const int N = 32;
 | |
|   float a[N], b[N];
 | |
|   int i;
 | |
| 
 | |
|   for (i = 0; i < N; i++)
 | |
|     {
 | |
|       a[i] = 1.0;
 | |
|       b[i] = 0.0;
 | |
|     }
 | |
| 
 | |
| #pragma acc parallel loop copy (a[0:N]) copy (b[0:N])
 | |
|   for (i = 0; i < N; i++)
 | |
|     {
 | |
|       b[i] = 2.0;
 | |
|       a[i] = a[i] + b[i];
 | |
|     }
 | |
| 
 | |
|   for (i = 0; i < N; i++)
 | |
|     {
 | |
|       if (a[i] != 3.0)
 | |
| 	abort ();
 | |
| 
 | |
|       if (b[i] != 2.0)
 | |
| 	abort ();
 | |
|     }
 | |
| 
 | |
| #pragma acc kernels loop copy (a[0:N]) copy (b[0:N])
 | |
|   for (i = 0; i < N; i++)
 | |
|     {
 | |
|       b[i] = 3.0;
 | |
|       a[i] = a[i] + b[i];
 | |
|     }
 | |
| 
 | |
|   for (i = 0; i < N; i++)
 | |
|     {
 | |
|       if (a[i] != 6.0)
 | |
| 	abort ();
 | |
| 
 | |
|       if (b[i] != 3.0)
 | |
| 	abort ();
 | |
|     }
 | |
| 
 | |
|   return 0;
 | |
| 
 | |
| } 
 |