1use super::super::opcodes::*;
2use crate::core::emitter::*;
3use crate::core::operand::*;
4use crate::x86::assembler::*;
5use crate::x86::operands::*;
6
7const NOREG: Operand = Operand::new();
9
10pub trait VpdpbusdEmitter<A, B, C> {
27 fn vpdpbusd(&mut self, op0: A, op1: B, op2: C);
28}
29
30impl<'a> VpdpbusdEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
31 fn vpdpbusd(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
32 self.emit(
33 VPDPBUSD128RRR,
34 op0.as_operand(),
35 op1.as_operand(),
36 op2.as_operand(),
37 &NOREG,
38 );
39 }
40}
41
42impl<'a> VpdpbusdEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
43 fn vpdpbusd(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
44 self.emit(
45 VPDPBUSD128RRM,
46 op0.as_operand(),
47 op1.as_operand(),
48 op2.as_operand(),
49 &NOREG,
50 );
51 }
52}
53
54impl<'a> VpdpbusdEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
55 fn vpdpbusd(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
56 self.emit(
57 VPDPBUSD256RRR,
58 op0.as_operand(),
59 op1.as_operand(),
60 op2.as_operand(),
61 &NOREG,
62 );
63 }
64}
65
66impl<'a> VpdpbusdEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
67 fn vpdpbusd(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
68 self.emit(
69 VPDPBUSD256RRM,
70 op0.as_operand(),
71 op1.as_operand(),
72 op2.as_operand(),
73 &NOREG,
74 );
75 }
76}
77
78impl<'a> VpdpbusdEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
79 fn vpdpbusd(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
80 self.emit(
81 VPDPBUSD512RRR,
82 op0.as_operand(),
83 op1.as_operand(),
84 op2.as_operand(),
85 &NOREG,
86 );
87 }
88}
89
90impl<'a> VpdpbusdEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
91 fn vpdpbusd(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
92 self.emit(
93 VPDPBUSD512RRM,
94 op0.as_operand(),
95 op1.as_operand(),
96 op2.as_operand(),
97 &NOREG,
98 );
99 }
100}
101
102pub trait VpdpbusdsEmitter<A, B, C> {
119 fn vpdpbusds(&mut self, op0: A, op1: B, op2: C);
120}
121
122impl<'a> VpdpbusdsEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
123 fn vpdpbusds(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
124 self.emit(
125 VPDPBUSDS128RRR,
126 op0.as_operand(),
127 op1.as_operand(),
128 op2.as_operand(),
129 &NOREG,
130 );
131 }
132}
133
134impl<'a> VpdpbusdsEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
135 fn vpdpbusds(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
136 self.emit(
137 VPDPBUSDS128RRM,
138 op0.as_operand(),
139 op1.as_operand(),
140 op2.as_operand(),
141 &NOREG,
142 );
143 }
144}
145
146impl<'a> VpdpbusdsEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
147 fn vpdpbusds(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
148 self.emit(
149 VPDPBUSDS256RRR,
150 op0.as_operand(),
151 op1.as_operand(),
152 op2.as_operand(),
153 &NOREG,
154 );
155 }
156}
157
158impl<'a> VpdpbusdsEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
159 fn vpdpbusds(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
160 self.emit(
161 VPDPBUSDS256RRM,
162 op0.as_operand(),
163 op1.as_operand(),
164 op2.as_operand(),
165 &NOREG,
166 );
167 }
168}
169
170impl<'a> VpdpbusdsEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
171 fn vpdpbusds(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
172 self.emit(
173 VPDPBUSDS512RRR,
174 op0.as_operand(),
175 op1.as_operand(),
176 op2.as_operand(),
177 &NOREG,
178 );
179 }
180}
181
182impl<'a> VpdpbusdsEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
183 fn vpdpbusds(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
184 self.emit(
185 VPDPBUSDS512RRM,
186 op0.as_operand(),
187 op1.as_operand(),
188 op2.as_operand(),
189 &NOREG,
190 );
191 }
192}
193
194pub trait VpdpbusdsMaskEmitter<A, B, C> {
211 fn vpdpbusds_mask(&mut self, op0: A, op1: B, op2: C);
212}
213
214impl<'a> VpdpbusdsMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
215 fn vpdpbusds_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
216 self.emit(
217 VPDPBUSDS128RRR_MASK,
218 op0.as_operand(),
219 op1.as_operand(),
220 op2.as_operand(),
221 &NOREG,
222 );
223 }
224}
225
226impl<'a> VpdpbusdsMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
227 fn vpdpbusds_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
228 self.emit(
229 VPDPBUSDS128RRM_MASK,
230 op0.as_operand(),
231 op1.as_operand(),
232 op2.as_operand(),
233 &NOREG,
234 );
235 }
236}
237
238impl<'a> VpdpbusdsMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
239 fn vpdpbusds_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
240 self.emit(
241 VPDPBUSDS256RRR_MASK,
242 op0.as_operand(),
243 op1.as_operand(),
244 op2.as_operand(),
245 &NOREG,
246 );
247 }
248}
249
250impl<'a> VpdpbusdsMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
251 fn vpdpbusds_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
252 self.emit(
253 VPDPBUSDS256RRM_MASK,
254 op0.as_operand(),
255 op1.as_operand(),
256 op2.as_operand(),
257 &NOREG,
258 );
259 }
260}
261
262impl<'a> VpdpbusdsMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
263 fn vpdpbusds_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
264 self.emit(
265 VPDPBUSDS512RRR_MASK,
266 op0.as_operand(),
267 op1.as_operand(),
268 op2.as_operand(),
269 &NOREG,
270 );
271 }
272}
273
274impl<'a> VpdpbusdsMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
275 fn vpdpbusds_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
276 self.emit(
277 VPDPBUSDS512RRM_MASK,
278 op0.as_operand(),
279 op1.as_operand(),
280 op2.as_operand(),
281 &NOREG,
282 );
283 }
284}
285
286pub trait VpdpbusdsMaskzEmitter<A, B, C> {
303 fn vpdpbusds_maskz(&mut self, op0: A, op1: B, op2: C);
304}
305
306impl<'a> VpdpbusdsMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
307 fn vpdpbusds_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
308 self.emit(
309 VPDPBUSDS128RRR_MASKZ,
310 op0.as_operand(),
311 op1.as_operand(),
312 op2.as_operand(),
313 &NOREG,
314 );
315 }
316}
317
318impl<'a> VpdpbusdsMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
319 fn vpdpbusds_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
320 self.emit(
321 VPDPBUSDS128RRM_MASKZ,
322 op0.as_operand(),
323 op1.as_operand(),
324 op2.as_operand(),
325 &NOREG,
326 );
327 }
328}
329
330impl<'a> VpdpbusdsMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
331 fn vpdpbusds_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
332 self.emit(
333 VPDPBUSDS256RRR_MASKZ,
334 op0.as_operand(),
335 op1.as_operand(),
336 op2.as_operand(),
337 &NOREG,
338 );
339 }
340}
341
342impl<'a> VpdpbusdsMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
343 fn vpdpbusds_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
344 self.emit(
345 VPDPBUSDS256RRM_MASKZ,
346 op0.as_operand(),
347 op1.as_operand(),
348 op2.as_operand(),
349 &NOREG,
350 );
351 }
352}
353
354impl<'a> VpdpbusdsMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
355 fn vpdpbusds_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
356 self.emit(
357 VPDPBUSDS512RRR_MASKZ,
358 op0.as_operand(),
359 op1.as_operand(),
360 op2.as_operand(),
361 &NOREG,
362 );
363 }
364}
365
366impl<'a> VpdpbusdsMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
367 fn vpdpbusds_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
368 self.emit(
369 VPDPBUSDS512RRM_MASKZ,
370 op0.as_operand(),
371 op1.as_operand(),
372 op2.as_operand(),
373 &NOREG,
374 );
375 }
376}
377
378pub trait VpdpbusdMaskEmitter<A, B, C> {
395 fn vpdpbusd_mask(&mut self, op0: A, op1: B, op2: C);
396}
397
398impl<'a> VpdpbusdMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
399 fn vpdpbusd_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
400 self.emit(
401 VPDPBUSD128RRR_MASK,
402 op0.as_operand(),
403 op1.as_operand(),
404 op2.as_operand(),
405 &NOREG,
406 );
407 }
408}
409
410impl<'a> VpdpbusdMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
411 fn vpdpbusd_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
412 self.emit(
413 VPDPBUSD128RRM_MASK,
414 op0.as_operand(),
415 op1.as_operand(),
416 op2.as_operand(),
417 &NOREG,
418 );
419 }
420}
421
422impl<'a> VpdpbusdMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
423 fn vpdpbusd_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
424 self.emit(
425 VPDPBUSD256RRR_MASK,
426 op0.as_operand(),
427 op1.as_operand(),
428 op2.as_operand(),
429 &NOREG,
430 );
431 }
432}
433
434impl<'a> VpdpbusdMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
435 fn vpdpbusd_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
436 self.emit(
437 VPDPBUSD256RRM_MASK,
438 op0.as_operand(),
439 op1.as_operand(),
440 op2.as_operand(),
441 &NOREG,
442 );
443 }
444}
445
446impl<'a> VpdpbusdMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
447 fn vpdpbusd_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
448 self.emit(
449 VPDPBUSD512RRR_MASK,
450 op0.as_operand(),
451 op1.as_operand(),
452 op2.as_operand(),
453 &NOREG,
454 );
455 }
456}
457
458impl<'a> VpdpbusdMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
459 fn vpdpbusd_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
460 self.emit(
461 VPDPBUSD512RRM_MASK,
462 op0.as_operand(),
463 op1.as_operand(),
464 op2.as_operand(),
465 &NOREG,
466 );
467 }
468}
469
470pub trait VpdpbusdMaskzEmitter<A, B, C> {
487 fn vpdpbusd_maskz(&mut self, op0: A, op1: B, op2: C);
488}
489
490impl<'a> VpdpbusdMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
491 fn vpdpbusd_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
492 self.emit(
493 VPDPBUSD128RRR_MASKZ,
494 op0.as_operand(),
495 op1.as_operand(),
496 op2.as_operand(),
497 &NOREG,
498 );
499 }
500}
501
502impl<'a> VpdpbusdMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
503 fn vpdpbusd_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
504 self.emit(
505 VPDPBUSD128RRM_MASKZ,
506 op0.as_operand(),
507 op1.as_operand(),
508 op2.as_operand(),
509 &NOREG,
510 );
511 }
512}
513
514impl<'a> VpdpbusdMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
515 fn vpdpbusd_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
516 self.emit(
517 VPDPBUSD256RRR_MASKZ,
518 op0.as_operand(),
519 op1.as_operand(),
520 op2.as_operand(),
521 &NOREG,
522 );
523 }
524}
525
526impl<'a> VpdpbusdMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
527 fn vpdpbusd_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
528 self.emit(
529 VPDPBUSD256RRM_MASKZ,
530 op0.as_operand(),
531 op1.as_operand(),
532 op2.as_operand(),
533 &NOREG,
534 );
535 }
536}
537
538impl<'a> VpdpbusdMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
539 fn vpdpbusd_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
540 self.emit(
541 VPDPBUSD512RRR_MASKZ,
542 op0.as_operand(),
543 op1.as_operand(),
544 op2.as_operand(),
545 &NOREG,
546 );
547 }
548}
549
550impl<'a> VpdpbusdMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
551 fn vpdpbusd_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
552 self.emit(
553 VPDPBUSD512RRM_MASKZ,
554 op0.as_operand(),
555 op1.as_operand(),
556 op2.as_operand(),
557 &NOREG,
558 );
559 }
560}
561
562pub trait VpdpwssdEmitter<A, B, C> {
579 fn vpdpwssd(&mut self, op0: A, op1: B, op2: C);
580}
581
582impl<'a> VpdpwssdEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
583 fn vpdpwssd(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
584 self.emit(
585 VPDPWSSD128RRR,
586 op0.as_operand(),
587 op1.as_operand(),
588 op2.as_operand(),
589 &NOREG,
590 );
591 }
592}
593
594impl<'a> VpdpwssdEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
595 fn vpdpwssd(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
596 self.emit(
597 VPDPWSSD128RRM,
598 op0.as_operand(),
599 op1.as_operand(),
600 op2.as_operand(),
601 &NOREG,
602 );
603 }
604}
605
606impl<'a> VpdpwssdEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
607 fn vpdpwssd(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
608 self.emit(
609 VPDPWSSD256RRR,
610 op0.as_operand(),
611 op1.as_operand(),
612 op2.as_operand(),
613 &NOREG,
614 );
615 }
616}
617
618impl<'a> VpdpwssdEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
619 fn vpdpwssd(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
620 self.emit(
621 VPDPWSSD256RRM,
622 op0.as_operand(),
623 op1.as_operand(),
624 op2.as_operand(),
625 &NOREG,
626 );
627 }
628}
629
630impl<'a> VpdpwssdEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
631 fn vpdpwssd(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
632 self.emit(
633 VPDPWSSD512RRR,
634 op0.as_operand(),
635 op1.as_operand(),
636 op2.as_operand(),
637 &NOREG,
638 );
639 }
640}
641
642impl<'a> VpdpwssdEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
643 fn vpdpwssd(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
644 self.emit(
645 VPDPWSSD512RRM,
646 op0.as_operand(),
647 op1.as_operand(),
648 op2.as_operand(),
649 &NOREG,
650 );
651 }
652}
653
654pub trait VpdpwssdsEmitter<A, B, C> {
671 fn vpdpwssds(&mut self, op0: A, op1: B, op2: C);
672}
673
674impl<'a> VpdpwssdsEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
675 fn vpdpwssds(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
676 self.emit(
677 VPDPWSSDS128RRR,
678 op0.as_operand(),
679 op1.as_operand(),
680 op2.as_operand(),
681 &NOREG,
682 );
683 }
684}
685
686impl<'a> VpdpwssdsEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
687 fn vpdpwssds(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
688 self.emit(
689 VPDPWSSDS128RRM,
690 op0.as_operand(),
691 op1.as_operand(),
692 op2.as_operand(),
693 &NOREG,
694 );
695 }
696}
697
698impl<'a> VpdpwssdsEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
699 fn vpdpwssds(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
700 self.emit(
701 VPDPWSSDS256RRR,
702 op0.as_operand(),
703 op1.as_operand(),
704 op2.as_operand(),
705 &NOREG,
706 );
707 }
708}
709
710impl<'a> VpdpwssdsEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
711 fn vpdpwssds(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
712 self.emit(
713 VPDPWSSDS256RRM,
714 op0.as_operand(),
715 op1.as_operand(),
716 op2.as_operand(),
717 &NOREG,
718 );
719 }
720}
721
722impl<'a> VpdpwssdsEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
723 fn vpdpwssds(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
724 self.emit(
725 VPDPWSSDS512RRR,
726 op0.as_operand(),
727 op1.as_operand(),
728 op2.as_operand(),
729 &NOREG,
730 );
731 }
732}
733
734impl<'a> VpdpwssdsEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
735 fn vpdpwssds(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
736 self.emit(
737 VPDPWSSDS512RRM,
738 op0.as_operand(),
739 op1.as_operand(),
740 op2.as_operand(),
741 &NOREG,
742 );
743 }
744}
745
746pub trait VpdpwssdsMaskEmitter<A, B, C> {
763 fn vpdpwssds_mask(&mut self, op0: A, op1: B, op2: C);
764}
765
766impl<'a> VpdpwssdsMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
767 fn vpdpwssds_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
768 self.emit(
769 VPDPWSSDS128RRR_MASK,
770 op0.as_operand(),
771 op1.as_operand(),
772 op2.as_operand(),
773 &NOREG,
774 );
775 }
776}
777
778impl<'a> VpdpwssdsMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
779 fn vpdpwssds_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
780 self.emit(
781 VPDPWSSDS128RRM_MASK,
782 op0.as_operand(),
783 op1.as_operand(),
784 op2.as_operand(),
785 &NOREG,
786 );
787 }
788}
789
790impl<'a> VpdpwssdsMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
791 fn vpdpwssds_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
792 self.emit(
793 VPDPWSSDS256RRR_MASK,
794 op0.as_operand(),
795 op1.as_operand(),
796 op2.as_operand(),
797 &NOREG,
798 );
799 }
800}
801
802impl<'a> VpdpwssdsMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
803 fn vpdpwssds_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
804 self.emit(
805 VPDPWSSDS256RRM_MASK,
806 op0.as_operand(),
807 op1.as_operand(),
808 op2.as_operand(),
809 &NOREG,
810 );
811 }
812}
813
814impl<'a> VpdpwssdsMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
815 fn vpdpwssds_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
816 self.emit(
817 VPDPWSSDS512RRR_MASK,
818 op0.as_operand(),
819 op1.as_operand(),
820 op2.as_operand(),
821 &NOREG,
822 );
823 }
824}
825
826impl<'a> VpdpwssdsMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
827 fn vpdpwssds_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
828 self.emit(
829 VPDPWSSDS512RRM_MASK,
830 op0.as_operand(),
831 op1.as_operand(),
832 op2.as_operand(),
833 &NOREG,
834 );
835 }
836}
837
838pub trait VpdpwssdsMaskzEmitter<A, B, C> {
855 fn vpdpwssds_maskz(&mut self, op0: A, op1: B, op2: C);
856}
857
858impl<'a> VpdpwssdsMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
859 fn vpdpwssds_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
860 self.emit(
861 VPDPWSSDS128RRR_MASKZ,
862 op0.as_operand(),
863 op1.as_operand(),
864 op2.as_operand(),
865 &NOREG,
866 );
867 }
868}
869
870impl<'a> VpdpwssdsMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
871 fn vpdpwssds_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
872 self.emit(
873 VPDPWSSDS128RRM_MASKZ,
874 op0.as_operand(),
875 op1.as_operand(),
876 op2.as_operand(),
877 &NOREG,
878 );
879 }
880}
881
882impl<'a> VpdpwssdsMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
883 fn vpdpwssds_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
884 self.emit(
885 VPDPWSSDS256RRR_MASKZ,
886 op0.as_operand(),
887 op1.as_operand(),
888 op2.as_operand(),
889 &NOREG,
890 );
891 }
892}
893
894impl<'a> VpdpwssdsMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
895 fn vpdpwssds_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
896 self.emit(
897 VPDPWSSDS256RRM_MASKZ,
898 op0.as_operand(),
899 op1.as_operand(),
900 op2.as_operand(),
901 &NOREG,
902 );
903 }
904}
905
906impl<'a> VpdpwssdsMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
907 fn vpdpwssds_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
908 self.emit(
909 VPDPWSSDS512RRR_MASKZ,
910 op0.as_operand(),
911 op1.as_operand(),
912 op2.as_operand(),
913 &NOREG,
914 );
915 }
916}
917
918impl<'a> VpdpwssdsMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
919 fn vpdpwssds_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
920 self.emit(
921 VPDPWSSDS512RRM_MASKZ,
922 op0.as_operand(),
923 op1.as_operand(),
924 op2.as_operand(),
925 &NOREG,
926 );
927 }
928}
929
930pub trait VpdpwssdMaskEmitter<A, B, C> {
947 fn vpdpwssd_mask(&mut self, op0: A, op1: B, op2: C);
948}
949
950impl<'a> VpdpwssdMaskEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
951 fn vpdpwssd_mask(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
952 self.emit(
953 VPDPWSSD128RRR_MASK,
954 op0.as_operand(),
955 op1.as_operand(),
956 op2.as_operand(),
957 &NOREG,
958 );
959 }
960}
961
962impl<'a> VpdpwssdMaskEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
963 fn vpdpwssd_mask(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
964 self.emit(
965 VPDPWSSD128RRM_MASK,
966 op0.as_operand(),
967 op1.as_operand(),
968 op2.as_operand(),
969 &NOREG,
970 );
971 }
972}
973
974impl<'a> VpdpwssdMaskEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
975 fn vpdpwssd_mask(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
976 self.emit(
977 VPDPWSSD256RRR_MASK,
978 op0.as_operand(),
979 op1.as_operand(),
980 op2.as_operand(),
981 &NOREG,
982 );
983 }
984}
985
986impl<'a> VpdpwssdMaskEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
987 fn vpdpwssd_mask(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
988 self.emit(
989 VPDPWSSD256RRM_MASK,
990 op0.as_operand(),
991 op1.as_operand(),
992 op2.as_operand(),
993 &NOREG,
994 );
995 }
996}
997
998impl<'a> VpdpwssdMaskEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
999 fn vpdpwssd_mask(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
1000 self.emit(
1001 VPDPWSSD512RRR_MASK,
1002 op0.as_operand(),
1003 op1.as_operand(),
1004 op2.as_operand(),
1005 &NOREG,
1006 );
1007 }
1008}
1009
1010impl<'a> VpdpwssdMaskEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
1011 fn vpdpwssd_mask(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
1012 self.emit(
1013 VPDPWSSD512RRM_MASK,
1014 op0.as_operand(),
1015 op1.as_operand(),
1016 op2.as_operand(),
1017 &NOREG,
1018 );
1019 }
1020}
1021
1022pub trait VpdpwssdMaskzEmitter<A, B, C> {
1039 fn vpdpwssd_maskz(&mut self, op0: A, op1: B, op2: C);
1040}
1041
1042impl<'a> VpdpwssdMaskzEmitter<Xmm, Xmm, Xmm> for Assembler<'a> {
1043 fn vpdpwssd_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Xmm) {
1044 self.emit(
1045 VPDPWSSD128RRR_MASKZ,
1046 op0.as_operand(),
1047 op1.as_operand(),
1048 op2.as_operand(),
1049 &NOREG,
1050 );
1051 }
1052}
1053
1054impl<'a> VpdpwssdMaskzEmitter<Xmm, Xmm, Mem> for Assembler<'a> {
1055 fn vpdpwssd_maskz(&mut self, op0: Xmm, op1: Xmm, op2: Mem) {
1056 self.emit(
1057 VPDPWSSD128RRM_MASKZ,
1058 op0.as_operand(),
1059 op1.as_operand(),
1060 op2.as_operand(),
1061 &NOREG,
1062 );
1063 }
1064}
1065
1066impl<'a> VpdpwssdMaskzEmitter<Ymm, Ymm, Ymm> for Assembler<'a> {
1067 fn vpdpwssd_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Ymm) {
1068 self.emit(
1069 VPDPWSSD256RRR_MASKZ,
1070 op0.as_operand(),
1071 op1.as_operand(),
1072 op2.as_operand(),
1073 &NOREG,
1074 );
1075 }
1076}
1077
1078impl<'a> VpdpwssdMaskzEmitter<Ymm, Ymm, Mem> for Assembler<'a> {
1079 fn vpdpwssd_maskz(&mut self, op0: Ymm, op1: Ymm, op2: Mem) {
1080 self.emit(
1081 VPDPWSSD256RRM_MASKZ,
1082 op0.as_operand(),
1083 op1.as_operand(),
1084 op2.as_operand(),
1085 &NOREG,
1086 );
1087 }
1088}
1089
1090impl<'a> VpdpwssdMaskzEmitter<Zmm, Zmm, Zmm> for Assembler<'a> {
1091 fn vpdpwssd_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Zmm) {
1092 self.emit(
1093 VPDPWSSD512RRR_MASKZ,
1094 op0.as_operand(),
1095 op1.as_operand(),
1096 op2.as_operand(),
1097 &NOREG,
1098 );
1099 }
1100}
1101
1102impl<'a> VpdpwssdMaskzEmitter<Zmm, Zmm, Mem> for Assembler<'a> {
1103 fn vpdpwssd_maskz(&mut self, op0: Zmm, op1: Zmm, op2: Mem) {
1104 self.emit(
1105 VPDPWSSD512RRM_MASKZ,
1106 op0.as_operand(),
1107 op1.as_operand(),
1108 op2.as_operand(),
1109 &NOREG,
1110 );
1111 }
1112}
1113
1114impl<'a> Assembler<'a> {
1115 #[inline]
1132 pub fn vpdpbusd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1133 where
1134 Assembler<'a>: VpdpbusdEmitter<A, B, C>,
1135 {
1136 <Self as VpdpbusdEmitter<A, B, C>>::vpdpbusd(self, op0, op1, op2);
1137 }
1138 #[inline]
1155 pub fn vpdpbusds<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1156 where
1157 Assembler<'a>: VpdpbusdsEmitter<A, B, C>,
1158 {
1159 <Self as VpdpbusdsEmitter<A, B, C>>::vpdpbusds(self, op0, op1, op2);
1160 }
1161 #[inline]
1178 pub fn vpdpbusds_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1179 where
1180 Assembler<'a>: VpdpbusdsMaskEmitter<A, B, C>,
1181 {
1182 <Self as VpdpbusdsMaskEmitter<A, B, C>>::vpdpbusds_mask(self, op0, op1, op2);
1183 }
1184 #[inline]
1201 pub fn vpdpbusds_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1202 where
1203 Assembler<'a>: VpdpbusdsMaskzEmitter<A, B, C>,
1204 {
1205 <Self as VpdpbusdsMaskzEmitter<A, B, C>>::vpdpbusds_maskz(self, op0, op1, op2);
1206 }
1207 #[inline]
1224 pub fn vpdpbusd_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1225 where
1226 Assembler<'a>: VpdpbusdMaskEmitter<A, B, C>,
1227 {
1228 <Self as VpdpbusdMaskEmitter<A, B, C>>::vpdpbusd_mask(self, op0, op1, op2);
1229 }
1230 #[inline]
1247 pub fn vpdpbusd_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1248 where
1249 Assembler<'a>: VpdpbusdMaskzEmitter<A, B, C>,
1250 {
1251 <Self as VpdpbusdMaskzEmitter<A, B, C>>::vpdpbusd_maskz(self, op0, op1, op2);
1252 }
1253 #[inline]
1270 pub fn vpdpwssd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1271 where
1272 Assembler<'a>: VpdpwssdEmitter<A, B, C>,
1273 {
1274 <Self as VpdpwssdEmitter<A, B, C>>::vpdpwssd(self, op0, op1, op2);
1275 }
1276 #[inline]
1293 pub fn vpdpwssds<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1294 where
1295 Assembler<'a>: VpdpwssdsEmitter<A, B, C>,
1296 {
1297 <Self as VpdpwssdsEmitter<A, B, C>>::vpdpwssds(self, op0, op1, op2);
1298 }
1299 #[inline]
1316 pub fn vpdpwssds_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1317 where
1318 Assembler<'a>: VpdpwssdsMaskEmitter<A, B, C>,
1319 {
1320 <Self as VpdpwssdsMaskEmitter<A, B, C>>::vpdpwssds_mask(self, op0, op1, op2);
1321 }
1322 #[inline]
1339 pub fn vpdpwssds_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1340 where
1341 Assembler<'a>: VpdpwssdsMaskzEmitter<A, B, C>,
1342 {
1343 <Self as VpdpwssdsMaskzEmitter<A, B, C>>::vpdpwssds_maskz(self, op0, op1, op2);
1344 }
1345 #[inline]
1362 pub fn vpdpwssd_mask<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1363 where
1364 Assembler<'a>: VpdpwssdMaskEmitter<A, B, C>,
1365 {
1366 <Self as VpdpwssdMaskEmitter<A, B, C>>::vpdpwssd_mask(self, op0, op1, op2);
1367 }
1368 #[inline]
1385 pub fn vpdpwssd_maskz<A, B, C>(&mut self, op0: A, op1: B, op2: C)
1386 where
1387 Assembler<'a>: VpdpwssdMaskzEmitter<A, B, C>,
1388 {
1389 <Self as VpdpwssdMaskzEmitter<A, B, C>>::vpdpwssd_maskz(self, op0, op1, op2);
1390 }
1391}