1 // AUTOGENERATED, DO NOT EDIT 2 3 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE 4 # define CV_TRY_SSE 1 5 # define CV_CPU_FORCE_SSE 1 6 # define CV_CPU_HAS_SUPPORT_SSE 1 7 # define CV_CPU_CALL_SSE(fn, args) return (cpu_baseline::fn args) 8 # define CV_CPU_CALL_SSE_(fn, args) return (opt_SSE::fn args) 9 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE 10 # define CV_TRY_SSE 1 11 # define CV_CPU_FORCE_SSE 0 12 # define CV_CPU_HAS_SUPPORT_SSE (cv::checkHardwareSupport(CV_CPU_SSE)) 13 # define CV_CPU_CALL_SSE(fn, args) if (CV_CPU_HAS_SUPPORT_SSE) return (opt_SSE::fn args) 14 # define CV_CPU_CALL_SSE_(fn, args) if (CV_CPU_HAS_SUPPORT_SSE) return (opt_SSE::fn args) 15 #else 16 # define CV_TRY_SSE 0 17 # define CV_CPU_FORCE_SSE 0 18 # define CV_CPU_HAS_SUPPORT_SSE 0 19 # define CV_CPU_CALL_SSE(fn, args) 20 # define CV_CPU_CALL_SSE_(fn, args) 21 #endif 22 #define __CV_CPU_DISPATCH_CHAIN_SSE(fn, args, mode, ...) CV_CPU_CALL_SSE(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 23 24 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE2 25 # define CV_TRY_SSE2 1 26 # define CV_CPU_FORCE_SSE2 1 27 # define CV_CPU_HAS_SUPPORT_SSE2 1 28 # define CV_CPU_CALL_SSE2(fn, args) return (cpu_baseline::fn args) 29 # define CV_CPU_CALL_SSE2_(fn, args) return (opt_SSE2::fn args) 30 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE2 31 # define CV_TRY_SSE2 1 32 # define CV_CPU_FORCE_SSE2 0 33 # define CV_CPU_HAS_SUPPORT_SSE2 (cv::checkHardwareSupport(CV_CPU_SSE2)) 34 # define CV_CPU_CALL_SSE2(fn, args) if (CV_CPU_HAS_SUPPORT_SSE2) return (opt_SSE2::fn args) 35 # define CV_CPU_CALL_SSE2_(fn, args) if (CV_CPU_HAS_SUPPORT_SSE2) return (opt_SSE2::fn args) 36 #else 37 # define CV_TRY_SSE2 0 38 # define CV_CPU_FORCE_SSE2 0 39 # define CV_CPU_HAS_SUPPORT_SSE2 0 40 # define CV_CPU_CALL_SSE2(fn, args) 41 # define CV_CPU_CALL_SSE2_(fn, args) 42 #endif 43 #define __CV_CPU_DISPATCH_CHAIN_SSE2(fn, args, mode, ...) CV_CPU_CALL_SSE2(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 44 45 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE3 46 # define CV_TRY_SSE3 1 47 # define CV_CPU_FORCE_SSE3 1 48 # define CV_CPU_HAS_SUPPORT_SSE3 1 49 # define CV_CPU_CALL_SSE3(fn, args) return (cpu_baseline::fn args) 50 # define CV_CPU_CALL_SSE3_(fn, args) return (opt_SSE3::fn args) 51 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE3 52 # define CV_TRY_SSE3 1 53 # define CV_CPU_FORCE_SSE3 0 54 # define CV_CPU_HAS_SUPPORT_SSE3 (cv::checkHardwareSupport(CV_CPU_SSE3)) 55 # define CV_CPU_CALL_SSE3(fn, args) if (CV_CPU_HAS_SUPPORT_SSE3) return (opt_SSE3::fn args) 56 # define CV_CPU_CALL_SSE3_(fn, args) if (CV_CPU_HAS_SUPPORT_SSE3) return (opt_SSE3::fn args) 57 #else 58 # define CV_TRY_SSE3 0 59 # define CV_CPU_FORCE_SSE3 0 60 # define CV_CPU_HAS_SUPPORT_SSE3 0 61 # define CV_CPU_CALL_SSE3(fn, args) 62 # define CV_CPU_CALL_SSE3_(fn, args) 63 #endif 64 #define __CV_CPU_DISPATCH_CHAIN_SSE3(fn, args, mode, ...) CV_CPU_CALL_SSE3(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 65 66 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSSE3 67 # define CV_TRY_SSSE3 1 68 # define CV_CPU_FORCE_SSSE3 1 69 # define CV_CPU_HAS_SUPPORT_SSSE3 1 70 # define CV_CPU_CALL_SSSE3(fn, args) return (cpu_baseline::fn args) 71 # define CV_CPU_CALL_SSSE3_(fn, args) return (opt_SSSE3::fn args) 72 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSSE3 73 # define CV_TRY_SSSE3 1 74 # define CV_CPU_FORCE_SSSE3 0 75 # define CV_CPU_HAS_SUPPORT_SSSE3 (cv::checkHardwareSupport(CV_CPU_SSSE3)) 76 # define CV_CPU_CALL_SSSE3(fn, args) if (CV_CPU_HAS_SUPPORT_SSSE3) return (opt_SSSE3::fn args) 77 # define CV_CPU_CALL_SSSE3_(fn, args) if (CV_CPU_HAS_SUPPORT_SSSE3) return (opt_SSSE3::fn args) 78 #else 79 # define CV_TRY_SSSE3 0 80 # define CV_CPU_FORCE_SSSE3 0 81 # define CV_CPU_HAS_SUPPORT_SSSE3 0 82 # define CV_CPU_CALL_SSSE3(fn, args) 83 # define CV_CPU_CALL_SSSE3_(fn, args) 84 #endif 85 #define __CV_CPU_DISPATCH_CHAIN_SSSE3(fn, args, mode, ...) CV_CPU_CALL_SSSE3(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 86 87 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE4_1 88 # define CV_TRY_SSE4_1 1 89 # define CV_CPU_FORCE_SSE4_1 1 90 # define CV_CPU_HAS_SUPPORT_SSE4_1 1 91 # define CV_CPU_CALL_SSE4_1(fn, args) return (cpu_baseline::fn args) 92 # define CV_CPU_CALL_SSE4_1_(fn, args) return (opt_SSE4_1::fn args) 93 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE4_1 94 # define CV_TRY_SSE4_1 1 95 # define CV_CPU_FORCE_SSE4_1 0 96 # define CV_CPU_HAS_SUPPORT_SSE4_1 (cv::checkHardwareSupport(CV_CPU_SSE4_1)) 97 # define CV_CPU_CALL_SSE4_1(fn, args) if (CV_CPU_HAS_SUPPORT_SSE4_1) return (opt_SSE4_1::fn args) 98 # define CV_CPU_CALL_SSE4_1_(fn, args) if (CV_CPU_HAS_SUPPORT_SSE4_1) return (opt_SSE4_1::fn args) 99 #else 100 # define CV_TRY_SSE4_1 0 101 # define CV_CPU_FORCE_SSE4_1 0 102 # define CV_CPU_HAS_SUPPORT_SSE4_1 0 103 # define CV_CPU_CALL_SSE4_1(fn, args) 104 # define CV_CPU_CALL_SSE4_1_(fn, args) 105 #endif 106 #define __CV_CPU_DISPATCH_CHAIN_SSE4_1(fn, args, mode, ...) CV_CPU_CALL_SSE4_1(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 107 108 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE4_2 109 # define CV_TRY_SSE4_2 1 110 # define CV_CPU_FORCE_SSE4_2 1 111 # define CV_CPU_HAS_SUPPORT_SSE4_2 1 112 # define CV_CPU_CALL_SSE4_2(fn, args) return (cpu_baseline::fn args) 113 # define CV_CPU_CALL_SSE4_2_(fn, args) return (opt_SSE4_2::fn args) 114 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE4_2 115 # define CV_TRY_SSE4_2 1 116 # define CV_CPU_FORCE_SSE4_2 0 117 # define CV_CPU_HAS_SUPPORT_SSE4_2 (cv::checkHardwareSupport(CV_CPU_SSE4_2)) 118 # define CV_CPU_CALL_SSE4_2(fn, args) if (CV_CPU_HAS_SUPPORT_SSE4_2) return (opt_SSE4_2::fn args) 119 # define CV_CPU_CALL_SSE4_2_(fn, args) if (CV_CPU_HAS_SUPPORT_SSE4_2) return (opt_SSE4_2::fn args) 120 #else 121 # define CV_TRY_SSE4_2 0 122 # define CV_CPU_FORCE_SSE4_2 0 123 # define CV_CPU_HAS_SUPPORT_SSE4_2 0 124 # define CV_CPU_CALL_SSE4_2(fn, args) 125 # define CV_CPU_CALL_SSE4_2_(fn, args) 126 #endif 127 #define __CV_CPU_DISPATCH_CHAIN_SSE4_2(fn, args, mode, ...) CV_CPU_CALL_SSE4_2(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 128 129 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_POPCNT 130 # define CV_TRY_POPCNT 1 131 # define CV_CPU_FORCE_POPCNT 1 132 # define CV_CPU_HAS_SUPPORT_POPCNT 1 133 # define CV_CPU_CALL_POPCNT(fn, args) return (cpu_baseline::fn args) 134 # define CV_CPU_CALL_POPCNT_(fn, args) return (opt_POPCNT::fn args) 135 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_POPCNT 136 # define CV_TRY_POPCNT 1 137 # define CV_CPU_FORCE_POPCNT 0 138 # define CV_CPU_HAS_SUPPORT_POPCNT (cv::checkHardwareSupport(CV_CPU_POPCNT)) 139 # define CV_CPU_CALL_POPCNT(fn, args) if (CV_CPU_HAS_SUPPORT_POPCNT) return (opt_POPCNT::fn args) 140 # define CV_CPU_CALL_POPCNT_(fn, args) if (CV_CPU_HAS_SUPPORT_POPCNT) return (opt_POPCNT::fn args) 141 #else 142 # define CV_TRY_POPCNT 0 143 # define CV_CPU_FORCE_POPCNT 0 144 # define CV_CPU_HAS_SUPPORT_POPCNT 0 145 # define CV_CPU_CALL_POPCNT(fn, args) 146 # define CV_CPU_CALL_POPCNT_(fn, args) 147 #endif 148 #define __CV_CPU_DISPATCH_CHAIN_POPCNT(fn, args, mode, ...) CV_CPU_CALL_POPCNT(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 149 150 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX 151 # define CV_TRY_AVX 1 152 # define CV_CPU_FORCE_AVX 1 153 # define CV_CPU_HAS_SUPPORT_AVX 1 154 # define CV_CPU_CALL_AVX(fn, args) return (cpu_baseline::fn args) 155 # define CV_CPU_CALL_AVX_(fn, args) return (opt_AVX::fn args) 156 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX 157 # define CV_TRY_AVX 1 158 # define CV_CPU_FORCE_AVX 0 159 # define CV_CPU_HAS_SUPPORT_AVX (cv::checkHardwareSupport(CV_CPU_AVX)) 160 # define CV_CPU_CALL_AVX(fn, args) if (CV_CPU_HAS_SUPPORT_AVX) return (opt_AVX::fn args) 161 # define CV_CPU_CALL_AVX_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX) return (opt_AVX::fn args) 162 #else 163 # define CV_TRY_AVX 0 164 # define CV_CPU_FORCE_AVX 0 165 # define CV_CPU_HAS_SUPPORT_AVX 0 166 # define CV_CPU_CALL_AVX(fn, args) 167 # define CV_CPU_CALL_AVX_(fn, args) 168 #endif 169 #define __CV_CPU_DISPATCH_CHAIN_AVX(fn, args, mode, ...) CV_CPU_CALL_AVX(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 170 171 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_FP16 172 # define CV_TRY_FP16 1 173 # define CV_CPU_FORCE_FP16 1 174 # define CV_CPU_HAS_SUPPORT_FP16 1 175 # define CV_CPU_CALL_FP16(fn, args) return (cpu_baseline::fn args) 176 # define CV_CPU_CALL_FP16_(fn, args) return (opt_FP16::fn args) 177 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_FP16 178 # define CV_TRY_FP16 1 179 # define CV_CPU_FORCE_FP16 0 180 # define CV_CPU_HAS_SUPPORT_FP16 (cv::checkHardwareSupport(CV_CPU_FP16)) 181 # define CV_CPU_CALL_FP16(fn, args) if (CV_CPU_HAS_SUPPORT_FP16) return (opt_FP16::fn args) 182 # define CV_CPU_CALL_FP16_(fn, args) if (CV_CPU_HAS_SUPPORT_FP16) return (opt_FP16::fn args) 183 #else 184 # define CV_TRY_FP16 0 185 # define CV_CPU_FORCE_FP16 0 186 # define CV_CPU_HAS_SUPPORT_FP16 0 187 # define CV_CPU_CALL_FP16(fn, args) 188 # define CV_CPU_CALL_FP16_(fn, args) 189 #endif 190 #define __CV_CPU_DISPATCH_CHAIN_FP16(fn, args, mode, ...) CV_CPU_CALL_FP16(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 191 192 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX2 193 # define CV_TRY_AVX2 1 194 # define CV_CPU_FORCE_AVX2 1 195 # define CV_CPU_HAS_SUPPORT_AVX2 1 196 # define CV_CPU_CALL_AVX2(fn, args) return (cpu_baseline::fn args) 197 # define CV_CPU_CALL_AVX2_(fn, args) return (opt_AVX2::fn args) 198 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX2 199 # define CV_TRY_AVX2 1 200 # define CV_CPU_FORCE_AVX2 0 201 # define CV_CPU_HAS_SUPPORT_AVX2 (cv::checkHardwareSupport(CV_CPU_AVX2)) 202 # define CV_CPU_CALL_AVX2(fn, args) if (CV_CPU_HAS_SUPPORT_AVX2) return (opt_AVX2::fn args) 203 # define CV_CPU_CALL_AVX2_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX2) return (opt_AVX2::fn args) 204 #else 205 # define CV_TRY_AVX2 0 206 # define CV_CPU_FORCE_AVX2 0 207 # define CV_CPU_HAS_SUPPORT_AVX2 0 208 # define CV_CPU_CALL_AVX2(fn, args) 209 # define CV_CPU_CALL_AVX2_(fn, args) 210 #endif 211 #define __CV_CPU_DISPATCH_CHAIN_AVX2(fn, args, mode, ...) CV_CPU_CALL_AVX2(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 212 213 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_FMA3 214 # define CV_TRY_FMA3 1 215 # define CV_CPU_FORCE_FMA3 1 216 # define CV_CPU_HAS_SUPPORT_FMA3 1 217 # define CV_CPU_CALL_FMA3(fn, args) return (cpu_baseline::fn args) 218 # define CV_CPU_CALL_FMA3_(fn, args) return (opt_FMA3::fn args) 219 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_FMA3 220 # define CV_TRY_FMA3 1 221 # define CV_CPU_FORCE_FMA3 0 222 # define CV_CPU_HAS_SUPPORT_FMA3 (cv::checkHardwareSupport(CV_CPU_FMA3)) 223 # define CV_CPU_CALL_FMA3(fn, args) if (CV_CPU_HAS_SUPPORT_FMA3) return (opt_FMA3::fn args) 224 # define CV_CPU_CALL_FMA3_(fn, args) if (CV_CPU_HAS_SUPPORT_FMA3) return (opt_FMA3::fn args) 225 #else 226 # define CV_TRY_FMA3 0 227 # define CV_CPU_FORCE_FMA3 0 228 # define CV_CPU_HAS_SUPPORT_FMA3 0 229 # define CV_CPU_CALL_FMA3(fn, args) 230 # define CV_CPU_CALL_FMA3_(fn, args) 231 #endif 232 #define __CV_CPU_DISPATCH_CHAIN_FMA3(fn, args, mode, ...) CV_CPU_CALL_FMA3(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 233 234 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX_512F 235 # define CV_TRY_AVX_512F 1 236 # define CV_CPU_FORCE_AVX_512F 1 237 # define CV_CPU_HAS_SUPPORT_AVX_512F 1 238 # define CV_CPU_CALL_AVX_512F(fn, args) return (cpu_baseline::fn args) 239 # define CV_CPU_CALL_AVX_512F_(fn, args) return (opt_AVX_512F::fn args) 240 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX_512F 241 # define CV_TRY_AVX_512F 1 242 # define CV_CPU_FORCE_AVX_512F 0 243 # define CV_CPU_HAS_SUPPORT_AVX_512F (cv::checkHardwareSupport(CV_CPU_AVX_512F)) 244 # define CV_CPU_CALL_AVX_512F(fn, args) if (CV_CPU_HAS_SUPPORT_AVX_512F) return (opt_AVX_512F::fn args) 245 # define CV_CPU_CALL_AVX_512F_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX_512F) return (opt_AVX_512F::fn args) 246 #else 247 # define CV_TRY_AVX_512F 0 248 # define CV_CPU_FORCE_AVX_512F 0 249 # define CV_CPU_HAS_SUPPORT_AVX_512F 0 250 # define CV_CPU_CALL_AVX_512F(fn, args) 251 # define CV_CPU_CALL_AVX_512F_(fn, args) 252 #endif 253 #define __CV_CPU_DISPATCH_CHAIN_AVX_512F(fn, args, mode, ...) CV_CPU_CALL_AVX_512F(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 254 255 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX512_COMMON 256 # define CV_TRY_AVX512_COMMON 1 257 # define CV_CPU_FORCE_AVX512_COMMON 1 258 # define CV_CPU_HAS_SUPPORT_AVX512_COMMON 1 259 # define CV_CPU_CALL_AVX512_COMMON(fn, args) return (cpu_baseline::fn args) 260 # define CV_CPU_CALL_AVX512_COMMON_(fn, args) return (opt_AVX512_COMMON::fn args) 261 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX512_COMMON 262 # define CV_TRY_AVX512_COMMON 1 263 # define CV_CPU_FORCE_AVX512_COMMON 0 264 # define CV_CPU_HAS_SUPPORT_AVX512_COMMON (cv::checkHardwareSupport(CV_CPU_AVX512_COMMON)) 265 # define CV_CPU_CALL_AVX512_COMMON(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_COMMON) return (opt_AVX512_COMMON::fn args) 266 # define CV_CPU_CALL_AVX512_COMMON_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_COMMON) return (opt_AVX512_COMMON::fn args) 267 #else 268 # define CV_TRY_AVX512_COMMON 0 269 # define CV_CPU_FORCE_AVX512_COMMON 0 270 # define CV_CPU_HAS_SUPPORT_AVX512_COMMON 0 271 # define CV_CPU_CALL_AVX512_COMMON(fn, args) 272 # define CV_CPU_CALL_AVX512_COMMON_(fn, args) 273 #endif 274 #define __CV_CPU_DISPATCH_CHAIN_AVX512_COMMON(fn, args, mode, ...) CV_CPU_CALL_AVX512_COMMON(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 275 276 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX512_KNL 277 # define CV_TRY_AVX512_KNL 1 278 # define CV_CPU_FORCE_AVX512_KNL 1 279 # define CV_CPU_HAS_SUPPORT_AVX512_KNL 1 280 # define CV_CPU_CALL_AVX512_KNL(fn, args) return (cpu_baseline::fn args) 281 # define CV_CPU_CALL_AVX512_KNL_(fn, args) return (opt_AVX512_KNL::fn args) 282 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX512_KNL 283 # define CV_TRY_AVX512_KNL 1 284 # define CV_CPU_FORCE_AVX512_KNL 0 285 # define CV_CPU_HAS_SUPPORT_AVX512_KNL (cv::checkHardwareSupport(CV_CPU_AVX512_KNL)) 286 # define CV_CPU_CALL_AVX512_KNL(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_KNL) return (opt_AVX512_KNL::fn args) 287 # define CV_CPU_CALL_AVX512_KNL_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_KNL) return (opt_AVX512_KNL::fn args) 288 #else 289 # define CV_TRY_AVX512_KNL 0 290 # define CV_CPU_FORCE_AVX512_KNL 0 291 # define CV_CPU_HAS_SUPPORT_AVX512_KNL 0 292 # define CV_CPU_CALL_AVX512_KNL(fn, args) 293 # define CV_CPU_CALL_AVX512_KNL_(fn, args) 294 #endif 295 #define __CV_CPU_DISPATCH_CHAIN_AVX512_KNL(fn, args, mode, ...) CV_CPU_CALL_AVX512_KNL(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 296 297 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX512_KNM 298 # define CV_TRY_AVX512_KNM 1 299 # define CV_CPU_FORCE_AVX512_KNM 1 300 # define CV_CPU_HAS_SUPPORT_AVX512_KNM 1 301 # define CV_CPU_CALL_AVX512_KNM(fn, args) return (cpu_baseline::fn args) 302 # define CV_CPU_CALL_AVX512_KNM_(fn, args) return (opt_AVX512_KNM::fn args) 303 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX512_KNM 304 # define CV_TRY_AVX512_KNM 1 305 # define CV_CPU_FORCE_AVX512_KNM 0 306 # define CV_CPU_HAS_SUPPORT_AVX512_KNM (cv::checkHardwareSupport(CV_CPU_AVX512_KNM)) 307 # define CV_CPU_CALL_AVX512_KNM(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_KNM) return (opt_AVX512_KNM::fn args) 308 # define CV_CPU_CALL_AVX512_KNM_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_KNM) return (opt_AVX512_KNM::fn args) 309 #else 310 # define CV_TRY_AVX512_KNM 0 311 # define CV_CPU_FORCE_AVX512_KNM 0 312 # define CV_CPU_HAS_SUPPORT_AVX512_KNM 0 313 # define CV_CPU_CALL_AVX512_KNM(fn, args) 314 # define CV_CPU_CALL_AVX512_KNM_(fn, args) 315 #endif 316 #define __CV_CPU_DISPATCH_CHAIN_AVX512_KNM(fn, args, mode, ...) CV_CPU_CALL_AVX512_KNM(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 317 318 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX512_SKX 319 # define CV_TRY_AVX512_SKX 1 320 # define CV_CPU_FORCE_AVX512_SKX 1 321 # define CV_CPU_HAS_SUPPORT_AVX512_SKX 1 322 # define CV_CPU_CALL_AVX512_SKX(fn, args) return (cpu_baseline::fn args) 323 # define CV_CPU_CALL_AVX512_SKX_(fn, args) return (opt_AVX512_SKX::fn args) 324 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX512_SKX 325 # define CV_TRY_AVX512_SKX 1 326 # define CV_CPU_FORCE_AVX512_SKX 0 327 # define CV_CPU_HAS_SUPPORT_AVX512_SKX (cv::checkHardwareSupport(CV_CPU_AVX512_SKX)) 328 # define CV_CPU_CALL_AVX512_SKX(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_SKX) return (opt_AVX512_SKX::fn args) 329 # define CV_CPU_CALL_AVX512_SKX_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_SKX) return (opt_AVX512_SKX::fn args) 330 #else 331 # define CV_TRY_AVX512_SKX 0 332 # define CV_CPU_FORCE_AVX512_SKX 0 333 # define CV_CPU_HAS_SUPPORT_AVX512_SKX 0 334 # define CV_CPU_CALL_AVX512_SKX(fn, args) 335 # define CV_CPU_CALL_AVX512_SKX_(fn, args) 336 #endif 337 #define __CV_CPU_DISPATCH_CHAIN_AVX512_SKX(fn, args, mode, ...) CV_CPU_CALL_AVX512_SKX(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 338 339 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX512_CNL 340 # define CV_TRY_AVX512_CNL 1 341 # define CV_CPU_FORCE_AVX512_CNL 1 342 # define CV_CPU_HAS_SUPPORT_AVX512_CNL 1 343 # define CV_CPU_CALL_AVX512_CNL(fn, args) return (cpu_baseline::fn args) 344 # define CV_CPU_CALL_AVX512_CNL_(fn, args) return (opt_AVX512_CNL::fn args) 345 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX512_CNL 346 # define CV_TRY_AVX512_CNL 1 347 # define CV_CPU_FORCE_AVX512_CNL 0 348 # define CV_CPU_HAS_SUPPORT_AVX512_CNL (cv::checkHardwareSupport(CV_CPU_AVX512_CNL)) 349 # define CV_CPU_CALL_AVX512_CNL(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_CNL) return (opt_AVX512_CNL::fn args) 350 # define CV_CPU_CALL_AVX512_CNL_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_CNL) return (opt_AVX512_CNL::fn args) 351 #else 352 # define CV_TRY_AVX512_CNL 0 353 # define CV_CPU_FORCE_AVX512_CNL 0 354 # define CV_CPU_HAS_SUPPORT_AVX512_CNL 0 355 # define CV_CPU_CALL_AVX512_CNL(fn, args) 356 # define CV_CPU_CALL_AVX512_CNL_(fn, args) 357 #endif 358 #define __CV_CPU_DISPATCH_CHAIN_AVX512_CNL(fn, args, mode, ...) CV_CPU_CALL_AVX512_CNL(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 359 360 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX512_CLX 361 # define CV_TRY_AVX512_CLX 1 362 # define CV_CPU_FORCE_AVX512_CLX 1 363 # define CV_CPU_HAS_SUPPORT_AVX512_CLX 1 364 # define CV_CPU_CALL_AVX512_CLX(fn, args) return (cpu_baseline::fn args) 365 # define CV_CPU_CALL_AVX512_CLX_(fn, args) return (opt_AVX512_CLX::fn args) 366 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX512_CLX 367 # define CV_TRY_AVX512_CLX 1 368 # define CV_CPU_FORCE_AVX512_CLX 0 369 # define CV_CPU_HAS_SUPPORT_AVX512_CLX (cv::checkHardwareSupport(CV_CPU_AVX512_CLX)) 370 # define CV_CPU_CALL_AVX512_CLX(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_CLX) return (opt_AVX512_CLX::fn args) 371 # define CV_CPU_CALL_AVX512_CLX_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_CLX) return (opt_AVX512_CLX::fn args) 372 #else 373 # define CV_TRY_AVX512_CLX 0 374 # define CV_CPU_FORCE_AVX512_CLX 0 375 # define CV_CPU_HAS_SUPPORT_AVX512_CLX 0 376 # define CV_CPU_CALL_AVX512_CLX(fn, args) 377 # define CV_CPU_CALL_AVX512_CLX_(fn, args) 378 #endif 379 #define __CV_CPU_DISPATCH_CHAIN_AVX512_CLX(fn, args, mode, ...) CV_CPU_CALL_AVX512_CLX(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 380 381 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX512_ICL 382 # define CV_TRY_AVX512_ICL 1 383 # define CV_CPU_FORCE_AVX512_ICL 1 384 # define CV_CPU_HAS_SUPPORT_AVX512_ICL 1 385 # define CV_CPU_CALL_AVX512_ICL(fn, args) return (cpu_baseline::fn args) 386 # define CV_CPU_CALL_AVX512_ICL_(fn, args) return (opt_AVX512_ICL::fn args) 387 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX512_ICL 388 # define CV_TRY_AVX512_ICL 1 389 # define CV_CPU_FORCE_AVX512_ICL 0 390 # define CV_CPU_HAS_SUPPORT_AVX512_ICL (cv::checkHardwareSupport(CV_CPU_AVX512_ICL)) 391 # define CV_CPU_CALL_AVX512_ICL(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_ICL) return (opt_AVX512_ICL::fn args) 392 # define CV_CPU_CALL_AVX512_ICL_(fn, args) if (CV_CPU_HAS_SUPPORT_AVX512_ICL) return (opt_AVX512_ICL::fn args) 393 #else 394 # define CV_TRY_AVX512_ICL 0 395 # define CV_CPU_FORCE_AVX512_ICL 0 396 # define CV_CPU_HAS_SUPPORT_AVX512_ICL 0 397 # define CV_CPU_CALL_AVX512_ICL(fn, args) 398 # define CV_CPU_CALL_AVX512_ICL_(fn, args) 399 #endif 400 #define __CV_CPU_DISPATCH_CHAIN_AVX512_ICL(fn, args, mode, ...) CV_CPU_CALL_AVX512_ICL(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 401 402 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_NEON 403 # define CV_TRY_NEON 1 404 # define CV_CPU_FORCE_NEON 1 405 # define CV_CPU_HAS_SUPPORT_NEON 1 406 # define CV_CPU_CALL_NEON(fn, args) return (cpu_baseline::fn args) 407 # define CV_CPU_CALL_NEON_(fn, args) return (opt_NEON::fn args) 408 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_NEON 409 # define CV_TRY_NEON 1 410 # define CV_CPU_FORCE_NEON 0 411 # define CV_CPU_HAS_SUPPORT_NEON (cv::checkHardwareSupport(CV_CPU_NEON)) 412 # define CV_CPU_CALL_NEON(fn, args) if (CV_CPU_HAS_SUPPORT_NEON) return (opt_NEON::fn args) 413 # define CV_CPU_CALL_NEON_(fn, args) if (CV_CPU_HAS_SUPPORT_NEON) return (opt_NEON::fn args) 414 #else 415 # define CV_TRY_NEON 0 416 # define CV_CPU_FORCE_NEON 0 417 # define CV_CPU_HAS_SUPPORT_NEON 0 418 # define CV_CPU_CALL_NEON(fn, args) 419 # define CV_CPU_CALL_NEON_(fn, args) 420 #endif 421 #define __CV_CPU_DISPATCH_CHAIN_NEON(fn, args, mode, ...) CV_CPU_CALL_NEON(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 422 423 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_MSA 424 # define CV_TRY_MSA 1 425 # define CV_CPU_FORCE_MSA 1 426 # define CV_CPU_HAS_SUPPORT_MSA 1 427 # define CV_CPU_CALL_MSA(fn, args) return (cpu_baseline::fn args) 428 # define CV_CPU_CALL_MSA_(fn, args) return (opt_MSA::fn args) 429 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_MSA 430 # define CV_TRY_MSA 1 431 # define CV_CPU_FORCE_MSA 0 432 # define CV_CPU_HAS_SUPPORT_MSA (cv::checkHardwareSupport(CV_CPU_MSA)) 433 # define CV_CPU_CALL_MSA(fn, args) if (CV_CPU_HAS_SUPPORT_MSA) return (opt_MSA::fn args) 434 # define CV_CPU_CALL_MSA_(fn, args) if (CV_CPU_HAS_SUPPORT_MSA) return (opt_MSA::fn args) 435 #else 436 # define CV_TRY_MSA 0 437 # define CV_CPU_FORCE_MSA 0 438 # define CV_CPU_HAS_SUPPORT_MSA 0 439 # define CV_CPU_CALL_MSA(fn, args) 440 # define CV_CPU_CALL_MSA_(fn, args) 441 #endif 442 #define __CV_CPU_DISPATCH_CHAIN_MSA(fn, args, mode, ...) CV_CPU_CALL_MSA(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 443 444 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_VSX 445 # define CV_TRY_VSX 1 446 # define CV_CPU_FORCE_VSX 1 447 # define CV_CPU_HAS_SUPPORT_VSX 1 448 # define CV_CPU_CALL_VSX(fn, args) return (cpu_baseline::fn args) 449 # define CV_CPU_CALL_VSX_(fn, args) return (opt_VSX::fn args) 450 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_VSX 451 # define CV_TRY_VSX 1 452 # define CV_CPU_FORCE_VSX 0 453 # define CV_CPU_HAS_SUPPORT_VSX (cv::checkHardwareSupport(CV_CPU_VSX)) 454 # define CV_CPU_CALL_VSX(fn, args) if (CV_CPU_HAS_SUPPORT_VSX) return (opt_VSX::fn args) 455 # define CV_CPU_CALL_VSX_(fn, args) if (CV_CPU_HAS_SUPPORT_VSX) return (opt_VSX::fn args) 456 #else 457 # define CV_TRY_VSX 0 458 # define CV_CPU_FORCE_VSX 0 459 # define CV_CPU_HAS_SUPPORT_VSX 0 460 # define CV_CPU_CALL_VSX(fn, args) 461 # define CV_CPU_CALL_VSX_(fn, args) 462 #endif 463 #define __CV_CPU_DISPATCH_CHAIN_VSX(fn, args, mode, ...) CV_CPU_CALL_VSX(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 464 465 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_VSX3 466 # define CV_TRY_VSX3 1 467 # define CV_CPU_FORCE_VSX3 1 468 # define CV_CPU_HAS_SUPPORT_VSX3 1 469 # define CV_CPU_CALL_VSX3(fn, args) return (cpu_baseline::fn args) 470 # define CV_CPU_CALL_VSX3_(fn, args) return (opt_VSX3::fn args) 471 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_VSX3 472 # define CV_TRY_VSX3 1 473 # define CV_CPU_FORCE_VSX3 0 474 # define CV_CPU_HAS_SUPPORT_VSX3 (cv::checkHardwareSupport(CV_CPU_VSX3)) 475 # define CV_CPU_CALL_VSX3(fn, args) if (CV_CPU_HAS_SUPPORT_VSX3) return (opt_VSX3::fn args) 476 # define CV_CPU_CALL_VSX3_(fn, args) if (CV_CPU_HAS_SUPPORT_VSX3) return (opt_VSX3::fn args) 477 #else 478 # define CV_TRY_VSX3 0 479 # define CV_CPU_FORCE_VSX3 0 480 # define CV_CPU_HAS_SUPPORT_VSX3 0 481 # define CV_CPU_CALL_VSX3(fn, args) 482 # define CV_CPU_CALL_VSX3_(fn, args) 483 #endif 484 #define __CV_CPU_DISPATCH_CHAIN_VSX3(fn, args, mode, ...) CV_CPU_CALL_VSX3(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 485 486 #if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_RVV 487 # define CV_TRY_RVV 1 488 # define CV_CPU_FORCE_RVV 1 489 # define CV_CPU_HAS_SUPPORT_RVV 1 490 # define CV_CPU_CALL_RVV(fn, args) return (cpu_baseline::fn args) 491 # define CV_CPU_CALL_RVV_(fn, args) return (opt_RVV::fn args) 492 #elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_RVV 493 # define CV_TRY_RVV 1 494 # define CV_CPU_FORCE_RVV 0 495 # define CV_CPU_HAS_SUPPORT_RVV (cv::checkHardwareSupport(CV_CPU_RVV)) 496 # define CV_CPU_CALL_RVV(fn, args) if (CV_CPU_HAS_SUPPORT_RVV) return (opt_RVV::fn args) 497 # define CV_CPU_CALL_RVV_(fn, args) if (CV_CPU_HAS_SUPPORT_RVV) return (opt_RVV::fn args) 498 #else 499 # define CV_TRY_RVV 0 500 # define CV_CPU_FORCE_RVV 0 501 # define CV_CPU_HAS_SUPPORT_RVV 0 502 # define CV_CPU_CALL_RVV(fn, args) 503 # define CV_CPU_CALL_RVV_(fn, args) 504 #endif 505 #define __CV_CPU_DISPATCH_CHAIN_RVV(fn, args, mode, ...) CV_CPU_CALL_RVV(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__)) 506 507 #define CV_CPU_CALL_BASELINE(fn, args) return (cpu_baseline::fn args) 508 #define __CV_CPU_DISPATCH_CHAIN_BASELINE(fn, args, mode, ...) CV_CPU_CALL_BASELINE(fn, args) /* last in sequence */ 509