! { 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