Skip to main content

singe_npp/image/
statistics_template_basic.rs

1use super::*;
2
3impl_template_match_full_scaled!(
4    square_distance_full_norm_u8_c1,
5    u8,
6    C1,
7    nppiSqrDistanceFull_Norm_8u_C1RSfs_Ctx
8);
9impl_template_match_full_scaled!(
10    square_distance_full_norm_u8_c3,
11    u8,
12    C3,
13    nppiSqrDistanceFull_Norm_8u_C3RSfs_Ctx
14);
15impl_template_match_full_scaled!(
16    square_distance_full_norm_u8_c4,
17    u8,
18    C4,
19    nppiSqrDistanceFull_Norm_8u_C4RSfs_Ctx
20);
21impl_template_match_full_scaled!(
22    square_distance_full_norm_u8_ac4,
23    u8,
24    AC4,
25    nppiSqrDistanceFull_Norm_8u_AC4RSfs_Ctx
26);
27impl_template_match_full!(
28    square_distance_full_norm_f32_c1,
29    f32,
30    f32,
31    C1,
32    nppiSqrDistanceFull_Norm_32f_C1R_Ctx
33);
34impl_template_match_full!(
35    square_distance_full_norm_f32_c3,
36    f32,
37    f32,
38    C3,
39    nppiSqrDistanceFull_Norm_32f_C3R_Ctx
40);
41impl_template_match_full!(
42    square_distance_full_norm_f32_c4,
43    f32,
44    f32,
45    C4,
46    nppiSqrDistanceFull_Norm_32f_C4R_Ctx
47);
48impl_template_match_full!(
49    square_distance_full_norm_f32_ac4,
50    f32,
51    f32,
52    AC4,
53    nppiSqrDistanceFull_Norm_32f_AC4R_Ctx
54);
55impl_template_match_full!(
56    square_distance_full_norm_u8_to_f32_c1,
57    u8,
58    f32,
59    C1,
60    nppiSqrDistanceFull_Norm_8u32f_C1R_Ctx
61);
62impl_template_match_full!(
63    square_distance_full_norm_u8_to_f32_c3,
64    u8,
65    f32,
66    C3,
67    nppiSqrDistanceFull_Norm_8u32f_C3R_Ctx
68);
69impl_template_match_full!(
70    square_distance_full_norm_u8_to_f32_c4,
71    u8,
72    f32,
73    C4,
74    nppiSqrDistanceFull_Norm_8u32f_C4R_Ctx
75);
76impl_template_match_full!(
77    square_distance_full_norm_u8_to_f32_ac4,
78    u8,
79    f32,
80    AC4,
81    nppiSqrDistanceFull_Norm_8u32f_AC4R_Ctx
82);
83impl_template_match_full!(
84    square_distance_full_norm_i8_to_f32_c1,
85    i8,
86    f32,
87    C1,
88    nppiSqrDistanceFull_Norm_8s32f_C1R_Ctx
89);
90impl_template_match_full!(
91    square_distance_full_norm_i8_to_f32_c3,
92    i8,
93    f32,
94    C3,
95    nppiSqrDistanceFull_Norm_8s32f_C3R_Ctx
96);
97impl_template_match_full!(
98    square_distance_full_norm_i8_to_f32_c4,
99    i8,
100    f32,
101    C4,
102    nppiSqrDistanceFull_Norm_8s32f_C4R_Ctx
103);
104impl_template_match_full!(
105    square_distance_full_norm_i8_to_f32_ac4,
106    i8,
107    f32,
108    AC4,
109    nppiSqrDistanceFull_Norm_8s32f_AC4R_Ctx
110);
111impl_template_match_full!(
112    square_distance_full_norm_u16_to_f32_c1,
113    u16,
114    f32,
115    C1,
116    nppiSqrDistanceFull_Norm_16u32f_C1R_Ctx
117);
118impl_template_match_full!(
119    square_distance_full_norm_u16_to_f32_c3,
120    u16,
121    f32,
122    C3,
123    nppiSqrDistanceFull_Norm_16u32f_C3R_Ctx
124);
125impl_template_match_full!(
126    square_distance_full_norm_u16_to_f32_c4,
127    u16,
128    f32,
129    C4,
130    nppiSqrDistanceFull_Norm_16u32f_C4R_Ctx
131);
132impl_template_match_full!(
133    square_distance_full_norm_u16_to_f32_ac4,
134    u16,
135    f32,
136    AC4,
137    nppiSqrDistanceFull_Norm_16u32f_AC4R_Ctx
138);
139impl_template_match_same_scaled!(
140    square_distance_same_norm_u8_c1,
141    u8,
142    C1,
143    nppiSqrDistanceSame_Norm_8u_C1RSfs_Ctx
144);
145impl_template_match_same_scaled!(
146    square_distance_same_norm_u8_c3,
147    u8,
148    C3,
149    nppiSqrDistanceSame_Norm_8u_C3RSfs_Ctx
150);
151impl_template_match_same_scaled!(
152    square_distance_same_norm_u8_c4,
153    u8,
154    C4,
155    nppiSqrDistanceSame_Norm_8u_C4RSfs_Ctx
156);
157impl_template_match_same_scaled!(
158    square_distance_same_norm_u8_ac4,
159    u8,
160    AC4,
161    nppiSqrDistanceSame_Norm_8u_AC4RSfs_Ctx
162);
163impl_template_match_same!(
164    square_distance_same_norm_f32_c1,
165    f32,
166    f32,
167    C1,
168    nppiSqrDistanceSame_Norm_32f_C1R_Ctx
169);
170impl_template_match_same!(
171    square_distance_same_norm_f32_c3,
172    f32,
173    f32,
174    C3,
175    nppiSqrDistanceSame_Norm_32f_C3R_Ctx
176);
177impl_template_match_same!(
178    square_distance_same_norm_f32_c4,
179    f32,
180    f32,
181    C4,
182    nppiSqrDistanceSame_Norm_32f_C4R_Ctx
183);
184impl_template_match_same!(
185    square_distance_same_norm_f32_ac4,
186    f32,
187    f32,
188    AC4,
189    nppiSqrDistanceSame_Norm_32f_AC4R_Ctx
190);
191impl_template_match_same!(
192    square_distance_same_norm_u8_to_f32_c1,
193    u8,
194    f32,
195    C1,
196    nppiSqrDistanceSame_Norm_8u32f_C1R_Ctx
197);
198impl_template_match_same!(
199    square_distance_same_norm_u8_to_f32_c3,
200    u8,
201    f32,
202    C3,
203    nppiSqrDistanceSame_Norm_8u32f_C3R_Ctx
204);
205impl_template_match_same!(
206    square_distance_same_norm_u8_to_f32_c4,
207    u8,
208    f32,
209    C4,
210    nppiSqrDistanceSame_Norm_8u32f_C4R_Ctx
211);
212impl_template_match_same!(
213    square_distance_same_norm_u8_to_f32_ac4,
214    u8,
215    f32,
216    AC4,
217    nppiSqrDistanceSame_Norm_8u32f_AC4R_Ctx
218);
219impl_template_match_same!(
220    square_distance_same_norm_i8_to_f32_c1,
221    i8,
222    f32,
223    C1,
224    nppiSqrDistanceSame_Norm_8s32f_C1R_Ctx
225);
226impl_template_match_same!(
227    square_distance_same_norm_i8_to_f32_c3,
228    i8,
229    f32,
230    C3,
231    nppiSqrDistanceSame_Norm_8s32f_C3R_Ctx
232);
233impl_template_match_same!(
234    square_distance_same_norm_i8_to_f32_c4,
235    i8,
236    f32,
237    C4,
238    nppiSqrDistanceSame_Norm_8s32f_C4R_Ctx
239);
240impl_template_match_same!(
241    square_distance_same_norm_i8_to_f32_ac4,
242    i8,
243    f32,
244    AC4,
245    nppiSqrDistanceSame_Norm_8s32f_AC4R_Ctx
246);
247impl_template_match_same!(
248    square_distance_same_norm_u16_to_f32_c1,
249    u16,
250    f32,
251    C1,
252    nppiSqrDistanceSame_Norm_16u32f_C1R_Ctx
253);
254impl_template_match_same!(
255    square_distance_same_norm_u16_to_f32_c3,
256    u16,
257    f32,
258    C3,
259    nppiSqrDistanceSame_Norm_16u32f_C3R_Ctx
260);
261impl_template_match_same!(
262    square_distance_same_norm_u16_to_f32_c4,
263    u16,
264    f32,
265    C4,
266    nppiSqrDistanceSame_Norm_16u32f_C4R_Ctx
267);
268impl_template_match_same!(
269    square_distance_same_norm_u16_to_f32_ac4,
270    u16,
271    f32,
272    AC4,
273    nppiSqrDistanceSame_Norm_16u32f_AC4R_Ctx
274);
275impl_template_match_valid_scaled!(
276    square_distance_valid_norm_u8_c1,
277    u8,
278    C1,
279    nppiSqrDistanceValid_Norm_8u_C1RSfs_Ctx
280);
281impl_template_match_valid_scaled!(
282    square_distance_valid_norm_u8_c3,
283    u8,
284    C3,
285    nppiSqrDistanceValid_Norm_8u_C3RSfs_Ctx
286);
287impl_template_match_valid_scaled!(
288    square_distance_valid_norm_u8_c4,
289    u8,
290    C4,
291    nppiSqrDistanceValid_Norm_8u_C4RSfs_Ctx
292);
293impl_template_match_valid_scaled!(
294    square_distance_valid_norm_u8_ac4,
295    u8,
296    AC4,
297    nppiSqrDistanceValid_Norm_8u_AC4RSfs_Ctx
298);
299impl_template_match_valid!(
300    square_distance_valid_norm_f32_c1,
301    f32,
302    f32,
303    C1,
304    nppiSqrDistanceValid_Norm_32f_C1R_Ctx
305);
306impl_template_match_valid!(
307    square_distance_valid_norm_f32_c3,
308    f32,
309    f32,
310    C3,
311    nppiSqrDistanceValid_Norm_32f_C3R_Ctx
312);
313impl_template_match_valid!(
314    square_distance_valid_norm_f32_c4,
315    f32,
316    f32,
317    C4,
318    nppiSqrDistanceValid_Norm_32f_C4R_Ctx
319);
320impl_template_match_valid!(
321    square_distance_valid_norm_f32_ac4,
322    f32,
323    f32,
324    AC4,
325    nppiSqrDistanceValid_Norm_32f_AC4R_Ctx
326);
327impl_template_match_valid!(
328    square_distance_valid_norm_u8_to_f32_c1,
329    u8,
330    f32,
331    C1,
332    nppiSqrDistanceValid_Norm_8u32f_C1R_Ctx
333);
334impl_template_match_valid!(
335    square_distance_valid_norm_u8_to_f32_c3,
336    u8,
337    f32,
338    C3,
339    nppiSqrDistanceValid_Norm_8u32f_C3R_Ctx
340);
341impl_template_match_valid!(
342    square_distance_valid_norm_u8_to_f32_c4,
343    u8,
344    f32,
345    C4,
346    nppiSqrDistanceValid_Norm_8u32f_C4R_Ctx
347);
348impl_template_match_valid!(
349    square_distance_valid_norm_u8_to_f32_ac4,
350    u8,
351    f32,
352    AC4,
353    nppiSqrDistanceValid_Norm_8u32f_AC4R_Ctx
354);
355impl_template_match_valid!(
356    square_distance_valid_norm_i8_to_f32_c1,
357    i8,
358    f32,
359    C1,
360    nppiSqrDistanceValid_Norm_8s32f_C1R_Ctx
361);
362impl_template_match_valid!(
363    square_distance_valid_norm_i8_to_f32_c3,
364    i8,
365    f32,
366    C3,
367    nppiSqrDistanceValid_Norm_8s32f_C3R_Ctx
368);
369impl_template_match_valid!(
370    square_distance_valid_norm_i8_to_f32_c4,
371    i8,
372    f32,
373    C4,
374    nppiSqrDistanceValid_Norm_8s32f_C4R_Ctx
375);
376impl_template_match_valid!(
377    square_distance_valid_norm_i8_to_f32_ac4,
378    i8,
379    f32,
380    AC4,
381    nppiSqrDistanceValid_Norm_8s32f_AC4R_Ctx
382);
383impl_template_match_valid!(
384    square_distance_valid_norm_u16_to_f32_c1,
385    u16,
386    f32,
387    C1,
388    nppiSqrDistanceValid_Norm_16u32f_C1R_Ctx
389);
390impl_template_match_valid!(
391    square_distance_valid_norm_u16_to_f32_c3,
392    u16,
393    f32,
394    C3,
395    nppiSqrDistanceValid_Norm_16u32f_C3R_Ctx
396);
397impl_template_match_valid!(
398    square_distance_valid_norm_u16_to_f32_c4,
399    u16,
400    f32,
401    C4,
402    nppiSqrDistanceValid_Norm_16u32f_C4R_Ctx
403);
404impl_template_match_valid!(
405    square_distance_valid_norm_u16_to_f32_ac4,
406    u16,
407    f32,
408    AC4,
409    nppiSqrDistanceValid_Norm_16u32f_AC4R_Ctx
410);
411impl_generic_template_match_scaled!(
412    SquareDistanceFullNormScaledC1,
413    square_distance_full_norm_c1_scaled,
414    C1,
415    [(u8, square_distance_full_norm_u8_c1)]
416);
417impl_generic_template_match_scaled!(
418    SquareDistanceFullNormScaledC3,
419    square_distance_full_norm_c3_scaled,
420    C3,
421    [(u8, square_distance_full_norm_u8_c3)]
422);
423impl_generic_template_match_scaled!(
424    SquareDistanceFullNormScaledC4,
425    square_distance_full_norm_c4_scaled,
426    C4,
427    [(u8, square_distance_full_norm_u8_c4)]
428);
429impl_generic_template_match_scaled!(
430    SquareDistanceFullNormScaledAC4,
431    square_distance_full_norm_ac4_scaled,
432    AC4,
433    [(u8, square_distance_full_norm_u8_ac4)]
434);
435impl_generic_template_match!(
436    SquareDistanceFullNormC1,
437    square_distance_full_norm_c1,
438    C1,
439    [
440        (f32, f32, square_distance_full_norm_f32_c1),
441        (u8, f32, square_distance_full_norm_u8_to_f32_c1),
442        (i8, f32, square_distance_full_norm_i8_to_f32_c1),
443        (u16, f32, square_distance_full_norm_u16_to_f32_c1),
444    ]
445);
446impl_generic_template_match!(
447    SquareDistanceFullNormC3,
448    square_distance_full_norm_c3,
449    C3,
450    [
451        (f32, f32, square_distance_full_norm_f32_c3),
452        (u8, f32, square_distance_full_norm_u8_to_f32_c3),
453        (i8, f32, square_distance_full_norm_i8_to_f32_c3),
454        (u16, f32, square_distance_full_norm_u16_to_f32_c3),
455    ]
456);
457impl_generic_template_match!(
458    SquareDistanceFullNormC4,
459    square_distance_full_norm_c4,
460    C4,
461    [
462        (f32, f32, square_distance_full_norm_f32_c4),
463        (u8, f32, square_distance_full_norm_u8_to_f32_c4),
464        (i8, f32, square_distance_full_norm_i8_to_f32_c4),
465        (u16, f32, square_distance_full_norm_u16_to_f32_c4),
466    ]
467);
468impl_generic_template_match!(
469    SquareDistanceFullNormAC4,
470    square_distance_full_norm_ac4,
471    AC4,
472    [
473        (f32, f32, square_distance_full_norm_f32_ac4),
474        (u8, f32, square_distance_full_norm_u8_to_f32_ac4),
475        (i8, f32, square_distance_full_norm_i8_to_f32_ac4),
476        (u16, f32, square_distance_full_norm_u16_to_f32_ac4),
477    ]
478);
479
480impl_generic_template_match_scaled!(
481    SquareDistanceSameNormScaledC1,
482    square_distance_same_norm_c1_scaled,
483    C1,
484    [(u8, square_distance_same_norm_u8_c1)]
485);
486impl_generic_template_match_scaled!(
487    SquareDistanceSameNormScaledC3,
488    square_distance_same_norm_c3_scaled,
489    C3,
490    [(u8, square_distance_same_norm_u8_c3)]
491);
492impl_generic_template_match_scaled!(
493    SquareDistanceSameNormScaledC4,
494    square_distance_same_norm_c4_scaled,
495    C4,
496    [(u8, square_distance_same_norm_u8_c4)]
497);
498impl_generic_template_match_scaled!(
499    SquareDistanceSameNormScaledAC4,
500    square_distance_same_norm_ac4_scaled,
501    AC4,
502    [(u8, square_distance_same_norm_u8_ac4)]
503);
504impl_generic_template_match!(
505    SquareDistanceSameNormC1,
506    square_distance_same_norm_c1,
507    C1,
508    [
509        (f32, f32, square_distance_same_norm_f32_c1),
510        (u8, f32, square_distance_same_norm_u8_to_f32_c1),
511        (i8, f32, square_distance_same_norm_i8_to_f32_c1),
512        (u16, f32, square_distance_same_norm_u16_to_f32_c1),
513    ]
514);
515impl_generic_template_match!(
516    SquareDistanceSameNormC3,
517    square_distance_same_norm_c3,
518    C3,
519    [
520        (f32, f32, square_distance_same_norm_f32_c3),
521        (u8, f32, square_distance_same_norm_u8_to_f32_c3),
522        (i8, f32, square_distance_same_norm_i8_to_f32_c3),
523        (u16, f32, square_distance_same_norm_u16_to_f32_c3),
524    ]
525);
526impl_generic_template_match!(
527    SquareDistanceSameNormC4,
528    square_distance_same_norm_c4,
529    C4,
530    [
531        (f32, f32, square_distance_same_norm_f32_c4),
532        (u8, f32, square_distance_same_norm_u8_to_f32_c4),
533        (i8, f32, square_distance_same_norm_i8_to_f32_c4),
534        (u16, f32, square_distance_same_norm_u16_to_f32_c4),
535    ]
536);
537impl_generic_template_match!(
538    SquareDistanceSameNormAC4,
539    square_distance_same_norm_ac4,
540    AC4,
541    [
542        (f32, f32, square_distance_same_norm_f32_ac4),
543        (u8, f32, square_distance_same_norm_u8_to_f32_ac4),
544        (i8, f32, square_distance_same_norm_i8_to_f32_ac4),
545        (u16, f32, square_distance_same_norm_u16_to_f32_ac4),
546    ]
547);
548
549impl_generic_template_match_scaled!(
550    SquareDistanceValidNormScaledC1,
551    square_distance_valid_norm_c1_scaled,
552    C1,
553    [(u8, square_distance_valid_norm_u8_c1)]
554);
555impl_generic_template_match_scaled!(
556    SquareDistanceValidNormScaledC3,
557    square_distance_valid_norm_c3_scaled,
558    C3,
559    [(u8, square_distance_valid_norm_u8_c3)]
560);
561impl_generic_template_match_scaled!(
562    SquareDistanceValidNormScaledC4,
563    square_distance_valid_norm_c4_scaled,
564    C4,
565    [(u8, square_distance_valid_norm_u8_c4)]
566);
567impl_generic_template_match_scaled!(
568    SquareDistanceValidNormScaledAC4,
569    square_distance_valid_norm_ac4_scaled,
570    AC4,
571    [(u8, square_distance_valid_norm_u8_ac4)]
572);
573impl_generic_template_match!(
574    SquareDistanceValidNormC1,
575    square_distance_valid_norm_c1,
576    C1,
577    [
578        (f32, f32, square_distance_valid_norm_f32_c1),
579        (u8, f32, square_distance_valid_norm_u8_to_f32_c1),
580        (i8, f32, square_distance_valid_norm_i8_to_f32_c1),
581        (u16, f32, square_distance_valid_norm_u16_to_f32_c1),
582    ]
583);
584impl_generic_template_match!(
585    SquareDistanceValidNormC3,
586    square_distance_valid_norm_c3,
587    C3,
588    [
589        (f32, f32, square_distance_valid_norm_f32_c3),
590        (u8, f32, square_distance_valid_norm_u8_to_f32_c3),
591        (i8, f32, square_distance_valid_norm_i8_to_f32_c3),
592        (u16, f32, square_distance_valid_norm_u16_to_f32_c3),
593    ]
594);
595impl_generic_template_match!(
596    SquareDistanceValidNormC4,
597    square_distance_valid_norm_c4,
598    C4,
599    [
600        (f32, f32, square_distance_valid_norm_f32_c4),
601        (u8, f32, square_distance_valid_norm_u8_to_f32_c4),
602        (i8, f32, square_distance_valid_norm_i8_to_f32_c4),
603        (u16, f32, square_distance_valid_norm_u16_to_f32_c4),
604    ]
605);
606impl_generic_template_match!(
607    SquareDistanceValidNormAC4,
608    square_distance_valid_norm_ac4,
609    AC4,
610    [
611        (f32, f32, square_distance_valid_norm_f32_ac4),
612        (u8, f32, square_distance_valid_norm_u8_to_f32_ac4),
613        (i8, f32, square_distance_valid_norm_i8_to_f32_ac4),
614        (u16, f32, square_distance_valid_norm_u16_to_f32_ac4),
615    ]
616);