]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
libgomp: Add offload_device_gcn check, add requires-4a.c test
[thirdparty/gcc.git] / libgomp / testsuite / libgomp.c-c++-common / on_device_arch.h
CommitLineData
d97364aa 1#include <omp.h>
d99111fd
TS
2#include <gomp-constants.h>
3
4/* static */ int
5device_arch_nvptx (void)
6{
7 return GOMP_DEVICE_NVIDIA_PTX;
8}
9
12d9f5af
TB
10/* static */ int
11device_arch_gcn (void)
12{
13 return GOMP_DEVICE_GCN;
14}
15
bb75b22a
TS
16/* static */ int
17device_arch_intel_mic (void)
18{
19 return GOMP_DEVICE_INTEL_MIC;
20}
21
d99111fd 22#pragma omp declare variant (device_arch_nvptx) match(construct={target},device={arch(nvptx)})
12d9f5af 23#pragma omp declare variant (device_arch_gcn) match(construct={target},device={arch(gcn)})
bb75b22a 24#pragma omp declare variant (device_arch_intel_mic) match(construct={target},device={arch(intel_mic)})
d99111fd
TS
25/* static */ int
26device_arch (void)
27{
28 return GOMP_DEVICE_DEFAULT;
29}
30
31static int
32on_device_arch (int d)
33{
34 int d_cur;
35 #pragma omp target map(from:d_cur)
36 d_cur = device_arch ();
37
38 return d_cur == d;
39}
40
41int
42on_device_arch_nvptx ()
43{
44 return on_device_arch (GOMP_DEVICE_NVIDIA_PTX);
45}
bb75b22a 46
12d9f5af
TB
47int
48on_device_arch_gcn ()
49{
50 return on_device_arch (GOMP_DEVICE_GCN);
51}
52
bb75b22a
TS
53int
54on_device_arch_intel_mic ()
55{
56 return on_device_arch (GOMP_DEVICE_INTEL_MIC);
57}
d97364aa
TS
58
59static int
60any_device_arch (int d)
61{
62 int nd = omp_get_num_devices ();
63 for (int i = 0; i < nd; ++i)
64 {
65 int d_cur;
66 #pragma omp target device(i) map(from:d_cur)
67 d_cur = device_arch ();
68 if (d_cur == d)
69 return 1;
70 }
71
72 return 0;
73}
74
75int
76any_device_arch_intel_mic ()
77{
78 return any_device_arch (GOMP_DEVICE_INTEL_MIC);
79}