Skip to main content

singe_npp/image/
statistics_template_correlation.rs

1use super::*;
2
3impl_template_match_full_scaled!(
4    cross_correlation_full_norm_u8_c1,
5    u8,
6    C1,
7    nppiCrossCorrFull_Norm_8u_C1RSfs_Ctx
8);
9impl_template_match_full_scaled!(
10    cross_correlation_full_norm_u8_c3,
11    u8,
12    C3,
13    nppiCrossCorrFull_Norm_8u_C3RSfs_Ctx
14);
15impl_template_match_full_scaled!(
16    cross_correlation_full_norm_u8_c4,
17    u8,
18    C4,
19    nppiCrossCorrFull_Norm_8u_C4RSfs_Ctx
20);
21impl_template_match_full_scaled!(
22    cross_correlation_full_norm_u8_ac4,
23    u8,
24    AC4,
25    nppiCrossCorrFull_Norm_8u_AC4RSfs_Ctx
26);
27impl_template_match_full!(
28    cross_correlation_full_norm_f32_c1,
29    f32,
30    f32,
31    C1,
32    nppiCrossCorrFull_Norm_32f_C1R_Ctx
33);
34impl_template_match_full!(
35    cross_correlation_full_norm_f32_c3,
36    f32,
37    f32,
38    C3,
39    nppiCrossCorrFull_Norm_32f_C3R_Ctx
40);
41impl_template_match_full!(
42    cross_correlation_full_norm_f32_c4,
43    f32,
44    f32,
45    C4,
46    nppiCrossCorrFull_Norm_32f_C4R_Ctx
47);
48impl_template_match_full!(
49    cross_correlation_full_norm_f32_ac4,
50    f32,
51    f32,
52    AC4,
53    nppiCrossCorrFull_Norm_32f_AC4R_Ctx
54);
55impl_template_match_full!(
56    cross_correlation_full_norm_f64_c1,
57    f64,
58    f64,
59    C1,
60    nppiCrossCorrFull_Norm_64f_C1R_Ctx
61);
62impl_template_match_full!(
63    cross_correlation_full_norm_f64_c3,
64    f64,
65    f64,
66    C3,
67    nppiCrossCorrFull_Norm_64f_C3R_Ctx
68);
69impl_template_match_full!(
70    cross_correlation_full_norm_f64_c4,
71    f64,
72    f64,
73    C4,
74    nppiCrossCorrFull_Norm_64f_C4R_Ctx
75);
76impl_template_match_full!(
77    cross_correlation_full_norm_f64_ac4,
78    f64,
79    f64,
80    AC4,
81    nppiCrossCorrFull_Norm_64f_AC4R_Ctx
82);
83impl_template_match_full!(
84    cross_correlation_full_norm_u8_to_f32_c1,
85    u8,
86    f32,
87    C1,
88    nppiCrossCorrFull_Norm_8u32f_C1R_Ctx
89);
90impl_template_match_full!(
91    cross_correlation_full_norm_u8_to_f32_c3,
92    u8,
93    f32,
94    C3,
95    nppiCrossCorrFull_Norm_8u32f_C3R_Ctx
96);
97impl_template_match_full!(
98    cross_correlation_full_norm_u8_to_f32_c4,
99    u8,
100    f32,
101    C4,
102    nppiCrossCorrFull_Norm_8u32f_C4R_Ctx
103);
104impl_template_match_full!(
105    cross_correlation_full_norm_u8_to_f32_ac4,
106    u8,
107    f32,
108    AC4,
109    nppiCrossCorrFull_Norm_8u32f_AC4R_Ctx
110);
111impl_template_match_full!(
112    cross_correlation_full_norm_i8_to_f32_c1,
113    i8,
114    f32,
115    C1,
116    nppiCrossCorrFull_Norm_8s32f_C1R_Ctx
117);
118impl_template_match_full!(
119    cross_correlation_full_norm_i8_to_f32_c3,
120    i8,
121    f32,
122    C3,
123    nppiCrossCorrFull_Norm_8s32f_C3R_Ctx
124);
125impl_template_match_full!(
126    cross_correlation_full_norm_i8_to_f32_c4,
127    i8,
128    f32,
129    C4,
130    nppiCrossCorrFull_Norm_8s32f_C4R_Ctx
131);
132impl_template_match_full!(
133    cross_correlation_full_norm_i8_to_f32_ac4,
134    i8,
135    f32,
136    AC4,
137    nppiCrossCorrFull_Norm_8s32f_AC4R_Ctx
138);
139impl_template_match_full!(
140    cross_correlation_full_norm_u16_to_f32_c1,
141    u16,
142    f32,
143    C1,
144    nppiCrossCorrFull_Norm_16u32f_C1R_Ctx
145);
146impl_template_match_full!(
147    cross_correlation_full_norm_u16_to_f32_c3,
148    u16,
149    f32,
150    C3,
151    nppiCrossCorrFull_Norm_16u32f_C3R_Ctx
152);
153impl_template_match_full!(
154    cross_correlation_full_norm_u16_to_f32_c4,
155    u16,
156    f32,
157    C4,
158    nppiCrossCorrFull_Norm_16u32f_C4R_Ctx
159);
160impl_template_match_full!(
161    cross_correlation_full_norm_u16_to_f32_ac4,
162    u16,
163    f32,
164    AC4,
165    nppiCrossCorrFull_Norm_16u32f_AC4R_Ctx
166);
167impl_template_match_same_scaled!(
168    cross_correlation_same_norm_u8_c1,
169    u8,
170    C1,
171    nppiCrossCorrSame_Norm_8u_C1RSfs_Ctx
172);
173impl_template_match_same_scaled!(
174    cross_correlation_same_norm_u8_c3,
175    u8,
176    C3,
177    nppiCrossCorrSame_Norm_8u_C3RSfs_Ctx
178);
179impl_template_match_same_scaled!(
180    cross_correlation_same_norm_u8_c4,
181    u8,
182    C4,
183    nppiCrossCorrSame_Norm_8u_C4RSfs_Ctx
184);
185impl_template_match_same_scaled!(
186    cross_correlation_same_norm_u8_ac4,
187    u8,
188    AC4,
189    nppiCrossCorrSame_Norm_8u_AC4RSfs_Ctx
190);
191impl_template_match_same!(
192    cross_correlation_same_norm_f32_c1,
193    f32,
194    f32,
195    C1,
196    nppiCrossCorrSame_Norm_32f_C1R_Ctx
197);
198impl_template_match_same!(
199    cross_correlation_same_norm_f32_c3,
200    f32,
201    f32,
202    C3,
203    nppiCrossCorrSame_Norm_32f_C3R_Ctx
204);
205impl_template_match_same!(
206    cross_correlation_same_norm_f32_c4,
207    f32,
208    f32,
209    C4,
210    nppiCrossCorrSame_Norm_32f_C4R_Ctx
211);
212impl_template_match_same!(
213    cross_correlation_same_norm_f32_ac4,
214    f32,
215    f32,
216    AC4,
217    nppiCrossCorrSame_Norm_32f_AC4R_Ctx
218);
219impl_template_match_same!(
220    cross_correlation_same_norm_f64_c1,
221    f64,
222    f64,
223    C1,
224    nppiCrossCorrSame_Norm_64f_C1R_Ctx
225);
226impl_template_match_same!(
227    cross_correlation_same_norm_f64_c3,
228    f64,
229    f64,
230    C3,
231    nppiCrossCorrSame_Norm_64f_C3R_Ctx
232);
233impl_template_match_same!(
234    cross_correlation_same_norm_f64_c4,
235    f64,
236    f64,
237    C4,
238    nppiCrossCorrSame_Norm_64f_C4R_Ctx
239);
240impl_template_match_same!(
241    cross_correlation_same_norm_f64_ac4,
242    f64,
243    f64,
244    AC4,
245    nppiCrossCorrSame_Norm_64f_AC4R_Ctx
246);
247impl_template_match_same!(
248    cross_correlation_same_norm_u8_to_f32_c1,
249    u8,
250    f32,
251    C1,
252    nppiCrossCorrSame_Norm_8u32f_C1R_Ctx
253);
254impl_template_match_same!(
255    cross_correlation_same_norm_u8_to_f32_c3,
256    u8,
257    f32,
258    C3,
259    nppiCrossCorrSame_Norm_8u32f_C3R_Ctx
260);
261impl_template_match_same!(
262    cross_correlation_same_norm_u8_to_f32_c4,
263    u8,
264    f32,
265    C4,
266    nppiCrossCorrSame_Norm_8u32f_C4R_Ctx
267);
268impl_template_match_same!(
269    cross_correlation_same_norm_u8_to_f32_ac4,
270    u8,
271    f32,
272    AC4,
273    nppiCrossCorrSame_Norm_8u32f_AC4R_Ctx
274);
275impl_template_match_same!(
276    cross_correlation_same_norm_i8_to_f32_c1,
277    i8,
278    f32,
279    C1,
280    nppiCrossCorrSame_Norm_8s32f_C1R_Ctx
281);
282impl_template_match_same!(
283    cross_correlation_same_norm_i8_to_f32_c3,
284    i8,
285    f32,
286    C3,
287    nppiCrossCorrSame_Norm_8s32f_C3R_Ctx
288);
289impl_template_match_same!(
290    cross_correlation_same_norm_i8_to_f32_c4,
291    i8,
292    f32,
293    C4,
294    nppiCrossCorrSame_Norm_8s32f_C4R_Ctx
295);
296impl_template_match_same!(
297    cross_correlation_same_norm_i8_to_f32_ac4,
298    i8,
299    f32,
300    AC4,
301    nppiCrossCorrSame_Norm_8s32f_AC4R_Ctx
302);
303impl_template_match_same!(
304    cross_correlation_same_norm_u16_to_f32_c1,
305    u16,
306    f32,
307    C1,
308    nppiCrossCorrSame_Norm_16u32f_C1R_Ctx
309);
310impl_template_match_same!(
311    cross_correlation_same_norm_u16_to_f32_c3,
312    u16,
313    f32,
314    C3,
315    nppiCrossCorrSame_Norm_16u32f_C3R_Ctx
316);
317impl_template_match_same!(
318    cross_correlation_same_norm_u16_to_f32_c4,
319    u16,
320    f32,
321    C4,
322    nppiCrossCorrSame_Norm_16u32f_C4R_Ctx
323);
324impl_template_match_same!(
325    cross_correlation_same_norm_u16_to_f32_ac4,
326    u16,
327    f32,
328    AC4,
329    nppiCrossCorrSame_Norm_16u32f_AC4R_Ctx
330);
331impl_template_match_valid_scaled!(
332    cross_correlation_valid_norm_u8_c1,
333    u8,
334    C1,
335    nppiCrossCorrValid_Norm_8u_C1RSfs_Ctx
336);
337impl_template_match_valid_scaled!(
338    cross_correlation_valid_norm_u8_c3,
339    u8,
340    C3,
341    nppiCrossCorrValid_Norm_8u_C3RSfs_Ctx
342);
343impl_template_match_valid_scaled!(
344    cross_correlation_valid_norm_u8_c4,
345    u8,
346    C4,
347    nppiCrossCorrValid_Norm_8u_C4RSfs_Ctx
348);
349impl_template_match_valid_scaled!(
350    cross_correlation_valid_norm_u8_ac4,
351    u8,
352    AC4,
353    nppiCrossCorrValid_Norm_8u_AC4RSfs_Ctx
354);
355impl_template_match_valid!(
356    cross_correlation_valid_norm_f32_c1,
357    f32,
358    f32,
359    C1,
360    nppiCrossCorrValid_Norm_32f_C1R_Ctx
361);
362impl_template_match_valid!(
363    cross_correlation_valid_norm_f32_c3,
364    f32,
365    f32,
366    C3,
367    nppiCrossCorrValid_Norm_32f_C3R_Ctx
368);
369impl_template_match_valid!(
370    cross_correlation_valid_norm_f32_c4,
371    f32,
372    f32,
373    C4,
374    nppiCrossCorrValid_Norm_32f_C4R_Ctx
375);
376impl_template_match_valid!(
377    cross_correlation_valid_norm_f32_ac4,
378    f32,
379    f32,
380    AC4,
381    nppiCrossCorrValid_Norm_32f_AC4R_Ctx
382);
383impl_template_match_valid!(
384    cross_correlation_valid_norm_f64_c1,
385    f64,
386    f64,
387    C1,
388    nppiCrossCorrValid_Norm_64f_C1R_Ctx
389);
390impl_template_match_valid!(
391    cross_correlation_valid_norm_f64_c3,
392    f64,
393    f64,
394    C3,
395    nppiCrossCorrValid_Norm_64f_C3R_Ctx
396);
397impl_template_match_valid!(
398    cross_correlation_valid_norm_f64_c4,
399    f64,
400    f64,
401    C4,
402    nppiCrossCorrValid_Norm_64f_C4R_Ctx
403);
404impl_template_match_valid!(
405    cross_correlation_valid_norm_f64_ac4,
406    f64,
407    f64,
408    AC4,
409    nppiCrossCorrValid_Norm_64f_AC4R_Ctx
410);
411impl_template_match_valid!(
412    cross_correlation_valid_norm_u8_to_f32_c1,
413    u8,
414    f32,
415    C1,
416    nppiCrossCorrValid_Norm_8u32f_C1R_Ctx
417);
418impl_template_match_valid!(
419    cross_correlation_valid_norm_u8_to_f32_c3,
420    u8,
421    f32,
422    C3,
423    nppiCrossCorrValid_Norm_8u32f_C3R_Ctx
424);
425impl_template_match_valid!(
426    cross_correlation_valid_norm_u8_to_f32_c4,
427    u8,
428    f32,
429    C4,
430    nppiCrossCorrValid_Norm_8u32f_C4R_Ctx
431);
432impl_template_match_valid!(
433    cross_correlation_valid_norm_u8_to_f32_ac4,
434    u8,
435    f32,
436    AC4,
437    nppiCrossCorrValid_Norm_8u32f_AC4R_Ctx
438);
439impl_template_match_valid!(
440    cross_correlation_valid_norm_i8_to_f32_c1,
441    i8,
442    f32,
443    C1,
444    nppiCrossCorrValid_Norm_8s32f_C1R_Ctx
445);
446impl_template_match_valid!(
447    cross_correlation_valid_norm_i8_to_f32_c3,
448    i8,
449    f32,
450    C3,
451    nppiCrossCorrValid_Norm_8s32f_C3R_Ctx
452);
453impl_template_match_valid!(
454    cross_correlation_valid_norm_i8_to_f32_c4,
455    i8,
456    f32,
457    C4,
458    nppiCrossCorrValid_Norm_8s32f_C4R_Ctx
459);
460impl_template_match_valid!(
461    cross_correlation_valid_norm_i8_to_f32_ac4,
462    i8,
463    f32,
464    AC4,
465    nppiCrossCorrValid_Norm_8s32f_AC4R_Ctx
466);
467impl_template_match_valid!(
468    cross_correlation_valid_norm_u16_to_f32_c1,
469    u16,
470    f32,
471    C1,
472    nppiCrossCorrValid_Norm_16u32f_C1R_Ctx
473);
474impl_template_match_valid!(
475    cross_correlation_valid_norm_u16_to_f32_c3,
476    u16,
477    f32,
478    C3,
479    nppiCrossCorrValid_Norm_16u32f_C3R_Ctx
480);
481impl_template_match_valid!(
482    cross_correlation_valid_norm_u16_to_f32_c4,
483    u16,
484    f32,
485    C4,
486    nppiCrossCorrValid_Norm_16u32f_C4R_Ctx
487);
488impl_template_match_valid!(
489    cross_correlation_valid_norm_u16_to_f32_ac4,
490    u16,
491    f32,
492    AC4,
493    nppiCrossCorrValid_Norm_16u32f_AC4R_Ctx
494);
495impl_template_match_valid!(
496    cross_correlation_valid_f32_c1,
497    f32,
498    f32,
499    C1,
500    nppiCrossCorrValid_32f_C1R_Ctx
501);
502impl_template_match_valid!(
503    cross_correlation_valid_f64_c1,
504    f64,
505    f64,
506    C1,
507    nppiCrossCorrValid_64f_C1R_Ctx
508);
509impl_template_match_valid!(
510    cross_correlation_valid_u8_to_f32_c1,
511    u8,
512    f32,
513    C1,
514    nppiCrossCorrValid_8u32f_C1R_Ctx
515);
516impl_template_match_valid!(
517    cross_correlation_valid_i8_to_f32_c1,
518    i8,
519    f32,
520    C1,
521    nppiCrossCorrValid_8s32f_C1R_Ctx
522);
523impl_template_match_valid!(
524    cross_correlation_valid_u16_to_f32_c1,
525    u16,
526    f32,
527    C1,
528    nppiCrossCorrValid_16u32f_C1R_Ctx
529);
530impl_generic_template_match_scaled!(
531    CrossCorrelationFullNormScaledC1,
532    cross_correlation_full_norm_c1_scaled,
533    C1,
534    [(u8, cross_correlation_full_norm_u8_c1)]
535);
536impl_generic_template_match_scaled!(
537    CrossCorrelationFullNormScaledC3,
538    cross_correlation_full_norm_c3_scaled,
539    C3,
540    [(u8, cross_correlation_full_norm_u8_c3)]
541);
542impl_generic_template_match_scaled!(
543    CrossCorrelationFullNormScaledC4,
544    cross_correlation_full_norm_c4_scaled,
545    C4,
546    [(u8, cross_correlation_full_norm_u8_c4)]
547);
548impl_generic_template_match_scaled!(
549    CrossCorrelationFullNormScaledAC4,
550    cross_correlation_full_norm_ac4_scaled,
551    AC4,
552    [(u8, cross_correlation_full_norm_u8_ac4)]
553);
554impl_generic_template_match!(
555    CrossCorrelationFullNormC1,
556    cross_correlation_full_norm_c1,
557    C1,
558    [
559        (f32, f32, cross_correlation_full_norm_f32_c1),
560        (f64, f64, cross_correlation_full_norm_f64_c1),
561        (u8, f32, cross_correlation_full_norm_u8_to_f32_c1),
562        (i8, f32, cross_correlation_full_norm_i8_to_f32_c1),
563        (u16, f32, cross_correlation_full_norm_u16_to_f32_c1),
564    ]
565);
566impl_generic_template_match!(
567    CrossCorrelationFullNormC3,
568    cross_correlation_full_norm_c3,
569    C3,
570    [
571        (f32, f32, cross_correlation_full_norm_f32_c3),
572        (f64, f64, cross_correlation_full_norm_f64_c3),
573        (u8, f32, cross_correlation_full_norm_u8_to_f32_c3),
574        (i8, f32, cross_correlation_full_norm_i8_to_f32_c3),
575        (u16, f32, cross_correlation_full_norm_u16_to_f32_c3),
576    ]
577);
578impl_generic_template_match!(
579    CrossCorrelationFullNormC4,
580    cross_correlation_full_norm_c4,
581    C4,
582    [
583        (f32, f32, cross_correlation_full_norm_f32_c4),
584        (f64, f64, cross_correlation_full_norm_f64_c4),
585        (u8, f32, cross_correlation_full_norm_u8_to_f32_c4),
586        (i8, f32, cross_correlation_full_norm_i8_to_f32_c4),
587        (u16, f32, cross_correlation_full_norm_u16_to_f32_c4),
588    ]
589);
590impl_generic_template_match!(
591    CrossCorrelationFullNormAC4,
592    cross_correlation_full_norm_ac4,
593    AC4,
594    [
595        (f32, f32, cross_correlation_full_norm_f32_ac4),
596        (f64, f64, cross_correlation_full_norm_f64_ac4),
597        (u8, f32, cross_correlation_full_norm_u8_to_f32_ac4),
598        (i8, f32, cross_correlation_full_norm_i8_to_f32_ac4),
599        (u16, f32, cross_correlation_full_norm_u16_to_f32_ac4),
600    ]
601);
602
603impl_generic_template_match_scaled!(
604    CrossCorrelationSameNormScaledC1,
605    cross_correlation_same_norm_c1_scaled,
606    C1,
607    [(u8, cross_correlation_same_norm_u8_c1)]
608);
609impl_generic_template_match_scaled!(
610    CrossCorrelationSameNormScaledC3,
611    cross_correlation_same_norm_c3_scaled,
612    C3,
613    [(u8, cross_correlation_same_norm_u8_c3)]
614);
615impl_generic_template_match_scaled!(
616    CrossCorrelationSameNormScaledC4,
617    cross_correlation_same_norm_c4_scaled,
618    C4,
619    [(u8, cross_correlation_same_norm_u8_c4)]
620);
621impl_generic_template_match_scaled!(
622    CrossCorrelationSameNormScaledAC4,
623    cross_correlation_same_norm_ac4_scaled,
624    AC4,
625    [(u8, cross_correlation_same_norm_u8_ac4)]
626);
627impl_generic_template_match!(
628    CrossCorrelationSameNormC1,
629    cross_correlation_same_norm_c1,
630    C1,
631    [
632        (f32, f32, cross_correlation_same_norm_f32_c1),
633        (f64, f64, cross_correlation_same_norm_f64_c1),
634        (u8, f32, cross_correlation_same_norm_u8_to_f32_c1),
635        (i8, f32, cross_correlation_same_norm_i8_to_f32_c1),
636        (u16, f32, cross_correlation_same_norm_u16_to_f32_c1),
637    ]
638);
639impl_generic_template_match!(
640    CrossCorrelationSameNormC3,
641    cross_correlation_same_norm_c3,
642    C3,
643    [
644        (f32, f32, cross_correlation_same_norm_f32_c3),
645        (f64, f64, cross_correlation_same_norm_f64_c3),
646        (u8, f32, cross_correlation_same_norm_u8_to_f32_c3),
647        (i8, f32, cross_correlation_same_norm_i8_to_f32_c3),
648        (u16, f32, cross_correlation_same_norm_u16_to_f32_c3),
649    ]
650);
651impl_generic_template_match!(
652    CrossCorrelationSameNormC4,
653    cross_correlation_same_norm_c4,
654    C4,
655    [
656        (f32, f32, cross_correlation_same_norm_f32_c4),
657        (f64, f64, cross_correlation_same_norm_f64_c4),
658        (u8, f32, cross_correlation_same_norm_u8_to_f32_c4),
659        (i8, f32, cross_correlation_same_norm_i8_to_f32_c4),
660        (u16, f32, cross_correlation_same_norm_u16_to_f32_c4),
661    ]
662);
663impl_generic_template_match!(
664    CrossCorrelationSameNormAC4,
665    cross_correlation_same_norm_ac4,
666    AC4,
667    [
668        (f32, f32, cross_correlation_same_norm_f32_ac4),
669        (f64, f64, cross_correlation_same_norm_f64_ac4),
670        (u8, f32, cross_correlation_same_norm_u8_to_f32_ac4),
671        (i8, f32, cross_correlation_same_norm_i8_to_f32_ac4),
672        (u16, f32, cross_correlation_same_norm_u16_to_f32_ac4),
673    ]
674);
675
676impl_generic_template_match_scaled!(
677    CrossCorrelationValidNormScaledC1,
678    cross_correlation_valid_norm_c1_scaled,
679    C1,
680    [(u8, cross_correlation_valid_norm_u8_c1)]
681);
682impl_generic_template_match_scaled!(
683    CrossCorrelationValidNormScaledC3,
684    cross_correlation_valid_norm_c3_scaled,
685    C3,
686    [(u8, cross_correlation_valid_norm_u8_c3)]
687);
688impl_generic_template_match_scaled!(
689    CrossCorrelationValidNormScaledC4,
690    cross_correlation_valid_norm_c4_scaled,
691    C4,
692    [(u8, cross_correlation_valid_norm_u8_c4)]
693);
694impl_generic_template_match_scaled!(
695    CrossCorrelationValidNormScaledAC4,
696    cross_correlation_valid_norm_ac4_scaled,
697    AC4,
698    [(u8, cross_correlation_valid_norm_u8_ac4)]
699);
700impl_generic_template_match!(
701    CrossCorrelationValidNormC1,
702    cross_correlation_valid_norm_c1,
703    C1,
704    [
705        (f32, f32, cross_correlation_valid_norm_f32_c1),
706        (f64, f64, cross_correlation_valid_norm_f64_c1),
707        (u8, f32, cross_correlation_valid_norm_u8_to_f32_c1),
708        (i8, f32, cross_correlation_valid_norm_i8_to_f32_c1),
709        (u16, f32, cross_correlation_valid_norm_u16_to_f32_c1),
710    ]
711);
712impl_generic_template_match!(
713    CrossCorrelationValidNormC3,
714    cross_correlation_valid_norm_c3,
715    C3,
716    [
717        (f32, f32, cross_correlation_valid_norm_f32_c3),
718        (f64, f64, cross_correlation_valid_norm_f64_c3),
719        (u8, f32, cross_correlation_valid_norm_u8_to_f32_c3),
720        (i8, f32, cross_correlation_valid_norm_i8_to_f32_c3),
721        (u16, f32, cross_correlation_valid_norm_u16_to_f32_c3),
722    ]
723);
724impl_generic_template_match!(
725    CrossCorrelationValidNormC4,
726    cross_correlation_valid_norm_c4,
727    C4,
728    [
729        (f32, f32, cross_correlation_valid_norm_f32_c4),
730        (f64, f64, cross_correlation_valid_norm_f64_c4),
731        (u8, f32, cross_correlation_valid_norm_u8_to_f32_c4),
732        (i8, f32, cross_correlation_valid_norm_i8_to_f32_c4),
733        (u16, f32, cross_correlation_valid_norm_u16_to_f32_c4),
734    ]
735);
736impl_generic_template_match!(
737    CrossCorrelationValidNormAC4,
738    cross_correlation_valid_norm_ac4,
739    AC4,
740    [
741        (f32, f32, cross_correlation_valid_norm_f32_ac4),
742        (f64, f64, cross_correlation_valid_norm_f64_ac4),
743        (u8, f32, cross_correlation_valid_norm_u8_to_f32_ac4),
744        (i8, f32, cross_correlation_valid_norm_i8_to_f32_ac4),
745        (u16, f32, cross_correlation_valid_norm_u16_to_f32_ac4),
746    ]
747);
748impl_generic_template_match!(
749    CrossCorrelationValidC1,
750    cross_correlation_valid_c1,
751    C1,
752    [
753        (f32, f32, cross_correlation_valid_f32_c1),
754        (f64, f64, cross_correlation_valid_f64_c1),
755        (u8, f32, cross_correlation_valid_u8_to_f32_c1),
756        (i8, f32, cross_correlation_valid_i8_to_f32_c1),
757        (u16, f32, cross_correlation_valid_u16_to_f32_c1),
758    ]
759);