EstervQrCode 1.1.1
Library for qr code manipulation
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 */