aboutsummaryrefslogtreecommitdiff
path: root/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
blob: 3fb5021d67ea277a9cf9fe6f0128378340a9466f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <omp.h>
#include <gomp-constants.h>

/* static */ int
device_arch_nvptx (void)
{
  return GOMP_DEVICE_NVIDIA_PTX;
}

/* static */ int
device_arch_gcn (void)
{
  return GOMP_DEVICE_GCN;
}

#pragma omp declare variant (device_arch_nvptx) match(construct={target},device={arch(nvptx)})
#pragma omp declare variant (device_arch_gcn) match(construct={target},device={arch(gcn)})
/* static */ int
device_arch (void)
{
  return GOMP_DEVICE_DEFAULT;
}

static int
on_device_arch (int d)
{
  int d_cur;
  #pragma omp target map(from:d_cur)
  d_cur = device_arch ();

  return d_cur == d;
}

int
on_device_arch_nvptx ()
{
  return on_device_arch (GOMP_DEVICE_NVIDIA_PTX);
}

int
on_device_arch_gcn ()
{
  return on_device_arch (GOMP_DEVICE_GCN);
}