33 lines
698 B
Fortran
33 lines
698 B
Fortran
! { 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
|