Mercurial > hg > CbC > CbC_gcc
view libgomp/testsuite/libgomp.c-c++-common/depend-mutexinout-2.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
line wrap: on
line source
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; }