From: Thomas Schwinge Date: Tue, 8 Jan 2019 14:21:35 +0000 (+0100) Subject: Add OpenACC 2.6 `acc_get_property' support: restore Intel MIC offloading X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f628705a3627299c255d605d6b38d2b7f2157a3;p=thirdparty%2Fgcc.git Add OpenACC 2.6 `acc_get_property' support: restore Intel MIC offloading The "OpenACC 2.6 `acc_get_property' support" changes regressed the relevant libgomp OpenMP execution test cases to no longer consider Intel MIC offloading because of: libgomp: while loading libgomp-plugin-intelmic.so.1: [...]/libgomp-plugin-intelmic.so.1: undefined symbol: GOMP_OFFLOAD_get_property liboffloadmic/ * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_property): New function. (cherry picked from openacc-gcc-9-branch commit 1fa609ba73e9990ae7a65b083047f0ee219167b3) --- diff --git a/liboffloadmic/ChangeLog.omp b/liboffloadmic/ChangeLog.omp index 521d4490f0b5..75f8ee518e4f 100644 --- a/liboffloadmic/ChangeLog.omp +++ b/liboffloadmic/ChangeLog.omp @@ -1,3 +1,8 @@ +2019-01-08 Thomas Schwinge + + * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_property): + New function. + 2019-02-26 Chung-Lin Tang * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_version): diff --git a/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp b/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp index d1678d0514e9..ed78c8d9dd44 100644 --- a/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp +++ b/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp @@ -174,6 +174,27 @@ GOMP_OFFLOAD_get_num_devices (void) return num_devices; } +extern "C" union gomp_device_property_value +GOMP_OFFLOAD_get_property (int n, int prop) +{ + union gomp_device_property_value nullval = { .val = 0 }; + + if (n >= num_devices) + { + GOMP_PLUGIN_error + ("Request for a property of a non-existing Intel MIC device %i", n); + return nullval; + } + + switch (prop) + { + case GOMP_DEVICE_PROPERTY_VENDOR: + return (union gomp_device_property_value) { .ptr = /* TODO: "error: invalid conversion from 'const void*' to 'void*' [-fpermissive]" */ (char *) "Intel" }; + default: + return nullval; + } +} + static bool offload (const char *file, uint64_t line, int device, const char *name, int num_vars, VarDesc *vars, const void **async_data)