aboutsummaryrefslogtreecommitdiff
path: root/libgomp/testsuite/libgomp.fortran/declare-variant-1.f90
blob: e6f69dccb4940b68ea574bc1f22bfe74e68111bb (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
! { dg-do run }

program main
  implicit none

  integer :: v
  !$omp target map(from:v)
  v = on ()
  !$omp end target

  select case (v)
    case default
      write (*,*) "Host fallback or unknown offloading"
    case (1)
      write (*,*) "Offloading to NVidia PTX"
    case (2)
      write (*,*) "Offloading to AMD GCN"
  end select
contains
  integer function on_nvptx ()
    on_nvptx = 1
  end function

  integer function on_gcn ()
    on_gcn = 2
  end function

  integer function on ()
    !$omp declare variant (on_nvptx) match(construct={target},device={arch(nvptx)})
    !$omp declare variant (on_gcn) match(construct={target},device={arch(gcn)})
    on = 0
  end function
end program