1module main 2 implicit none 3contains 4 function f1 (x, y, z) 5 real (kind = 8) :: f1 6 integer, intent(in) :: x 7 integer (kind = 8), intent(in) :: y 8 real :: z 9 10 f1 = 0.0 11 end function 12 13 function f2 (x, y, z) 14 real (kind = 8) :: f2 15 integer, intent(in) :: x 16 integer (kind = 8), intent(in) :: y 17 real :: z 18 19 f2 = 0.0 20 end function 21 22 function f3 (x, y, z) 23 real (kind = 8) :: f3 24 integer, intent(in) :: x 25 integer (kind = 8), intent(in) :: y 26 real :: z 27 !$omp declare variant (f1) match (user={condition(0)},construct={parallel}) 28 f3 = 0.0 29 end function 30 31 function f4 (x, y, z) 32 real (kind = 8) :: f4 33 integer, intent(in) :: x 34 integer (kind = 8), intent(in) :: y 35 real :: z 36 !$omp declare variant (f1) match (construct={parallel},user={condition(score(1):1)}) 37 f4 = 0.0 38 end function 39 40 function f5 (x, y, z) 41 real (kind = 8) :: f5 42 integer, intent(in) :: x 43 integer (kind = 8), intent(in) :: y 44 real :: z 45 f5 = 0.0 46 end function 47 48 function f6 (x, y, z) 49 real (kind = 8) :: f6 50 integer, intent(in) :: x 51 integer (kind = 8), intent(in) :: y 52 real :: z 53 !$omp declare variant (f5) match (user={condition(0)}) ! { dg-error "'f5' used as a variant with incompatible 'construct' selector sets" } 54 f6 = 0.0 55 end function 56 57 function f7 (x, y, z) 58 real (kind = 8) :: f7 59 integer, intent(in) :: x 60 integer (kind = 8), intent(in) :: y 61 real :: z 62 !$omp declare variant (f5) match (construct={parallel},user={condition(score(1):1)}) 63 f7 = 0.0 64 end function 65 66 function f8 (x, y, z) 67 real (kind = 8) :: f8 68 integer, intent(in) :: x 69 integer (kind = 8), intent(in) :: y 70 real :: z 71 f8 = 0.0 72 end function 73 74 function f9 (x, y, z) 75 real (kind = 8) :: f9 76 integer, intent(in) :: x 77 integer (kind = 8), intent(in) :: y 78 real :: z 79 !$omp declare variant (f8) match (user={condition(0)},construct={do}) ! { dg-error "'f8' used as a variant with incompatible 'construct' selector sets" } 80 f9 = 0.0 81 end function 82 83 function f10 (x, y, z) 84 real (kind = 8) :: f10 85 integer, intent(in) :: x 86 integer (kind = 8), intent(in) :: y 87 real :: z 88 !$omp declare variant (f8) match (user={condition(1)}) 89 f10 = 0.0 90 end function 91 92 function f11 (x, y, z) 93 real (kind = 8) :: f11 94 integer, intent(in) :: x 95 integer (kind = 8), intent(in) :: y 96 real :: z 97 f11 = 0.0 98 end function 99 100 function f12 (x, y, z) 101 real (kind = 8) :: f12 102 integer, intent(in) :: x 103 integer (kind = 8), intent(in) :: y 104 real :: z 105 !$omp declare variant (f11) match (construct={target,teams,parallel,do}) ! { dg-error "'f11' used as a variant with incompatible 'construct' selector sets" } 106 f12 = 0.0 107 end function 108 109 function f13 (x, y, z) 110 real (kind = 8) :: f13 111 integer, intent(in) :: x 112 integer (kind = 8), intent(in) :: y 113 real :: z 114 !$omp declare variant (f11) match (user={condition(score(1):1)},construct={target,teams,parallel,do}) ! { dg-error "'f11' used as a variant with incompatible 'construct' selector sets" } 115 f13 = 0.0 116 end function 117 118 function f14 (x, y, z) 119 real (kind = 8) :: f14 120 integer, intent(in) :: x 121 integer (kind = 8), intent(in) :: y 122 real :: z 123 !$omp declare variant (f11) match (implementation={vendor(gnu)},construct={target,teams,parallel}) ! { dg-error "'f11' used as a variant with incompatible 'construct' selector sets" } 124 f14 = 0.0 125 end function 126 127 function f15 (x, y, z) 128 real (kind = 8) :: f15 129 integer, intent(in) :: x 130 integer (kind = 8), intent(in) :: y 131 real :: z 132 !$omp declare variant (f11) match (device={kind(any)},construct={teams,parallel}) 133 f15 = 0.0 134 end function 135 136 function f16 (x, y, z) 137 real (kind = 8) :: f16 138 integer, intent(in) :: x 139 integer (kind = 8), intent(in) :: y 140 real :: z 141 f16 = 0.0 142 end function 143 144 function f17 (x, y, z) 145 real (kind = 8) :: f17 146 integer, intent(in) :: x 147 integer (kind = 8), intent(in) :: y 148 real :: z 149 !$omp declare variant (f16) match (construct={teams,parallel}) ! { dg-error "'f16' used as a variant with incompatible 'construct' selector sets" } 150 f17 = 0.0 151 end function 152 153 function f18 (x, y, z) 154 real (kind = 8) :: f18 155 integer, intent(in) :: x 156 integer (kind = 8), intent(in) :: y 157 real :: z 158 !$omp declare variant (f16) match(construct={teams,parallel,do}) 159 f18 = 0.0 160 end function 161 162 function f19 (x, y, z) 163 real (kind = 8) :: f19 164 integer, intent(in) :: x 165 integer (kind = 8), intent(in) :: y 166 real :: z 167 f19 = 0.0 168 end function 169 170 function f20 (x, y, z) 171 real (kind = 8) :: f20 172 integer, intent(in) :: x 173 integer (kind = 8), intent(in) :: y 174 real :: z 175 !$omp declare variant (f19) match (construct={parallel}) ! { dg-error "'f19' used as a variant with incompatible 'construct' selector sets" } 176 f20 = 0.0 177 end function 178 179 function f21 (x, y, z) 180 real (kind = 8) :: f21 181 integer, intent(in) :: x 182 integer (kind = 8), intent(in) :: y 183 real :: z 184 !$omp declare variant (f19) match (construct={do},implementation={vendor(gnu,llvm)}) 185 f21 = 0.0 186 end function 187 188end module 189