1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- int
- main ()
- {
- int a, b, c = 0;
- #pragma omp parallel num_threads(2)
- {
- #pragma omp barrier
- #pragma omp single
- {
- #pragma omp task depend(out: a)
- {
- int i;
- a = 0;
- for (i = 0; i < 524288; ++i)
- {
- asm volatile ("" : "+g" (a));
- a++;
- }
- }
- #pragma omp task depend(out: b)
- {
- int i;
- b = 0;
- for (i = 0; i < 64; ++i)
- {
- asm volatile ("" : "+g" (b));
- b++;
- }
- }
- #pragma omp task depend(in: a) depend(mutexinoutset: c)
- {
- int i;
- int d = c;
- for (i = 0; i < 524288 + 64 - a; ++i)
- {
- asm volatile ("" : "+g" (d) : "g" (&a) : "memory");
- d++;
- }
- asm volatile ("" : "+g" (d), "+g" (c));
- c = d;
- }
- #pragma omp task depend(in: b) depend(mutexinoutset: c)
- {
- int i;
- int d = c;
- for (i = 0; i < 524288 + 64 - b; ++i)
- {
- asm volatile ("" : "+g" (d) : "g" (&b) : "memory");
- d++;
- }
- asm volatile ("" : "+g" (d), "+g" (c));
- c = d;
- }
- }
- }
- if (c != 524288 + 64)
- __builtin_abort ();
- return 0;
- }
|