From: Andrew Stubbs Date: Tue, 3 Dec 2019 12:53:53 +0000 (+0000) Subject: Enable OpenACC GCN testing. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=83caa34e2a618842e05f59cbb3e2dda93dc23270;p=gcc.git Enable OpenACC GCN testing. 2019-12-03 Andrew Stubbs libgomp/ * testsuite/lib/libgomp.exp (offload_target_to_openacc_device_type): Recognize amdgcn. (check_effective_target_openacc_amdgcn_accel_present): New proc. (check_effective_target_openacc_amdgcn_accel_selected): New proc. * testsuite/libgomp.oacc-c++/c++.exp: Add support for amdgcn. * testsuite/libgomp.oacc-c/c.exp: Likewise. * testsuite/libgomp.oacc-fortran/fortran.exp: Likewise. From-SVN: r278935 --- diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 86761d3d479..af5add845d0 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,13 @@ +2019-12-03 Andrew Stubbs + + * testsuite/lib/libgomp.exp (offload_target_to_openacc_device_type): + Recognize amdgcn. + (check_effective_target_openacc_amdgcn_accel_present): New proc. + (check_effective_target_openacc_amdgcn_accel_selected): New proc. + * testsuite/libgomp.oacc-c++/c++.exp: Add support for amdgcn. + * testsuite/libgomp.oacc-c/c.exp: Likewise. + * testsuite/libgomp.oacc-fortran/fortran.exp: Likewise. + 2019-12-03 Szabolcs Nagy PR libgomp/91938 diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp index 06e3186d966..f52ed7184e4 100644 --- a/libgomp/testsuite/lib/libgomp.exp +++ b/libgomp/testsuite/lib/libgomp.exp @@ -318,6 +318,9 @@ proc libgomp_option_proc { option } { # not supported, and 'host' for offload target 'disable'. proc offload_target_to_openacc_device_type { offload_target } { switch -glob $offload_target { + amdgcn* { + return "gcn" + } disable { return "host" } @@ -479,3 +482,29 @@ proc check_effective_target_hsa_offloading_selected {} { check_effective_target_hsa_offloading_selected_nocache }] } + +# Return 1 if at least one AMD GCN board is present. + +proc check_effective_target_openacc_amdgcn_accel_present { } { + return [check_runtime openacc_amdgcn_accel_present { + #include + int main () { + return !(acc_get_num_devices (acc_device_gcn) > 0); + } + } "" ] +} + +# Return 1 if at least one AMD GCN board is present, and the AMD GCN device +# type is selected by default. + +proc check_effective_target_openacc_amdgcn_accel_selected { } { + if { ![check_effective_target_openacc_amdgcn_accel_present] } { + return 0; + } + global offload_target + if { [string match "amdgcn*" $offload_target] } { + return 1; + } + return 0; +} + diff --git a/libgomp/testsuite/libgomp.oacc-c++/c++.exp b/libgomp/testsuite/libgomp.oacc-c++/c++.exp index dcefa792ca4..c06c2a097e3 100644 --- a/libgomp/testsuite/libgomp.oacc-c++/c++.exp +++ b/libgomp/testsuite/libgomp.oacc-c++/c++.exp @@ -88,6 +88,15 @@ if { $lang_test_file_found } { unsupported "$subdir $offload_target offloading" continue } + gcn { + if { ![check_effective_target_openacc_amdgcn_accel_present] } { + # Don't bother; execution testing is going to FAIL. + untested "$subdir $offload_target offloading: supported, but hardware not accessible" + continue + } + + set acc_mem_shared 0 + } host { set acc_mem_shared 1 } diff --git a/libgomp/testsuite/libgomp.oacc-c/c.exp b/libgomp/testsuite/libgomp.oacc-c/c.exp index 55cd40f1e99..7f13242fd59 100644 --- a/libgomp/testsuite/libgomp.oacc-c/c.exp +++ b/libgomp/testsuite/libgomp.oacc-c/c.exp @@ -51,6 +51,15 @@ foreach offload_target [concat [split $offload_targets ","] "disable"] { unsupported "$subdir $offload_target offloading" continue } + gcn { + if { ![check_effective_target_openacc_amdgcn_accel_present] } { + # Don't bother; execution testing is going to FAIL. + untested "$subdir $offload_target offloading: supported, but hardware not accessible" + continue + } + + set acc_mem_shared 0 + } host { set acc_mem_shared 1 } diff --git a/libgomp/testsuite/libgomp.oacc-fortran/fortran.exp b/libgomp/testsuite/libgomp.oacc-fortran/fortran.exp index 852f372b319..60f0889a07c 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/fortran.exp +++ b/libgomp/testsuite/libgomp.oacc-fortran/fortran.exp @@ -82,6 +82,15 @@ if { $lang_test_file_found } { unsupported "$subdir $offload_target offloading" continue } + gcn { + if { ![check_effective_target_openacc_amdgcn_accel_present] } { + # Don't bother; execution testing is going to FAIL. + untested "$subdir $offload_target offloading: supported, but hardware not accessible" + continue + } + + set acc_mem_shared 0 + } host { set acc_mem_shared 1 }