mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			129 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
| /* { dg-do run } */
 | |
| /* { dg-additional-options "-msse2" { target sse2_runtime } } */
 | |
| /* { dg-additional-options "-mavx" { target avx_runtime } } */
 | |
| 
 | |
| static inline void
 | |
| foo (int *b, int *i, int *j, int x)
 | |
| {
 | |
|   *b = *b + x + (*i - *i) + (*j - *j);
 | |
| }
 | |
| 
 | |
| int
 | |
| main ()
 | |
| {
 | |
|   int i, j, b, c = 0;
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp simd linear(b:2) reduction(+:c)
 | |
|   for (i = 0; i < 64; i++)
 | |
|     {
 | |
|       c = c + (b != 7 + 2 * i);
 | |
|       foo (&b, &i, &j, 2);
 | |
|     }
 | |
|   if (c || i != 64 || b != 7 + 64 * 2)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp simd linear(b:3) reduction(+:c)
 | |
|   for (i = 0; i < 64; i += 4)
 | |
|     {
 | |
|       c = c + (b != 7 + i / 4 * 3);
 | |
|       foo (&b, &i, &j, 3);
 | |
|     }
 | |
|   if (c || i != 64 || b != 7 + 16 * 3)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp simd linear(i) linear(b:2) reduction(+:c)
 | |
|   for (i = 0; i < 64; i++)
 | |
|     {
 | |
|       c = c + (b != 7 + 2 * i);
 | |
|       foo (&b, &i, &j, 2);
 | |
|     }
 | |
|   if (c || i != 64 || b != 7 + 64 * 2)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp simd linear(i:4) linear(b:3) reduction(+:c)
 | |
|   for (i = 0; i < 64; i += 4)
 | |
|     {
 | |
|       c = c + (b != 7 + i / 4 * 3);
 | |
|       foo (&b, &i, &j, 3);
 | |
|     }
 | |
|   if (c || i != 64 || b != 7 + 16 * 3)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp simd collapse (2) linear(b:2) reduction(+:c)
 | |
|   for (i = 0; i < 8; i++)
 | |
|     for (j = 0; j < 8; j++)
 | |
|       {
 | |
| 	c = c + (b != 7 + 2 * j + 2 * 8 * i);
 | |
| 	foo (&b, &i, &j, 2);
 | |
|       }
 | |
|   if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp simd collapse (2) lastprivate (i, j) linear(b:2) reduction(+:c)
 | |
|   for (i = 0; i < 8; i++)
 | |
|     for (j = 0; j < 8; j++)
 | |
|       {
 | |
| 	c = c + (b != 7 + 2 * j + 2 * 8 * i);
 | |
| 	foo (&b, &i, &j, 2);
 | |
|       }
 | |
|   if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp parallel for simd schedule (static, 4) linear(b:2) reduction(+:c)
 | |
|   for (i = 0; i < 64; i++)
 | |
|     {
 | |
|       c = c + (b != 7 + 2 * i);
 | |
|       foo (&b, &i, &j, 2);
 | |
|     }
 | |
|   if (c || i != 64 || b != 7 + 64 * 2)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp parallel for simd schedule (static, 4) linear(b:3) reduction(+:c)
 | |
|   for (i = 0; i < 64; i += 4)
 | |
|     {
 | |
|       c = c + (b != 7 + i / 4 * 3);
 | |
|       foo (&b, &i, &j, 3);
 | |
|     }
 | |
|   if (c || i != 64 || b != 7 + 16 * 3)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp parallel for simd schedule (static, 4) linear(i) linear(b:2) reduction(+:c)
 | |
|   for (i = 0; i < 64; i++)
 | |
|     {
 | |
|       c = c + (b != 7 + 2 * i);
 | |
|       foo (&b, &i, &j, 2);
 | |
|     }
 | |
|   if (c || i != 64 || b != 7 + 64 * 2)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp parallel for simd schedule (static, 4) linear(i:4) linear(b:3) reduction(+:c)
 | |
|   for (i = 0; i < 64; i += 4)
 | |
|     {
 | |
|       c = c + (b != 7 + i / 4 * 3);
 | |
|       foo (&b, &i, &j, 3);
 | |
|     }
 | |
|   if (c || i != 64 || b != 7 + 16 * 3)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp parallel for simd lastprivate (i, j) collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
 | |
|   for (i = 0; i < 8; i++)
 | |
|     for (j = 0; j < 8; j++)
 | |
|       {
 | |
| 	c = c + (b != 7 + 2 * j + 2 * 8 * i);
 | |
| 	foo (&b, &i, &j, 2);
 | |
|       }
 | |
|   if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
 | |
|     __builtin_abort ();
 | |
|   i = 4; j = 4; b = 7;
 | |
|   #pragma omp parallel for simd collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
 | |
|   for (i = 0; i < 8; i++)
 | |
|     for (j = 0; j < 8; j++)
 | |
|       {
 | |
| 	c = c + (b != 7 + 2 * j + 2 * 8 * i);
 | |
| 	foo (&b, &i, &j, 2);
 | |
|       }
 | |
|   if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
 | |
|     __builtin_abort ();
 | |
|   return 0;
 | |
| }
 |