Skip to main content

singe_npp/image/
arithmetic_constant_dispatch_device_arithmetic.rs

1use super::*;
2
3impl_generic_device_constant_operation!(
4    AddDeviceConstantC1,
5    add_device_constant,
6    add_device_constant_c1,
7    C1,
8    [
9        f16, f32 => add_device_constant_f16_c1,
10        f32, f32 => add_device_constant_f32_c1,
11    ]
12);
13impl_generic_device_constant_operation_in_place!(
14    AddDeviceConstantC1InPlace,
15    add_device_constant_in_place,
16    add_device_constant_c1_in_place,
17    C1,
18    [
19        f16, f32 => add_device_constant_f16_c1_in_place,
20        f32, f32 => add_device_constant_f32_c1_in_place,
21    ]
22);
23impl_generic_scaled_device_constant_operation!(
24    ScaledAddDeviceConstantC1,
25    add_device_constant_scaled,
26    add_device_constant_scaled_c1,
27    C1,
28    [
29        u8 => add_device_constant_u8_c1,
30        u16 => add_device_constant_u16_c1,
31        i16 => add_device_constant_i16_c1,
32        i32 => add_device_constant_i32_c1,
33    ]
34);
35impl_generic_scaled_device_constant_operation_in_place!(
36    ScaledAddDeviceConstantC1InPlace,
37    add_device_constant_scaled_in_place,
38    add_device_constant_scaled_c1_in_place,
39    C1,
40    [
41        u8 => add_device_constant_u8_c1_in_place,
42        u16 => add_device_constant_u16_c1_in_place,
43        i16 => add_device_constant_i16_c1_in_place,
44        i32 => add_device_constant_i32_c1_in_place,
45    ]
46);
47impl_generic_device_constant_operation!(
48    AddDeviceConstantC3,
49    add_device_constant,
50    add_device_constant_c3,
51    C3,
52    [
53        f16, f32 => add_device_constant_f16_c3,
54        f32, f32 => add_device_constant_f32_c3,
55    ]
56);
57impl_generic_device_constant_operation_in_place!(
58    AddDeviceConstantC3InPlace,
59    add_device_constant_in_place,
60    add_device_constant_c3_in_place,
61    C3,
62    [
63        f16, f32 => add_device_constant_f16_c3_in_place,
64        f32, f32 => add_device_constant_f32_c3_in_place,
65    ]
66);
67impl_generic_scaled_device_constant_operation!(
68    ScaledAddDeviceConstantC3,
69    add_device_constant_scaled,
70    add_device_constant_scaled_c3,
71    C3,
72    [
73        u8 => add_device_constant_u8_c3,
74        u16 => add_device_constant_u16_c3,
75        i16 => add_device_constant_i16_c3,
76        i32 => add_device_constant_i32_c3,
77    ]
78);
79impl_generic_scaled_device_constant_operation_in_place!(
80    ScaledAddDeviceConstantC3InPlace,
81    add_device_constant_scaled_in_place,
82    add_device_constant_scaled_c3_in_place,
83    C3,
84    [
85        u8 => add_device_constant_u8_c3_in_place,
86        u16 => add_device_constant_u16_c3_in_place,
87        i16 => add_device_constant_i16_c3_in_place,
88        i32 => add_device_constant_i32_c3_in_place,
89    ]
90);
91impl_generic_device_constant_operation!(
92    AddDeviceConstantC4,
93    add_device_constant,
94    add_device_constant_c4,
95    C4,
96    [
97        f16, f32 => add_device_constant_f16_c4,
98        f32, f32 => add_device_constant_f32_c4,
99    ]
100);
101impl_generic_device_constant_operation_in_place!(
102    AddDeviceConstantC4InPlace,
103    add_device_constant_in_place,
104    add_device_constant_c4_in_place,
105    C4,
106    [
107        f16, f32 => add_device_constant_f16_c4_in_place,
108        f32, f32 => add_device_constant_f32_c4_in_place,
109    ]
110);
111impl_generic_scaled_device_constant_operation!(
112    ScaledAddDeviceConstantC4,
113    add_device_constant_scaled,
114    add_device_constant_scaled_c4,
115    C4,
116    [
117        u8 => add_device_constant_u8_c4,
118        u16 => add_device_constant_u16_c4,
119        i16 => add_device_constant_i16_c4,
120    ]
121);
122impl_generic_scaled_device_constant_operation_in_place!(
123    ScaledAddDeviceConstantC4InPlace,
124    add_device_constant_scaled_in_place,
125    add_device_constant_scaled_c4_in_place,
126    C4,
127    [
128        u8 => add_device_constant_u8_c4_in_place,
129        u16 => add_device_constant_u16_c4_in_place,
130        i16 => add_device_constant_i16_c4_in_place,
131    ]
132);
133impl_generic_device_constant_operation!(
134    AddDeviceConstantAc4,
135    add_device_constant,
136    add_device_constant_ac4,
137    AC4,
138    [f32, f32 => add_device_constant_f32_ac4]
139);
140impl_generic_device_constant_operation_in_place!(
141    AddDeviceConstantAc4InPlace,
142    add_device_constant_in_place,
143    add_device_constant_ac4_in_place,
144    AC4,
145    [f32, f32 => add_device_constant_f32_ac4_in_place]
146);
147impl_generic_scaled_device_constant_operation!(
148    ScaledAddDeviceConstantAc4,
149    add_device_constant_scaled,
150    add_device_constant_scaled_ac4,
151    AC4,
152    [
153        u8 => add_device_constant_u8_ac4,
154        u16 => add_device_constant_u16_ac4,
155        i16 => add_device_constant_i16_ac4,
156    ]
157);
158impl_generic_scaled_device_constant_operation_in_place!(
159    ScaledAddDeviceConstantAc4InPlace,
160    add_device_constant_scaled_in_place,
161    add_device_constant_scaled_ac4_in_place,
162    AC4,
163    [
164        u8 => add_device_constant_u8_ac4_in_place,
165        u16 => add_device_constant_u16_ac4_in_place,
166        i16 => add_device_constant_i16_ac4_in_place,
167    ]
168);
169
170impl_generic_device_constant_operation!(
171    MultiplyDeviceConstantC1,
172    multiply_device_constant,
173    multiply_device_constant_c1,
174    C1,
175    [
176        f16, f32 => multiply_device_constant_f16_c1,
177        f32, f32 => multiply_device_constant_f32_c1,
178    ]
179);
180impl_generic_device_constant_operation_in_place!(
181    MultiplyDeviceConstantC1InPlace,
182    multiply_device_constant_in_place,
183    multiply_device_constant_c1_in_place,
184    C1,
185    [
186        f16, f32 => multiply_device_constant_f16_c1_in_place,
187        f32, f32 => multiply_device_constant_f32_c1_in_place,
188    ]
189);
190impl_generic_scaled_device_constant_operation!(
191    ScaledMultiplyDeviceConstantC1,
192    multiply_device_constant_scaled,
193    multiply_device_constant_scaled_c1,
194    C1,
195    [
196        u8 => multiply_device_constant_u8_c1,
197        u16 => multiply_device_constant_u16_c1,
198        i16 => multiply_device_constant_i16_c1,
199        i32 => multiply_device_constant_i32_c1,
200    ]
201);
202impl_generic_scaled_device_constant_operation_in_place!(
203    ScaledMultiplyDeviceConstantC1InPlace,
204    multiply_device_constant_scaled_in_place,
205    multiply_device_constant_scaled_c1_in_place,
206    C1,
207    [
208        u8 => multiply_device_constant_u8_c1_in_place,
209        u16 => multiply_device_constant_u16_c1_in_place,
210        i16 => multiply_device_constant_i16_c1_in_place,
211        i32 => multiply_device_constant_i32_c1_in_place,
212    ]
213);
214impl_generic_device_constant_operation!(
215    MultiplyDeviceConstantC3,
216    multiply_device_constant,
217    multiply_device_constant_c3,
218    C3,
219    [
220        f16, f32 => multiply_device_constant_f16_c3,
221        f32, f32 => multiply_device_constant_f32_c3,
222    ]
223);
224impl_generic_device_constant_operation_in_place!(
225    MultiplyDeviceConstantC3InPlace,
226    multiply_device_constant_in_place,
227    multiply_device_constant_c3_in_place,
228    C3,
229    [
230        f16, f32 => multiply_device_constant_f16_c3_in_place,
231        f32, f32 => multiply_device_constant_f32_c3_in_place,
232    ]
233);
234impl_generic_scaled_device_constant_operation!(
235    ScaledMultiplyDeviceConstantC3,
236    multiply_device_constant_scaled,
237    multiply_device_constant_scaled_c3,
238    C3,
239    [
240        u8 => multiply_device_constant_u8_c3,
241        u16 => multiply_device_constant_u16_c3,
242        i16 => multiply_device_constant_i16_c3,
243        i32 => multiply_device_constant_i32_c3,
244    ]
245);
246impl_generic_scaled_device_constant_operation_in_place!(
247    ScaledMultiplyDeviceConstantC3InPlace,
248    multiply_device_constant_scaled_in_place,
249    multiply_device_constant_scaled_c3_in_place,
250    C3,
251    [
252        u8 => multiply_device_constant_u8_c3_in_place,
253        u16 => multiply_device_constant_u16_c3_in_place,
254        i16 => multiply_device_constant_i16_c3_in_place,
255        i32 => multiply_device_constant_i32_c3_in_place,
256    ]
257);
258impl_generic_device_constant_operation!(
259    MultiplyDeviceConstantC4,
260    multiply_device_constant,
261    multiply_device_constant_c4,
262    C4,
263    [
264        f16, f32 => multiply_device_constant_f16_c4,
265        f32, f32 => multiply_device_constant_f32_c4,
266    ]
267);
268impl_generic_device_constant_operation_in_place!(
269    MultiplyDeviceConstantC4InPlace,
270    multiply_device_constant_in_place,
271    multiply_device_constant_c4_in_place,
272    C4,
273    [
274        f16, f32 => multiply_device_constant_f16_c4_in_place,
275        f32, f32 => multiply_device_constant_f32_c4_in_place,
276    ]
277);
278impl_generic_scaled_device_constant_operation!(
279    ScaledMultiplyDeviceConstantC4,
280    multiply_device_constant_scaled,
281    multiply_device_constant_scaled_c4,
282    C4,
283    [
284        u8 => multiply_device_constant_u8_c4,
285        u16 => multiply_device_constant_u16_c4,
286        i16 => multiply_device_constant_i16_c4,
287    ]
288);
289impl_generic_scaled_device_constant_operation_in_place!(
290    ScaledMultiplyDeviceConstantC4InPlace,
291    multiply_device_constant_scaled_in_place,
292    multiply_device_constant_scaled_c4_in_place,
293    C4,
294    [
295        u8 => multiply_device_constant_u8_c4_in_place,
296        u16 => multiply_device_constant_u16_c4_in_place,
297        i16 => multiply_device_constant_i16_c4_in_place,
298    ]
299);
300impl_generic_device_constant_operation!(
301    MultiplyDeviceConstantAc4,
302    multiply_device_constant,
303    multiply_device_constant_ac4,
304    AC4,
305    [f32, f32 => multiply_device_constant_f32_ac4]
306);
307impl_generic_device_constant_operation_in_place!(
308    MultiplyDeviceConstantAc4InPlace,
309    multiply_device_constant_in_place,
310    multiply_device_constant_ac4_in_place,
311    AC4,
312    [f32, f32 => multiply_device_constant_f32_ac4_in_place]
313);
314impl_generic_scaled_device_constant_operation!(
315    ScaledMultiplyDeviceConstantAc4,
316    multiply_device_constant_scaled,
317    multiply_device_constant_scaled_ac4,
318    AC4,
319    [
320        u8 => multiply_device_constant_u8_ac4,
321        u16 => multiply_device_constant_u16_ac4,
322        i16 => multiply_device_constant_i16_ac4,
323    ]
324);
325impl_generic_scaled_device_constant_operation_in_place!(
326    ScaledMultiplyDeviceConstantAc4InPlace,
327    multiply_device_constant_scaled_in_place,
328    multiply_device_constant_scaled_ac4_in_place,
329    AC4,
330    [
331        u8 => multiply_device_constant_u8_ac4_in_place,
332        u16 => multiply_device_constant_u16_ac4_in_place,
333        i16 => multiply_device_constant_i16_ac4_in_place,
334    ]
335);
336
337impl_generic_device_constant_operation!(
338    SubtractDeviceConstantC1,
339    subtract_device_constant,
340    subtract_device_constant_c1,
341    C1,
342    [
343        f16, f32 => subtract_device_constant_f16_c1,
344        f32, f32 => subtract_device_constant_f32_c1,
345    ]
346);
347impl_generic_device_constant_operation_in_place!(
348    SubtractDeviceConstantC1InPlace,
349    subtract_device_constant_in_place,
350    subtract_device_constant_c1_in_place,
351    C1,
352    [
353        f16, f32 => subtract_device_constant_f16_c1_in_place,
354        f32, f32 => subtract_device_constant_f32_c1_in_place,
355    ]
356);
357impl_generic_scaled_device_constant_operation!(
358    ScaledSubtractDeviceConstantC1,
359    subtract_device_constant_scaled,
360    subtract_device_constant_scaled_c1,
361    C1,
362    [
363        u8 => subtract_device_constant_u8_c1,
364        u16 => subtract_device_constant_u16_c1,
365        i16 => subtract_device_constant_i16_c1,
366        i32 => subtract_device_constant_i32_c1,
367    ]
368);
369impl_generic_scaled_device_constant_operation_in_place!(
370    ScaledSubtractDeviceConstantC1InPlace,
371    subtract_device_constant_scaled_in_place,
372    subtract_device_constant_scaled_c1_in_place,
373    C1,
374    [
375        u8 => subtract_device_constant_u8_c1_in_place,
376        u16 => subtract_device_constant_u16_c1_in_place,
377        i16 => subtract_device_constant_i16_c1_in_place,
378        i32 => subtract_device_constant_i32_c1_in_place,
379    ]
380);
381impl_generic_device_constant_operation!(
382    SubtractDeviceConstantC3,
383    subtract_device_constant,
384    subtract_device_constant_c3,
385    C3,
386    [
387        f16, f32 => subtract_device_constant_f16_c3,
388        f32, f32 => subtract_device_constant_f32_c3,
389    ]
390);
391impl_generic_device_constant_operation_in_place!(
392    SubtractDeviceConstantC3InPlace,
393    subtract_device_constant_in_place,
394    subtract_device_constant_c3_in_place,
395    C3,
396    [
397        f16, f32 => subtract_device_constant_f16_c3_in_place,
398        f32, f32 => subtract_device_constant_f32_c3_in_place,
399    ]
400);
401impl_generic_scaled_device_constant_operation!(
402    ScaledSubtractDeviceConstantC3,
403    subtract_device_constant_scaled,
404    subtract_device_constant_scaled_c3,
405    C3,
406    [
407        u8 => subtract_device_constant_u8_c3,
408        u16 => subtract_device_constant_u16_c3,
409        i16 => subtract_device_constant_i16_c3,
410        i32 => subtract_device_constant_i32_c3,
411    ]
412);
413impl_generic_scaled_device_constant_operation_in_place!(
414    ScaledSubtractDeviceConstantC3InPlace,
415    subtract_device_constant_scaled_in_place,
416    subtract_device_constant_scaled_c3_in_place,
417    C3,
418    [
419        u8 => subtract_device_constant_u8_c3_in_place,
420        u16 => subtract_device_constant_u16_c3_in_place,
421        i16 => subtract_device_constant_i16_c3_in_place,
422        i32 => subtract_device_constant_i32_c3_in_place,
423    ]
424);
425impl_generic_device_constant_operation!(
426    SubtractDeviceConstantC4,
427    subtract_device_constant,
428    subtract_device_constant_c4,
429    C4,
430    [
431        f16, f32 => subtract_device_constant_f16_c4,
432        f32, f32 => subtract_device_constant_f32_c4,
433    ]
434);
435impl_generic_device_constant_operation_in_place!(
436    SubtractDeviceConstantC4InPlace,
437    subtract_device_constant_in_place,
438    subtract_device_constant_c4_in_place,
439    C4,
440    [
441        f16, f32 => subtract_device_constant_f16_c4_in_place,
442        f32, f32 => subtract_device_constant_f32_c4_in_place,
443    ]
444);
445impl_generic_scaled_device_constant_operation!(
446    ScaledSubtractDeviceConstantC4,
447    subtract_device_constant_scaled,
448    subtract_device_constant_scaled_c4,
449    C4,
450    [
451        u8 => subtract_device_constant_u8_c4,
452        u16 => subtract_device_constant_u16_c4,
453        i16 => subtract_device_constant_i16_c4,
454    ]
455);
456impl_generic_scaled_device_constant_operation_in_place!(
457    ScaledSubtractDeviceConstantC4InPlace,
458    subtract_device_constant_scaled_in_place,
459    subtract_device_constant_scaled_c4_in_place,
460    C4,
461    [
462        u8 => subtract_device_constant_u8_c4_in_place,
463        u16 => subtract_device_constant_u16_c4_in_place,
464        i16 => subtract_device_constant_i16_c4_in_place,
465    ]
466);
467impl_generic_device_constant_operation!(
468    SubtractDeviceConstantAc4,
469    subtract_device_constant,
470    subtract_device_constant_ac4,
471    AC4,
472    [f32, f32 => subtract_device_constant_f32_ac4]
473);
474impl_generic_device_constant_operation_in_place!(
475    SubtractDeviceConstantAc4InPlace,
476    subtract_device_constant_in_place,
477    subtract_device_constant_ac4_in_place,
478    AC4,
479    [f32, f32 => subtract_device_constant_f32_ac4_in_place]
480);
481impl_generic_scaled_device_constant_operation!(
482    ScaledSubtractDeviceConstantAc4,
483    subtract_device_constant_scaled,
484    subtract_device_constant_scaled_ac4,
485    AC4,
486    [
487        u8 => subtract_device_constant_u8_ac4,
488        u16 => subtract_device_constant_u16_ac4,
489        i16 => subtract_device_constant_i16_ac4,
490    ]
491);
492impl_generic_scaled_device_constant_operation_in_place!(
493    ScaledSubtractDeviceConstantAc4InPlace,
494    subtract_device_constant_scaled_in_place,
495    subtract_device_constant_scaled_ac4_in_place,
496    AC4,
497    [
498        u8 => subtract_device_constant_u8_ac4_in_place,
499        u16 => subtract_device_constant_u16_ac4_in_place,
500        i16 => subtract_device_constant_i16_ac4_in_place,
501    ]
502);
503
504impl_generic_device_constant_operation!(
505    DivideDeviceConstantC1,
506    divide_device_constant,
507    divide_device_constant_c1,
508    C1,
509    [
510        f16, f32 => divide_device_constant_f16_c1,
511        f32, f32 => divide_device_constant_f32_c1,
512    ]
513);
514impl_generic_device_constant_operation_in_place!(
515    DivideDeviceConstantC1InPlace,
516    divide_device_constant_in_place,
517    divide_device_constant_c1_in_place,
518    C1,
519    [
520        f16, f32 => divide_device_constant_f16_c1_in_place,
521        f32, f32 => divide_device_constant_f32_c1_in_place,
522    ]
523);
524impl_generic_scaled_device_constant_operation!(
525    ScaledDivideDeviceConstantC1,
526    divide_device_constant_scaled,
527    divide_device_constant_scaled_c1,
528    C1,
529    [
530        u8 => divide_device_constant_u8_c1,
531        u16 => divide_device_constant_u16_c1,
532        i16 => divide_device_constant_i16_c1,
533        i32 => divide_device_constant_i32_c1,
534    ]
535);
536impl_generic_scaled_device_constant_operation_in_place!(
537    ScaledDivideDeviceConstantC1InPlace,
538    divide_device_constant_scaled_in_place,
539    divide_device_constant_scaled_c1_in_place,
540    C1,
541    [
542        u8 => divide_device_constant_u8_c1_in_place,
543        u16 => divide_device_constant_u16_c1_in_place,
544        i16 => divide_device_constant_i16_c1_in_place,
545        i32 => divide_device_constant_i32_c1_in_place,
546    ]
547);
548impl_generic_device_constant_operation!(
549    DivideDeviceConstantC3,
550    divide_device_constant,
551    divide_device_constant_c3,
552    C3,
553    [
554        f16, f32 => divide_device_constant_f16_c3,
555        f32, f32 => divide_device_constant_f32_c3,
556    ]
557);
558impl_generic_device_constant_operation_in_place!(
559    DivideDeviceConstantC3InPlace,
560    divide_device_constant_in_place,
561    divide_device_constant_c3_in_place,
562    C3,
563    [
564        f16, f32 => divide_device_constant_f16_c3_in_place,
565        f32, f32 => divide_device_constant_f32_c3_in_place,
566    ]
567);
568impl_generic_scaled_device_constant_operation!(
569    ScaledDivideDeviceConstantC3,
570    divide_device_constant_scaled,
571    divide_device_constant_scaled_c3,
572    C3,
573    [
574        u8 => divide_device_constant_u8_c3,
575        u16 => divide_device_constant_u16_c3,
576        i16 => divide_device_constant_i16_c3,
577        i32 => divide_device_constant_i32_c3,
578    ]
579);
580impl_generic_scaled_device_constant_operation_in_place!(
581    ScaledDivideDeviceConstantC3InPlace,
582    divide_device_constant_scaled_in_place,
583    divide_device_constant_scaled_c3_in_place,
584    C3,
585    [
586        u8 => divide_device_constant_u8_c3_in_place,
587        u16 => divide_device_constant_u16_c3_in_place,
588        i16 => divide_device_constant_i16_c3_in_place,
589        i32 => divide_device_constant_i32_c3_in_place,
590    ]
591);
592impl_generic_device_constant_operation!(
593    DivideDeviceConstantC4,
594    divide_device_constant,
595    divide_device_constant_c4,
596    C4,
597    [
598        f16, f32 => divide_device_constant_f16_c4,
599        f32, f32 => divide_device_constant_f32_c4,
600    ]
601);
602impl_generic_device_constant_operation_in_place!(
603    DivideDeviceConstantC4InPlace,
604    divide_device_constant_in_place,
605    divide_device_constant_c4_in_place,
606    C4,
607    [
608        f16, f32 => divide_device_constant_f16_c4_in_place,
609        f32, f32 => divide_device_constant_f32_c4_in_place,
610    ]
611);
612impl_generic_scaled_device_constant_operation!(
613    ScaledDivideDeviceConstantC4,
614    divide_device_constant_scaled,
615    divide_device_constant_scaled_c4,
616    C4,
617    [
618        u8 => divide_device_constant_u8_c4,
619        u16 => divide_device_constant_u16_c4,
620        i16 => divide_device_constant_i16_c4,
621    ]
622);
623impl_generic_scaled_device_constant_operation_in_place!(
624    ScaledDivideDeviceConstantC4InPlace,
625    divide_device_constant_scaled_in_place,
626    divide_device_constant_scaled_c4_in_place,
627    C4,
628    [
629        u8 => divide_device_constant_u8_c4_in_place,
630        u16 => divide_device_constant_u16_c4_in_place,
631        i16 => divide_device_constant_i16_c4_in_place,
632    ]
633);
634impl_generic_device_constant_operation!(
635    DivideDeviceConstantAc4,
636    divide_device_constant,
637    divide_device_constant_ac4,
638    AC4,
639    [f32, f32 => divide_device_constant_f32_ac4]
640);
641impl_generic_device_constant_operation_in_place!(
642    DivideDeviceConstantAc4InPlace,
643    divide_device_constant_in_place,
644    divide_device_constant_ac4_in_place,
645    AC4,
646    [f32, f32 => divide_device_constant_f32_ac4_in_place]
647);
648impl_generic_scaled_device_constant_operation!(
649    ScaledDivideDeviceConstantAc4,
650    divide_device_constant_scaled,
651    divide_device_constant_scaled_ac4,
652    AC4,
653    [
654        u8 => divide_device_constant_u8_ac4,
655        u16 => divide_device_constant_u16_ac4,
656        i16 => divide_device_constant_i16_ac4,
657    ]
658);
659impl_generic_scaled_device_constant_operation_in_place!(
660    ScaledDivideDeviceConstantAc4InPlace,
661    divide_device_constant_scaled_in_place,
662    divide_device_constant_scaled_ac4_in_place,
663    AC4,
664    [
665        u8 => divide_device_constant_u8_ac4_in_place,
666        u16 => divide_device_constant_u16_ac4_in_place,
667        i16 => divide_device_constant_i16_ac4_in_place,
668    ]
669);