1/* { dg-do run } */
2
3#include <stdlib.h>
4#include <openacc.h>
5
6int
7main (int argc, char **argv)
8{
9  int i;
10  int num_devices;
11  int devnum;
12  acc_device_t devtype = acc_device_host;
13
14#if ACC_DEVICE_TYPE_nvidia
15  devtype = acc_device_nvidia;
16#endif
17
18  num_devices = acc_get_num_devices (devtype);
19  if (num_devices == 0)
20    return 0;
21
22  acc_init (devtype);
23
24  for (i = 0; i < num_devices; i++)
25    {
26      acc_set_device_num (i, devtype);
27      devnum = acc_get_device_num (devtype);
28      if (devnum != i)
29	abort ();
30    }
31
32  acc_shutdown (devtype);
33
34  num_devices = acc_get_num_devices (devtype);
35  if (num_devices == 0)
36    abort ();
37
38  for (i = 0; i < num_devices; i++)
39    {
40      acc_set_device_num (i, devtype);
41      devnum = acc_get_device_num (devtype);
42      if (devnum != i)
43	abort ();
44    }
45
46  acc_shutdown (devtype);
47
48  acc_init (devtype);
49
50  acc_set_device_num (0, devtype);
51
52  devnum = acc_get_device_num (devtype);
53  if (devnum != 0)
54    abort ();
55
56  if (num_devices > 1)
57    {
58      acc_set_device_num (1, (acc_device_t) 0);
59
60      devnum = acc_get_device_num (devtype);
61      if (devnum != 1)
62	abort ();
63  }
64
65  acc_shutdown (devtype);
66
67  return 0;
68}
69
70/* { dg-output "" } */
71