1use super::*;
2
3impl_binary_scaled!(add_u8_c1, u8, C1, nppiAdd_8u_C1RSfs_Ctx);
4impl_binary_scaled_in_place!(add_u8_c1_in_place, u8, C1, nppiAdd_8u_C1IRSfs_Ctx);
5impl_binary_scaled!(add_u8_c3, u8, C3, nppiAdd_8u_C3RSfs_Ctx);
6impl_binary_scaled_in_place!(add_u8_c3_in_place, u8, C3, nppiAdd_8u_C3IRSfs_Ctx);
7impl_binary_scaled!(add_u8_ac4, u8, AC4, nppiAdd_8u_AC4RSfs_Ctx);
8impl_binary_scaled_in_place!(add_u8_ac4_in_place, u8, AC4, nppiAdd_8u_AC4IRSfs_Ctx);
9impl_binary_scaled!(add_u8_c4, u8, C4, nppiAdd_8u_C4RSfs_Ctx);
10impl_binary_scaled_in_place!(add_u8_c4_in_place, u8, C4, nppiAdd_8u_C4IRSfs_Ctx);
11impl_binary_scaled!(add_u16_c1, u16, C1, nppiAdd_16u_C1RSfs_Ctx);
12impl_binary_scaled_in_place!(add_u16_c1_in_place, u16, C1, nppiAdd_16u_C1IRSfs_Ctx);
13impl_binary_scaled!(add_u16_c3, u16, C3, nppiAdd_16u_C3RSfs_Ctx);
14impl_binary_scaled_in_place!(add_u16_c3_in_place, u16, C3, nppiAdd_16u_C3IRSfs_Ctx);
15impl_binary_scaled!(add_u16_ac4, u16, AC4, nppiAdd_16u_AC4RSfs_Ctx);
16impl_binary_scaled_in_place!(add_u16_ac4_in_place, u16, AC4, nppiAdd_16u_AC4IRSfs_Ctx);
17impl_binary_scaled!(add_u16_c4, u16, C4, nppiAdd_16u_C4RSfs_Ctx);
18impl_binary_scaled_in_place!(add_u16_c4_in_place, u16, C4, nppiAdd_16u_C4IRSfs_Ctx);
19impl_binary_scaled!(add_i16_c1, i16, C1, nppiAdd_16s_C1RSfs_Ctx);
20impl_binary_scaled_in_place!(add_i16_c1_in_place, i16, C1, nppiAdd_16s_C1IRSfs_Ctx);
21impl_binary_scaled!(add_i16_c3, i16, C3, nppiAdd_16s_C3RSfs_Ctx);
22impl_binary_scaled_in_place!(add_i16_c3_in_place, i16, C3, nppiAdd_16s_C3IRSfs_Ctx);
23impl_binary_scaled!(add_i16_ac4, i16, AC4, nppiAdd_16s_AC4RSfs_Ctx);
24impl_binary_scaled_in_place!(add_i16_ac4_in_place, i16, AC4, nppiAdd_16s_AC4IRSfs_Ctx);
25impl_binary_scaled!(add_i16_c4, i16, C4, nppiAdd_16s_C4RSfs_Ctx);
26impl_binary_scaled_in_place!(add_i16_c4_in_place, i16, C4, nppiAdd_16s_C4IRSfs_Ctx);
27impl_binary_scaled!(add_i16_complex_c1, ComplexI16, C1, nppiAdd_16sc_C1RSfs_Ctx);
28impl_binary_scaled_in_place!(
29 add_i16_complex_c1_in_place,
30 ComplexI16,
31 C1,
32 nppiAdd_16sc_C1IRSfs_Ctx
33);
34impl_binary_scaled!(add_i16_complex_c3, ComplexI16, C3, nppiAdd_16sc_C3RSfs_Ctx);
35impl_binary_scaled_in_place!(
36 add_i16_complex_c3_in_place,
37 ComplexI16,
38 C3,
39 nppiAdd_16sc_C3IRSfs_Ctx
40);
41impl_binary_scaled!(
42 add_i16_complex_ac4,
43 ComplexI16,
44 AC4,
45 nppiAdd_16sc_AC4RSfs_Ctx
46);
47impl_binary_scaled_in_place!(
48 add_i16_complex_ac4_in_place,
49 ComplexI16,
50 AC4,
51 nppiAdd_16sc_AC4IRSfs_Ctx
52);
53impl_binary_scaled!(add_i32_c1, i32, C1, nppiAdd_32s_C1RSfs_Ctx);
54impl_binary!(add_i32_c1_unscaled, i32, C1, nppiAdd_32s_C1R_Ctx);
55impl_binary_scaled_in_place!(add_i32_c1_in_place, i32, C1, nppiAdd_32s_C1IRSfs_Ctx);
56impl_binary_scaled!(add_i32_c3, i32, C3, nppiAdd_32s_C3RSfs_Ctx);
57impl_binary_scaled_in_place!(add_i32_c3_in_place, i32, C3, nppiAdd_32s_C3IRSfs_Ctx);
58impl_binary_scaled!(add_i32_complex_c1, ComplexI32, C1, nppiAdd_32sc_C1RSfs_Ctx);
59impl_binary_scaled_in_place!(
60 add_i32_complex_c1_in_place,
61 ComplexI32,
62 C1,
63 nppiAdd_32sc_C1IRSfs_Ctx
64);
65impl_binary_scaled!(add_i32_complex_c3, ComplexI32, C3, nppiAdd_32sc_C3RSfs_Ctx);
66impl_binary_scaled_in_place!(
67 add_i32_complex_c3_in_place,
68 ComplexI32,
69 C3,
70 nppiAdd_32sc_C3IRSfs_Ctx
71);
72impl_binary_scaled!(
73 add_i32_complex_ac4,
74 ComplexI32,
75 AC4,
76 nppiAdd_32sc_AC4RSfs_Ctx
77);
78impl_binary_scaled_in_place!(
79 add_i32_complex_ac4_in_place,
80 ComplexI32,
81 AC4,
82 nppiAdd_32sc_AC4IRSfs_Ctx
83);
84impl_binary!(add_f16_c1, f16, C1, nppiAdd_16f_C1R_Ctx);
85impl_binary_in_place!(add_f16_c1_in_place, f16, C1, nppiAdd_16f_C1IR_Ctx);
86impl_binary!(add_f16_c3, f16, C3, nppiAdd_16f_C3R_Ctx);
87impl_binary_in_place!(add_f16_c3_in_place, f16, C3, nppiAdd_16f_C3IR_Ctx);
88impl_binary!(add_f16_c4, f16, C4, nppiAdd_16f_C4R_Ctx);
89impl_binary_in_place!(add_f16_c4_in_place, f16, C4, nppiAdd_16f_C4IR_Ctx);
90impl_binary!(add_f32_c1, f32, C1, nppiAdd_32f_C1R_Ctx);
91impl_binary_in_place!(add_f32_c1_in_place, f32, C1, nppiAdd_32f_C1IR_Ctx);
92impl_binary!(add_f32_c3, f32, C3, nppiAdd_32f_C3R_Ctx);
93impl_binary_in_place!(add_f32_c3_in_place, f32, C3, nppiAdd_32f_C3IR_Ctx);
94impl_binary!(add_f32_ac4, f32, AC4, nppiAdd_32f_AC4R_Ctx);
95impl_binary_in_place!(add_f32_ac4_in_place, f32, AC4, nppiAdd_32f_AC4IR_Ctx);
96impl_binary!(add_f32_c4, f32, C4, nppiAdd_32f_C4R_Ctx);
97impl_binary_in_place!(add_f32_c4_in_place, f32, C4, nppiAdd_32f_C4IR_Ctx);
98impl_binary!(add_f32_complex_c1, Complex32, C1, nppiAdd_32fc_C1R_Ctx);
99impl_binary_in_place!(
100 add_f32_complex_c1_in_place,
101 Complex32,
102 C1,
103 nppiAdd_32fc_C1IR_Ctx
104);
105impl_binary!(add_f32_complex_c3, Complex32, C3, nppiAdd_32fc_C3R_Ctx);
106impl_binary_in_place!(
107 add_f32_complex_c3_in_place,
108 Complex32,
109 C3,
110 nppiAdd_32fc_C3IR_Ctx
111);
112impl_binary!(add_f32_complex_ac4, Complex32, AC4, nppiAdd_32fc_AC4R_Ctx);
113impl_binary_in_place!(
114 add_f32_complex_ac4_in_place,
115 Complex32,
116 AC4,
117 nppiAdd_32fc_AC4IR_Ctx
118);
119impl_binary!(add_f32_complex_c4, Complex32, C4, nppiAdd_32fc_C4R_Ctx);
120impl_binary_in_place!(
121 add_f32_complex_c4_in_place,
122 Complex32,
123 C4,
124 nppiAdd_32fc_C4IR_Ctx
125);
126
127impl_generic_binary_operation!(
128 AddC1,
129 add,
130 add_c1,
131 C1,
132 [
133 i32 => add_i32_c1_unscaled,
134 f16 => add_f16_c1,
135 f32 => add_f32_c1,
136 Complex32 => add_f32_complex_c1,
137 ]
138);
139impl_generic_binary_operation_in_place!(
140 AddC1InPlace,
141 add_in_place,
142 add_c1_in_place,
143 C1,
144 [
145 f16 => add_f16_c1_in_place,
146 f32 => add_f32_c1_in_place,
147 Complex32 => add_f32_complex_c1_in_place,
148 ]
149);
150impl_generic_scaled_binary_operation!(
151 ScaledAddC1,
152 add_scaled,
153 add_scaled_c1,
154 C1,
155 [
156 u8 => add_u8_c1,
157 u16 => add_u16_c1,
158 i16 => add_i16_c1,
159 ComplexI16 => add_i16_complex_c1,
160 i32 => add_i32_c1,
161 ComplexI32 => add_i32_complex_c1,
162 ]
163);
164impl_generic_scaled_binary_operation_in_place!(
165 ScaledAddC1InPlace,
166 add_scaled_in_place,
167 add_scaled_c1_in_place,
168 C1,
169 [
170 u8 => add_u8_c1_in_place,
171 u16 => add_u16_c1_in_place,
172 i16 => add_i16_c1_in_place,
173 ComplexI16 => add_i16_complex_c1_in_place,
174 i32 => add_i32_c1_in_place,
175 ComplexI32 => add_i32_complex_c1_in_place,
176 ]
177);
178
179impl_generic_binary_operation!(
180 MultiplyC1,
181 multiply,
182 multiply_c1,
183 C1,
184 [
185 i32 => multiply_i32_c1_unscaled,
186 f16 => multiply_f16_c1,
187 f32 => multiply_f32_c1,
188 Complex32 => multiply_f32_complex_c1,
189 ]
190);
191impl_generic_binary_operation_in_place!(
192 MultiplyC1InPlace,
193 multiply_in_place,
194 multiply_c1_in_place,
195 C1,
196 [
197 f16 => multiply_f16_c1_in_place,
198 f32 => multiply_f32_c1_in_place,
199 Complex32 => multiply_f32_complex_c1_in_place,
200 ]
201);
202impl_generic_scaled_binary_operation!(
203 ScaledMultiplyC1,
204 multiply_scaled,
205 multiply_scaled_c1,
206 C1,
207 [
208 u8 => multiply_u8_c1,
209 u16 => multiply_u16_c1,
210 i16 => multiply_i16_c1,
211 ComplexI16 => multiply_i16_complex_c1,
212 i32 => multiply_i32_c1,
213 ComplexI32 => multiply_i32_complex_c1,
214 ]
215);
216impl_generic_scaled_binary_operation_in_place!(
217 ScaledMultiplyC1InPlace,
218 multiply_scaled_in_place,
219 multiply_scaled_c1_in_place,
220 C1,
221 [
222 u8 => multiply_u8_c1_in_place,
223 u16 => multiply_u16_c1_in_place,
224 i16 => multiply_i16_c1_in_place,
225 ComplexI16 => multiply_i16_complex_c1_in_place,
226 i32 => multiply_i32_c1_in_place,
227 ComplexI32 => multiply_i32_complex_c1_in_place,
228 ]
229);
230
231impl_generic_binary_operation!(
232 SubtractC1,
233 subtract,
234 subtract_c1,
235 C1,
236 [
237 i32 => subtract_i32_c1_unscaled,
238 f16 => subtract_f16_c1,
239 f32 => subtract_f32_c1,
240 Complex32 => subtract_f32_complex_c1,
241 ]
242);
243impl_generic_binary_operation_in_place!(
244 SubtractC1InPlace,
245 subtract_in_place,
246 subtract_c1_in_place,
247 C1,
248 [
249 f16 => subtract_f16_c1_in_place,
250 f32 => subtract_f32_c1_in_place,
251 Complex32 => subtract_f32_complex_c1_in_place,
252 ]
253);
254impl_generic_scaled_binary_operation!(
255 ScaledSubtractC1,
256 subtract_scaled,
257 subtract_scaled_c1,
258 C1,
259 [
260 u8 => subtract_u8_c1,
261 u16 => subtract_u16_c1,
262 i16 => subtract_i16_c1,
263 ComplexI16 => subtract_i16_complex_c1,
264 i32 => subtract_i32_c1,
265 ComplexI32 => subtract_i32_complex_c1,
266 ]
267);
268impl_generic_scaled_binary_operation_in_place!(
269 ScaledSubtractC1InPlace,
270 subtract_scaled_in_place,
271 subtract_scaled_c1_in_place,
272 C1,
273 [
274 u8 => subtract_u8_c1_in_place,
275 u16 => subtract_u16_c1_in_place,
276 i16 => subtract_i16_c1_in_place,
277 ComplexI16 => subtract_i16_complex_c1_in_place,
278 i32 => subtract_i32_c1_in_place,
279 ComplexI32 => subtract_i32_complex_c1_in_place,
280 ]
281);
282
283impl_generic_binary_operation!(
284 DivideC1,
285 divide,
286 divide_c1,
287 C1,
288 [
289 i32 => divide_i32_c1_unscaled,
290 f16 => divide_f16_c1,
291 f32 => divide_f32_c1,
292 Complex32 => divide_f32_complex_c1,
293 ]
294);
295impl_generic_binary_operation_in_place!(
296 DivideC1InPlace,
297 divide_in_place,
298 divide_c1_in_place,
299 C1,
300 [
301 f16 => divide_f16_c1_in_place,
302 f32 => divide_f32_c1_in_place,
303 Complex32 => divide_f32_complex_c1_in_place,
304 ]
305);
306impl_generic_scaled_binary_operation!(
307 ScaledDivideC1,
308 divide_scaled,
309 divide_scaled_c1,
310 C1,
311 [
312 u8 => divide_u8_c1,
313 u16 => divide_u16_c1,
314 i16 => divide_i16_c1,
315 ComplexI16 => divide_i16_complex_c1,
316 i32 => divide_i32_c1,
317 ComplexI32 => divide_i32_complex_c1,
318 ]
319);
320impl_generic_scaled_binary_operation_in_place!(
321 ScaledDivideC1InPlace,
322 divide_scaled_in_place,
323 divide_scaled_c1_in_place,
324 C1,
325 [
326 u8 => divide_u8_c1_in_place,
327 u16 => divide_u16_c1_in_place,
328 i16 => divide_i16_c1_in_place,
329 ComplexI16 => divide_i16_complex_c1_in_place,
330 i32 => divide_i32_c1_in_place,
331 ComplexI32 => divide_i32_complex_c1_in_place,
332 ]
333);
334
335impl_generic_binary_operation!(
336 AddC3,
337 add,
338 add_c3,
339 C3,
340 [
341 f16 => add_f16_c3,
342 f32 => add_f32_c3,
343 Complex32 => add_f32_complex_c3,
344 ]
345);
346impl_generic_binary_operation_in_place!(
347 AddC3InPlace,
348 add_in_place,
349 add_c3_in_place,
350 C3,
351 [
352 f16 => add_f16_c3_in_place,
353 f32 => add_f32_c3_in_place,
354 Complex32 => add_f32_complex_c3_in_place,
355 ]
356);
357impl_generic_scaled_binary_operation!(
358 ScaledAddC3,
359 add_scaled,
360 add_scaled_c3,
361 C3,
362 [
363 u8 => add_u8_c3,
364 u16 => add_u16_c3,
365 i16 => add_i16_c3,
366 ComplexI16 => add_i16_complex_c3,
367 i32 => add_i32_c3,
368 ComplexI32 => add_i32_complex_c3,
369 ]
370);
371impl_generic_scaled_binary_operation_in_place!(
372 ScaledAddC3InPlace,
373 add_scaled_in_place,
374 add_scaled_c3_in_place,
375 C3,
376 [
377 u8 => add_u8_c3_in_place,
378 u16 => add_u16_c3_in_place,
379 i16 => add_i16_c3_in_place,
380 ComplexI16 => add_i16_complex_c3_in_place,
381 i32 => add_i32_c3_in_place,
382 ComplexI32 => add_i32_complex_c3_in_place,
383 ]
384);
385impl_generic_binary_operation!(
386 AddC4,
387 add,
388 add_c4,
389 C4,
390 [
391 f16 => add_f16_c4,
392 f32 => add_f32_c4,
393 Complex32 => add_f32_complex_c4,
394 ]
395);
396impl_generic_binary_operation_in_place!(
397 AddC4InPlace,
398 add_in_place,
399 add_c4_in_place,
400 C4,
401 [
402 f16 => add_f16_c4_in_place,
403 f32 => add_f32_c4_in_place,
404 Complex32 => add_f32_complex_c4_in_place,
405 ]
406);
407impl_generic_scaled_binary_operation!(
408 ScaledAddC4,
409 add_scaled,
410 add_scaled_c4,
411 C4,
412 [
413 u8 => add_u8_c4,
414 u16 => add_u16_c4,
415 i16 => add_i16_c4,
416 ]
417);
418impl_generic_scaled_binary_operation_in_place!(
419 ScaledAddC4InPlace,
420 add_scaled_in_place,
421 add_scaled_c4_in_place,
422 C4,
423 [
424 u8 => add_u8_c4_in_place,
425 u16 => add_u16_c4_in_place,
426 i16 => add_i16_c4_in_place,
427 ]
428);
429impl_generic_binary_operation!(
430 AddAc4,
431 add,
432 add_ac4,
433 AC4,
434 [
435 f32 => add_f32_ac4,
436 Complex32 => add_f32_complex_ac4,
437 ]
438);
439impl_generic_binary_operation_in_place!(
440 AddAc4InPlace,
441 add_in_place,
442 add_ac4_in_place,
443 AC4,
444 [
445 f32 => add_f32_ac4_in_place,
446 Complex32 => add_f32_complex_ac4_in_place,
447 ]
448);
449impl_generic_scaled_binary_operation!(
450 ScaledAddAc4,
451 add_scaled,
452 add_scaled_ac4,
453 AC4,
454 [
455 u8 => add_u8_ac4,
456 u16 => add_u16_ac4,
457 i16 => add_i16_ac4,
458 ComplexI16 => add_i16_complex_ac4,
459 ComplexI32 => add_i32_complex_ac4,
460 ]
461);
462impl_generic_scaled_binary_operation_in_place!(
463 ScaledAddAc4InPlace,
464 add_scaled_in_place,
465 add_scaled_ac4_in_place,
466 AC4,
467 [
468 u8 => add_u8_ac4_in_place,
469 u16 => add_u16_ac4_in_place,
470 i16 => add_i16_ac4_in_place,
471 ComplexI16 => add_i16_complex_ac4_in_place,
472 ComplexI32 => add_i32_complex_ac4_in_place,
473 ]
474);
475
476impl_generic_binary_operation!(
477 MultiplyC3,
478 multiply,
479 multiply_c3,
480 C3,
481 [
482 f16 => multiply_f16_c3,
483 f32 => multiply_f32_c3,
484 Complex32 => multiply_f32_complex_c3,
485 ]
486);
487impl_generic_binary_operation_in_place!(
488 MultiplyC3InPlace,
489 multiply_in_place,
490 multiply_c3_in_place,
491 C3,
492 [
493 f16 => multiply_f16_c3_in_place,
494 f32 => multiply_f32_c3_in_place,
495 Complex32 => multiply_f32_complex_c3_in_place,
496 ]
497);
498impl_generic_scaled_binary_operation!(
499 ScaledMultiplyC3,
500 multiply_scaled,
501 multiply_scaled_c3,
502 C3,
503 [
504 u8 => multiply_u8_c3,
505 u16 => multiply_u16_c3,
506 i16 => multiply_i16_c3,
507 ComplexI16 => multiply_i16_complex_c3,
508 i32 => multiply_i32_c3,
509 ComplexI32 => multiply_i32_complex_c3,
510 ]
511);
512impl_generic_scaled_binary_operation_in_place!(
513 ScaledMultiplyC3InPlace,
514 multiply_scaled_in_place,
515 multiply_scaled_c3_in_place,
516 C3,
517 [
518 u8 => multiply_u8_c3_in_place,
519 u16 => multiply_u16_c3_in_place,
520 i16 => multiply_i16_c3_in_place,
521 ComplexI16 => multiply_i16_complex_c3_in_place,
522 i32 => multiply_i32_c3_in_place,
523 ComplexI32 => multiply_i32_complex_c3_in_place,
524 ]
525);
526impl_generic_binary_operation!(
527 MultiplyC4,
528 multiply,
529 multiply_c4,
530 C4,
531 [
532 f16 => multiply_f16_c4,
533 f32 => multiply_f32_c4,
534 Complex32 => multiply_f32_complex_c4,
535 ]
536);
537impl_generic_binary_operation_in_place!(
538 MultiplyC4InPlace,
539 multiply_in_place,
540 multiply_c4_in_place,
541 C4,
542 [
543 f16 => multiply_f16_c4_in_place,
544 f32 => multiply_f32_c4_in_place,
545 Complex32 => multiply_f32_complex_c4_in_place,
546 ]
547);
548impl_generic_scaled_binary_operation!(
549 ScaledMultiplyC4,
550 multiply_scaled,
551 multiply_scaled_c4,
552 C4,
553 [
554 u8 => multiply_u8_c4,
555 u16 => multiply_u16_c4,
556 i16 => multiply_i16_c4,
557 ]
558);
559impl_generic_scaled_binary_operation_in_place!(
560 ScaledMultiplyC4InPlace,
561 multiply_scaled_in_place,
562 multiply_scaled_c4_in_place,
563 C4,
564 [
565 u8 => multiply_u8_c4_in_place,
566 u16 => multiply_u16_c4_in_place,
567 i16 => multiply_i16_c4_in_place,
568 ]
569);
570impl_generic_binary_operation!(
571 MultiplyAc4,
572 multiply,
573 multiply_ac4,
574 AC4,
575 [
576 f32 => multiply_f32_ac4,
577 Complex32 => multiply_f32_complex_ac4,
578 ]
579);
580impl_generic_binary_operation_in_place!(
581 MultiplyAc4InPlace,
582 multiply_in_place,
583 multiply_ac4_in_place,
584 AC4,
585 [
586 f32 => multiply_f32_ac4_in_place,
587 Complex32 => multiply_f32_complex_ac4_in_place,
588 ]
589);
590impl_generic_scaled_binary_operation!(
591 ScaledMultiplyAc4,
592 multiply_scaled,
593 multiply_scaled_ac4,
594 AC4,
595 [
596 u8 => multiply_u8_ac4,
597 u16 => multiply_u16_ac4,
598 i16 => multiply_i16_ac4,
599 ComplexI16 => multiply_i16_complex_ac4,
600 ComplexI32 => multiply_i32_complex_ac4,
601 ]
602);
603impl_generic_scaled_binary_operation_in_place!(
604 ScaledMultiplyAc4InPlace,
605 multiply_scaled_in_place,
606 multiply_scaled_ac4_in_place,
607 AC4,
608 [
609 u8 => multiply_u8_ac4_in_place,
610 u16 => multiply_u16_ac4_in_place,
611 i16 => multiply_i16_ac4_in_place,
612 ComplexI16 => multiply_i16_complex_ac4_in_place,
613 ComplexI32 => multiply_i32_complex_ac4_in_place,
614 ]
615);
616
617impl_generic_binary_operation!(
618 SubtractC3,
619 subtract,
620 subtract_c3,
621 C3,
622 [
623 f16 => subtract_f16_c3,
624 f32 => subtract_f32_c3,
625 Complex32 => subtract_f32_complex_c3,
626 ]
627);
628impl_generic_binary_operation_in_place!(
629 SubtractC3InPlace,
630 subtract_in_place,
631 subtract_c3_in_place,
632 C3,
633 [
634 f16 => subtract_f16_c3_in_place,
635 f32 => subtract_f32_c3_in_place,
636 Complex32 => subtract_f32_complex_c3_in_place,
637 ]
638);
639impl_generic_scaled_binary_operation!(
640 ScaledSubtractC3,
641 subtract_scaled,
642 subtract_scaled_c3,
643 C3,
644 [
645 u8 => subtract_u8_c3,
646 u16 => subtract_u16_c3,
647 i16 => subtract_i16_c3,
648 ComplexI16 => subtract_i16_complex_c3,
649 i32 => subtract_i32_c3,
650 ComplexI32 => subtract_i32_complex_c3,
651 ]
652);
653impl_generic_scaled_binary_operation_in_place!(
654 ScaledSubtractC3InPlace,
655 subtract_scaled_in_place,
656 subtract_scaled_c3_in_place,
657 C3,
658 [
659 u8 => subtract_u8_c3_in_place,
660 u16 => subtract_u16_c3_in_place,
661 i16 => subtract_i16_c3_in_place,
662 ComplexI16 => subtract_i16_complex_c3_in_place,
663 i32 => subtract_i32_c3_in_place,
664 ComplexI32 => subtract_i32_complex_c3_in_place,
665 ]
666);
667impl_generic_binary_operation!(
668 SubtractC4,
669 subtract,
670 subtract_c4,
671 C4,
672 [
673 f16 => subtract_f16_c4,
674 f32 => subtract_f32_c4,
675 Complex32 => subtract_f32_complex_c4,
676 ]
677);
678impl_generic_binary_operation_in_place!(
679 SubtractC4InPlace,
680 subtract_in_place,
681 subtract_c4_in_place,
682 C4,
683 [
684 f16 => subtract_f16_c4_in_place,
685 f32 => subtract_f32_c4_in_place,
686 Complex32 => subtract_f32_complex_c4_in_place,
687 ]
688);
689impl_generic_scaled_binary_operation!(
690 ScaledSubtractC4,
691 subtract_scaled,
692 subtract_scaled_c4,
693 C4,
694 [
695 u8 => subtract_u8_c4,
696 u16 => subtract_u16_c4,
697 i16 => subtract_i16_c4,
698 i32 => subtract_i32_c4,
699 ]
700);
701impl_generic_scaled_binary_operation_in_place!(
702 ScaledSubtractC4InPlace,
703 subtract_scaled_in_place,
704 subtract_scaled_c4_in_place,
705 C4,
706 [
707 u8 => subtract_u8_c4_in_place,
708 u16 => subtract_u16_c4_in_place,
709 i16 => subtract_i16_c4_in_place,
710 i32 => subtract_i32_c4_in_place,
711 ]
712);
713impl_generic_binary_operation!(
714 SubtractAc4,
715 subtract,
716 subtract_ac4,
717 AC4,
718 [
719 f32 => subtract_f32_ac4,
720 Complex32 => subtract_f32_complex_ac4,
721 ]
722);
723impl_generic_binary_operation_in_place!(
724 SubtractAc4InPlace,
725 subtract_in_place,
726 subtract_ac4_in_place,
727 AC4,
728 [
729 f32 => subtract_f32_ac4_in_place,
730 Complex32 => subtract_f32_complex_ac4_in_place,
731 ]
732);
733impl_generic_scaled_binary_operation!(
734 ScaledSubtractAc4,
735 subtract_scaled,
736 subtract_scaled_ac4,
737 AC4,
738 [
739 u8 => subtract_u8_ac4,
740 u16 => subtract_u16_ac4,
741 i16 => subtract_i16_ac4,
742 ComplexI16 => subtract_i16_complex_ac4,
743 ComplexI32 => subtract_i32_complex_ac4,
744 ]
745);
746impl_generic_scaled_binary_operation_in_place!(
747 ScaledSubtractAc4InPlace,
748 subtract_scaled_in_place,
749 subtract_scaled_ac4_in_place,
750 AC4,
751 [
752 u8 => subtract_u8_ac4_in_place,
753 u16 => subtract_u16_ac4_in_place,
754 i16 => subtract_i16_ac4_in_place,
755 ComplexI16 => subtract_i16_complex_ac4_in_place,
756 ComplexI32 => subtract_i32_complex_ac4_in_place,
757 ]
758);
759
760impl_generic_binary_operation!(
761 DivideC3,
762 divide,
763 divide_c3,
764 C3,
765 [
766 f16 => divide_f16_c3,
767 f32 => divide_f32_c3,
768 Complex32 => divide_f32_complex_c3,
769 ]
770);
771impl_generic_binary_operation_in_place!(
772 DivideC3InPlace,
773 divide_in_place,
774 divide_c3_in_place,
775 C3,
776 [
777 f16 => divide_f16_c3_in_place,
778 f32 => divide_f32_c3_in_place,
779 Complex32 => divide_f32_complex_c3_in_place,
780 ]
781);
782impl_generic_scaled_binary_operation!(
783 ScaledDivideC3,
784 divide_scaled,
785 divide_scaled_c3,
786 C3,
787 [
788 u8 => divide_u8_c3,
789 u16 => divide_u16_c3,
790 i16 => divide_i16_c3,
791 ComplexI16 => divide_i16_complex_c3,
792 i32 => divide_i32_c3,
793 ComplexI32 => divide_i32_complex_c3,
794 ]
795);
796impl_generic_scaled_binary_operation_in_place!(
797 ScaledDivideC3InPlace,
798 divide_scaled_in_place,
799 divide_scaled_c3_in_place,
800 C3,
801 [
802 u8 => divide_u8_c3_in_place,
803 u16 => divide_u16_c3_in_place,
804 i16 => divide_i16_c3_in_place,
805 ComplexI16 => divide_i16_complex_c3_in_place,
806 i32 => divide_i32_c3_in_place,
807 ComplexI32 => divide_i32_complex_c3_in_place,
808 ]
809);
810impl_generic_binary_operation!(
811 DivideC4,
812 divide,
813 divide_c4,
814 C4,
815 [
816 f16 => divide_f16_c4,
817 f32 => divide_f32_c4,
818 Complex32 => divide_f32_complex_c4,
819 ]
820);
821impl_generic_binary_operation_in_place!(
822 DivideC4InPlace,
823 divide_in_place,
824 divide_c4_in_place,
825 C4,
826 [
827 f16 => divide_f16_c4_in_place,
828 f32 => divide_f32_c4_in_place,
829 Complex32 => divide_f32_complex_c4_in_place,
830 ]
831);
832impl_generic_scaled_binary_operation!(
833 ScaledDivideC4,
834 divide_scaled,
835 divide_scaled_c4,
836 C4,
837 [
838 u8 => divide_u8_c4,
839 u16 => divide_u16_c4,
840 i16 => divide_i16_c4,
841 ]
842);
843impl_generic_scaled_binary_operation_in_place!(
844 ScaledDivideC4InPlace,
845 divide_scaled_in_place,
846 divide_scaled_c4_in_place,
847 C4,
848 [
849 u8 => divide_u8_c4_in_place,
850 u16 => divide_u16_c4_in_place,
851 i16 => divide_i16_c4_in_place,
852 ]
853);
854impl_generic_binary_operation!(
855 DivideAc4,
856 divide,
857 divide_ac4,
858 AC4,
859 [
860 f32 => divide_f32_ac4,
861 Complex32 => divide_f32_complex_ac4,
862 ]
863);
864impl_generic_binary_operation_in_place!(
865 DivideAc4InPlace,
866 divide_in_place,
867 divide_ac4_in_place,
868 AC4,
869 [
870 f32 => divide_f32_ac4_in_place,
871 Complex32 => divide_f32_complex_ac4_in_place,
872 ]
873);
874impl_generic_scaled_binary_operation!(
875 ScaledDivideAc4,
876 divide_scaled,
877 divide_scaled_ac4,
878 AC4,
879 [
880 u8 => divide_u8_ac4,
881 u16 => divide_u16_ac4,
882 i16 => divide_i16_ac4,
883 ComplexI16 => divide_i16_complex_ac4,
884 ComplexI32 => divide_i32_complex_ac4,
885 ]
886);
887impl_generic_scaled_binary_operation_in_place!(
888 ScaledDivideAc4InPlace,
889 divide_scaled_in_place,
890 divide_scaled_ac4_in_place,
891 AC4,
892 [
893 u8 => divide_u8_ac4_in_place,
894 u16 => divide_u16_ac4_in_place,
895 i16 => divide_i16_ac4_in_place,
896 ComplexI16 => divide_i16_complex_ac4_in_place,
897 ComplexI32 => divide_i32_complex_ac4_in_place,
898 ]
899);
900
901impl_generic_binary_operation!(
902 MultiplyScaleC1,
903 multiply_scale,
904 multiply_scale_c1,
905 C1,
906 [
907 u8 => multiply_scale_u8_c1,
908 u16 => multiply_scale_u16_c1,
909 ]
910);
911impl_generic_binary_operation_in_place!(
912 MultiplyScaleC1InPlace,
913 multiply_scale_in_place,
914 multiply_scale_c1_in_place,
915 C1,
916 [
917 u8 => multiply_scale_u8_c1_in_place,
918 u16 => multiply_scale_u16_c1_in_place,
919 ]
920);
921impl_generic_binary_operation!(
922 MultiplyScaleC3,
923 multiply_scale,
924 multiply_scale_c3,
925 C3,
926 [
927 u8 => multiply_scale_u8_c3,
928 u16 => multiply_scale_u16_c3,
929 ]
930);
931impl_generic_binary_operation_in_place!(
932 MultiplyScaleC3InPlace,
933 multiply_scale_in_place,
934 multiply_scale_c3_in_place,
935 C3,
936 [
937 u8 => multiply_scale_u8_c3_in_place,
938 u16 => multiply_scale_u16_c3_in_place,
939 ]
940);
941impl_generic_binary_operation!(
942 MultiplyScaleC4,
943 multiply_scale,
944 multiply_scale_c4,
945 C4,
946 [
947 u8 => multiply_scale_u8_c4,
948 u16 => multiply_scale_u16_c4,
949 ]
950);
951impl_generic_binary_operation_in_place!(
952 MultiplyScaleC4InPlace,
953 multiply_scale_in_place,
954 multiply_scale_c4_in_place,
955 C4,
956 [
957 u8 => multiply_scale_u8_c4_in_place,
958 u16 => multiply_scale_u16_c4_in_place,
959 ]
960);
961impl_generic_binary_operation!(
962 MultiplyScaleAc4,
963 multiply_scale,
964 multiply_scale_ac4,
965 AC4,
966 [
967 u8 => multiply_scale_u8_ac4,
968 u16 => multiply_scale_u16_ac4,
969 ]
970);
971impl_generic_binary_operation_in_place!(
972 MultiplyScaleAc4InPlace,
973 multiply_scale_in_place,
974 multiply_scale_ac4_in_place,
975 AC4,
976 [
977 u8 => multiply_scale_u8_ac4_in_place,
978 u16 => multiply_scale_u16_ac4_in_place,
979 ]
980);
981
982impl_generic_round_scaled_binary_operation!(
983 DivideRoundC1,
984 divide_round,
985 divide_round_c1,
986 C1,
987 [
988 u8 => divide_round_u8_c1,
989 u16 => divide_round_u16_c1,
990 i16 => divide_round_i16_c1,
991 ]
992);
993impl_generic_round_scaled_binary_operation_in_place!(
994 DivideRoundC1InPlace,
995 divide_round_in_place,
996 divide_round_c1_in_place,
997 C1,
998 [
999 u8 => divide_round_u8_c1_in_place,
1000 u16 => divide_round_u16_c1_in_place,
1001 i16 => divide_round_i16_c1_in_place,
1002 ]
1003);
1004impl_generic_round_scaled_binary_operation!(
1005 DivideRoundC3,
1006 divide_round,
1007 divide_round_c3,
1008 C3,
1009 [
1010 u8 => divide_round_u8_c3,
1011 u16 => divide_round_u16_c3,
1012 i16 => divide_round_i16_c3,
1013 ]
1014);
1015impl_generic_round_scaled_binary_operation_in_place!(
1016 DivideRoundC3InPlace,
1017 divide_round_in_place,
1018 divide_round_c3_in_place,
1019 C3,
1020 [
1021 u8 => divide_round_u8_c3_in_place,
1022 u16 => divide_round_u16_c3_in_place,
1023 i16 => divide_round_i16_c3_in_place,
1024 ]
1025);
1026impl_generic_round_scaled_binary_operation!(
1027 DivideRoundC4,
1028 divide_round,
1029 divide_round_c4,
1030 C4,
1031 [
1032 u8 => divide_round_u8_c4,
1033 u16 => divide_round_u16_c4,
1034 i16 => divide_round_i16_c4,
1035 ]
1036);
1037impl_generic_round_scaled_binary_operation_in_place!(
1038 DivideRoundC4InPlace,
1039 divide_round_in_place,
1040 divide_round_c4_in_place,
1041 C4,
1042 [
1043 u8 => divide_round_u8_c4_in_place,
1044 u16 => divide_round_u16_c4_in_place,
1045 i16 => divide_round_i16_c4_in_place,
1046 ]
1047);
1048impl_generic_round_scaled_binary_operation!(
1049 DivideRoundAc4,
1050 divide_round,
1051 divide_round_ac4,
1052 AC4,
1053 [
1054 u8 => divide_round_u8_ac4,
1055 u16 => divide_round_u16_ac4,
1056 i16 => divide_round_i16_ac4,
1057 ]
1058);
1059impl_generic_round_scaled_binary_operation_in_place!(
1060 DivideRoundAc4InPlace,
1061 divide_round_in_place,
1062 divide_round_ac4_in_place,
1063 AC4,
1064 [
1065 u8 => divide_round_u8_ac4_in_place,
1066 u16 => divide_round_u16_ac4_in_place,
1067 i16 => divide_round_i16_ac4_in_place,
1068 ]
1069);