Skip to main content

singe_npp/image/
arithmetic_constant_dispatch_host_arithmetic.rs

1use super::*;
2
3impl_generic_constant_scalar_operation!(AddConstantC1, add_constant, add_constant_c1, C1, [
4    f16, f32 => add_constant_f16_c1,
5    f32, f32 => add_constant_f32_c1,
6    Complex32, Complex32 => add_constant_f32_complex_c1,
7]);
8impl_generic_constant_scalar_operation_in_place!(
9    AddConstantC1InPlace,
10    add_constant_in_place,
11    add_constant_c1_in_place,
12    C1,
13    [
14        f16, f32 => add_constant_f16_c1_in_place,
15        f32, f32 => add_constant_f32_c1_in_place,
16        Complex32, Complex32 => add_constant_f32_complex_c1_in_place,
17    ]
18);
19impl_generic_scaled_constant_scalar_operation!(
20    ScaledAddConstantC1,
21    add_constant_scaled,
22    add_constant_scaled_c1,
23    C1,
24    [
25        u8 => add_constant_u8_c1,
26        u16 => add_constant_u16_c1,
27        i16 => add_constant_i16_c1,
28        ComplexI16 => add_constant_i16_complex_c1,
29        i32 => add_constant_i32_c1,
30        ComplexI32 => add_constant_i32_complex_c1,
31    ]
32);
33impl_generic_scaled_constant_scalar_operation_in_place!(
34    ScaledAddConstantC1InPlace,
35    add_constant_scaled_in_place,
36    add_constant_scaled_c1_in_place,
37    C1,
38    [
39        u8 => add_constant_u8_c1_in_place,
40        u16 => add_constant_u16_c1_in_place,
41        i16 => add_constant_i16_c1_in_place,
42        ComplexI16 => add_constant_i16_complex_c1_in_place,
43        i32 => add_constant_i32_c1_in_place,
44        ComplexI32 => add_constant_i32_complex_c1_in_place,
45    ]
46);
47
48impl_generic_constant_array_operation!(AddConstantC3, add_constant, add_constant_c3, C3, 3, [
49    f16, f32 => add_constant_f16_c3,
50    f32, f32 => add_constant_f32_c3,
51    Complex32, Complex32 => add_constant_f32_complex_c3,
52]);
53impl_generic_constant_array_operation_in_place!(
54    AddConstantC3InPlace,
55    add_constant_in_place,
56    add_constant_c3_in_place,
57    C3,
58    3,
59    [
60        f16, f32 => add_constant_f16_c3_in_place,
61        f32, f32 => add_constant_f32_c3_in_place,
62        Complex32, Complex32 => add_constant_f32_complex_c3_in_place,
63    ]
64);
65impl_generic_scaled_constant_array_operation!(
66    ScaledAddConstantC3,
67    add_constant_scaled,
68    add_constant_scaled_c3,
69    C3,
70    3,
71    [
72        u8 => add_constant_u8_c3,
73        u16 => add_constant_u16_c3,
74        i16 => add_constant_i16_c3,
75        ComplexI16 => add_constant_i16_complex_c3,
76        i32 => add_constant_i32_c3,
77        ComplexI32 => add_constant_i32_complex_c3,
78    ]
79);
80impl_generic_scaled_constant_array_operation_in_place!(
81    ScaledAddConstantC3InPlace,
82    add_constant_scaled_in_place,
83    add_constant_scaled_c3_in_place,
84    C3,
85    3,
86    [
87        u8 => add_constant_u8_c3_in_place,
88        u16 => add_constant_u16_c3_in_place,
89        i16 => add_constant_i16_c3_in_place,
90        ComplexI16 => add_constant_i16_complex_c3_in_place,
91        i32 => add_constant_i32_c3_in_place,
92        ComplexI32 => add_constant_i32_complex_c3_in_place,
93    ]
94);
95
96impl_generic_constant_array_operation!(AddConstantC4, add_constant, add_constant_c4, C4, 4, [
97    f16, f32 => add_constant_f16_c4,
98    f32, f32 => add_constant_f32_c4,
99    Complex32, Complex32 => add_constant_f32_complex_c4,
100]);
101impl_generic_constant_array_operation_in_place!(
102    AddConstantC4InPlace,
103    add_constant_in_place,
104    add_constant_c4_in_place,
105    C4,
106    4,
107    [
108        f16, f32 => add_constant_f16_c4_in_place,
109        f32, f32 => add_constant_f32_c4_in_place,
110        Complex32, Complex32 => add_constant_f32_complex_c4_in_place,
111    ]
112);
113impl_generic_scaled_constant_array_operation!(
114    ScaledAddConstantC4,
115    add_constant_scaled,
116    add_constant_scaled_c4,
117    C4,
118    4,
119    [
120        u8 => add_constant_u8_c4,
121        u16 => add_constant_u16_c4,
122        i16 => add_constant_i16_c4,
123    ]
124);
125impl_generic_scaled_constant_array_operation_in_place!(
126    ScaledAddConstantC4InPlace,
127    add_constant_scaled_in_place,
128    add_constant_scaled_c4_in_place,
129    C4,
130    4,
131    [
132        u8 => add_constant_u8_c4_in_place,
133        u16 => add_constant_u16_c4_in_place,
134        i16 => add_constant_i16_c4_in_place,
135    ]
136);
137
138impl_generic_constant_array_operation!(AddConstantAc4, add_constant, add_constant_ac4, AC4, 3, [
139    f32, f32 => add_constant_f32_ac4,
140    Complex32, Complex32 => add_constant_f32_complex_ac4,
141]);
142impl_generic_constant_array_operation_in_place!(
143    AddConstantAc4InPlace,
144    add_constant_in_place,
145    add_constant_ac4_in_place,
146    AC4,
147    3,
148    [
149        f32, f32 => add_constant_f32_ac4_in_place,
150        Complex32, Complex32 => add_constant_f32_complex_ac4_in_place,
151    ]
152);
153impl_generic_scaled_constant_array_operation!(
154    ScaledAddConstantAc4,
155    add_constant_scaled,
156    add_constant_scaled_ac4,
157    AC4,
158    3,
159    [
160        u8 => add_constant_u8_ac4,
161        u16 => add_constant_u16_ac4,
162        i16 => add_constant_i16_ac4,
163        ComplexI16 => add_constant_i16_complex_ac4,
164        ComplexI32 => add_constant_i32_complex_ac4,
165    ]
166);
167impl_generic_scaled_constant_array_operation_in_place!(
168    ScaledAddConstantAc4InPlace,
169    add_constant_scaled_in_place,
170    add_constant_scaled_ac4_in_place,
171    AC4,
172    3,
173    [
174        u8 => add_constant_u8_ac4_in_place,
175        u16 => add_constant_u16_ac4_in_place,
176        i16 => add_constant_i16_ac4_in_place,
177        ComplexI16 => add_constant_i16_complex_ac4_in_place,
178        ComplexI32 => add_constant_i32_complex_ac4_in_place,
179    ]
180);
181
182impl_generic_constant_scalar_operation!(
183    MultiplyConstantC1,
184    multiply_constant,
185    multiply_constant_c1,
186    C1,
187    [
188        f16, f32 => multiply_constant_f16_c1,
189        f32, f32 => multiply_constant_f32_c1,
190        Complex32, Complex32 => multiply_constant_f32_complex_c1,
191    ]
192);
193impl_generic_constant_scalar_operation_in_place!(
194    MultiplyConstantC1InPlace,
195    multiply_constant_in_place,
196    multiply_constant_c1_in_place,
197    C1,
198    [
199        f16, f32 => multiply_constant_f16_c1_in_place,
200        f32, f32 => multiply_constant_f32_c1_in_place,
201        Complex32, Complex32 => multiply_constant_f32_complex_c1_in_place,
202    ]
203);
204impl_generic_scaled_constant_scalar_operation!(
205    ScaledMultiplyConstantC1,
206    multiply_constant_scaled,
207    multiply_constant_scaled_c1,
208    C1,
209    [
210        u8 => multiply_constant_u8_c1,
211        u16 => multiply_constant_u16_c1,
212        i16 => multiply_constant_i16_c1,
213        ComplexI16 => multiply_constant_i16_complex_c1,
214        i32 => multiply_constant_i32_c1,
215        ComplexI32 => multiply_constant_i32_complex_c1,
216    ]
217);
218impl_generic_scaled_constant_scalar_operation_in_place!(
219    ScaledMultiplyConstantC1InPlace,
220    multiply_constant_scaled_in_place,
221    multiply_constant_scaled_c1_in_place,
222    C1,
223    [
224        u8 => multiply_constant_u8_c1_in_place,
225        u16 => multiply_constant_u16_c1_in_place,
226        i16 => multiply_constant_i16_c1_in_place,
227        ComplexI16 => multiply_constant_i16_complex_c1_in_place,
228        i32 => multiply_constant_i32_c1_in_place,
229        ComplexI32 => multiply_constant_i32_complex_c1_in_place,
230    ]
231);
232
233impl_generic_constant_array_operation!(
234    MultiplyConstantC3,
235    multiply_constant,
236    multiply_constant_c3,
237    C3,
238    3,
239    [
240        f16, f32 => multiply_constant_f16_c3,
241        f32, f32 => multiply_constant_f32_c3,
242        Complex32, Complex32 => multiply_constant_f32_complex_c3,
243    ]
244);
245impl_generic_constant_array_operation_in_place!(
246    MultiplyConstantC3InPlace,
247    multiply_constant_in_place,
248    multiply_constant_c3_in_place,
249    C3,
250    3,
251    [
252        f16, f32 => multiply_constant_f16_c3_in_place,
253        f32, f32 => multiply_constant_f32_c3_in_place,
254        Complex32, Complex32 => multiply_constant_f32_complex_c3_in_place,
255    ]
256);
257impl_generic_scaled_constant_array_operation!(
258    ScaledMultiplyConstantC3,
259    multiply_constant_scaled,
260    multiply_constant_scaled_c3,
261    C3,
262    3,
263    [
264        u8 => multiply_constant_u8_c3,
265        u16 => multiply_constant_u16_c3,
266        i16 => multiply_constant_i16_c3,
267        ComplexI16 => multiply_constant_i16_complex_c3,
268        i32 => multiply_constant_i32_c3,
269        ComplexI32 => multiply_constant_i32_complex_c3,
270    ]
271);
272impl_generic_scaled_constant_array_operation_in_place!(
273    ScaledMultiplyConstantC3InPlace,
274    multiply_constant_scaled_in_place,
275    multiply_constant_scaled_c3_in_place,
276    C3,
277    3,
278    [
279        u8 => multiply_constant_u8_c3_in_place,
280        u16 => multiply_constant_u16_c3_in_place,
281        i16 => multiply_constant_i16_c3_in_place,
282        ComplexI16 => multiply_constant_i16_complex_c3_in_place,
283        i32 => multiply_constant_i32_c3_in_place,
284        ComplexI32 => multiply_constant_i32_complex_c3_in_place,
285    ]
286);
287
288impl_generic_constant_array_operation!(
289    MultiplyConstantC4,
290    multiply_constant,
291    multiply_constant_c4,
292    C4,
293    4,
294    [
295        f16, f32 => multiply_constant_f16_c4,
296        f32, f32 => multiply_constant_f32_c4,
297        Complex32, Complex32 => multiply_constant_f32_complex_c4,
298    ]
299);
300impl_generic_constant_array_operation_in_place!(
301    MultiplyConstantC4InPlace,
302    multiply_constant_in_place,
303    multiply_constant_c4_in_place,
304    C4,
305    4,
306    [
307        f16, f32 => multiply_constant_f16_c4_in_place,
308        f32, f32 => multiply_constant_f32_c4_in_place,
309        Complex32, Complex32 => multiply_constant_f32_complex_c4_in_place,
310    ]
311);
312impl_generic_scaled_constant_array_operation!(
313    ScaledMultiplyConstantC4,
314    multiply_constant_scaled,
315    multiply_constant_scaled_c4,
316    C4,
317    4,
318    [
319        u8 => multiply_constant_u8_c4,
320        u16 => multiply_constant_u16_c4,
321        i16 => multiply_constant_i16_c4,
322    ]
323);
324impl_generic_scaled_constant_array_operation_in_place!(
325    ScaledMultiplyConstantC4InPlace,
326    multiply_constant_scaled_in_place,
327    multiply_constant_scaled_c4_in_place,
328    C4,
329    4,
330    [
331        u8 => multiply_constant_u8_c4_in_place,
332        u16 => multiply_constant_u16_c4_in_place,
333        i16 => multiply_constant_i16_c4_in_place,
334    ]
335);
336
337impl_generic_constant_array_operation!(
338    MultiplyConstantAc4,
339    multiply_constant,
340    multiply_constant_ac4,
341    AC4,
342    3,
343    [
344        f32, f32 => multiply_constant_f32_ac4,
345        Complex32, Complex32 => multiply_constant_f32_complex_ac4,
346    ]
347);
348impl_generic_constant_array_operation_in_place!(
349    MultiplyConstantAc4InPlace,
350    multiply_constant_in_place,
351    multiply_constant_ac4_in_place,
352    AC4,
353    3,
354    [
355        f32, f32 => multiply_constant_f32_ac4_in_place,
356        Complex32, Complex32 => multiply_constant_f32_complex_ac4_in_place,
357    ]
358);
359impl_generic_scaled_constant_array_operation!(
360    ScaledMultiplyConstantAc4,
361    multiply_constant_scaled,
362    multiply_constant_scaled_ac4,
363    AC4,
364    3,
365    [
366        u8 => multiply_constant_u8_ac4,
367        u16 => multiply_constant_u16_ac4,
368        i16 => multiply_constant_i16_ac4,
369        ComplexI16 => multiply_constant_i16_complex_ac4,
370        ComplexI32 => multiply_constant_i32_complex_ac4,
371    ]
372);
373impl_generic_scaled_constant_array_operation_in_place!(
374    ScaledMultiplyConstantAc4InPlace,
375    multiply_constant_scaled_in_place,
376    multiply_constant_scaled_ac4_in_place,
377    AC4,
378    3,
379    [
380        u8 => multiply_constant_u8_ac4_in_place,
381        u16 => multiply_constant_u16_ac4_in_place,
382        i16 => multiply_constant_i16_ac4_in_place,
383        ComplexI16 => multiply_constant_i16_complex_ac4_in_place,
384        ComplexI32 => multiply_constant_i32_complex_ac4_in_place,
385    ]
386);
387
388impl_generic_constant_scalar_operation!(
389    SubtractConstantC1,
390    subtract_constant,
391    subtract_constant_c1,
392    C1,
393    [
394        f16, f32 => subtract_constant_f16_c1,
395        f32, f32 => subtract_constant_f32_c1,
396        Complex32, Complex32 => subtract_constant_f32_complex_c1,
397    ]
398);
399impl_generic_constant_scalar_operation_in_place!(
400    SubtractConstantC1InPlace,
401    subtract_constant_in_place,
402    subtract_constant_c1_in_place,
403    C1,
404    [
405        f16, f32 => subtract_constant_f16_c1_in_place,
406        f32, f32 => subtract_constant_f32_c1_in_place,
407        Complex32, Complex32 => subtract_constant_f32_complex_c1_in_place,
408    ]
409);
410impl_generic_scaled_constant_scalar_operation!(
411    ScaledSubtractConstantC1,
412    subtract_constant_scaled,
413    subtract_constant_scaled_c1,
414    C1,
415    [
416        u8 => subtract_constant_u8_c1,
417        u16 => subtract_constant_u16_c1,
418        i16 => subtract_constant_i16_c1,
419        ComplexI16 => subtract_constant_i16_complex_c1,
420        i32 => subtract_constant_i32_c1,
421        ComplexI32 => subtract_constant_i32_complex_c1,
422    ]
423);
424impl_generic_scaled_constant_scalar_operation_in_place!(
425    ScaledSubtractConstantC1InPlace,
426    subtract_constant_scaled_in_place,
427    subtract_constant_scaled_c1_in_place,
428    C1,
429    [
430        u8 => subtract_constant_u8_c1_in_place,
431        u16 => subtract_constant_u16_c1_in_place,
432        i16 => subtract_constant_i16_c1_in_place,
433        ComplexI16 => subtract_constant_i16_complex_c1_in_place,
434        i32 => subtract_constant_i32_c1_in_place,
435        ComplexI32 => subtract_constant_i32_complex_c1_in_place,
436    ]
437);
438impl_generic_constant_array_operation!(
439    SubtractConstantC3,
440    subtract_constant,
441    subtract_constant_c3,
442    C3,
443    3,
444    [
445        f16, f32 => subtract_constant_f16_c3,
446        f32, f32 => subtract_constant_f32_c3,
447        Complex32, Complex32 => subtract_constant_f32_complex_c3,
448    ]
449);
450impl_generic_constant_array_operation_in_place!(
451    SubtractConstantC3InPlace,
452    subtract_constant_in_place,
453    subtract_constant_c3_in_place,
454    C3,
455    3,
456    [
457        f16, f32 => subtract_constant_f16_c3_in_place,
458        f32, f32 => subtract_constant_f32_c3_in_place,
459        Complex32, Complex32 => subtract_constant_f32_complex_c3_in_place,
460    ]
461);
462impl_generic_scaled_constant_array_operation!(
463    ScaledSubtractConstantC3,
464    subtract_constant_scaled,
465    subtract_constant_scaled_c3,
466    C3,
467    3,
468    [
469        u8 => subtract_constant_u8_c3,
470        u16 => subtract_constant_u16_c3,
471        i16 => subtract_constant_i16_c3,
472        ComplexI16 => subtract_constant_i16_complex_c3,
473        i32 => subtract_constant_i32_c3,
474        ComplexI32 => subtract_constant_i32_complex_c3,
475    ]
476);
477impl_generic_scaled_constant_array_operation_in_place!(
478    ScaledSubtractConstantC3InPlace,
479    subtract_constant_scaled_in_place,
480    subtract_constant_scaled_c3_in_place,
481    C3,
482    3,
483    [
484        u8 => subtract_constant_u8_c3_in_place,
485        u16 => subtract_constant_u16_c3_in_place,
486        i16 => subtract_constant_i16_c3_in_place,
487        ComplexI16 => subtract_constant_i16_complex_c3_in_place,
488        i32 => subtract_constant_i32_c3_in_place,
489        ComplexI32 => subtract_constant_i32_complex_c3_in_place,
490    ]
491);
492impl_generic_constant_array_operation!(
493    SubtractConstantC4,
494    subtract_constant,
495    subtract_constant_c4,
496    C4,
497    4,
498    [
499        f16, f32 => subtract_constant_f16_c4,
500        f32, f32 => subtract_constant_f32_c4,
501        Complex32, Complex32 => subtract_constant_f32_complex_c4,
502    ]
503);
504impl_generic_constant_array_operation_in_place!(
505    SubtractConstantC4InPlace,
506    subtract_constant_in_place,
507    subtract_constant_c4_in_place,
508    C4,
509    4,
510    [
511        f16, f32 => subtract_constant_f16_c4_in_place,
512        f32, f32 => subtract_constant_f32_c4_in_place,
513        Complex32, Complex32 => subtract_constant_f32_complex_c4_in_place,
514    ]
515);
516impl_generic_scaled_constant_array_operation!(
517    ScaledSubtractConstantC4,
518    subtract_constant_scaled,
519    subtract_constant_scaled_c4,
520    C4,
521    4,
522    [
523        u8 => subtract_constant_u8_c4,
524        u16 => subtract_constant_u16_c4,
525        i16 => subtract_constant_i16_c4,
526    ]
527);
528impl_generic_scaled_constant_array_operation_in_place!(
529    ScaledSubtractConstantC4InPlace,
530    subtract_constant_scaled_in_place,
531    subtract_constant_scaled_c4_in_place,
532    C4,
533    4,
534    [
535        u8 => subtract_constant_u8_c4_in_place,
536        u16 => subtract_constant_u16_c4_in_place,
537        i16 => subtract_constant_i16_c4_in_place,
538    ]
539);
540impl_generic_constant_array_operation!(
541    SubtractConstantAc4,
542    subtract_constant,
543    subtract_constant_ac4,
544    AC4,
545    3,
546    [
547        f32, f32 => subtract_constant_f32_ac4,
548        Complex32, Complex32 => subtract_constant_f32_complex_ac4,
549    ]
550);
551impl_generic_constant_array_operation_in_place!(
552    SubtractConstantAc4InPlace,
553    subtract_constant_in_place,
554    subtract_constant_ac4_in_place,
555    AC4,
556    3,
557    [
558        f32, f32 => subtract_constant_f32_ac4_in_place,
559        Complex32, Complex32 => subtract_constant_f32_complex_ac4_in_place,
560    ]
561);
562impl_generic_scaled_constant_array_operation!(
563    ScaledSubtractConstantAc4,
564    subtract_constant_scaled,
565    subtract_constant_scaled_ac4,
566    AC4,
567    3,
568    [
569        u8 => subtract_constant_u8_ac4,
570        u16 => subtract_constant_u16_ac4,
571        i16 => subtract_constant_i16_ac4,
572        ComplexI16 => subtract_constant_i16_complex_ac4,
573        ComplexI32 => subtract_constant_i32_complex_ac4,
574    ]
575);
576impl_generic_scaled_constant_array_operation_in_place!(
577    ScaledSubtractConstantAc4InPlace,
578    subtract_constant_scaled_in_place,
579    subtract_constant_scaled_ac4_in_place,
580    AC4,
581    3,
582    [
583        u8 => subtract_constant_u8_ac4_in_place,
584        u16 => subtract_constant_u16_ac4_in_place,
585        i16 => subtract_constant_i16_ac4_in_place,
586        ComplexI16 => subtract_constant_i16_complex_ac4_in_place,
587        ComplexI32 => subtract_constant_i32_complex_ac4_in_place,
588    ]
589);
590
591impl_generic_constant_scalar_operation!(DivideConstantC1, divide_constant, divide_constant_c1, C1, [
592    f16, f32 => divide_constant_f16_c1,
593    f32, f32 => divide_constant_f32_c1,
594    Complex32, Complex32 => divide_constant_f32_complex_c1,
595]);
596impl_generic_constant_scalar_operation_in_place!(
597    DivideConstantC1InPlace,
598    divide_constant_in_place,
599    divide_constant_c1_in_place,
600    C1,
601    [
602        f16, f32 => divide_constant_f16_c1_in_place,
603        f32, f32 => divide_constant_f32_c1_in_place,
604        Complex32, Complex32 => divide_constant_f32_complex_c1_in_place,
605    ]
606);
607impl_generic_scaled_constant_scalar_operation!(
608    ScaledDivideConstantC1,
609    divide_constant_scaled,
610    divide_constant_scaled_c1,
611    C1,
612    [
613        u8 => divide_constant_u8_c1,
614        u16 => divide_constant_u16_c1,
615        i16 => divide_constant_i16_c1,
616        ComplexI16 => divide_constant_i16_complex_c1,
617        i32 => divide_constant_i32_c1,
618        ComplexI32 => divide_constant_i32_complex_c1,
619    ]
620);
621impl_generic_scaled_constant_scalar_operation_in_place!(
622    ScaledDivideConstantC1InPlace,
623    divide_constant_scaled_in_place,
624    divide_constant_scaled_c1_in_place,
625    C1,
626    [
627        u8 => divide_constant_u8_c1_in_place,
628        u16 => divide_constant_u16_c1_in_place,
629        i16 => divide_constant_i16_c1_in_place,
630        ComplexI16 => divide_constant_i16_complex_c1_in_place,
631        i32 => divide_constant_i32_c1_in_place,
632        ComplexI32 => divide_constant_i32_complex_c1_in_place,
633    ]
634);
635impl_generic_constant_array_operation!(DivideConstantC3, divide_constant, divide_constant_c3, C3, 3, [
636    f16, f32 => divide_constant_f16_c3,
637    f32, f32 => divide_constant_f32_c3,
638    Complex32, Complex32 => divide_constant_f32_complex_c3,
639]);
640impl_generic_constant_array_operation_in_place!(
641    DivideConstantC3InPlace,
642    divide_constant_in_place,
643    divide_constant_c3_in_place,
644    C3,
645    3,
646    [
647        f16, f32 => divide_constant_f16_c3_in_place,
648        f32, f32 => divide_constant_f32_c3_in_place,
649        Complex32, Complex32 => divide_constant_f32_complex_c3_in_place,
650    ]
651);
652impl_generic_scaled_constant_array_operation!(
653    ScaledDivideConstantC3,
654    divide_constant_scaled,
655    divide_constant_scaled_c3,
656    C3,
657    3,
658    [
659        u8 => divide_constant_u8_c3,
660        u16 => divide_constant_u16_c3,
661        i16 => divide_constant_i16_c3,
662        ComplexI16 => divide_constant_i16_complex_c3,
663        i32 => divide_constant_i32_c3,
664        ComplexI32 => divide_constant_i32_complex_c3,
665    ]
666);
667impl_generic_scaled_constant_array_operation_in_place!(
668    ScaledDivideConstantC3InPlace,
669    divide_constant_scaled_in_place,
670    divide_constant_scaled_c3_in_place,
671    C3,
672    3,
673    [
674        u8 => divide_constant_u8_c3_in_place,
675        u16 => divide_constant_u16_c3_in_place,
676        i16 => divide_constant_i16_c3_in_place,
677        ComplexI16 => divide_constant_i16_complex_c3_in_place,
678        i32 => divide_constant_i32_c3_in_place,
679        ComplexI32 => divide_constant_i32_complex_c3_in_place,
680    ]
681);
682impl_generic_constant_array_operation!(DivideConstantC4, divide_constant, divide_constant_c4, C4, 4, [
683    f16, f32 => divide_constant_f16_c4,
684    f32, f32 => divide_constant_f32_c4,
685    Complex32, Complex32 => divide_constant_f32_complex_c4,
686]);
687impl_generic_constant_array_operation_in_place!(
688    DivideConstantC4InPlace,
689    divide_constant_in_place,
690    divide_constant_c4_in_place,
691    C4,
692    4,
693    [
694        f16, f32 => divide_constant_f16_c4_in_place,
695        f32, f32 => divide_constant_f32_c4_in_place,
696        Complex32, Complex32 => divide_constant_f32_complex_c4_in_place,
697    ]
698);
699impl_generic_scaled_constant_array_operation!(
700    ScaledDivideConstantC4,
701    divide_constant_scaled,
702    divide_constant_scaled_c4,
703    C4,
704    4,
705    [
706        u8 => divide_constant_u8_c4,
707        u16 => divide_constant_u16_c4,
708        i16 => divide_constant_i16_c4,
709    ]
710);
711impl_generic_scaled_constant_array_operation_in_place!(
712    ScaledDivideConstantC4InPlace,
713    divide_constant_scaled_in_place,
714    divide_constant_scaled_c4_in_place,
715    C4,
716    4,
717    [
718        u8 => divide_constant_u8_c4_in_place,
719        u16 => divide_constant_u16_c4_in_place,
720        i16 => divide_constant_i16_c4_in_place,
721    ]
722);
723impl_generic_constant_array_operation!(
724    DivideConstantAc4,
725    divide_constant,
726    divide_constant_ac4,
727    AC4,
728    3,
729    [
730        f32, f32 => divide_constant_f32_ac4,
731        Complex32, Complex32 => divide_constant_f32_complex_ac4,
732    ]
733);
734impl_generic_constant_array_operation_in_place!(
735    DivideConstantAc4InPlace,
736    divide_constant_in_place,
737    divide_constant_ac4_in_place,
738    AC4,
739    3,
740    [
741        f32, f32 => divide_constant_f32_ac4_in_place,
742        Complex32, Complex32 => divide_constant_f32_complex_ac4_in_place,
743    ]
744);
745impl_generic_scaled_constant_array_operation!(
746    ScaledDivideConstantAc4,
747    divide_constant_scaled,
748    divide_constant_scaled_ac4,
749    AC4,
750    3,
751    [
752        u8 => divide_constant_u8_ac4,
753        u16 => divide_constant_u16_ac4,
754        i16 => divide_constant_i16_ac4,
755        ComplexI16 => divide_constant_i16_complex_ac4,
756        ComplexI32 => divide_constant_i32_complex_ac4,
757    ]
758);
759impl_generic_scaled_constant_array_operation_in_place!(
760    ScaledDivideConstantAc4InPlace,
761    divide_constant_scaled_in_place,
762    divide_constant_scaled_ac4_in_place,
763    AC4,
764    3,
765    [
766        u8 => divide_constant_u8_ac4_in_place,
767        u16 => divide_constant_u16_ac4_in_place,
768        i16 => divide_constant_i16_ac4_in_place,
769        ComplexI16 => divide_constant_i16_complex_ac4_in_place,
770        ComplexI32 => divide_constant_i32_complex_ac4_in_place,
771    ]
772);