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);