URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgomp/] [testsuite/] [libgomp.c++/] [atomic-4.C] - Rev 801
Go to most recent revision | Compare with Previous | Blame | View Log
// { dg-do run }extern "C" void abort (void);template <typename T, typename T2>intfoo (void){extern T x;extern T2 y;T v;T2 f;#pragma omp atomic readv = x;if (v != 6)abort ();#pragma omp atomic writex = 17;#pragma omp atomic readv = x;if (v != 17)abort ();#pragma omp atomic updatex++;#pragma omp atomic readv = x;if (v != 18)abort ();#pragma omp atomic capturev = x++;if (v != 18)abort ();#pragma omp atomic readv = x;if (v != 19)abort ();#pragma omp atomic capturev = ++x;if (v != 20)abort ();#pragma omp atomic readv = x;if (v != 20)abort ();#pragma omp atomic capture{ v = x; x *= 3; }if (v != 20)abort ();#pragma omp atomic readv = x;if (v != 60)abort ();#pragma omp atomic capture{x |= 2;v = x;}if (v != 62)abort ();#pragma omp atomic readv = 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 readv = 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 readv = x;if (v != 62)abort ();#pragma omp atomic writey = 17.5f;#pragma omp atomic readf = y;if (f != 17.5)abort ();#pragma omp atomic updatey *= 2.0f;#pragma omp atomic readf = y;if (y != 35.0)abort ();#pragma omp atomic capturef = y *= 2.0f;if (f != 70.0)abort ();#pragma omp atomic capturef = y++;if (f != 70.0)abort ();#pragma omp atomic readf = y;if (f != 71.0)abort ();#pragma omp atomic capturef = --y;if (f != 70.0)abort ();#pragma omp atomic readf = y;if (f != 70.0)abort ();#pragma omp atomic capture{ f = y; y /= 2.0f; }if (f != 70.0)abort ();#pragma omp atomic readf = y;if (f != 35.0)abort ();#pragma omp atomic capture{ y /= 2.0f; f = y; }if (f != 17.5)abort ();#pragma omp atomic readf = y;if (f != 17.5)abort ();return 0;}int x = 6;float y;intmain (){foo <int, float> ();return 0;}
Go to most recent revision | Compare with Previous | Blame | View Log
