EstervQrCode 2.0.0
Library for qr code manipulation
Loading...
Searching...
No Matches
cv_cpu_helper.h
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_NEON_DOTPROD
424# define CV_TRY_NEON_DOTPROD 1
425# define CV_CPU_FORCE_NEON_DOTPROD 1
426# define CV_CPU_HAS_SUPPORT_NEON_DOTPROD 1
427# define CV_CPU_CALL_NEON_DOTPROD(fn, args) return (cpu_baseline::fn args)
428# define CV_CPU_CALL_NEON_DOTPROD_(fn, args) return (opt_NEON_DOTPROD::fn args)
429#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_NEON_DOTPROD
430# define CV_TRY_NEON_DOTPROD 1
431# define CV_CPU_FORCE_NEON_DOTPROD 0
432# define CV_CPU_HAS_SUPPORT_NEON_DOTPROD (cv::checkHardwareSupport(CV_CPU_NEON_DOTPROD))
433# define CV_CPU_CALL_NEON_DOTPROD(fn, args) if (CV_CPU_HAS_SUPPORT_NEON_DOTPROD) return (opt_NEON_DOTPROD::fn args)
434# define CV_CPU_CALL_NEON_DOTPROD_(fn, args) if (CV_CPU_HAS_SUPPORT_NEON_DOTPROD) return (opt_NEON_DOTPROD::fn args)
435#else
436# define CV_TRY_NEON_DOTPROD 0
437# define CV_CPU_FORCE_NEON_DOTPROD 0
438# define CV_CPU_HAS_SUPPORT_NEON_DOTPROD 0
439# define CV_CPU_CALL_NEON_DOTPROD(fn, args)
440# define CV_CPU_CALL_NEON_DOTPROD_(fn, args)
441#endif
442#define __CV_CPU_DISPATCH_CHAIN_NEON_DOTPROD(fn, args, mode, ...) CV_CPU_CALL_NEON_DOTPROD(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_NEON_FP16
445# define CV_TRY_NEON_FP16 1
446# define CV_CPU_FORCE_NEON_FP16 1
447# define CV_CPU_HAS_SUPPORT_NEON_FP16 1
448# define CV_CPU_CALL_NEON_FP16(fn, args) return (cpu_baseline::fn args)
449# define CV_CPU_CALL_NEON_FP16_(fn, args) return (opt_NEON_FP16::fn args)
450#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_NEON_FP16
451# define CV_TRY_NEON_FP16 1
452# define CV_CPU_FORCE_NEON_FP16 0
453# define CV_CPU_HAS_SUPPORT_NEON_FP16 (cv::checkHardwareSupport(CV_CPU_NEON_FP16))
454# define CV_CPU_CALL_NEON_FP16(fn, args) if (CV_CPU_HAS_SUPPORT_NEON_FP16) return (opt_NEON_FP16::fn args)
455# define CV_CPU_CALL_NEON_FP16_(fn, args) if (CV_CPU_HAS_SUPPORT_NEON_FP16) return (opt_NEON_FP16::fn args)
456#else
457# define CV_TRY_NEON_FP16 0
458# define CV_CPU_FORCE_NEON_FP16 0
459# define CV_CPU_HAS_SUPPORT_NEON_FP16 0
460# define CV_CPU_CALL_NEON_FP16(fn, args)
461# define CV_CPU_CALL_NEON_FP16_(fn, args)
462#endif
463#define __CV_CPU_DISPATCH_CHAIN_NEON_FP16(fn, args, mode, ...) CV_CPU_CALL_NEON_FP16(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_NEON_BF16
466# define CV_TRY_NEON_BF16 1
467# define CV_CPU_FORCE_NEON_BF16 1
468# define CV_CPU_HAS_SUPPORT_NEON_BF16 1
469# define CV_CPU_CALL_NEON_BF16(fn, args) return (cpu_baseline::fn args)
470# define CV_CPU_CALL_NEON_BF16_(fn, args) return (opt_NEON_BF16::fn args)
471#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_NEON_BF16
472# define CV_TRY_NEON_BF16 1
473# define CV_CPU_FORCE_NEON_BF16 0
474# define CV_CPU_HAS_SUPPORT_NEON_BF16 (cv::checkHardwareSupport(CV_CPU_NEON_BF16))
475# define CV_CPU_CALL_NEON_BF16(fn, args) if (CV_CPU_HAS_SUPPORT_NEON_BF16) return (opt_NEON_BF16::fn args)
476# define CV_CPU_CALL_NEON_BF16_(fn, args) if (CV_CPU_HAS_SUPPORT_NEON_BF16) return (opt_NEON_BF16::fn args)
477#else
478# define CV_TRY_NEON_BF16 0
479# define CV_CPU_FORCE_NEON_BF16 0
480# define CV_CPU_HAS_SUPPORT_NEON_BF16 0
481# define CV_CPU_CALL_NEON_BF16(fn, args)
482# define CV_CPU_CALL_NEON_BF16_(fn, args)
483#endif
484#define __CV_CPU_DISPATCH_CHAIN_NEON_BF16(fn, args, mode, ...) CV_CPU_CALL_NEON_BF16(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_MSA
487# define CV_TRY_MSA 1
488# define CV_CPU_FORCE_MSA 1
489# define CV_CPU_HAS_SUPPORT_MSA 1
490# define CV_CPU_CALL_MSA(fn, args) return (cpu_baseline::fn args)
491# define CV_CPU_CALL_MSA_(fn, args) return (opt_MSA::fn args)
492#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_MSA
493# define CV_TRY_MSA 1
494# define CV_CPU_FORCE_MSA 0
495# define CV_CPU_HAS_SUPPORT_MSA (cv::checkHardwareSupport(CV_CPU_MSA))
496# define CV_CPU_CALL_MSA(fn, args) if (CV_CPU_HAS_SUPPORT_MSA) return (opt_MSA::fn args)
497# define CV_CPU_CALL_MSA_(fn, args) if (CV_CPU_HAS_SUPPORT_MSA) return (opt_MSA::fn args)
498#else
499# define CV_TRY_MSA 0
500# define CV_CPU_FORCE_MSA 0
501# define CV_CPU_HAS_SUPPORT_MSA 0
502# define CV_CPU_CALL_MSA(fn, args)
503# define CV_CPU_CALL_MSA_(fn, args)
504#endif
505#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__))
506
507#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_VSX
508# define CV_TRY_VSX 1
509# define CV_CPU_FORCE_VSX 1
510# define CV_CPU_HAS_SUPPORT_VSX 1
511# define CV_CPU_CALL_VSX(fn, args) return (cpu_baseline::fn args)
512# define CV_CPU_CALL_VSX_(fn, args) return (opt_VSX::fn args)
513#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_VSX
514# define CV_TRY_VSX 1
515# define CV_CPU_FORCE_VSX 0
516# define CV_CPU_HAS_SUPPORT_VSX (cv::checkHardwareSupport(CV_CPU_VSX))
517# define CV_CPU_CALL_VSX(fn, args) if (CV_CPU_HAS_SUPPORT_VSX) return (opt_VSX::fn args)
518# define CV_CPU_CALL_VSX_(fn, args) if (CV_CPU_HAS_SUPPORT_VSX) return (opt_VSX::fn args)
519#else
520# define CV_TRY_VSX 0
521# define CV_CPU_FORCE_VSX 0
522# define CV_CPU_HAS_SUPPORT_VSX 0
523# define CV_CPU_CALL_VSX(fn, args)
524# define CV_CPU_CALL_VSX_(fn, args)
525#endif
526#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__))
527
528#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_VSX3
529# define CV_TRY_VSX3 1
530# define CV_CPU_FORCE_VSX3 1
531# define CV_CPU_HAS_SUPPORT_VSX3 1
532# define CV_CPU_CALL_VSX3(fn, args) return (cpu_baseline::fn args)
533# define CV_CPU_CALL_VSX3_(fn, args) return (opt_VSX3::fn args)
534#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_VSX3
535# define CV_TRY_VSX3 1
536# define CV_CPU_FORCE_VSX3 0
537# define CV_CPU_HAS_SUPPORT_VSX3 (cv::checkHardwareSupport(CV_CPU_VSX3))
538# define CV_CPU_CALL_VSX3(fn, args) if (CV_CPU_HAS_SUPPORT_VSX3) return (opt_VSX3::fn args)
539# define CV_CPU_CALL_VSX3_(fn, args) if (CV_CPU_HAS_SUPPORT_VSX3) return (opt_VSX3::fn args)
540#else
541# define CV_TRY_VSX3 0
542# define CV_CPU_FORCE_VSX3 0
543# define CV_CPU_HAS_SUPPORT_VSX3 0
544# define CV_CPU_CALL_VSX3(fn, args)
545# define CV_CPU_CALL_VSX3_(fn, args)
546#endif
547#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__))
548
549#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_RVV
550# define CV_TRY_RVV 1
551# define CV_CPU_FORCE_RVV 1
552# define CV_CPU_HAS_SUPPORT_RVV 1
553# define CV_CPU_CALL_RVV(fn, args) return (cpu_baseline::fn args)
554# define CV_CPU_CALL_RVV_(fn, args) return (opt_RVV::fn args)
555#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_RVV
556# define CV_TRY_RVV 1
557# define CV_CPU_FORCE_RVV 0
558# define CV_CPU_HAS_SUPPORT_RVV (cv::checkHardwareSupport(CV_CPU_RVV))
559# define CV_CPU_CALL_RVV(fn, args) if (CV_CPU_HAS_SUPPORT_RVV) return (opt_RVV::fn args)
560# define CV_CPU_CALL_RVV_(fn, args) if (CV_CPU_HAS_SUPPORT_RVV) return (opt_RVV::fn args)
561#else
562# define CV_TRY_RVV 0
563# define CV_CPU_FORCE_RVV 0
564# define CV_CPU_HAS_SUPPORT_RVV 0
565# define CV_CPU_CALL_RVV(fn, args)
566# define CV_CPU_CALL_RVV_(fn, args)
567#endif
568#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__))
569
570#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_LSX
571# define CV_TRY_LSX 1
572# define CV_CPU_FORCE_LSX 1
573# define CV_CPU_HAS_SUPPORT_LSX 1
574# define CV_CPU_CALL_LSX(fn, args) return (cpu_baseline::fn args)
575# define CV_CPU_CALL_LSX_(fn, args) return (opt_LSX::fn args)
576#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_LSX
577# define CV_TRY_LSX 1
578# define CV_CPU_FORCE_LSX 0
579# define CV_CPU_HAS_SUPPORT_LSX (cv::checkHardwareSupport(CV_CPU_LSX))
580# define CV_CPU_CALL_LSX(fn, args) if (CV_CPU_HAS_SUPPORT_LSX) return (opt_LSX::fn args)
581# define CV_CPU_CALL_LSX_(fn, args) if (CV_CPU_HAS_SUPPORT_LSX) return (opt_LSX::fn args)
582#else
583# define CV_TRY_LSX 0
584# define CV_CPU_FORCE_LSX 0
585# define CV_CPU_HAS_SUPPORT_LSX 0
586# define CV_CPU_CALL_LSX(fn, args)
587# define CV_CPU_CALL_LSX_(fn, args)
588#endif
589#define __CV_CPU_DISPATCH_CHAIN_LSX(fn, args, mode, ...) CV_CPU_CALL_LSX(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__))
590
591#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_LASX
592# define CV_TRY_LASX 1
593# define CV_CPU_FORCE_LASX 1
594# define CV_CPU_HAS_SUPPORT_LASX 1
595# define CV_CPU_CALL_LASX(fn, args) return (cpu_baseline::fn args)
596# define CV_CPU_CALL_LASX_(fn, args) return (opt_LASX::fn args)
597#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_LASX
598# define CV_TRY_LASX 1
599# define CV_CPU_FORCE_LASX 0
600# define CV_CPU_HAS_SUPPORT_LASX (cv::checkHardwareSupport(CV_CPU_LASX))
601# define CV_CPU_CALL_LASX(fn, args) if (CV_CPU_HAS_SUPPORT_LASX) return (opt_LASX::fn args)
602# define CV_CPU_CALL_LASX_(fn, args) if (CV_CPU_HAS_SUPPORT_LASX) return (opt_LASX::fn args)
603#else
604# define CV_TRY_LASX 0
605# define CV_CPU_FORCE_LASX 0
606# define CV_CPU_HAS_SUPPORT_LASX 0
607# define CV_CPU_CALL_LASX(fn, args)
608# define CV_CPU_CALL_LASX_(fn, args)
609#endif
610#define __CV_CPU_DISPATCH_CHAIN_LASX(fn, args, mode, ...) CV_CPU_CALL_LASX(fn, args); __CV_EXPAND(__CV_CPU_DISPATCH_CHAIN_ ## mode(fn, args, __VA_ARGS__))
611
612#define CV_CPU_CALL_BASELINE(fn, args) return (cpu_baseline::fn args)
613#define __CV_CPU_DISPATCH_CHAIN_BASELINE(fn, args, mode, ...) CV_CPU_CALL_BASELINE(fn, args) /* last in sequence */