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