1program main 2 implicit none 3contains 4 function f6 (x, y, z) 5 real (kind = 8) :: f6 6 integer, intent(in) :: x 7 integer (kind = 8), intent(in) :: y 8 real (kind = 4), intent(in) :: z 9 10 interface 11 function f1 (x, y, z) 12 real (kind = 8) :: f1 13 integer, intent(in) :: x 14 integer (kind = 8), intent(in) :: y 15 real (kind = 4), intent(in) :: z 16 end function 17 18 function f2 (x, y, z) 19 real (kind = 8) :: f2 20 integer, intent(in) :: x 21 integer (kind = 8), intent(in) :: y 22 real (kind = 4), intent(in) :: z 23 end function 24 25 function f3 (x, y, z) 26 real (kind = 8) :: f3 27 integer, intent(in) :: x 28 integer (kind = 8), intent(in) :: y 29 real (kind = 4), intent(in) :: z 30 end function 31 32 function f4 (x, y, z) 33 real (kind = 8) :: f4 34 integer, intent(in) :: x 35 integer (kind = 8), intent(in) :: y 36 real (kind = 4), intent(in) :: z 37 end function 38 39 function f5 (x, y, z) 40 real (kind = 8) :: f5 41 integer, intent(in) :: x 42 integer (kind = 8), intent(in) :: y 43 real (kind = 4), intent(in) :: z 44 end function 45 end interface 46 47 !$omp declare variant (f1) match (user={condition(1)}) 48 !$omp declare variant (f2) match (user={condition(score(1):1)}) 49 !$omp declare variant (f3) match (user={condition(score(3):1)}) 50 !$omp declare variant (f4) match (user={condition(score(2):1)}) 51 !$omp declare variant (f5) match (implementation={vendor(gnu)}) 52 53 f6 = z + x + y 54 end function 55 56 function test (x) 57 real (kind = 8) :: test 58 integer, intent(in) :: x 59 60 test = f6 (x, int (x, kind = 8), 3.5) 61 end function 62end program 63