diff options
Diffstat (limited to 'libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-clauses.c')
-rw-r--r-- | libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-clauses.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-clauses.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-clauses.c new file mode 100644 index 00000000000..2c424973eb1 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-clauses.c @@ -0,0 +1,62 @@ +/* Exercise the auto, independent, seq and tile loop clauses inside + kernels regions. */ + +#include <assert.h> + +#define N 100 + +void +check (int *a, int *b) +{ + int i; + + for (i = 0; i < N; i++) + assert (a[i] == b[i]); +} + +int +main () +{ + int i, a[N], b[N]; + +#pragma acc kernels copy(a) + { +#pragma acc loop auto + for (i = 0; i < N; i++) + a[i] = i; + } + + for (i = 0; i < N; i++) + b[i] = i; + + check (a, b); + +#pragma acc kernels copyout(a) + { +#pragma acc loop independent + for (i = 0; i < N; i++) + a[i] = i; + } + + check (a, b); + +#pragma acc kernels present_or_copy(a) + { +#pragma acc loop seq + for (i = 0; i < N; i++) + a[i] = i; + } + + check (a, b); + +#pragma acc kernels pcopyout(a) present_or_copyin(b) + { +#pragma acc loop seq + for (i = 0; i < N; i++) + a[i] = b[i]; + } + + check (a, b); + + return 0; +} |