Mercurial > hg > CbC > CbC_gcc
view libgomp/testsuite/libgomp.c/atomic-11.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* { dg-do run } */ extern void abort (void); int x = 6; float y; int main (void) { int v; float f; #pragma omp atomic read v = x; if (v != 6) abort (); #pragma omp atomic write x = 17; #pragma omp atomic read v = x; if (v != 17) abort (); #pragma omp atomic update x++; #pragma omp atomic read v = x; if (v != 18) abort (); #pragma omp atomic capture v = x++; if (v != 18) abort (); #pragma omp atomic read v = x; if (v != 19) abort (); #pragma omp atomic capture v = ++x; if (v != 20) abort (); #pragma omp atomic read v = x; if (v != 20) abort (); #pragma omp atomic capture { v = x; x *= 3; } if (v != 20) abort (); #pragma omp atomic read v = x; if (v != 60) abort (); #pragma omp atomic capture { x |= 2; v = x; } if (v != 62) abort (); #pragma omp atomic read v = x; if (v != 62) abort (); #pragma omp atomic capture { v = x; x++; } if (v != 62) abort (); #pragma omp atomic capture { v = x; ++x; } if (v != 63) abort (); #pragma omp atomic capture { ++x; v = x; } if (v != 65) abort (); #pragma omp atomic capture {x++;v=x;}if (v != 66) abort (); #pragma omp atomic read v = x; if (v != 66) abort (); #pragma omp atomic capture { v = x; x--; } if (v != 66) abort (); #pragma omp atomic capture { v = x; --x; } if (v != 65) abort (); #pragma omp atomic capture { --x; v = x; } if (v != 63) abort (); #pragma omp atomic capture { x--; v = x; } if (v != 62) abort (); #pragma omp atomic read v = x; if (v != 62) abort (); #pragma omp atomic write y = 17.5f; #pragma omp atomic read f = y; if (f != 17.5) abort (); #pragma omp atomic update y *= 2.0f; #pragma omp atomic read f = y; if (y != 35.0) abort (); #pragma omp atomic capture f = y *= 2.0f; if (f != 70.0) abort (); #pragma omp atomic capture f = y++; if (f != 70.0) abort (); #pragma omp atomic read f = y; if (f != 71.0) abort (); #pragma omp atomic capture f = --y; if (f != 70.0) abort (); #pragma omp atomic read f = y; if (f != 70.0) abort (); #pragma omp atomic capture { f = y; y /= 2.0f; } if (f != 70.0) abort (); #pragma omp atomic read f = y; if (f != 35.0) abort (); #pragma omp atomic capture { y /= 2.0f; f = y; } if (f != 17.5) abort (); #pragma omp atomic read f = y; if (f != 17.5) abort (); return 0; }