This patch provides a couple of AMD GCN-specific fixes for a few OpenACC offloading tests in libgomp.
I will apply to the openacc-gcc-9-branch shortly. Julian ChangeLog libgomp/ * testsuite/libgomp.oacc-c-c++-common/async_queue-1.c: Only run NVidia-specific test on NVidia hardware. * testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c (main): Initialise for acc_device_gcn if testing on AMD GCN. * testsuite/libgomp.oacc-c-c++-common/function-not-offloaded.c: Support AMD GCN. * testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c (check): Skip vector dimension test for AMD GCN. --- libgomp/ChangeLog.openacc | 11 +++++++++++ .../libgomp.oacc-c-c++-common/async_queue-1.c | 2 ++ .../libgomp.oacc-c-c++-common/asyncwait-nop-1.c | 2 ++ .../function-not-offloaded.c | 4 ++-- .../libgomp.oacc-c-c++-common/loop-dim-default.c | 11 ++++++++--- 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/libgomp/ChangeLog.openacc b/libgomp/ChangeLog.openacc index 14ed4e0ec2c..1a624af1ff9 100644 --- a/libgomp/ChangeLog.openacc +++ b/libgomp/ChangeLog.openacc @@ -1,3 +1,14 @@ +2019-09-17 Julian Brown <jul...@codesourcery.com> + + * testsuite/libgomp.oacc-c-c++-common/async_queue-1.c: Only run + NVidia-specific test on NVidia hardware. + * testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c (main): + Initialise for acc_device_gcn if testing on AMD GCN. + * testsuite/libgomp.oacc-c-c++-common/function-not-offloaded.c: Support + AMD GCN. + * testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c (check): Skip + vector dimension test for AMD GCN. + 2019-09-13 Tobias Burnus <tob...@codesourcery.com> * plugin/plugin-gcn.c (hsa_warn, hsa_fatal, hsa_error): Ensure diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/async_queue-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/async_queue-1.c index 544b19fe663..4f9e53da85d 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/async_queue-1.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/async_queue-1.c @@ -1,3 +1,5 @@ +/* { dg-do run { target openacc_nvidia_accel_selected } } */ + /* Test mapping of async values to specific underlying queues. */ #undef NDEBUG diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c index 4ab67363ba6..840052fec12 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c @@ -26,6 +26,8 @@ main () acc_device_t d; #if defined ACC_DEVICE_TYPE_nvidia d = acc_device_nvidia; +#elif defined ACC_DEVICE_TYPE_gcn + d = acc_device_gcn; #elif defined ACC_DEVICE_TYPE_host d = acc_device_host; #else diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/function-not-offloaded.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/function-not-offloaded.c index fdf4eb08f8a..517004a562d 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/function-not-offloaded.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/function-not-offloaded.c @@ -1,11 +1,11 @@ /* { dg-do link } */ -/* { dg-excess-errors "lto1, mkoffload and lto-wrapper fatal errors" { target openacc_nvidia_accel_selected } } */ +/* { dg-excess-errors "lto1, mkoffload and lto-wrapper fatal errors" { target { openacc_nvidia_accel_selected || openacc_amdgcn_accel_selected } } } */ int var; #pragma acc declare create (var) void __attribute__((noinline, noclone)) -foo () /* { dg-error "function 'foo' has been referenced in offloaded code but hasn't been marked to be included in the offloaded code" "" { target openacc_nvidia_accel_selected } } */ +foo () /* { dg-error "function 'foo' has been referenced in offloaded code but hasn't been marked to be included in the offloaded code" "" { target { openacc_nvidia_accel_selected || openacc_amdgcn_accel_selected } } } */ { var++; } diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c index dd8107c1acc..5cd0e3122be 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c @@ -80,13 +80,18 @@ int check (const int *ary, int size, int gp, int wp, int vp) exit = 1; } +#ifndef ACC_DEVICE_TYPE_gcn + /* AMD GCN uses the autovectorizer for the vector dimension: the use + of a function call in vector-partitioned code in this test is not + currently supported. */ for (ix = 0; ix < vp; ix++) if (vectors[ix] != vectors[0]) { - printf ("vector %d not used %d times\n", ix, vectors[0]); - exit = 1; + printf ("vector %d not used %d times\n", ix, vectors[0]); exit + = 1; } - +#endif + return exit; } -- 2.22.0