Mercurial > hg > CbC > CbC_gcc
view libgomp/testsuite/libgomp.c-c++-common/loop-1.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
extern #ifdef __cplusplus "C" #endif void abort (void); #define N 256 int r; void foo (int *a) { int i, j; #pragma omp loop bind(thread) order(concurrent) private (j) lastprivate (i) reduction(+:r) collapse(1) for (i = 0; i < N; i++) { j = i - 2; a[i] = j; r += j; } } void bar (int *a) { int i, j; #pragma omp loop bind(parallel) order(concurrent) private (j) lastprivate (i) reduction(+:r) collapse(1) for (i = 0; i < N; i++) { j = i; a[i] = j; r += j; } } void baz (int *a) { int i, j; #pragma omp loop bind(teams) order(concurrent) private (j) lastprivate (i) reduction(+:r) for (i = 0; i < N; i++) { j = i + 2; a[i] = j; r += j; } } int main () { int a[N], i, j; foo (a); for (i = 0; i < N; ++i) if (a[i] != i - 2) abort (); else a[i] = -35; if (r != N * (N - 5) / 2) abort (); else r = 0; bar (a); for (i = 0; i < N; ++i) if (a[i] != i) abort (); else a[i] = -35; if (r != N * (N - 1) / 2) abort (); else r = 0; #pragma omp parallel loop private (j) lastprivate (i) reduction(+:r) for (i = 0; i < N; i++) { j = i + 4; a[i] = j; r += j; } if (i != N) abort (); for (i = 0; i < N; ++i) if (a[i] != i + 4) abort (); else a[i] = -35; if (r != N * (N + 7) / 2) abort (); else r = 0; #pragma omp parallel bar (a); for (i = 0; i < N; ++i) if (a[i] != i) abort (); else a[i] = -35; if (r != N * (N - 1) / 2) abort (); else r = 0; #pragma omp teams baz (a); for (i = 0; i < N; ++i) if (a[i] != i + 2) abort (); else a[i] = -35; if (r != N * (N + 3) / 2) abort (); else r = 0; #pragma omp teams loop order(concurrent) private (j) lastprivate (i) reduction(+:r) collapse(1) for (i = 0; i < N; i++) { j = i - 4; a[i] = j; r += j; } if (i != N) abort (); for (i = 0; i < N; ++i) if (a[i] != i - 4) abort (); if (r != N * (N - 9) / 2) abort (); return 0; }