mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			846 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			846 B
		
	
	
	
		
			C
		
	
	
	
| /* PR hsa/69568 */
 | |
| 
 | |
| typedef float float2 __attribute__ ((vector_size (8)));
 | |
| float2 *output;
 | |
| 
 | |
| void __attribute__((noinline, noclone))
 | |
| foo (int n, float2 *a, int workgroup_size)
 | |
| {
 | |
|   int i;
 | |
| #pragma omp target map(from:a[:n]) firstprivate(n, workgroup_size)
 | |
| #pragma omp teams thread_limit(workgroup_size)
 | |
| #pragma omp distribute parallel for shared(a) firstprivate(n) private(i)
 | |
|     for (i = 0; i < n; i++)
 | |
|       { float2 v;
 | |
| 	v[0] = i;
 | |
| 	v[1] = 1+i;
 | |
| 	a[i] = v;
 | |
|       }
 | |
| }
 | |
| 
 | |
| int main (int argc, char **argv)
 | |
| {
 | |
|   int n = 32;
 | |
|   float2 *a = __builtin_malloc (sizeof (float2) * n);
 | |
|   int i;
 | |
| 
 | |
|   __builtin_memset (a, 0, sizeof (float2) * n);
 | |
|   foo (n, a, 32);
 | |
|   for (i = 0; i < n; i++)
 | |
|     {
 | |
|       float2 v = a[i];
 | |
|       if (__builtin_abs (v[0] - i) > 0.1
 | |
| 	  || __builtin_abs (v[1] - i - 1) > 0.1)
 | |
| 	{
 | |
| 	  __builtin_abort ();
 | |
| 	  return 1;
 | |
| 	}
 | |
|     }
 | |
|   return 0;
 | |
| }
 | |
| 
 |