The following avoids registering unsupported GCN offload devices when iterating over available ones. With a Zen4 desktop CPU you will have an IGPU (unspported) which will otherwise be made available. This causes testcases like libgomp.c-c++-common/non-rect-loop-1.c which iterate over all decives to FAIL.
I'll run a bootstrap with both pending changes and will do another round of full libgomp testing with this. OK if that succeeds? Thanks, Richard. libgomp/ * plugin/plugin-gcn.c (suitable_hsa_agent_p): Filter out agents with unsupported ISA. --- libgomp/plugin/plugin-gcn.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c index 588358bbbf9..88ed77ff049 100644 --- a/libgomp/plugin/plugin-gcn.c +++ b/libgomp/plugin/plugin-gcn.c @@ -1427,6 +1427,8 @@ init_hsa_runtime_functions (void) #undef DLSYM_FN } +static gcn_isa isa_code(const char *isa); + /* Return true if the agent is a GPU and can accept of concurrent submissions from different threads. */ @@ -1443,6 +1445,13 @@ suitable_hsa_agent_p (hsa_agent_t agent) switch (device_type) { case HSA_DEVICE_TYPE_GPU: + { + char name[64]; + if ((hsa_fns.hsa_agent_get_info_fn (agent, HSA_AGENT_INFO_NAME, name) + != HSA_STATUS_SUCCESS) + || isa_code (name) == EF_AMDGPU_MACH_UNSUPPORTED) + return false; + } break; case HSA_DEVICE_TYPE_CPU: if (!support_cpu_devices) -- 2.35.3