Allow matching Intel MIC in OpenMP 'declare variant'
..., and use that to improve XFAILing for Intel MIC offloading execution instead of compilation in 'libgomp.c-c++-common/target-45.c', 'libgomp.fortran/target10.f90'. gcc/ * config/i386/i386-options.c (ix86_omp_device_kind_arch_isa) <omp_device_arch> [ACCEL_COMPILER]: Match "intel_mic". * config/i386/t-omp-device (omp-device-properties-i386) <arch>: Add "intel_mic". libgomp/ * testsuite/lib/libgomp.exp (check_effective_target_offload_target_intelmic): Remove 'proc'. (check_effective_target_offload_device_intel_mic): New 'proc'. * testsuite/libgomp.c-c++-common/on_device_arch.h (device_arch_intel_mic, on_device_arch_intel_mic): New. * testsuite/libgomp.c-c++-common/target-45.c: Use that for 'dg-xfail-run-if'. * testsuite/libgomp.fortran/target10.f90: Likewise.
This commit is contained in:
parent
1a129376bb
commit
bb75b22aba
6 changed files with 33 additions and 8 deletions
|
@ -304,6 +304,10 @@ ix86_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait,
|
|||
case omp_device_kind:
|
||||
return strcmp (name, "cpu") == 0;
|
||||
case omp_device_arch:
|
||||
#ifdef ACCEL_COMPILER
|
||||
if (strcmp (name, "intel_mic") == 0)
|
||||
return 1;
|
||||
#endif
|
||||
if (strcmp (name, "x86") == 0)
|
||||
return 1;
|
||||
if (TARGET_64BIT)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
omp-device-properties-i386: $(srcdir)/config/i386/i386-options.c
|
||||
echo kind: cpu > $@
|
||||
echo arch: x86 x86_64 i386 i486 i586 i686 ia32 >> $@
|
||||
echo arch: intel_mic x86 x86_64 i386 i486 i586 i686 ia32 >> $@
|
||||
echo isa: sse4 `sed -n '/^static struct ix86_target_opts isa2\?_opts\[\] =/,/^};/p' \
|
||||
$(srcdir)/config/i386/i386-options.c | \
|
||||
sed -n 's/",.*$$//;s/^ { "-m//p'` >> $@
|
||||
|
|
|
@ -374,11 +374,6 @@ proc check_effective_target_offload_target_amdgcn { } {
|
|||
return [libgomp_check_effective_target_offload_target "amdgcn"]
|
||||
}
|
||||
|
||||
# Return 1 if compiling for offload target intelmic
|
||||
proc check_effective_target_offload_target_intelmic { } {
|
||||
return [libgomp_check_effective_target_offload_target "*-intelmic"]
|
||||
}
|
||||
|
||||
# Return 1 if offload device is available.
|
||||
proc check_effective_target_offload_device { } {
|
||||
return [check_runtime_nocache offload_device_available_ {
|
||||
|
@ -453,6 +448,18 @@ proc check_effective_target_openacc_nvidia_accel_selected { } {
|
|||
return [string match "nvidia" $openacc_device_type]
|
||||
}
|
||||
|
||||
# Return 1 if using Intel MIC offload device.
|
||||
proc check_effective_target_offload_device_intel_mic { } {
|
||||
return [check_runtime_nocache offload_device_intel_mic {
|
||||
#include <omp.h>
|
||||
#include "testsuite/libgomp.c-c++-common/on_device_arch.h"
|
||||
int main ()
|
||||
{
|
||||
return !on_device_arch_intel_mic ();
|
||||
}
|
||||
} ]
|
||||
}
|
||||
|
||||
# Return 1 if the OpenACC 'host' device type is selected.
|
||||
|
||||
proc check_effective_target_openacc_host_selected { } {
|
||||
|
|
|
@ -6,7 +6,14 @@ device_arch_nvptx (void)
|
|||
return GOMP_DEVICE_NVIDIA_PTX;
|
||||
}
|
||||
|
||||
/* static */ int
|
||||
device_arch_intel_mic (void)
|
||||
{
|
||||
return GOMP_DEVICE_INTEL_MIC;
|
||||
}
|
||||
|
||||
#pragma omp declare variant (device_arch_nvptx) match(construct={target},device={arch(nvptx)})
|
||||
#pragma omp declare variant (device_arch_intel_mic) match(construct={target},device={arch(intel_mic)})
|
||||
/* static */ int
|
||||
device_arch (void)
|
||||
{
|
||||
|
@ -28,3 +35,9 @@ on_device_arch_nvptx ()
|
|||
{
|
||||
return on_device_arch (GOMP_DEVICE_NVIDIA_PTX);
|
||||
}
|
||||
|
||||
int
|
||||
on_device_arch_intel_mic ()
|
||||
{
|
||||
return on_device_arch (GOMP_DEVICE_INTEL_MIC);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* { dg-do run { target { ! offload_target_intelmic } } } */
|
||||
/* { dg-xfail-run-if TODO { offload_device_intel_mic } } */
|
||||
|
||||
#include <omp.h>
|
||||
#include <stdlib.h>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
! { dg-do run { target { ! offload_target_intelmic } } }
|
||||
! { dg-do run }
|
||||
! { dg-xfail-run-if TODO { offload_device_intel_mic } }
|
||||
|
||||
program main
|
||||
use omp_lib
|
||||
|
|
Loading…
Add table
Reference in a new issue