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 LfenceEmitter {
22 fn lfence(&mut self);
23}
24
25impl<'a> LfenceEmitter for Assembler<'a> {
26 fn lfence(&mut self) {
27 self.emit(LFENCE, &NOREG, &NOREG, &NOREG, &NOREG);
28 }
29}
30
31pub trait MfenceEmitter {
43 fn mfence(&mut self);
44}
45
46impl<'a> MfenceEmitter for Assembler<'a> {
47 fn mfence(&mut self) {
48 self.emit(MFENCE, &NOREG, &NOREG, &NOREG, &NOREG);
49 }
50}
51
52pub trait MmxCvtpd2piEmitter<A, B> {
65 fn mmx_cvtpd2pi(&mut self, op0: A, op1: B);
66}
67
68impl<'a> MmxCvtpd2piEmitter<Mm, Xmm> for Assembler<'a> {
69 fn mmx_cvtpd2pi(&mut self, op0: Mm, op1: Xmm) {
70 self.emit(
71 MMX_CVTPD2PIRR,
72 op0.as_operand(),
73 op1.as_operand(),
74 &NOREG,
75 &NOREG,
76 );
77 }
78}
79
80impl<'a> MmxCvtpd2piEmitter<Mm, Mem> for Assembler<'a> {
81 fn mmx_cvtpd2pi(&mut self, op0: Mm, op1: Mem) {
82 self.emit(
83 MMX_CVTPD2PIRM,
84 op0.as_operand(),
85 op1.as_operand(),
86 &NOREG,
87 &NOREG,
88 );
89 }
90}
91
92pub trait MmxCvtpi2pdEmitter<A, B> {
105 fn mmx_cvtpi2pd(&mut self, op0: A, op1: B);
106}
107
108impl<'a> MmxCvtpi2pdEmitter<Xmm, Mm> for Assembler<'a> {
109 fn mmx_cvtpi2pd(&mut self, op0: Xmm, op1: Mm) {
110 self.emit(
111 MMX_CVTPI2PDRR,
112 op0.as_operand(),
113 op1.as_operand(),
114 &NOREG,
115 &NOREG,
116 );
117 }
118}
119
120impl<'a> MmxCvtpi2pdEmitter<Xmm, Mem> for Assembler<'a> {
121 fn mmx_cvtpi2pd(&mut self, op0: Xmm, op1: Mem) {
122 self.emit(
123 MMX_CVTPI2PDRM,
124 op0.as_operand(),
125 op1.as_operand(),
126 &NOREG,
127 &NOREG,
128 );
129 }
130}
131
132pub trait MmxCvtpi2psEmitter<A, B> {
145 fn mmx_cvtpi2ps(&mut self, op0: A, op1: B);
146}
147
148impl<'a> MmxCvtpi2psEmitter<Xmm, Mm> for Assembler<'a> {
149 fn mmx_cvtpi2ps(&mut self, op0: Xmm, op1: Mm) {
150 self.emit(
151 MMX_CVTPI2PSRR,
152 op0.as_operand(),
153 op1.as_operand(),
154 &NOREG,
155 &NOREG,
156 );
157 }
158}
159
160impl<'a> MmxCvtpi2psEmitter<Xmm, Mem> for Assembler<'a> {
161 fn mmx_cvtpi2ps(&mut self, op0: Xmm, op1: Mem) {
162 self.emit(
163 MMX_CVTPI2PSRM,
164 op0.as_operand(),
165 op1.as_operand(),
166 &NOREG,
167 &NOREG,
168 );
169 }
170}
171
172pub trait MmxCvtps2piEmitter<A, B> {
185 fn mmx_cvtps2pi(&mut self, op0: A, op1: B);
186}
187
188impl<'a> MmxCvtps2piEmitter<Mm, Xmm> for Assembler<'a> {
189 fn mmx_cvtps2pi(&mut self, op0: Mm, op1: Xmm) {
190 self.emit(
191 MMX_CVTPS2PIRR,
192 op0.as_operand(),
193 op1.as_operand(),
194 &NOREG,
195 &NOREG,
196 );
197 }
198}
199
200impl<'a> MmxCvtps2piEmitter<Mm, Mem> for Assembler<'a> {
201 fn mmx_cvtps2pi(&mut self, op0: Mm, op1: Mem) {
202 self.emit(
203 MMX_CVTPS2PIRM,
204 op0.as_operand(),
205 op1.as_operand(),
206 &NOREG,
207 &NOREG,
208 );
209 }
210}
211
212pub trait MmxCvttpd2piEmitter<A, B> {
225 fn mmx_cvttpd2pi(&mut self, op0: A, op1: B);
226}
227
228impl<'a> MmxCvttpd2piEmitter<Mm, Xmm> for Assembler<'a> {
229 fn mmx_cvttpd2pi(&mut self, op0: Mm, op1: Xmm) {
230 self.emit(
231 MMX_CVTTPD2PIRR,
232 op0.as_operand(),
233 op1.as_operand(),
234 &NOREG,
235 &NOREG,
236 );
237 }
238}
239
240impl<'a> MmxCvttpd2piEmitter<Mm, Mem> for Assembler<'a> {
241 fn mmx_cvttpd2pi(&mut self, op0: Mm, op1: Mem) {
242 self.emit(
243 MMX_CVTTPD2PIRM,
244 op0.as_operand(),
245 op1.as_operand(),
246 &NOREG,
247 &NOREG,
248 );
249 }
250}
251
252pub trait MmxCvttps2piEmitter<A, B> {
265 fn mmx_cvttps2pi(&mut self, op0: A, op1: B);
266}
267
268impl<'a> MmxCvttps2piEmitter<Mm, Xmm> for Assembler<'a> {
269 fn mmx_cvttps2pi(&mut self, op0: Mm, op1: Xmm) {
270 self.emit(
271 MMX_CVTTPS2PIRR,
272 op0.as_operand(),
273 op1.as_operand(),
274 &NOREG,
275 &NOREG,
276 );
277 }
278}
279
280impl<'a> MmxCvttps2piEmitter<Mm, Mem> for Assembler<'a> {
281 fn mmx_cvttps2pi(&mut self, op0: Mm, op1: Mem) {
282 self.emit(
283 MMX_CVTTPS2PIRM,
284 op0.as_operand(),
285 op1.as_operand(),
286 &NOREG,
287 &NOREG,
288 );
289 }
290}
291
292pub trait MovntiEmitter<A, B> {
305 fn movnti(&mut self, op0: A, op1: B);
306}
307
308impl<'a> MovntiEmitter<Mem, Gpd> for Assembler<'a> {
309 fn movnti(&mut self, op0: Mem, op1: Gpd) {
310 self.emit(
311 MOVNTI32MR,
312 op0.as_operand(),
313 op1.as_operand(),
314 &NOREG,
315 &NOREG,
316 );
317 }
318}
319
320impl<'a> MovntiEmitter<Mem, Gpq> for Assembler<'a> {
321 fn movnti(&mut self, op0: Mem, op1: Gpq) {
322 self.emit(
323 MOVNTI64MR,
324 op0.as_operand(),
325 op1.as_operand(),
326 &NOREG,
327 &NOREG,
328 );
329 }
330}
331
332pub trait SseAddpdEmitter<A, B> {
345 fn sse_addpd(&mut self, op0: A, op1: B);
346}
347
348impl<'a> SseAddpdEmitter<Xmm, Xmm> for Assembler<'a> {
349 fn sse_addpd(&mut self, op0: Xmm, op1: Xmm) {
350 self.emit(
351 SSE_ADDPDRR,
352 op0.as_operand(),
353 op1.as_operand(),
354 &NOREG,
355 &NOREG,
356 );
357 }
358}
359
360impl<'a> SseAddpdEmitter<Xmm, Mem> for Assembler<'a> {
361 fn sse_addpd(&mut self, op0: Xmm, op1: Mem) {
362 self.emit(
363 SSE_ADDPDRM,
364 op0.as_operand(),
365 op1.as_operand(),
366 &NOREG,
367 &NOREG,
368 );
369 }
370}
371
372pub trait SseAddsdEmitter<A, B> {
385 fn sse_addsd(&mut self, op0: A, op1: B);
386}
387
388impl<'a> SseAddsdEmitter<Xmm, Xmm> for Assembler<'a> {
389 fn sse_addsd(&mut self, op0: Xmm, op1: Xmm) {
390 self.emit(
391 SSE_ADDSDRR,
392 op0.as_operand(),
393 op1.as_operand(),
394 &NOREG,
395 &NOREG,
396 );
397 }
398}
399
400impl<'a> SseAddsdEmitter<Xmm, Mem> for Assembler<'a> {
401 fn sse_addsd(&mut self, op0: Xmm, op1: Mem) {
402 self.emit(
403 SSE_ADDSDRM,
404 op0.as_operand(),
405 op1.as_operand(),
406 &NOREG,
407 &NOREG,
408 );
409 }
410}
411
412pub trait SseAndnpdEmitter<A, B> {
425 fn sse_andnpd(&mut self, op0: A, op1: B);
426}
427
428impl<'a> SseAndnpdEmitter<Xmm, Xmm> for Assembler<'a> {
429 fn sse_andnpd(&mut self, op0: Xmm, op1: Xmm) {
430 self.emit(
431 SSE_ANDNPDRR,
432 op0.as_operand(),
433 op1.as_operand(),
434 &NOREG,
435 &NOREG,
436 );
437 }
438}
439
440impl<'a> SseAndnpdEmitter<Xmm, Mem> for Assembler<'a> {
441 fn sse_andnpd(&mut self, op0: Xmm, op1: Mem) {
442 self.emit(
443 SSE_ANDNPDRM,
444 op0.as_operand(),
445 op1.as_operand(),
446 &NOREG,
447 &NOREG,
448 );
449 }
450}
451
452pub trait SseAndpdEmitter<A, B> {
465 fn sse_andpd(&mut self, op0: A, op1: B);
466}
467
468impl<'a> SseAndpdEmitter<Xmm, Xmm> for Assembler<'a> {
469 fn sse_andpd(&mut self, op0: Xmm, op1: Xmm) {
470 self.emit(
471 SSE_ANDPDRR,
472 op0.as_operand(),
473 op1.as_operand(),
474 &NOREG,
475 &NOREG,
476 );
477 }
478}
479
480impl<'a> SseAndpdEmitter<Xmm, Mem> for Assembler<'a> {
481 fn sse_andpd(&mut self, op0: Xmm, op1: Mem) {
482 self.emit(
483 SSE_ANDPDRM,
484 op0.as_operand(),
485 op1.as_operand(),
486 &NOREG,
487 &NOREG,
488 );
489 }
490}
491
492pub trait SseCmppdEmitter<A, B, C> {
505 fn sse_cmppd(&mut self, op0: A, op1: B, op2: C);
506}
507
508impl<'a> SseCmppdEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
509 fn sse_cmppd(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
510 self.emit(
511 SSE_CMPPDRRI,
512 op0.as_operand(),
513 op1.as_operand(),
514 op2.as_operand(),
515 &NOREG,
516 );
517 }
518}
519
520impl<'a> SseCmppdEmitter<Xmm, Mem, Imm> for Assembler<'a> {
521 fn sse_cmppd(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
522 self.emit(
523 SSE_CMPPDRMI,
524 op0.as_operand(),
525 op1.as_operand(),
526 op2.as_operand(),
527 &NOREG,
528 );
529 }
530}
531
532pub trait SseCmpsdEmitter<A, B, C> {
545 fn sse_cmpsd(&mut self, op0: A, op1: B, op2: C);
546}
547
548impl<'a> SseCmpsdEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
549 fn sse_cmpsd(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
550 self.emit(
551 SSE_CMPSDRRI,
552 op0.as_operand(),
553 op1.as_operand(),
554 op2.as_operand(),
555 &NOREG,
556 );
557 }
558}
559
560impl<'a> SseCmpsdEmitter<Xmm, Mem, Imm> for Assembler<'a> {
561 fn sse_cmpsd(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
562 self.emit(
563 SSE_CMPSDRMI,
564 op0.as_operand(),
565 op1.as_operand(),
566 op2.as_operand(),
567 &NOREG,
568 );
569 }
570}
571
572pub trait SseComisdEmitter<A, B> {
585 fn sse_comisd(&mut self, op0: A, op1: B);
586}
587
588impl<'a> SseComisdEmitter<Xmm, Xmm> for Assembler<'a> {
589 fn sse_comisd(&mut self, op0: Xmm, op1: Xmm) {
590 self.emit(
591 SSE_COMISDRR,
592 op0.as_operand(),
593 op1.as_operand(),
594 &NOREG,
595 &NOREG,
596 );
597 }
598}
599
600impl<'a> SseComisdEmitter<Xmm, Mem> for Assembler<'a> {
601 fn sse_comisd(&mut self, op0: Xmm, op1: Mem) {
602 self.emit(
603 SSE_COMISDRM,
604 op0.as_operand(),
605 op1.as_operand(),
606 &NOREG,
607 &NOREG,
608 );
609 }
610}
611
612pub trait SseCvtdq2pdEmitter<A, B> {
625 fn sse_cvtdq2pd(&mut self, op0: A, op1: B);
626}
627
628impl<'a> SseCvtdq2pdEmitter<Xmm, Xmm> for Assembler<'a> {
629 fn sse_cvtdq2pd(&mut self, op0: Xmm, op1: Xmm) {
630 self.emit(
631 SSE_CVTDQ2PDRR,
632 op0.as_operand(),
633 op1.as_operand(),
634 &NOREG,
635 &NOREG,
636 );
637 }
638}
639
640impl<'a> SseCvtdq2pdEmitter<Xmm, Mem> for Assembler<'a> {
641 fn sse_cvtdq2pd(&mut self, op0: Xmm, op1: Mem) {
642 self.emit(
643 SSE_CVTDQ2PDRM,
644 op0.as_operand(),
645 op1.as_operand(),
646 &NOREG,
647 &NOREG,
648 );
649 }
650}
651
652pub trait SseCvtdq2psEmitter<A, B> {
665 fn sse_cvtdq2ps(&mut self, op0: A, op1: B);
666}
667
668impl<'a> SseCvtdq2psEmitter<Xmm, Xmm> for Assembler<'a> {
669 fn sse_cvtdq2ps(&mut self, op0: Xmm, op1: Xmm) {
670 self.emit(
671 SSE_CVTDQ2PSRR,
672 op0.as_operand(),
673 op1.as_operand(),
674 &NOREG,
675 &NOREG,
676 );
677 }
678}
679
680impl<'a> SseCvtdq2psEmitter<Xmm, Mem> for Assembler<'a> {
681 fn sse_cvtdq2ps(&mut self, op0: Xmm, op1: Mem) {
682 self.emit(
683 SSE_CVTDQ2PSRM,
684 op0.as_operand(),
685 op1.as_operand(),
686 &NOREG,
687 &NOREG,
688 );
689 }
690}
691
692pub trait SseCvtpd2dqEmitter<A, B> {
705 fn sse_cvtpd2dq(&mut self, op0: A, op1: B);
706}
707
708impl<'a> SseCvtpd2dqEmitter<Xmm, Xmm> for Assembler<'a> {
709 fn sse_cvtpd2dq(&mut self, op0: Xmm, op1: Xmm) {
710 self.emit(
711 SSE_CVTPD2DQRR,
712 op0.as_operand(),
713 op1.as_operand(),
714 &NOREG,
715 &NOREG,
716 );
717 }
718}
719
720impl<'a> SseCvtpd2dqEmitter<Xmm, Mem> for Assembler<'a> {
721 fn sse_cvtpd2dq(&mut self, op0: Xmm, op1: Mem) {
722 self.emit(
723 SSE_CVTPD2DQRM,
724 op0.as_operand(),
725 op1.as_operand(),
726 &NOREG,
727 &NOREG,
728 );
729 }
730}
731
732pub trait SseCvtpd2psEmitter<A, B> {
745 fn sse_cvtpd2ps(&mut self, op0: A, op1: B);
746}
747
748impl<'a> SseCvtpd2psEmitter<Xmm, Xmm> for Assembler<'a> {
749 fn sse_cvtpd2ps(&mut self, op0: Xmm, op1: Xmm) {
750 self.emit(
751 SSE_CVTPD2PSRR,
752 op0.as_operand(),
753 op1.as_operand(),
754 &NOREG,
755 &NOREG,
756 );
757 }
758}
759
760impl<'a> SseCvtpd2psEmitter<Xmm, Mem> for Assembler<'a> {
761 fn sse_cvtpd2ps(&mut self, op0: Xmm, op1: Mem) {
762 self.emit(
763 SSE_CVTPD2PSRM,
764 op0.as_operand(),
765 op1.as_operand(),
766 &NOREG,
767 &NOREG,
768 );
769 }
770}
771
772pub trait SseCvtps2dqEmitter<A, B> {
785 fn sse_cvtps2dq(&mut self, op0: A, op1: B);
786}
787
788impl<'a> SseCvtps2dqEmitter<Xmm, Xmm> for Assembler<'a> {
789 fn sse_cvtps2dq(&mut self, op0: Xmm, op1: Xmm) {
790 self.emit(
791 SSE_CVTPS2DQRR,
792 op0.as_operand(),
793 op1.as_operand(),
794 &NOREG,
795 &NOREG,
796 );
797 }
798}
799
800impl<'a> SseCvtps2dqEmitter<Xmm, Mem> for Assembler<'a> {
801 fn sse_cvtps2dq(&mut self, op0: Xmm, op1: Mem) {
802 self.emit(
803 SSE_CVTPS2DQRM,
804 op0.as_operand(),
805 op1.as_operand(),
806 &NOREG,
807 &NOREG,
808 );
809 }
810}
811
812pub trait SseCvtps2pdEmitter<A, B> {
825 fn sse_cvtps2pd(&mut self, op0: A, op1: B);
826}
827
828impl<'a> SseCvtps2pdEmitter<Xmm, Xmm> for Assembler<'a> {
829 fn sse_cvtps2pd(&mut self, op0: Xmm, op1: Xmm) {
830 self.emit(
831 SSE_CVTPS2PDRR,
832 op0.as_operand(),
833 op1.as_operand(),
834 &NOREG,
835 &NOREG,
836 );
837 }
838}
839
840impl<'a> SseCvtps2pdEmitter<Xmm, Mem> for Assembler<'a> {
841 fn sse_cvtps2pd(&mut self, op0: Xmm, op1: Mem) {
842 self.emit(
843 SSE_CVTPS2PDRM,
844 op0.as_operand(),
845 op1.as_operand(),
846 &NOREG,
847 &NOREG,
848 );
849 }
850}
851
852pub trait SseCvtsd2siEmitter<A, B> {
867 fn sse_cvtsd2si(&mut self, op0: A, op1: B);
868}
869
870impl<'a> SseCvtsd2siEmitter<Gpd, Xmm> for Assembler<'a> {
871 fn sse_cvtsd2si(&mut self, op0: Gpd, op1: Xmm) {
872 self.emit(
873 SSE_CVTSD2SI32RR,
874 op0.as_operand(),
875 op1.as_operand(),
876 &NOREG,
877 &NOREG,
878 );
879 }
880}
881
882impl<'a> SseCvtsd2siEmitter<Gpd, Mem> for Assembler<'a> {
883 fn sse_cvtsd2si(&mut self, op0: Gpd, op1: Mem) {
884 self.emit(
885 SSE_CVTSD2SI32RM,
886 op0.as_operand(),
887 op1.as_operand(),
888 &NOREG,
889 &NOREG,
890 );
891 }
892}
893
894impl<'a> SseCvtsd2siEmitter<Gpq, Xmm> for Assembler<'a> {
895 fn sse_cvtsd2si(&mut self, op0: Gpq, op1: Xmm) {
896 self.emit(
897 SSE_CVTSD2SI64RR,
898 op0.as_operand(),
899 op1.as_operand(),
900 &NOREG,
901 &NOREG,
902 );
903 }
904}
905
906impl<'a> SseCvtsd2siEmitter<Gpq, Mem> for Assembler<'a> {
907 fn sse_cvtsd2si(&mut self, op0: Gpq, op1: Mem) {
908 self.emit(
909 SSE_CVTSD2SI64RM,
910 op0.as_operand(),
911 op1.as_operand(),
912 &NOREG,
913 &NOREG,
914 );
915 }
916}
917
918pub trait SseCvtsd2ssEmitter<A, B> {
931 fn sse_cvtsd2ss(&mut self, op0: A, op1: B);
932}
933
934impl<'a> SseCvtsd2ssEmitter<Xmm, Xmm> for Assembler<'a> {
935 fn sse_cvtsd2ss(&mut self, op0: Xmm, op1: Xmm) {
936 self.emit(
937 SSE_CVTSD2SSRR,
938 op0.as_operand(),
939 op1.as_operand(),
940 &NOREG,
941 &NOREG,
942 );
943 }
944}
945
946impl<'a> SseCvtsd2ssEmitter<Xmm, Mem> for Assembler<'a> {
947 fn sse_cvtsd2ss(&mut self, op0: Xmm, op1: Mem) {
948 self.emit(
949 SSE_CVTSD2SSRM,
950 op0.as_operand(),
951 op1.as_operand(),
952 &NOREG,
953 &NOREG,
954 );
955 }
956}
957
958pub trait SseCvtsi2sdEmitter<A, B> {
972 fn sse_cvtsi2sd(&mut self, op0: A, op1: B);
973}
974
975impl<'a> SseCvtsi2sdEmitter<Xmm, Gpd> for Assembler<'a> {
976 fn sse_cvtsi2sd(&mut self, op0: Xmm, op1: Gpd) {
977 self.emit(
978 SSE_CVTSI2SD32RR,
979 op0.as_operand(),
980 op1.as_operand(),
981 &NOREG,
982 &NOREG,
983 );
984 }
985}
986
987impl<'a> SseCvtsi2sdEmitter<Xmm, Mem> for Assembler<'a> {
988 fn sse_cvtsi2sd(&mut self, op0: Xmm, op1: Mem) {
989 self.emit(
990 SSE_CVTSI2SD32RM,
991 op0.as_operand(),
992 op1.as_operand(),
993 &NOREG,
994 &NOREG,
995 );
996 }
997}
998
999impl<'a> SseCvtsi2sdEmitter<Xmm, Gpq> for Assembler<'a> {
1000 fn sse_cvtsi2sd(&mut self, op0: Xmm, op1: Gpq) {
1001 self.emit(
1002 SSE_CVTSI2SD64RR,
1003 op0.as_operand(),
1004 op1.as_operand(),
1005 &NOREG,
1006 &NOREG,
1007 );
1008 }
1009}
1010
1011pub trait SseCvtss2sdEmitter<A, B> {
1024 fn sse_cvtss2sd(&mut self, op0: A, op1: B);
1025}
1026
1027impl<'a> SseCvtss2sdEmitter<Xmm, Xmm> for Assembler<'a> {
1028 fn sse_cvtss2sd(&mut self, op0: Xmm, op1: Xmm) {
1029 self.emit(
1030 SSE_CVTSS2SDRR,
1031 op0.as_operand(),
1032 op1.as_operand(),
1033 &NOREG,
1034 &NOREG,
1035 );
1036 }
1037}
1038
1039impl<'a> SseCvtss2sdEmitter<Xmm, Mem> for Assembler<'a> {
1040 fn sse_cvtss2sd(&mut self, op0: Xmm, op1: Mem) {
1041 self.emit(
1042 SSE_CVTSS2SDRM,
1043 op0.as_operand(),
1044 op1.as_operand(),
1045 &NOREG,
1046 &NOREG,
1047 );
1048 }
1049}
1050
1051pub trait SseCvttpd2dqEmitter<A, B> {
1064 fn sse_cvttpd2dq(&mut self, op0: A, op1: B);
1065}
1066
1067impl<'a> SseCvttpd2dqEmitter<Xmm, Xmm> for Assembler<'a> {
1068 fn sse_cvttpd2dq(&mut self, op0: Xmm, op1: Xmm) {
1069 self.emit(
1070 SSE_CVTTPD2DQRR,
1071 op0.as_operand(),
1072 op1.as_operand(),
1073 &NOREG,
1074 &NOREG,
1075 );
1076 }
1077}
1078
1079impl<'a> SseCvttpd2dqEmitter<Xmm, Mem> for Assembler<'a> {
1080 fn sse_cvttpd2dq(&mut self, op0: Xmm, op1: Mem) {
1081 self.emit(
1082 SSE_CVTTPD2DQRM,
1083 op0.as_operand(),
1084 op1.as_operand(),
1085 &NOREG,
1086 &NOREG,
1087 );
1088 }
1089}
1090
1091pub trait SseCvttps2dqEmitter<A, B> {
1104 fn sse_cvttps2dq(&mut self, op0: A, op1: B);
1105}
1106
1107impl<'a> SseCvttps2dqEmitter<Xmm, Xmm> for Assembler<'a> {
1108 fn sse_cvttps2dq(&mut self, op0: Xmm, op1: Xmm) {
1109 self.emit(
1110 SSE_CVTTPS2DQRR,
1111 op0.as_operand(),
1112 op1.as_operand(),
1113 &NOREG,
1114 &NOREG,
1115 );
1116 }
1117}
1118
1119impl<'a> SseCvttps2dqEmitter<Xmm, Mem> for Assembler<'a> {
1120 fn sse_cvttps2dq(&mut self, op0: Xmm, op1: Mem) {
1121 self.emit(
1122 SSE_CVTTPS2DQRM,
1123 op0.as_operand(),
1124 op1.as_operand(),
1125 &NOREG,
1126 &NOREG,
1127 );
1128 }
1129}
1130
1131pub trait SseCvttsd2siEmitter<A, B> {
1146 fn sse_cvttsd2si(&mut self, op0: A, op1: B);
1147}
1148
1149impl<'a> SseCvttsd2siEmitter<Gpd, Xmm> for Assembler<'a> {
1150 fn sse_cvttsd2si(&mut self, op0: Gpd, op1: Xmm) {
1151 self.emit(
1152 SSE_CVTTSD2SI32RR,
1153 op0.as_operand(),
1154 op1.as_operand(),
1155 &NOREG,
1156 &NOREG,
1157 );
1158 }
1159}
1160
1161impl<'a> SseCvttsd2siEmitter<Gpd, Mem> for Assembler<'a> {
1162 fn sse_cvttsd2si(&mut self, op0: Gpd, op1: Mem) {
1163 self.emit(
1164 SSE_CVTTSD2SI32RM,
1165 op0.as_operand(),
1166 op1.as_operand(),
1167 &NOREG,
1168 &NOREG,
1169 );
1170 }
1171}
1172
1173impl<'a> SseCvttsd2siEmitter<Gpq, Xmm> for Assembler<'a> {
1174 fn sse_cvttsd2si(&mut self, op0: Gpq, op1: Xmm) {
1175 self.emit(
1176 SSE_CVTTSD2SI64RR,
1177 op0.as_operand(),
1178 op1.as_operand(),
1179 &NOREG,
1180 &NOREG,
1181 );
1182 }
1183}
1184
1185impl<'a> SseCvttsd2siEmitter<Gpq, Mem> for Assembler<'a> {
1186 fn sse_cvttsd2si(&mut self, op0: Gpq, op1: Mem) {
1187 self.emit(
1188 SSE_CVTTSD2SI64RM,
1189 op0.as_operand(),
1190 op1.as_operand(),
1191 &NOREG,
1192 &NOREG,
1193 );
1194 }
1195}
1196
1197pub trait SseDivpdEmitter<A, B> {
1210 fn sse_divpd(&mut self, op0: A, op1: B);
1211}
1212
1213impl<'a> SseDivpdEmitter<Xmm, Xmm> for Assembler<'a> {
1214 fn sse_divpd(&mut self, op0: Xmm, op1: Xmm) {
1215 self.emit(
1216 SSE_DIVPDRR,
1217 op0.as_operand(),
1218 op1.as_operand(),
1219 &NOREG,
1220 &NOREG,
1221 );
1222 }
1223}
1224
1225impl<'a> SseDivpdEmitter<Xmm, Mem> for Assembler<'a> {
1226 fn sse_divpd(&mut self, op0: Xmm, op1: Mem) {
1227 self.emit(
1228 SSE_DIVPDRM,
1229 op0.as_operand(),
1230 op1.as_operand(),
1231 &NOREG,
1232 &NOREG,
1233 );
1234 }
1235}
1236
1237pub trait SseDivsdEmitter<A, B> {
1250 fn sse_divsd(&mut self, op0: A, op1: B);
1251}
1252
1253impl<'a> SseDivsdEmitter<Xmm, Xmm> for Assembler<'a> {
1254 fn sse_divsd(&mut self, op0: Xmm, op1: Xmm) {
1255 self.emit(
1256 SSE_DIVSDRR,
1257 op0.as_operand(),
1258 op1.as_operand(),
1259 &NOREG,
1260 &NOREG,
1261 );
1262 }
1263}
1264
1265impl<'a> SseDivsdEmitter<Xmm, Mem> for Assembler<'a> {
1266 fn sse_divsd(&mut self, op0: Xmm, op1: Mem) {
1267 self.emit(
1268 SSE_DIVSDRM,
1269 op0.as_operand(),
1270 op1.as_operand(),
1271 &NOREG,
1272 &NOREG,
1273 );
1274 }
1275}
1276
1277pub trait SseMaskmovdquEmitter<A, B> {
1289 fn sse_maskmovdqu(&mut self, op0: A, op1: B);
1290}
1291
1292impl<'a> SseMaskmovdquEmitter<Xmm, Xmm> for Assembler<'a> {
1293 fn sse_maskmovdqu(&mut self, op0: Xmm, op1: Xmm) {
1294 self.emit(
1295 SSE_MASKMOVDQURR,
1296 op0.as_operand(),
1297 op1.as_operand(),
1298 &NOREG,
1299 &NOREG,
1300 );
1301 }
1302}
1303
1304pub trait SseMaxpdEmitter<A, B> {
1317 fn sse_maxpd(&mut self, op0: A, op1: B);
1318}
1319
1320impl<'a> SseMaxpdEmitter<Xmm, Xmm> for Assembler<'a> {
1321 fn sse_maxpd(&mut self, op0: Xmm, op1: Xmm) {
1322 self.emit(
1323 SSE_MAXPDRR,
1324 op0.as_operand(),
1325 op1.as_operand(),
1326 &NOREG,
1327 &NOREG,
1328 );
1329 }
1330}
1331
1332impl<'a> SseMaxpdEmitter<Xmm, Mem> for Assembler<'a> {
1333 fn sse_maxpd(&mut self, op0: Xmm, op1: Mem) {
1334 self.emit(
1335 SSE_MAXPDRM,
1336 op0.as_operand(),
1337 op1.as_operand(),
1338 &NOREG,
1339 &NOREG,
1340 );
1341 }
1342}
1343
1344pub trait SseMaxsdEmitter<A, B> {
1357 fn sse_maxsd(&mut self, op0: A, op1: B);
1358}
1359
1360impl<'a> SseMaxsdEmitter<Xmm, Xmm> for Assembler<'a> {
1361 fn sse_maxsd(&mut self, op0: Xmm, op1: Xmm) {
1362 self.emit(
1363 SSE_MAXSDRR,
1364 op0.as_operand(),
1365 op1.as_operand(),
1366 &NOREG,
1367 &NOREG,
1368 );
1369 }
1370}
1371
1372impl<'a> SseMaxsdEmitter<Xmm, Mem> for Assembler<'a> {
1373 fn sse_maxsd(&mut self, op0: Xmm, op1: Mem) {
1374 self.emit(
1375 SSE_MAXSDRM,
1376 op0.as_operand(),
1377 op1.as_operand(),
1378 &NOREG,
1379 &NOREG,
1380 );
1381 }
1382}
1383
1384pub trait SseMinpdEmitter<A, B> {
1397 fn sse_minpd(&mut self, op0: A, op1: B);
1398}
1399
1400impl<'a> SseMinpdEmitter<Xmm, Xmm> for Assembler<'a> {
1401 fn sse_minpd(&mut self, op0: Xmm, op1: Xmm) {
1402 self.emit(
1403 SSE_MINPDRR,
1404 op0.as_operand(),
1405 op1.as_operand(),
1406 &NOREG,
1407 &NOREG,
1408 );
1409 }
1410}
1411
1412impl<'a> SseMinpdEmitter<Xmm, Mem> for Assembler<'a> {
1413 fn sse_minpd(&mut self, op0: Xmm, op1: Mem) {
1414 self.emit(
1415 SSE_MINPDRM,
1416 op0.as_operand(),
1417 op1.as_operand(),
1418 &NOREG,
1419 &NOREG,
1420 );
1421 }
1422}
1423
1424pub trait SseMinsdEmitter<A, B> {
1437 fn sse_minsd(&mut self, op0: A, op1: B);
1438}
1439
1440impl<'a> SseMinsdEmitter<Xmm, Xmm> for Assembler<'a> {
1441 fn sse_minsd(&mut self, op0: Xmm, op1: Xmm) {
1442 self.emit(
1443 SSE_MINSDRR,
1444 op0.as_operand(),
1445 op1.as_operand(),
1446 &NOREG,
1447 &NOREG,
1448 );
1449 }
1450}
1451
1452impl<'a> SseMinsdEmitter<Xmm, Mem> for Assembler<'a> {
1453 fn sse_minsd(&mut self, op0: Xmm, op1: Mem) {
1454 self.emit(
1455 SSE_MINSDRM,
1456 op0.as_operand(),
1457 op1.as_operand(),
1458 &NOREG,
1459 &NOREG,
1460 );
1461 }
1462}
1463
1464pub trait SseMovapdEmitter<A, B> {
1478 fn sse_movapd(&mut self, op0: A, op1: B);
1479}
1480
1481impl<'a> SseMovapdEmitter<Xmm, Xmm> for Assembler<'a> {
1482 fn sse_movapd(&mut self, op0: Xmm, op1: Xmm) {
1483 self.emit(
1484 SSE_MOVAPDRR,
1485 op0.as_operand(),
1486 op1.as_operand(),
1487 &NOREG,
1488 &NOREG,
1489 );
1490 }
1491}
1492
1493impl<'a> SseMovapdEmitter<Xmm, Mem> for Assembler<'a> {
1494 fn sse_movapd(&mut self, op0: Xmm, op1: Mem) {
1495 self.emit(
1496 SSE_MOVAPDRM,
1497 op0.as_operand(),
1498 op1.as_operand(),
1499 &NOREG,
1500 &NOREG,
1501 );
1502 }
1503}
1504
1505impl<'a> SseMovapdEmitter<Mem, Xmm> for Assembler<'a> {
1506 fn sse_movapd(&mut self, op0: Mem, op1: Xmm) {
1507 self.emit(
1508 SSE_MOVAPDMR,
1509 op0.as_operand(),
1510 op1.as_operand(),
1511 &NOREG,
1512 &NOREG,
1513 );
1514 }
1515}
1516
1517pub trait SseMovdqaEmitter<A, B> {
1531 fn sse_movdqa(&mut self, op0: A, op1: B);
1532}
1533
1534impl<'a> SseMovdqaEmitter<Xmm, Xmm> for Assembler<'a> {
1535 fn sse_movdqa(&mut self, op0: Xmm, op1: Xmm) {
1536 self.emit(
1537 SSE_MOVDQARR,
1538 op0.as_operand(),
1539 op1.as_operand(),
1540 &NOREG,
1541 &NOREG,
1542 );
1543 }
1544}
1545
1546impl<'a> SseMovdqaEmitter<Xmm, Mem> for Assembler<'a> {
1547 fn sse_movdqa(&mut self, op0: Xmm, op1: Mem) {
1548 self.emit(
1549 SSE_MOVDQARM,
1550 op0.as_operand(),
1551 op1.as_operand(),
1552 &NOREG,
1553 &NOREG,
1554 );
1555 }
1556}
1557
1558impl<'a> SseMovdqaEmitter<Mem, Xmm> for Assembler<'a> {
1559 fn sse_movdqa(&mut self, op0: Mem, op1: Xmm) {
1560 self.emit(
1561 SSE_MOVDQAMR,
1562 op0.as_operand(),
1563 op1.as_operand(),
1564 &NOREG,
1565 &NOREG,
1566 );
1567 }
1568}
1569
1570pub trait SseMovdquEmitter<A, B> {
1584 fn sse_movdqu(&mut self, op0: A, op1: B);
1585}
1586
1587impl<'a> SseMovdquEmitter<Xmm, Xmm> for Assembler<'a> {
1588 fn sse_movdqu(&mut self, op0: Xmm, op1: Xmm) {
1589 self.emit(
1590 SSE_MOVDQURR,
1591 op0.as_operand(),
1592 op1.as_operand(),
1593 &NOREG,
1594 &NOREG,
1595 );
1596 }
1597}
1598
1599impl<'a> SseMovdquEmitter<Xmm, Mem> for Assembler<'a> {
1600 fn sse_movdqu(&mut self, op0: Xmm, op1: Mem) {
1601 self.emit(
1602 SSE_MOVDQURM,
1603 op0.as_operand(),
1604 op1.as_operand(),
1605 &NOREG,
1606 &NOREG,
1607 );
1608 }
1609}
1610
1611impl<'a> SseMovdquEmitter<Mem, Xmm> for Assembler<'a> {
1612 fn sse_movdqu(&mut self, op0: Mem, op1: Xmm) {
1613 self.emit(
1614 SSE_MOVDQUMR,
1615 op0.as_operand(),
1616 op1.as_operand(),
1617 &NOREG,
1618 &NOREG,
1619 );
1620 }
1621}
1622
1623pub trait SseMovdG2xEmitter<A, B> {
1636 fn sse_movd_g2x(&mut self, op0: A, op1: B);
1637}
1638
1639impl<'a> SseMovdG2xEmitter<Xmm, Gpd> for Assembler<'a> {
1640 fn sse_movd_g2x(&mut self, op0: Xmm, op1: Gpd) {
1641 self.emit(
1642 SSE_MOVD_G2XRR,
1643 op0.as_operand(),
1644 op1.as_operand(),
1645 &NOREG,
1646 &NOREG,
1647 );
1648 }
1649}
1650
1651impl<'a> SseMovdG2xEmitter<Xmm, Mem> for Assembler<'a> {
1652 fn sse_movd_g2x(&mut self, op0: Xmm, op1: Mem) {
1653 self.emit(
1654 SSE_MOVD_G2XRM,
1655 op0.as_operand(),
1656 op1.as_operand(),
1657 &NOREG,
1658 &NOREG,
1659 );
1660 }
1661}
1662
1663pub trait SseMovdX2gEmitter<A, B> {
1676 fn sse_movd_x2g(&mut self, op0: A, op1: B);
1677}
1678
1679impl<'a> SseMovdX2gEmitter<Gpd, Xmm> for Assembler<'a> {
1680 fn sse_movd_x2g(&mut self, op0: Gpd, op1: Xmm) {
1681 self.emit(
1682 SSE_MOVD_X2GRR,
1683 op0.as_operand(),
1684 op1.as_operand(),
1685 &NOREG,
1686 &NOREG,
1687 );
1688 }
1689}
1690
1691impl<'a> SseMovdX2gEmitter<Mem, Xmm> for Assembler<'a> {
1692 fn sse_movd_x2g(&mut self, op0: Mem, op1: Xmm) {
1693 self.emit(
1694 SSE_MOVD_X2GMR,
1695 op0.as_operand(),
1696 op1.as_operand(),
1697 &NOREG,
1698 &NOREG,
1699 );
1700 }
1701}
1702
1703pub trait SseMovhpdEmitter<A, B> {
1716 fn sse_movhpd(&mut self, op0: A, op1: B);
1717}
1718
1719impl<'a> SseMovhpdEmitter<Xmm, Mem> for Assembler<'a> {
1720 fn sse_movhpd(&mut self, op0: Xmm, op1: Mem) {
1721 self.emit(
1722 SSE_MOVHPDRM,
1723 op0.as_operand(),
1724 op1.as_operand(),
1725 &NOREG,
1726 &NOREG,
1727 );
1728 }
1729}
1730
1731impl<'a> SseMovhpdEmitter<Mem, Xmm> for Assembler<'a> {
1732 fn sse_movhpd(&mut self, op0: Mem, op1: Xmm) {
1733 self.emit(
1734 SSE_MOVHPDMR,
1735 op0.as_operand(),
1736 op1.as_operand(),
1737 &NOREG,
1738 &NOREG,
1739 );
1740 }
1741}
1742
1743pub trait SseMovlpdEmitter<A, B> {
1756 fn sse_movlpd(&mut self, op0: A, op1: B);
1757}
1758
1759impl<'a> SseMovlpdEmitter<Xmm, Mem> for Assembler<'a> {
1760 fn sse_movlpd(&mut self, op0: Xmm, op1: Mem) {
1761 self.emit(
1762 SSE_MOVLPDRM,
1763 op0.as_operand(),
1764 op1.as_operand(),
1765 &NOREG,
1766 &NOREG,
1767 );
1768 }
1769}
1770
1771impl<'a> SseMovlpdEmitter<Mem, Xmm> for Assembler<'a> {
1772 fn sse_movlpd(&mut self, op0: Mem, op1: Xmm) {
1773 self.emit(
1774 SSE_MOVLPDMR,
1775 op0.as_operand(),
1776 op1.as_operand(),
1777 &NOREG,
1778 &NOREG,
1779 );
1780 }
1781}
1782
1783pub trait SseMovmskpdEmitter<A, B> {
1795 fn sse_movmskpd(&mut self, op0: A, op1: B);
1796}
1797
1798impl<'a> SseMovmskpdEmitter<Gpq, Xmm> for Assembler<'a> {
1799 fn sse_movmskpd(&mut self, op0: Gpq, op1: Xmm) {
1800 self.emit(
1801 SSE_MOVMSKPDRR,
1802 op0.as_operand(),
1803 op1.as_operand(),
1804 &NOREG,
1805 &NOREG,
1806 );
1807 }
1808}
1809
1810pub trait SseMovntdqEmitter<A, B> {
1822 fn sse_movntdq(&mut self, op0: A, op1: B);
1823}
1824
1825impl<'a> SseMovntdqEmitter<Mem, Xmm> for Assembler<'a> {
1826 fn sse_movntdq(&mut self, op0: Mem, op1: Xmm) {
1827 self.emit(
1828 SSE_MOVNTDQMR,
1829 op0.as_operand(),
1830 op1.as_operand(),
1831 &NOREG,
1832 &NOREG,
1833 );
1834 }
1835}
1836
1837pub trait SseMovntpdEmitter<A, B> {
1849 fn sse_movntpd(&mut self, op0: A, op1: B);
1850}
1851
1852impl<'a> SseMovntpdEmitter<Mem, Xmm> for Assembler<'a> {
1853 fn sse_movntpd(&mut self, op0: Mem, op1: Xmm) {
1854 self.emit(
1855 SSE_MOVNTPDMR,
1856 op0.as_operand(),
1857 op1.as_operand(),
1858 &NOREG,
1859 &NOREG,
1860 );
1861 }
1862}
1863
1864pub trait SseMovntsdEmitter<A, B> {
1876 fn sse_movntsd(&mut self, op0: A, op1: B);
1877}
1878
1879impl<'a> SseMovntsdEmitter<Mem, Xmm> for Assembler<'a> {
1880 fn sse_movntsd(&mut self, op0: Mem, op1: Xmm) {
1881 self.emit(
1882 SSE_MOVNTSDMR,
1883 op0.as_operand(),
1884 op1.as_operand(),
1885 &NOREG,
1886 &NOREG,
1887 );
1888 }
1889}
1890
1891pub trait SseMovqEmitter<A, B> {
1905 fn sse_movq(&mut self, op0: A, op1: B);
1906}
1907
1908impl<'a> SseMovqEmitter<Xmm, Xmm> for Assembler<'a> {
1909 fn sse_movq(&mut self, op0: Xmm, op1: Xmm) {
1910 self.emit(
1911 SSE_MOVQRR,
1912 op0.as_operand(),
1913 op1.as_operand(),
1914 &NOREG,
1915 &NOREG,
1916 );
1917 }
1918}
1919
1920impl<'a> SseMovqEmitter<Xmm, Mem> for Assembler<'a> {
1921 fn sse_movq(&mut self, op0: Xmm, op1: Mem) {
1922 self.emit(
1923 SSE_MOVQRM,
1924 op0.as_operand(),
1925 op1.as_operand(),
1926 &NOREG,
1927 &NOREG,
1928 );
1929 }
1930}
1931
1932impl<'a> SseMovqEmitter<Mem, Xmm> for Assembler<'a> {
1933 fn sse_movq(&mut self, op0: Mem, op1: Xmm) {
1934 self.emit(
1935 SSE_MOVQMR,
1936 op0.as_operand(),
1937 op1.as_operand(),
1938 &NOREG,
1939 &NOREG,
1940 );
1941 }
1942}
1943
1944pub trait SseMovqG2xEmitter<A, B> {
1957 fn sse_movq_g2x(&mut self, op0: A, op1: B);
1958}
1959
1960impl<'a> SseMovqG2xEmitter<Xmm, Gpd> for Assembler<'a> {
1961 fn sse_movq_g2x(&mut self, op0: Xmm, op1: Gpd) {
1962 self.emit(
1963 SSE_MOVQ_G2XRR,
1964 op0.as_operand(),
1965 op1.as_operand(),
1966 &NOREG,
1967 &NOREG,
1968 );
1969 }
1970}
1971
1972impl<'a> SseMovqG2xEmitter<Xmm, Mem> for Assembler<'a> {
1973 fn sse_movq_g2x(&mut self, op0: Xmm, op1: Mem) {
1974 self.emit(
1975 SSE_MOVQ_G2XRM,
1976 op0.as_operand(),
1977 op1.as_operand(),
1978 &NOREG,
1979 &NOREG,
1980 );
1981 }
1982}
1983
1984pub trait SseMovqX2gEmitter<A, B> {
1997 fn sse_movq_x2g(&mut self, op0: A, op1: B);
1998}
1999
2000impl<'a> SseMovqX2gEmitter<Gpd, Xmm> for Assembler<'a> {
2001 fn sse_movq_x2g(&mut self, op0: Gpd, op1: Xmm) {
2002 self.emit(
2003 SSE_MOVQ_X2GRR,
2004 op0.as_operand(),
2005 op1.as_operand(),
2006 &NOREG,
2007 &NOREG,
2008 );
2009 }
2010}
2011
2012impl<'a> SseMovqX2gEmitter<Mem, Xmm> for Assembler<'a> {
2013 fn sse_movq_x2g(&mut self, op0: Mem, op1: Xmm) {
2014 self.emit(
2015 SSE_MOVQ_X2GMR,
2016 op0.as_operand(),
2017 op1.as_operand(),
2018 &NOREG,
2019 &NOREG,
2020 );
2021 }
2022}
2023
2024pub trait SseMovsdEmitter<A, B> {
2038 fn sse_movsd(&mut self, op0: A, op1: B);
2039}
2040
2041impl<'a> SseMovsdEmitter<Xmm, Xmm> for Assembler<'a> {
2042 fn sse_movsd(&mut self, op0: Xmm, op1: Xmm) {
2043 self.emit(
2044 SSE_MOVSDRR,
2045 op0.as_operand(),
2046 op1.as_operand(),
2047 &NOREG,
2048 &NOREG,
2049 );
2050 }
2051}
2052
2053impl<'a> SseMovsdEmitter<Xmm, Mem> for Assembler<'a> {
2054 fn sse_movsd(&mut self, op0: Xmm, op1: Mem) {
2055 self.emit(
2056 SSE_MOVSDRM,
2057 op0.as_operand(),
2058 op1.as_operand(),
2059 &NOREG,
2060 &NOREG,
2061 );
2062 }
2063}
2064
2065impl<'a> SseMovsdEmitter<Mem, Xmm> for Assembler<'a> {
2066 fn sse_movsd(&mut self, op0: Mem, op1: Xmm) {
2067 self.emit(
2068 SSE_MOVSDMR,
2069 op0.as_operand(),
2070 op1.as_operand(),
2071 &NOREG,
2072 &NOREG,
2073 );
2074 }
2075}
2076
2077pub trait SseMovupdEmitter<A, B> {
2091 fn sse_movupd(&mut self, op0: A, op1: B);
2092}
2093
2094impl<'a> SseMovupdEmitter<Xmm, Xmm> for Assembler<'a> {
2095 fn sse_movupd(&mut self, op0: Xmm, op1: Xmm) {
2096 self.emit(
2097 SSE_MOVUPDRR,
2098 op0.as_operand(),
2099 op1.as_operand(),
2100 &NOREG,
2101 &NOREG,
2102 );
2103 }
2104}
2105
2106impl<'a> SseMovupdEmitter<Xmm, Mem> for Assembler<'a> {
2107 fn sse_movupd(&mut self, op0: Xmm, op1: Mem) {
2108 self.emit(
2109 SSE_MOVUPDRM,
2110 op0.as_operand(),
2111 op1.as_operand(),
2112 &NOREG,
2113 &NOREG,
2114 );
2115 }
2116}
2117
2118impl<'a> SseMovupdEmitter<Mem, Xmm> for Assembler<'a> {
2119 fn sse_movupd(&mut self, op0: Mem, op1: Xmm) {
2120 self.emit(
2121 SSE_MOVUPDMR,
2122 op0.as_operand(),
2123 op1.as_operand(),
2124 &NOREG,
2125 &NOREG,
2126 );
2127 }
2128}
2129
2130pub trait SseMulpdEmitter<A, B> {
2143 fn sse_mulpd(&mut self, op0: A, op1: B);
2144}
2145
2146impl<'a> SseMulpdEmitter<Xmm, Xmm> for Assembler<'a> {
2147 fn sse_mulpd(&mut self, op0: Xmm, op1: Xmm) {
2148 self.emit(
2149 SSE_MULPDRR,
2150 op0.as_operand(),
2151 op1.as_operand(),
2152 &NOREG,
2153 &NOREG,
2154 );
2155 }
2156}
2157
2158impl<'a> SseMulpdEmitter<Xmm, Mem> for Assembler<'a> {
2159 fn sse_mulpd(&mut self, op0: Xmm, op1: Mem) {
2160 self.emit(
2161 SSE_MULPDRM,
2162 op0.as_operand(),
2163 op1.as_operand(),
2164 &NOREG,
2165 &NOREG,
2166 );
2167 }
2168}
2169
2170pub trait SseMulsdEmitter<A, B> {
2183 fn sse_mulsd(&mut self, op0: A, op1: B);
2184}
2185
2186impl<'a> SseMulsdEmitter<Xmm, Xmm> for Assembler<'a> {
2187 fn sse_mulsd(&mut self, op0: Xmm, op1: Xmm) {
2188 self.emit(
2189 SSE_MULSDRR,
2190 op0.as_operand(),
2191 op1.as_operand(),
2192 &NOREG,
2193 &NOREG,
2194 );
2195 }
2196}
2197
2198impl<'a> SseMulsdEmitter<Xmm, Mem> for Assembler<'a> {
2199 fn sse_mulsd(&mut self, op0: Xmm, op1: Mem) {
2200 self.emit(
2201 SSE_MULSDRM,
2202 op0.as_operand(),
2203 op1.as_operand(),
2204 &NOREG,
2205 &NOREG,
2206 );
2207 }
2208}
2209
2210pub trait SseOrpdEmitter<A, B> {
2223 fn sse_orpd(&mut self, op0: A, op1: B);
2224}
2225
2226impl<'a> SseOrpdEmitter<Xmm, Xmm> for Assembler<'a> {
2227 fn sse_orpd(&mut self, op0: Xmm, op1: Xmm) {
2228 self.emit(
2229 SSE_ORPDRR,
2230 op0.as_operand(),
2231 op1.as_operand(),
2232 &NOREG,
2233 &NOREG,
2234 );
2235 }
2236}
2237
2238impl<'a> SseOrpdEmitter<Xmm, Mem> for Assembler<'a> {
2239 fn sse_orpd(&mut self, op0: Xmm, op1: Mem) {
2240 self.emit(
2241 SSE_ORPDRM,
2242 op0.as_operand(),
2243 op1.as_operand(),
2244 &NOREG,
2245 &NOREG,
2246 );
2247 }
2248}
2249
2250pub trait SsePackssdwEmitter<A, B> {
2263 fn sse_packssdw(&mut self, op0: A, op1: B);
2264}
2265
2266impl<'a> SsePackssdwEmitter<Xmm, Xmm> for Assembler<'a> {
2267 fn sse_packssdw(&mut self, op0: Xmm, op1: Xmm) {
2268 self.emit(
2269 SSE_PACKSSDWRR,
2270 op0.as_operand(),
2271 op1.as_operand(),
2272 &NOREG,
2273 &NOREG,
2274 );
2275 }
2276}
2277
2278impl<'a> SsePackssdwEmitter<Xmm, Mem> for Assembler<'a> {
2279 fn sse_packssdw(&mut self, op0: Xmm, op1: Mem) {
2280 self.emit(
2281 SSE_PACKSSDWRM,
2282 op0.as_operand(),
2283 op1.as_operand(),
2284 &NOREG,
2285 &NOREG,
2286 );
2287 }
2288}
2289
2290pub trait SsePacksswbEmitter<A, B> {
2303 fn sse_packsswb(&mut self, op0: A, op1: B);
2304}
2305
2306impl<'a> SsePacksswbEmitter<Xmm, Xmm> for Assembler<'a> {
2307 fn sse_packsswb(&mut self, op0: Xmm, op1: Xmm) {
2308 self.emit(
2309 SSE_PACKSSWBRR,
2310 op0.as_operand(),
2311 op1.as_operand(),
2312 &NOREG,
2313 &NOREG,
2314 );
2315 }
2316}
2317
2318impl<'a> SsePacksswbEmitter<Xmm, Mem> for Assembler<'a> {
2319 fn sse_packsswb(&mut self, op0: Xmm, op1: Mem) {
2320 self.emit(
2321 SSE_PACKSSWBRM,
2322 op0.as_operand(),
2323 op1.as_operand(),
2324 &NOREG,
2325 &NOREG,
2326 );
2327 }
2328}
2329
2330pub trait SsePackuswbEmitter<A, B> {
2343 fn sse_packuswb(&mut self, op0: A, op1: B);
2344}
2345
2346impl<'a> SsePackuswbEmitter<Xmm, Xmm> for Assembler<'a> {
2347 fn sse_packuswb(&mut self, op0: Xmm, op1: Xmm) {
2348 self.emit(
2349 SSE_PACKUSWBRR,
2350 op0.as_operand(),
2351 op1.as_operand(),
2352 &NOREG,
2353 &NOREG,
2354 );
2355 }
2356}
2357
2358impl<'a> SsePackuswbEmitter<Xmm, Mem> for Assembler<'a> {
2359 fn sse_packuswb(&mut self, op0: Xmm, op1: Mem) {
2360 self.emit(
2361 SSE_PACKUSWBRM,
2362 op0.as_operand(),
2363 op1.as_operand(),
2364 &NOREG,
2365 &NOREG,
2366 );
2367 }
2368}
2369
2370pub trait SsePaddbEmitter<A, B> {
2383 fn sse_paddb(&mut self, op0: A, op1: B);
2384}
2385
2386impl<'a> SsePaddbEmitter<Xmm, Xmm> for Assembler<'a> {
2387 fn sse_paddb(&mut self, op0: Xmm, op1: Xmm) {
2388 self.emit(
2389 SSE_PADDBRR,
2390 op0.as_operand(),
2391 op1.as_operand(),
2392 &NOREG,
2393 &NOREG,
2394 );
2395 }
2396}
2397
2398impl<'a> SsePaddbEmitter<Xmm, Mem> for Assembler<'a> {
2399 fn sse_paddb(&mut self, op0: Xmm, op1: Mem) {
2400 self.emit(
2401 SSE_PADDBRM,
2402 op0.as_operand(),
2403 op1.as_operand(),
2404 &NOREG,
2405 &NOREG,
2406 );
2407 }
2408}
2409
2410pub trait SsePadddEmitter<A, B> {
2423 fn sse_paddd(&mut self, op0: A, op1: B);
2424}
2425
2426impl<'a> SsePadddEmitter<Xmm, Xmm> for Assembler<'a> {
2427 fn sse_paddd(&mut self, op0: Xmm, op1: Xmm) {
2428 self.emit(
2429 SSE_PADDDRR,
2430 op0.as_operand(),
2431 op1.as_operand(),
2432 &NOREG,
2433 &NOREG,
2434 );
2435 }
2436}
2437
2438impl<'a> SsePadddEmitter<Xmm, Mem> for Assembler<'a> {
2439 fn sse_paddd(&mut self, op0: Xmm, op1: Mem) {
2440 self.emit(
2441 SSE_PADDDRM,
2442 op0.as_operand(),
2443 op1.as_operand(),
2444 &NOREG,
2445 &NOREG,
2446 );
2447 }
2448}
2449
2450pub trait SsePaddqEmitter<A, B> {
2463 fn sse_paddq(&mut self, op0: A, op1: B);
2464}
2465
2466impl<'a> SsePaddqEmitter<Xmm, Xmm> for Assembler<'a> {
2467 fn sse_paddq(&mut self, op0: Xmm, op1: Xmm) {
2468 self.emit(
2469 SSE_PADDQRR,
2470 op0.as_operand(),
2471 op1.as_operand(),
2472 &NOREG,
2473 &NOREG,
2474 );
2475 }
2476}
2477
2478impl<'a> SsePaddqEmitter<Xmm, Mem> for Assembler<'a> {
2479 fn sse_paddq(&mut self, op0: Xmm, op1: Mem) {
2480 self.emit(
2481 SSE_PADDQRM,
2482 op0.as_operand(),
2483 op1.as_operand(),
2484 &NOREG,
2485 &NOREG,
2486 );
2487 }
2488}
2489
2490pub trait SsePaddsbEmitter<A, B> {
2503 fn sse_paddsb(&mut self, op0: A, op1: B);
2504}
2505
2506impl<'a> SsePaddsbEmitter<Xmm, Xmm> for Assembler<'a> {
2507 fn sse_paddsb(&mut self, op0: Xmm, op1: Xmm) {
2508 self.emit(
2509 SSE_PADDSBRR,
2510 op0.as_operand(),
2511 op1.as_operand(),
2512 &NOREG,
2513 &NOREG,
2514 );
2515 }
2516}
2517
2518impl<'a> SsePaddsbEmitter<Xmm, Mem> for Assembler<'a> {
2519 fn sse_paddsb(&mut self, op0: Xmm, op1: Mem) {
2520 self.emit(
2521 SSE_PADDSBRM,
2522 op0.as_operand(),
2523 op1.as_operand(),
2524 &NOREG,
2525 &NOREG,
2526 );
2527 }
2528}
2529
2530pub trait SsePaddswEmitter<A, B> {
2543 fn sse_paddsw(&mut self, op0: A, op1: B);
2544}
2545
2546impl<'a> SsePaddswEmitter<Xmm, Xmm> for Assembler<'a> {
2547 fn sse_paddsw(&mut self, op0: Xmm, op1: Xmm) {
2548 self.emit(
2549 SSE_PADDSWRR,
2550 op0.as_operand(),
2551 op1.as_operand(),
2552 &NOREG,
2553 &NOREG,
2554 );
2555 }
2556}
2557
2558impl<'a> SsePaddswEmitter<Xmm, Mem> for Assembler<'a> {
2559 fn sse_paddsw(&mut self, op0: Xmm, op1: Mem) {
2560 self.emit(
2561 SSE_PADDSWRM,
2562 op0.as_operand(),
2563 op1.as_operand(),
2564 &NOREG,
2565 &NOREG,
2566 );
2567 }
2568}
2569
2570pub trait SsePaddusbEmitter<A, B> {
2583 fn sse_paddusb(&mut self, op0: A, op1: B);
2584}
2585
2586impl<'a> SsePaddusbEmitter<Xmm, Xmm> for Assembler<'a> {
2587 fn sse_paddusb(&mut self, op0: Xmm, op1: Xmm) {
2588 self.emit(
2589 SSE_PADDUSBRR,
2590 op0.as_operand(),
2591 op1.as_operand(),
2592 &NOREG,
2593 &NOREG,
2594 );
2595 }
2596}
2597
2598impl<'a> SsePaddusbEmitter<Xmm, Mem> for Assembler<'a> {
2599 fn sse_paddusb(&mut self, op0: Xmm, op1: Mem) {
2600 self.emit(
2601 SSE_PADDUSBRM,
2602 op0.as_operand(),
2603 op1.as_operand(),
2604 &NOREG,
2605 &NOREG,
2606 );
2607 }
2608}
2609
2610pub trait SsePadduswEmitter<A, B> {
2623 fn sse_paddusw(&mut self, op0: A, op1: B);
2624}
2625
2626impl<'a> SsePadduswEmitter<Xmm, Xmm> for Assembler<'a> {
2627 fn sse_paddusw(&mut self, op0: Xmm, op1: Xmm) {
2628 self.emit(
2629 SSE_PADDUSWRR,
2630 op0.as_operand(),
2631 op1.as_operand(),
2632 &NOREG,
2633 &NOREG,
2634 );
2635 }
2636}
2637
2638impl<'a> SsePadduswEmitter<Xmm, Mem> for Assembler<'a> {
2639 fn sse_paddusw(&mut self, op0: Xmm, op1: Mem) {
2640 self.emit(
2641 SSE_PADDUSWRM,
2642 op0.as_operand(),
2643 op1.as_operand(),
2644 &NOREG,
2645 &NOREG,
2646 );
2647 }
2648}
2649
2650pub trait SsePaddwEmitter<A, B> {
2663 fn sse_paddw(&mut self, op0: A, op1: B);
2664}
2665
2666impl<'a> SsePaddwEmitter<Xmm, Xmm> for Assembler<'a> {
2667 fn sse_paddw(&mut self, op0: Xmm, op1: Xmm) {
2668 self.emit(
2669 SSE_PADDWRR,
2670 op0.as_operand(),
2671 op1.as_operand(),
2672 &NOREG,
2673 &NOREG,
2674 );
2675 }
2676}
2677
2678impl<'a> SsePaddwEmitter<Xmm, Mem> for Assembler<'a> {
2679 fn sse_paddw(&mut self, op0: Xmm, op1: Mem) {
2680 self.emit(
2681 SSE_PADDWRM,
2682 op0.as_operand(),
2683 op1.as_operand(),
2684 &NOREG,
2685 &NOREG,
2686 );
2687 }
2688}
2689
2690pub trait SsePandEmitter<A, B> {
2703 fn sse_pand(&mut self, op0: A, op1: B);
2704}
2705
2706impl<'a> SsePandEmitter<Xmm, Xmm> for Assembler<'a> {
2707 fn sse_pand(&mut self, op0: Xmm, op1: Xmm) {
2708 self.emit(
2709 SSE_PANDRR,
2710 op0.as_operand(),
2711 op1.as_operand(),
2712 &NOREG,
2713 &NOREG,
2714 );
2715 }
2716}
2717
2718impl<'a> SsePandEmitter<Xmm, Mem> for Assembler<'a> {
2719 fn sse_pand(&mut self, op0: Xmm, op1: Mem) {
2720 self.emit(
2721 SSE_PANDRM,
2722 op0.as_operand(),
2723 op1.as_operand(),
2724 &NOREG,
2725 &NOREG,
2726 );
2727 }
2728}
2729
2730pub trait SsePandnEmitter<A, B> {
2743 fn sse_pandn(&mut self, op0: A, op1: B);
2744}
2745
2746impl<'a> SsePandnEmitter<Xmm, Xmm> for Assembler<'a> {
2747 fn sse_pandn(&mut self, op0: Xmm, op1: Xmm) {
2748 self.emit(
2749 SSE_PANDNRR,
2750 op0.as_operand(),
2751 op1.as_operand(),
2752 &NOREG,
2753 &NOREG,
2754 );
2755 }
2756}
2757
2758impl<'a> SsePandnEmitter<Xmm, Mem> for Assembler<'a> {
2759 fn sse_pandn(&mut self, op0: Xmm, op1: Mem) {
2760 self.emit(
2761 SSE_PANDNRM,
2762 op0.as_operand(),
2763 op1.as_operand(),
2764 &NOREG,
2765 &NOREG,
2766 );
2767 }
2768}
2769
2770pub trait SsePavgbEmitter<A, B> {
2783 fn sse_pavgb(&mut self, op0: A, op1: B);
2784}
2785
2786impl<'a> SsePavgbEmitter<Xmm, Xmm> for Assembler<'a> {
2787 fn sse_pavgb(&mut self, op0: Xmm, op1: Xmm) {
2788 self.emit(
2789 SSE_PAVGBRR,
2790 op0.as_operand(),
2791 op1.as_operand(),
2792 &NOREG,
2793 &NOREG,
2794 );
2795 }
2796}
2797
2798impl<'a> SsePavgbEmitter<Xmm, Mem> for Assembler<'a> {
2799 fn sse_pavgb(&mut self, op0: Xmm, op1: Mem) {
2800 self.emit(
2801 SSE_PAVGBRM,
2802 op0.as_operand(),
2803 op1.as_operand(),
2804 &NOREG,
2805 &NOREG,
2806 );
2807 }
2808}
2809
2810pub trait SsePavgwEmitter<A, B> {
2823 fn sse_pavgw(&mut self, op0: A, op1: B);
2824}
2825
2826impl<'a> SsePavgwEmitter<Xmm, Xmm> for Assembler<'a> {
2827 fn sse_pavgw(&mut self, op0: Xmm, op1: Xmm) {
2828 self.emit(
2829 SSE_PAVGWRR,
2830 op0.as_operand(),
2831 op1.as_operand(),
2832 &NOREG,
2833 &NOREG,
2834 );
2835 }
2836}
2837
2838impl<'a> SsePavgwEmitter<Xmm, Mem> for Assembler<'a> {
2839 fn sse_pavgw(&mut self, op0: Xmm, op1: Mem) {
2840 self.emit(
2841 SSE_PAVGWRM,
2842 op0.as_operand(),
2843 op1.as_operand(),
2844 &NOREG,
2845 &NOREG,
2846 );
2847 }
2848}
2849
2850pub trait SsePcmpeqbEmitter<A, B> {
2863 fn sse_pcmpeqb(&mut self, op0: A, op1: B);
2864}
2865
2866impl<'a> SsePcmpeqbEmitter<Xmm, Xmm> for Assembler<'a> {
2867 fn sse_pcmpeqb(&mut self, op0: Xmm, op1: Xmm) {
2868 self.emit(
2869 SSE_PCMPEQBRR,
2870 op0.as_operand(),
2871 op1.as_operand(),
2872 &NOREG,
2873 &NOREG,
2874 );
2875 }
2876}
2877
2878impl<'a> SsePcmpeqbEmitter<Xmm, Mem> for Assembler<'a> {
2879 fn sse_pcmpeqb(&mut self, op0: Xmm, op1: Mem) {
2880 self.emit(
2881 SSE_PCMPEQBRM,
2882 op0.as_operand(),
2883 op1.as_operand(),
2884 &NOREG,
2885 &NOREG,
2886 );
2887 }
2888}
2889
2890pub trait SsePcmpeqdEmitter<A, B> {
2903 fn sse_pcmpeqd(&mut self, op0: A, op1: B);
2904}
2905
2906impl<'a> SsePcmpeqdEmitter<Xmm, Xmm> for Assembler<'a> {
2907 fn sse_pcmpeqd(&mut self, op0: Xmm, op1: Xmm) {
2908 self.emit(
2909 SSE_PCMPEQDRR,
2910 op0.as_operand(),
2911 op1.as_operand(),
2912 &NOREG,
2913 &NOREG,
2914 );
2915 }
2916}
2917
2918impl<'a> SsePcmpeqdEmitter<Xmm, Mem> for Assembler<'a> {
2919 fn sse_pcmpeqd(&mut self, op0: Xmm, op1: Mem) {
2920 self.emit(
2921 SSE_PCMPEQDRM,
2922 op0.as_operand(),
2923 op1.as_operand(),
2924 &NOREG,
2925 &NOREG,
2926 );
2927 }
2928}
2929
2930pub trait SsePcmpeqwEmitter<A, B> {
2943 fn sse_pcmpeqw(&mut self, op0: A, op1: B);
2944}
2945
2946impl<'a> SsePcmpeqwEmitter<Xmm, Xmm> for Assembler<'a> {
2947 fn sse_pcmpeqw(&mut self, op0: Xmm, op1: Xmm) {
2948 self.emit(
2949 SSE_PCMPEQWRR,
2950 op0.as_operand(),
2951 op1.as_operand(),
2952 &NOREG,
2953 &NOREG,
2954 );
2955 }
2956}
2957
2958impl<'a> SsePcmpeqwEmitter<Xmm, Mem> for Assembler<'a> {
2959 fn sse_pcmpeqw(&mut self, op0: Xmm, op1: Mem) {
2960 self.emit(
2961 SSE_PCMPEQWRM,
2962 op0.as_operand(),
2963 op1.as_operand(),
2964 &NOREG,
2965 &NOREG,
2966 );
2967 }
2968}
2969
2970pub trait SsePcmpgtbEmitter<A, B> {
2983 fn sse_pcmpgtb(&mut self, op0: A, op1: B);
2984}
2985
2986impl<'a> SsePcmpgtbEmitter<Xmm, Xmm> for Assembler<'a> {
2987 fn sse_pcmpgtb(&mut self, op0: Xmm, op1: Xmm) {
2988 self.emit(
2989 SSE_PCMPGTBRR,
2990 op0.as_operand(),
2991 op1.as_operand(),
2992 &NOREG,
2993 &NOREG,
2994 );
2995 }
2996}
2997
2998impl<'a> SsePcmpgtbEmitter<Xmm, Mem> for Assembler<'a> {
2999 fn sse_pcmpgtb(&mut self, op0: Xmm, op1: Mem) {
3000 self.emit(
3001 SSE_PCMPGTBRM,
3002 op0.as_operand(),
3003 op1.as_operand(),
3004 &NOREG,
3005 &NOREG,
3006 );
3007 }
3008}
3009
3010pub trait SsePcmpgtdEmitter<A, B> {
3023 fn sse_pcmpgtd(&mut self, op0: A, op1: B);
3024}
3025
3026impl<'a> SsePcmpgtdEmitter<Xmm, Xmm> for Assembler<'a> {
3027 fn sse_pcmpgtd(&mut self, op0: Xmm, op1: Xmm) {
3028 self.emit(
3029 SSE_PCMPGTDRR,
3030 op0.as_operand(),
3031 op1.as_operand(),
3032 &NOREG,
3033 &NOREG,
3034 );
3035 }
3036}
3037
3038impl<'a> SsePcmpgtdEmitter<Xmm, Mem> for Assembler<'a> {
3039 fn sse_pcmpgtd(&mut self, op0: Xmm, op1: Mem) {
3040 self.emit(
3041 SSE_PCMPGTDRM,
3042 op0.as_operand(),
3043 op1.as_operand(),
3044 &NOREG,
3045 &NOREG,
3046 );
3047 }
3048}
3049
3050pub trait SsePcmpgtwEmitter<A, B> {
3063 fn sse_pcmpgtw(&mut self, op0: A, op1: B);
3064}
3065
3066impl<'a> SsePcmpgtwEmitter<Xmm, Xmm> for Assembler<'a> {
3067 fn sse_pcmpgtw(&mut self, op0: Xmm, op1: Xmm) {
3068 self.emit(
3069 SSE_PCMPGTWRR,
3070 op0.as_operand(),
3071 op1.as_operand(),
3072 &NOREG,
3073 &NOREG,
3074 );
3075 }
3076}
3077
3078impl<'a> SsePcmpgtwEmitter<Xmm, Mem> for Assembler<'a> {
3079 fn sse_pcmpgtw(&mut self, op0: Xmm, op1: Mem) {
3080 self.emit(
3081 SSE_PCMPGTWRM,
3082 op0.as_operand(),
3083 op1.as_operand(),
3084 &NOREG,
3085 &NOREG,
3086 );
3087 }
3088}
3089
3090pub trait SsePextrwEmitter<A, B, C> {
3103 fn sse_pextrw(&mut self, op0: A, op1: B, op2: C);
3104}
3105
3106impl<'a> SsePextrwEmitter<Gpd, Xmm, Imm> for Assembler<'a> {
3107 fn sse_pextrw(&mut self, op0: Gpd, op1: Xmm, op2: Imm) {
3108 self.emit(
3109 SSE_PEXTRWRRI,
3110 op0.as_operand(),
3111 op1.as_operand(),
3112 op2.as_operand(),
3113 &NOREG,
3114 );
3115 }
3116}
3117
3118impl<'a> SsePextrwEmitter<Mem, Xmm, Imm> for Assembler<'a> {
3119 fn sse_pextrw(&mut self, op0: Mem, op1: Xmm, op2: Imm) {
3120 self.emit(
3121 SSE_PEXTRWMRI,
3122 op0.as_operand(),
3123 op1.as_operand(),
3124 op2.as_operand(),
3125 &NOREG,
3126 );
3127 }
3128}
3129
3130pub trait SsePinsrwEmitter<A, B, C> {
3143 fn sse_pinsrw(&mut self, op0: A, op1: B, op2: C);
3144}
3145
3146impl<'a> SsePinsrwEmitter<Xmm, Gpd, Imm> for Assembler<'a> {
3147 fn sse_pinsrw(&mut self, op0: Xmm, op1: Gpd, op2: Imm) {
3148 self.emit(
3149 SSE_PINSRWRRI,
3150 op0.as_operand(),
3151 op1.as_operand(),
3152 op2.as_operand(),
3153 &NOREG,
3154 );
3155 }
3156}
3157
3158impl<'a> SsePinsrwEmitter<Xmm, Mem, Imm> for Assembler<'a> {
3159 fn sse_pinsrw(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
3160 self.emit(
3161 SSE_PINSRWRMI,
3162 op0.as_operand(),
3163 op1.as_operand(),
3164 op2.as_operand(),
3165 &NOREG,
3166 );
3167 }
3168}
3169
3170pub trait SsePmaddwdEmitter<A, B> {
3183 fn sse_pmaddwd(&mut self, op0: A, op1: B);
3184}
3185
3186impl<'a> SsePmaddwdEmitter<Xmm, Xmm> for Assembler<'a> {
3187 fn sse_pmaddwd(&mut self, op0: Xmm, op1: Xmm) {
3188 self.emit(
3189 SSE_PMADDWDRR,
3190 op0.as_operand(),
3191 op1.as_operand(),
3192 &NOREG,
3193 &NOREG,
3194 );
3195 }
3196}
3197
3198impl<'a> SsePmaddwdEmitter<Xmm, Mem> for Assembler<'a> {
3199 fn sse_pmaddwd(&mut self, op0: Xmm, op1: Mem) {
3200 self.emit(
3201 SSE_PMADDWDRM,
3202 op0.as_operand(),
3203 op1.as_operand(),
3204 &NOREG,
3205 &NOREG,
3206 );
3207 }
3208}
3209
3210pub trait SsePmaxswEmitter<A, B> {
3223 fn sse_pmaxsw(&mut self, op0: A, op1: B);
3224}
3225
3226impl<'a> SsePmaxswEmitter<Xmm, Xmm> for Assembler<'a> {
3227 fn sse_pmaxsw(&mut self, op0: Xmm, op1: Xmm) {
3228 self.emit(
3229 SSE_PMAXSWRR,
3230 op0.as_operand(),
3231 op1.as_operand(),
3232 &NOREG,
3233 &NOREG,
3234 );
3235 }
3236}
3237
3238impl<'a> SsePmaxswEmitter<Xmm, Mem> for Assembler<'a> {
3239 fn sse_pmaxsw(&mut self, op0: Xmm, op1: Mem) {
3240 self.emit(
3241 SSE_PMAXSWRM,
3242 op0.as_operand(),
3243 op1.as_operand(),
3244 &NOREG,
3245 &NOREG,
3246 );
3247 }
3248}
3249
3250pub trait SsePmaxubEmitter<A, B> {
3263 fn sse_pmaxub(&mut self, op0: A, op1: B);
3264}
3265
3266impl<'a> SsePmaxubEmitter<Xmm, Xmm> for Assembler<'a> {
3267 fn sse_pmaxub(&mut self, op0: Xmm, op1: Xmm) {
3268 self.emit(
3269 SSE_PMAXUBRR,
3270 op0.as_operand(),
3271 op1.as_operand(),
3272 &NOREG,
3273 &NOREG,
3274 );
3275 }
3276}
3277
3278impl<'a> SsePmaxubEmitter<Xmm, Mem> for Assembler<'a> {
3279 fn sse_pmaxub(&mut self, op0: Xmm, op1: Mem) {
3280 self.emit(
3281 SSE_PMAXUBRM,
3282 op0.as_operand(),
3283 op1.as_operand(),
3284 &NOREG,
3285 &NOREG,
3286 );
3287 }
3288}
3289
3290pub trait SsePminswEmitter<A, B> {
3303 fn sse_pminsw(&mut self, op0: A, op1: B);
3304}
3305
3306impl<'a> SsePminswEmitter<Xmm, Xmm> for Assembler<'a> {
3307 fn sse_pminsw(&mut self, op0: Xmm, op1: Xmm) {
3308 self.emit(
3309 SSE_PMINSWRR,
3310 op0.as_operand(),
3311 op1.as_operand(),
3312 &NOREG,
3313 &NOREG,
3314 );
3315 }
3316}
3317
3318impl<'a> SsePminswEmitter<Xmm, Mem> for Assembler<'a> {
3319 fn sse_pminsw(&mut self, op0: Xmm, op1: Mem) {
3320 self.emit(
3321 SSE_PMINSWRM,
3322 op0.as_operand(),
3323 op1.as_operand(),
3324 &NOREG,
3325 &NOREG,
3326 );
3327 }
3328}
3329
3330pub trait SsePminubEmitter<A, B> {
3343 fn sse_pminub(&mut self, op0: A, op1: B);
3344}
3345
3346impl<'a> SsePminubEmitter<Xmm, Xmm> for Assembler<'a> {
3347 fn sse_pminub(&mut self, op0: Xmm, op1: Xmm) {
3348 self.emit(
3349 SSE_PMINUBRR,
3350 op0.as_operand(),
3351 op1.as_operand(),
3352 &NOREG,
3353 &NOREG,
3354 );
3355 }
3356}
3357
3358impl<'a> SsePminubEmitter<Xmm, Mem> for Assembler<'a> {
3359 fn sse_pminub(&mut self, op0: Xmm, op1: Mem) {
3360 self.emit(
3361 SSE_PMINUBRM,
3362 op0.as_operand(),
3363 op1.as_operand(),
3364 &NOREG,
3365 &NOREG,
3366 );
3367 }
3368}
3369
3370pub trait SsePmovmskbEmitter<A, B> {
3382 fn sse_pmovmskb(&mut self, op0: A, op1: B);
3383}
3384
3385impl<'a> SsePmovmskbEmitter<Gpq, Xmm> for Assembler<'a> {
3386 fn sse_pmovmskb(&mut self, op0: Gpq, op1: Xmm) {
3387 self.emit(
3388 SSE_PMOVMSKBRR,
3389 op0.as_operand(),
3390 op1.as_operand(),
3391 &NOREG,
3392 &NOREG,
3393 );
3394 }
3395}
3396
3397pub trait SsePmulhuwEmitter<A, B> {
3410 fn sse_pmulhuw(&mut self, op0: A, op1: B);
3411}
3412
3413impl<'a> SsePmulhuwEmitter<Xmm, Xmm> for Assembler<'a> {
3414 fn sse_pmulhuw(&mut self, op0: Xmm, op1: Xmm) {
3415 self.emit(
3416 SSE_PMULHUWRR,
3417 op0.as_operand(),
3418 op1.as_operand(),
3419 &NOREG,
3420 &NOREG,
3421 );
3422 }
3423}
3424
3425impl<'a> SsePmulhuwEmitter<Xmm, Mem> for Assembler<'a> {
3426 fn sse_pmulhuw(&mut self, op0: Xmm, op1: Mem) {
3427 self.emit(
3428 SSE_PMULHUWRM,
3429 op0.as_operand(),
3430 op1.as_operand(),
3431 &NOREG,
3432 &NOREG,
3433 );
3434 }
3435}
3436
3437pub trait SsePmulhwEmitter<A, B> {
3450 fn sse_pmulhw(&mut self, op0: A, op1: B);
3451}
3452
3453impl<'a> SsePmulhwEmitter<Xmm, Xmm> for Assembler<'a> {
3454 fn sse_pmulhw(&mut self, op0: Xmm, op1: Xmm) {
3455 self.emit(
3456 SSE_PMULHWRR,
3457 op0.as_operand(),
3458 op1.as_operand(),
3459 &NOREG,
3460 &NOREG,
3461 );
3462 }
3463}
3464
3465impl<'a> SsePmulhwEmitter<Xmm, Mem> for Assembler<'a> {
3466 fn sse_pmulhw(&mut self, op0: Xmm, op1: Mem) {
3467 self.emit(
3468 SSE_PMULHWRM,
3469 op0.as_operand(),
3470 op1.as_operand(),
3471 &NOREG,
3472 &NOREG,
3473 );
3474 }
3475}
3476
3477pub trait SsePmullwEmitter<A, B> {
3490 fn sse_pmullw(&mut self, op0: A, op1: B);
3491}
3492
3493impl<'a> SsePmullwEmitter<Xmm, Xmm> for Assembler<'a> {
3494 fn sse_pmullw(&mut self, op0: Xmm, op1: Xmm) {
3495 self.emit(
3496 SSE_PMULLWRR,
3497 op0.as_operand(),
3498 op1.as_operand(),
3499 &NOREG,
3500 &NOREG,
3501 );
3502 }
3503}
3504
3505impl<'a> SsePmullwEmitter<Xmm, Mem> for Assembler<'a> {
3506 fn sse_pmullw(&mut self, op0: Xmm, op1: Mem) {
3507 self.emit(
3508 SSE_PMULLWRM,
3509 op0.as_operand(),
3510 op1.as_operand(),
3511 &NOREG,
3512 &NOREG,
3513 );
3514 }
3515}
3516
3517pub trait SsePmuludqEmitter<A, B> {
3530 fn sse_pmuludq(&mut self, op0: A, op1: B);
3531}
3532
3533impl<'a> SsePmuludqEmitter<Xmm, Xmm> for Assembler<'a> {
3534 fn sse_pmuludq(&mut self, op0: Xmm, op1: Xmm) {
3535 self.emit(
3536 SSE_PMULUDQRR,
3537 op0.as_operand(),
3538 op1.as_operand(),
3539 &NOREG,
3540 &NOREG,
3541 );
3542 }
3543}
3544
3545impl<'a> SsePmuludqEmitter<Xmm, Mem> for Assembler<'a> {
3546 fn sse_pmuludq(&mut self, op0: Xmm, op1: Mem) {
3547 self.emit(
3548 SSE_PMULUDQRM,
3549 op0.as_operand(),
3550 op1.as_operand(),
3551 &NOREG,
3552 &NOREG,
3553 );
3554 }
3555}
3556
3557pub trait SsePorEmitter<A, B> {
3570 fn sse_por(&mut self, op0: A, op1: B);
3571}
3572
3573impl<'a> SsePorEmitter<Xmm, Xmm> for Assembler<'a> {
3574 fn sse_por(&mut self, op0: Xmm, op1: Xmm) {
3575 self.emit(
3576 SSE_PORRR,
3577 op0.as_operand(),
3578 op1.as_operand(),
3579 &NOREG,
3580 &NOREG,
3581 );
3582 }
3583}
3584
3585impl<'a> SsePorEmitter<Xmm, Mem> for Assembler<'a> {
3586 fn sse_por(&mut self, op0: Xmm, op1: Mem) {
3587 self.emit(
3588 SSE_PORRM,
3589 op0.as_operand(),
3590 op1.as_operand(),
3591 &NOREG,
3592 &NOREG,
3593 );
3594 }
3595}
3596
3597pub trait SsePsadbwEmitter<A, B> {
3610 fn sse_psadbw(&mut self, op0: A, op1: B);
3611}
3612
3613impl<'a> SsePsadbwEmitter<Xmm, Xmm> for Assembler<'a> {
3614 fn sse_psadbw(&mut self, op0: Xmm, op1: Xmm) {
3615 self.emit(
3616 SSE_PSADBWRR,
3617 op0.as_operand(),
3618 op1.as_operand(),
3619 &NOREG,
3620 &NOREG,
3621 );
3622 }
3623}
3624
3625impl<'a> SsePsadbwEmitter<Xmm, Mem> for Assembler<'a> {
3626 fn sse_psadbw(&mut self, op0: Xmm, op1: Mem) {
3627 self.emit(
3628 SSE_PSADBWRM,
3629 op0.as_operand(),
3630 op1.as_operand(),
3631 &NOREG,
3632 &NOREG,
3633 );
3634 }
3635}
3636
3637pub trait SsePshufdEmitter<A, B, C> {
3650 fn sse_pshufd(&mut self, op0: A, op1: B, op2: C);
3651}
3652
3653impl<'a> SsePshufdEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
3654 fn sse_pshufd(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
3655 self.emit(
3656 SSE_PSHUFDRRI,
3657 op0.as_operand(),
3658 op1.as_operand(),
3659 op2.as_operand(),
3660 &NOREG,
3661 );
3662 }
3663}
3664
3665impl<'a> SsePshufdEmitter<Xmm, Mem, Imm> for Assembler<'a> {
3666 fn sse_pshufd(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
3667 self.emit(
3668 SSE_PSHUFDRMI,
3669 op0.as_operand(),
3670 op1.as_operand(),
3671 op2.as_operand(),
3672 &NOREG,
3673 );
3674 }
3675}
3676
3677pub trait SsePshufhwEmitter<A, B, C> {
3690 fn sse_pshufhw(&mut self, op0: A, op1: B, op2: C);
3691}
3692
3693impl<'a> SsePshufhwEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
3694 fn sse_pshufhw(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
3695 self.emit(
3696 SSE_PSHUFHWRRI,
3697 op0.as_operand(),
3698 op1.as_operand(),
3699 op2.as_operand(),
3700 &NOREG,
3701 );
3702 }
3703}
3704
3705impl<'a> SsePshufhwEmitter<Xmm, Mem, Imm> for Assembler<'a> {
3706 fn sse_pshufhw(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
3707 self.emit(
3708 SSE_PSHUFHWRMI,
3709 op0.as_operand(),
3710 op1.as_operand(),
3711 op2.as_operand(),
3712 &NOREG,
3713 );
3714 }
3715}
3716
3717pub trait SsePshuflwEmitter<A, B, C> {
3730 fn sse_pshuflw(&mut self, op0: A, op1: B, op2: C);
3731}
3732
3733impl<'a> SsePshuflwEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
3734 fn sse_pshuflw(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
3735 self.emit(
3736 SSE_PSHUFLWRRI,
3737 op0.as_operand(),
3738 op1.as_operand(),
3739 op2.as_operand(),
3740 &NOREG,
3741 );
3742 }
3743}
3744
3745impl<'a> SsePshuflwEmitter<Xmm, Mem, Imm> for Assembler<'a> {
3746 fn sse_pshuflw(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
3747 self.emit(
3748 SSE_PSHUFLWRMI,
3749 op0.as_operand(),
3750 op1.as_operand(),
3751 op2.as_operand(),
3752 &NOREG,
3753 );
3754 }
3755}
3756
3757pub trait SsePslldEmitter<A, B> {
3771 fn sse_pslld(&mut self, op0: A, op1: B);
3772}
3773
3774impl<'a> SsePslldEmitter<Xmm, Imm> for Assembler<'a> {
3775 fn sse_pslld(&mut self, op0: Xmm, op1: Imm) {
3776 self.emit(
3777 SSE_PSLLDRI,
3778 op0.as_operand(),
3779 op1.as_operand(),
3780 &NOREG,
3781 &NOREG,
3782 );
3783 }
3784}
3785
3786impl<'a> SsePslldEmitter<Xmm, Xmm> for Assembler<'a> {
3787 fn sse_pslld(&mut self, op0: Xmm, op1: Xmm) {
3788 self.emit(
3789 SSE_PSLLDRR,
3790 op0.as_operand(),
3791 op1.as_operand(),
3792 &NOREG,
3793 &NOREG,
3794 );
3795 }
3796}
3797
3798impl<'a> SsePslldEmitter<Xmm, Mem> for Assembler<'a> {
3799 fn sse_pslld(&mut self, op0: Xmm, op1: Mem) {
3800 self.emit(
3801 SSE_PSLLDRM,
3802 op0.as_operand(),
3803 op1.as_operand(),
3804 &NOREG,
3805 &NOREG,
3806 );
3807 }
3808}
3809
3810pub trait SsePslldqEmitter<A, B> {
3822 fn sse_pslldq(&mut self, op0: A, op1: B);
3823}
3824
3825impl<'a> SsePslldqEmitter<Xmm, Imm> for Assembler<'a> {
3826 fn sse_pslldq(&mut self, op0: Xmm, op1: Imm) {
3827 self.emit(
3828 SSE_PSLLDQRI,
3829 op0.as_operand(),
3830 op1.as_operand(),
3831 &NOREG,
3832 &NOREG,
3833 );
3834 }
3835}
3836
3837pub trait SsePsllqEmitter<A, B> {
3851 fn sse_psllq(&mut self, op0: A, op1: B);
3852}
3853
3854impl<'a> SsePsllqEmitter<Xmm, Imm> for Assembler<'a> {
3855 fn sse_psllq(&mut self, op0: Xmm, op1: Imm) {
3856 self.emit(
3857 SSE_PSLLQRI,
3858 op0.as_operand(),
3859 op1.as_operand(),
3860 &NOREG,
3861 &NOREG,
3862 );
3863 }
3864}
3865
3866impl<'a> SsePsllqEmitter<Xmm, Xmm> for Assembler<'a> {
3867 fn sse_psllq(&mut self, op0: Xmm, op1: Xmm) {
3868 self.emit(
3869 SSE_PSLLQRR,
3870 op0.as_operand(),
3871 op1.as_operand(),
3872 &NOREG,
3873 &NOREG,
3874 );
3875 }
3876}
3877
3878impl<'a> SsePsllqEmitter<Xmm, Mem> for Assembler<'a> {
3879 fn sse_psllq(&mut self, op0: Xmm, op1: Mem) {
3880 self.emit(
3881 SSE_PSLLQRM,
3882 op0.as_operand(),
3883 op1.as_operand(),
3884 &NOREG,
3885 &NOREG,
3886 );
3887 }
3888}
3889
3890pub trait SsePsllwEmitter<A, B> {
3904 fn sse_psllw(&mut self, op0: A, op1: B);
3905}
3906
3907impl<'a> SsePsllwEmitter<Xmm, Imm> for Assembler<'a> {
3908 fn sse_psllw(&mut self, op0: Xmm, op1: Imm) {
3909 self.emit(
3910 SSE_PSLLWRI,
3911 op0.as_operand(),
3912 op1.as_operand(),
3913 &NOREG,
3914 &NOREG,
3915 );
3916 }
3917}
3918
3919impl<'a> SsePsllwEmitter<Xmm, Xmm> for Assembler<'a> {
3920 fn sse_psllw(&mut self, op0: Xmm, op1: Xmm) {
3921 self.emit(
3922 SSE_PSLLWRR,
3923 op0.as_operand(),
3924 op1.as_operand(),
3925 &NOREG,
3926 &NOREG,
3927 );
3928 }
3929}
3930
3931impl<'a> SsePsllwEmitter<Xmm, Mem> for Assembler<'a> {
3932 fn sse_psllw(&mut self, op0: Xmm, op1: Mem) {
3933 self.emit(
3934 SSE_PSLLWRM,
3935 op0.as_operand(),
3936 op1.as_operand(),
3937 &NOREG,
3938 &NOREG,
3939 );
3940 }
3941}
3942
3943pub trait SsePsradEmitter<A, B> {
3957 fn sse_psrad(&mut self, op0: A, op1: B);
3958}
3959
3960impl<'a> SsePsradEmitter<Xmm, Imm> for Assembler<'a> {
3961 fn sse_psrad(&mut self, op0: Xmm, op1: Imm) {
3962 self.emit(
3963 SSE_PSRADRI,
3964 op0.as_operand(),
3965 op1.as_operand(),
3966 &NOREG,
3967 &NOREG,
3968 );
3969 }
3970}
3971
3972impl<'a> SsePsradEmitter<Xmm, Xmm> for Assembler<'a> {
3973 fn sse_psrad(&mut self, op0: Xmm, op1: Xmm) {
3974 self.emit(
3975 SSE_PSRADRR,
3976 op0.as_operand(),
3977 op1.as_operand(),
3978 &NOREG,
3979 &NOREG,
3980 );
3981 }
3982}
3983
3984impl<'a> SsePsradEmitter<Xmm, Mem> for Assembler<'a> {
3985 fn sse_psrad(&mut self, op0: Xmm, op1: Mem) {
3986 self.emit(
3987 SSE_PSRADRM,
3988 op0.as_operand(),
3989 op1.as_operand(),
3990 &NOREG,
3991 &NOREG,
3992 );
3993 }
3994}
3995
3996pub trait SsePsrawEmitter<A, B> {
4010 fn sse_psraw(&mut self, op0: A, op1: B);
4011}
4012
4013impl<'a> SsePsrawEmitter<Xmm, Imm> for Assembler<'a> {
4014 fn sse_psraw(&mut self, op0: Xmm, op1: Imm) {
4015 self.emit(
4016 SSE_PSRAWRI,
4017 op0.as_operand(),
4018 op1.as_operand(),
4019 &NOREG,
4020 &NOREG,
4021 );
4022 }
4023}
4024
4025impl<'a> SsePsrawEmitter<Xmm, Xmm> for Assembler<'a> {
4026 fn sse_psraw(&mut self, op0: Xmm, op1: Xmm) {
4027 self.emit(
4028 SSE_PSRAWRR,
4029 op0.as_operand(),
4030 op1.as_operand(),
4031 &NOREG,
4032 &NOREG,
4033 );
4034 }
4035}
4036
4037impl<'a> SsePsrawEmitter<Xmm, Mem> for Assembler<'a> {
4038 fn sse_psraw(&mut self, op0: Xmm, op1: Mem) {
4039 self.emit(
4040 SSE_PSRAWRM,
4041 op0.as_operand(),
4042 op1.as_operand(),
4043 &NOREG,
4044 &NOREG,
4045 );
4046 }
4047}
4048
4049pub trait SsePsrldEmitter<A, B> {
4063 fn sse_psrld(&mut self, op0: A, op1: B);
4064}
4065
4066impl<'a> SsePsrldEmitter<Xmm, Imm> for Assembler<'a> {
4067 fn sse_psrld(&mut self, op0: Xmm, op1: Imm) {
4068 self.emit(
4069 SSE_PSRLDRI,
4070 op0.as_operand(),
4071 op1.as_operand(),
4072 &NOREG,
4073 &NOREG,
4074 );
4075 }
4076}
4077
4078impl<'a> SsePsrldEmitter<Xmm, Xmm> for Assembler<'a> {
4079 fn sse_psrld(&mut self, op0: Xmm, op1: Xmm) {
4080 self.emit(
4081 SSE_PSRLDRR,
4082 op0.as_operand(),
4083 op1.as_operand(),
4084 &NOREG,
4085 &NOREG,
4086 );
4087 }
4088}
4089
4090impl<'a> SsePsrldEmitter<Xmm, Mem> for Assembler<'a> {
4091 fn sse_psrld(&mut self, op0: Xmm, op1: Mem) {
4092 self.emit(
4093 SSE_PSRLDRM,
4094 op0.as_operand(),
4095 op1.as_operand(),
4096 &NOREG,
4097 &NOREG,
4098 );
4099 }
4100}
4101
4102pub trait SsePsrldqEmitter<A, B> {
4114 fn sse_psrldq(&mut self, op0: A, op1: B);
4115}
4116
4117impl<'a> SsePsrldqEmitter<Xmm, Imm> for Assembler<'a> {
4118 fn sse_psrldq(&mut self, op0: Xmm, op1: Imm) {
4119 self.emit(
4120 SSE_PSRLDQRI,
4121 op0.as_operand(),
4122 op1.as_operand(),
4123 &NOREG,
4124 &NOREG,
4125 );
4126 }
4127}
4128
4129pub trait SsePsrlqEmitter<A, B> {
4143 fn sse_psrlq(&mut self, op0: A, op1: B);
4144}
4145
4146impl<'a> SsePsrlqEmitter<Xmm, Imm> for Assembler<'a> {
4147 fn sse_psrlq(&mut self, op0: Xmm, op1: Imm) {
4148 self.emit(
4149 SSE_PSRLQRI,
4150 op0.as_operand(),
4151 op1.as_operand(),
4152 &NOREG,
4153 &NOREG,
4154 );
4155 }
4156}
4157
4158impl<'a> SsePsrlqEmitter<Xmm, Xmm> for Assembler<'a> {
4159 fn sse_psrlq(&mut self, op0: Xmm, op1: Xmm) {
4160 self.emit(
4161 SSE_PSRLQRR,
4162 op0.as_operand(),
4163 op1.as_operand(),
4164 &NOREG,
4165 &NOREG,
4166 );
4167 }
4168}
4169
4170impl<'a> SsePsrlqEmitter<Xmm, Mem> for Assembler<'a> {
4171 fn sse_psrlq(&mut self, op0: Xmm, op1: Mem) {
4172 self.emit(
4173 SSE_PSRLQRM,
4174 op0.as_operand(),
4175 op1.as_operand(),
4176 &NOREG,
4177 &NOREG,
4178 );
4179 }
4180}
4181
4182pub trait SsePsrlwEmitter<A, B> {
4196 fn sse_psrlw(&mut self, op0: A, op1: B);
4197}
4198
4199impl<'a> SsePsrlwEmitter<Xmm, Imm> for Assembler<'a> {
4200 fn sse_psrlw(&mut self, op0: Xmm, op1: Imm) {
4201 self.emit(
4202 SSE_PSRLWRI,
4203 op0.as_operand(),
4204 op1.as_operand(),
4205 &NOREG,
4206 &NOREG,
4207 );
4208 }
4209}
4210
4211impl<'a> SsePsrlwEmitter<Xmm, Xmm> for Assembler<'a> {
4212 fn sse_psrlw(&mut self, op0: Xmm, op1: Xmm) {
4213 self.emit(
4214 SSE_PSRLWRR,
4215 op0.as_operand(),
4216 op1.as_operand(),
4217 &NOREG,
4218 &NOREG,
4219 );
4220 }
4221}
4222
4223impl<'a> SsePsrlwEmitter<Xmm, Mem> for Assembler<'a> {
4224 fn sse_psrlw(&mut self, op0: Xmm, op1: Mem) {
4225 self.emit(
4226 SSE_PSRLWRM,
4227 op0.as_operand(),
4228 op1.as_operand(),
4229 &NOREG,
4230 &NOREG,
4231 );
4232 }
4233}
4234
4235pub trait SsePsubbEmitter<A, B> {
4248 fn sse_psubb(&mut self, op0: A, op1: B);
4249}
4250
4251impl<'a> SsePsubbEmitter<Xmm, Xmm> for Assembler<'a> {
4252 fn sse_psubb(&mut self, op0: Xmm, op1: Xmm) {
4253 self.emit(
4254 SSE_PSUBBRR,
4255 op0.as_operand(),
4256 op1.as_operand(),
4257 &NOREG,
4258 &NOREG,
4259 );
4260 }
4261}
4262
4263impl<'a> SsePsubbEmitter<Xmm, Mem> for Assembler<'a> {
4264 fn sse_psubb(&mut self, op0: Xmm, op1: Mem) {
4265 self.emit(
4266 SSE_PSUBBRM,
4267 op0.as_operand(),
4268 op1.as_operand(),
4269 &NOREG,
4270 &NOREG,
4271 );
4272 }
4273}
4274
4275pub trait SsePsubdEmitter<A, B> {
4288 fn sse_psubd(&mut self, op0: A, op1: B);
4289}
4290
4291impl<'a> SsePsubdEmitter<Xmm, Xmm> for Assembler<'a> {
4292 fn sse_psubd(&mut self, op0: Xmm, op1: Xmm) {
4293 self.emit(
4294 SSE_PSUBDRR,
4295 op0.as_operand(),
4296 op1.as_operand(),
4297 &NOREG,
4298 &NOREG,
4299 );
4300 }
4301}
4302
4303impl<'a> SsePsubdEmitter<Xmm, Mem> for Assembler<'a> {
4304 fn sse_psubd(&mut self, op0: Xmm, op1: Mem) {
4305 self.emit(
4306 SSE_PSUBDRM,
4307 op0.as_operand(),
4308 op1.as_operand(),
4309 &NOREG,
4310 &NOREG,
4311 );
4312 }
4313}
4314
4315pub trait SsePsubqEmitter<A, B> {
4328 fn sse_psubq(&mut self, op0: A, op1: B);
4329}
4330
4331impl<'a> SsePsubqEmitter<Xmm, Xmm> for Assembler<'a> {
4332 fn sse_psubq(&mut self, op0: Xmm, op1: Xmm) {
4333 self.emit(
4334 SSE_PSUBQRR,
4335 op0.as_operand(),
4336 op1.as_operand(),
4337 &NOREG,
4338 &NOREG,
4339 );
4340 }
4341}
4342
4343impl<'a> SsePsubqEmitter<Xmm, Mem> for Assembler<'a> {
4344 fn sse_psubq(&mut self, op0: Xmm, op1: Mem) {
4345 self.emit(
4346 SSE_PSUBQRM,
4347 op0.as_operand(),
4348 op1.as_operand(),
4349 &NOREG,
4350 &NOREG,
4351 );
4352 }
4353}
4354
4355pub trait SsePsubsbEmitter<A, B> {
4368 fn sse_psubsb(&mut self, op0: A, op1: B);
4369}
4370
4371impl<'a> SsePsubsbEmitter<Xmm, Xmm> for Assembler<'a> {
4372 fn sse_psubsb(&mut self, op0: Xmm, op1: Xmm) {
4373 self.emit(
4374 SSE_PSUBSBRR,
4375 op0.as_operand(),
4376 op1.as_operand(),
4377 &NOREG,
4378 &NOREG,
4379 );
4380 }
4381}
4382
4383impl<'a> SsePsubsbEmitter<Xmm, Mem> for Assembler<'a> {
4384 fn sse_psubsb(&mut self, op0: Xmm, op1: Mem) {
4385 self.emit(
4386 SSE_PSUBSBRM,
4387 op0.as_operand(),
4388 op1.as_operand(),
4389 &NOREG,
4390 &NOREG,
4391 );
4392 }
4393}
4394
4395pub trait SsePsubswEmitter<A, B> {
4408 fn sse_psubsw(&mut self, op0: A, op1: B);
4409}
4410
4411impl<'a> SsePsubswEmitter<Xmm, Xmm> for Assembler<'a> {
4412 fn sse_psubsw(&mut self, op0: Xmm, op1: Xmm) {
4413 self.emit(
4414 SSE_PSUBSWRR,
4415 op0.as_operand(),
4416 op1.as_operand(),
4417 &NOREG,
4418 &NOREG,
4419 );
4420 }
4421}
4422
4423impl<'a> SsePsubswEmitter<Xmm, Mem> for Assembler<'a> {
4424 fn sse_psubsw(&mut self, op0: Xmm, op1: Mem) {
4425 self.emit(
4426 SSE_PSUBSWRM,
4427 op0.as_operand(),
4428 op1.as_operand(),
4429 &NOREG,
4430 &NOREG,
4431 );
4432 }
4433}
4434
4435pub trait SsePsubusbEmitter<A, B> {
4448 fn sse_psubusb(&mut self, op0: A, op1: B);
4449}
4450
4451impl<'a> SsePsubusbEmitter<Xmm, Xmm> for Assembler<'a> {
4452 fn sse_psubusb(&mut self, op0: Xmm, op1: Xmm) {
4453 self.emit(
4454 SSE_PSUBUSBRR,
4455 op0.as_operand(),
4456 op1.as_operand(),
4457 &NOREG,
4458 &NOREG,
4459 );
4460 }
4461}
4462
4463impl<'a> SsePsubusbEmitter<Xmm, Mem> for Assembler<'a> {
4464 fn sse_psubusb(&mut self, op0: Xmm, op1: Mem) {
4465 self.emit(
4466 SSE_PSUBUSBRM,
4467 op0.as_operand(),
4468 op1.as_operand(),
4469 &NOREG,
4470 &NOREG,
4471 );
4472 }
4473}
4474
4475pub trait SsePsubuswEmitter<A, B> {
4488 fn sse_psubusw(&mut self, op0: A, op1: B);
4489}
4490
4491impl<'a> SsePsubuswEmitter<Xmm, Xmm> for Assembler<'a> {
4492 fn sse_psubusw(&mut self, op0: Xmm, op1: Xmm) {
4493 self.emit(
4494 SSE_PSUBUSWRR,
4495 op0.as_operand(),
4496 op1.as_operand(),
4497 &NOREG,
4498 &NOREG,
4499 );
4500 }
4501}
4502
4503impl<'a> SsePsubuswEmitter<Xmm, Mem> for Assembler<'a> {
4504 fn sse_psubusw(&mut self, op0: Xmm, op1: Mem) {
4505 self.emit(
4506 SSE_PSUBUSWRM,
4507 op0.as_operand(),
4508 op1.as_operand(),
4509 &NOREG,
4510 &NOREG,
4511 );
4512 }
4513}
4514
4515pub trait SsePsubwEmitter<A, B> {
4528 fn sse_psubw(&mut self, op0: A, op1: B);
4529}
4530
4531impl<'a> SsePsubwEmitter<Xmm, Xmm> for Assembler<'a> {
4532 fn sse_psubw(&mut self, op0: Xmm, op1: Xmm) {
4533 self.emit(
4534 SSE_PSUBWRR,
4535 op0.as_operand(),
4536 op1.as_operand(),
4537 &NOREG,
4538 &NOREG,
4539 );
4540 }
4541}
4542
4543impl<'a> SsePsubwEmitter<Xmm, Mem> for Assembler<'a> {
4544 fn sse_psubw(&mut self, op0: Xmm, op1: Mem) {
4545 self.emit(
4546 SSE_PSUBWRM,
4547 op0.as_operand(),
4548 op1.as_operand(),
4549 &NOREG,
4550 &NOREG,
4551 );
4552 }
4553}
4554
4555pub trait SsePunpckhbwEmitter<A, B> {
4568 fn sse_punpckhbw(&mut self, op0: A, op1: B);
4569}
4570
4571impl<'a> SsePunpckhbwEmitter<Xmm, Xmm> for Assembler<'a> {
4572 fn sse_punpckhbw(&mut self, op0: Xmm, op1: Xmm) {
4573 self.emit(
4574 SSE_PUNPCKHBWRR,
4575 op0.as_operand(),
4576 op1.as_operand(),
4577 &NOREG,
4578 &NOREG,
4579 );
4580 }
4581}
4582
4583impl<'a> SsePunpckhbwEmitter<Xmm, Mem> for Assembler<'a> {
4584 fn sse_punpckhbw(&mut self, op0: Xmm, op1: Mem) {
4585 self.emit(
4586 SSE_PUNPCKHBWRM,
4587 op0.as_operand(),
4588 op1.as_operand(),
4589 &NOREG,
4590 &NOREG,
4591 );
4592 }
4593}
4594
4595pub trait SsePunpckhdqEmitter<A, B> {
4608 fn sse_punpckhdq(&mut self, op0: A, op1: B);
4609}
4610
4611impl<'a> SsePunpckhdqEmitter<Xmm, Xmm> for Assembler<'a> {
4612 fn sse_punpckhdq(&mut self, op0: Xmm, op1: Xmm) {
4613 self.emit(
4614 SSE_PUNPCKHDQRR,
4615 op0.as_operand(),
4616 op1.as_operand(),
4617 &NOREG,
4618 &NOREG,
4619 );
4620 }
4621}
4622
4623impl<'a> SsePunpckhdqEmitter<Xmm, Mem> for Assembler<'a> {
4624 fn sse_punpckhdq(&mut self, op0: Xmm, op1: Mem) {
4625 self.emit(
4626 SSE_PUNPCKHDQRM,
4627 op0.as_operand(),
4628 op1.as_operand(),
4629 &NOREG,
4630 &NOREG,
4631 );
4632 }
4633}
4634
4635pub trait SsePunpckhqdqEmitter<A, B> {
4648 fn sse_punpckhqdq(&mut self, op0: A, op1: B);
4649}
4650
4651impl<'a> SsePunpckhqdqEmitter<Xmm, Xmm> for Assembler<'a> {
4652 fn sse_punpckhqdq(&mut self, op0: Xmm, op1: Xmm) {
4653 self.emit(
4654 SSE_PUNPCKHQDQRR,
4655 op0.as_operand(),
4656 op1.as_operand(),
4657 &NOREG,
4658 &NOREG,
4659 );
4660 }
4661}
4662
4663impl<'a> SsePunpckhqdqEmitter<Xmm, Mem> for Assembler<'a> {
4664 fn sse_punpckhqdq(&mut self, op0: Xmm, op1: Mem) {
4665 self.emit(
4666 SSE_PUNPCKHQDQRM,
4667 op0.as_operand(),
4668 op1.as_operand(),
4669 &NOREG,
4670 &NOREG,
4671 );
4672 }
4673}
4674
4675pub trait SsePunpckhwdEmitter<A, B> {
4688 fn sse_punpckhwd(&mut self, op0: A, op1: B);
4689}
4690
4691impl<'a> SsePunpckhwdEmitter<Xmm, Xmm> for Assembler<'a> {
4692 fn sse_punpckhwd(&mut self, op0: Xmm, op1: Xmm) {
4693 self.emit(
4694 SSE_PUNPCKHWDRR,
4695 op0.as_operand(),
4696 op1.as_operand(),
4697 &NOREG,
4698 &NOREG,
4699 );
4700 }
4701}
4702
4703impl<'a> SsePunpckhwdEmitter<Xmm, Mem> for Assembler<'a> {
4704 fn sse_punpckhwd(&mut self, op0: Xmm, op1: Mem) {
4705 self.emit(
4706 SSE_PUNPCKHWDRM,
4707 op0.as_operand(),
4708 op1.as_operand(),
4709 &NOREG,
4710 &NOREG,
4711 );
4712 }
4713}
4714
4715pub trait SsePunpcklbwEmitter<A, B> {
4728 fn sse_punpcklbw(&mut self, op0: A, op1: B);
4729}
4730
4731impl<'a> SsePunpcklbwEmitter<Xmm, Xmm> for Assembler<'a> {
4732 fn sse_punpcklbw(&mut self, op0: Xmm, op1: Xmm) {
4733 self.emit(
4734 SSE_PUNPCKLBWRR,
4735 op0.as_operand(),
4736 op1.as_operand(),
4737 &NOREG,
4738 &NOREG,
4739 );
4740 }
4741}
4742
4743impl<'a> SsePunpcklbwEmitter<Xmm, Mem> for Assembler<'a> {
4744 fn sse_punpcklbw(&mut self, op0: Xmm, op1: Mem) {
4745 self.emit(
4746 SSE_PUNPCKLBWRM,
4747 op0.as_operand(),
4748 op1.as_operand(),
4749 &NOREG,
4750 &NOREG,
4751 );
4752 }
4753}
4754
4755pub trait SsePunpckldqEmitter<A, B> {
4768 fn sse_punpckldq(&mut self, op0: A, op1: B);
4769}
4770
4771impl<'a> SsePunpckldqEmitter<Xmm, Xmm> for Assembler<'a> {
4772 fn sse_punpckldq(&mut self, op0: Xmm, op1: Xmm) {
4773 self.emit(
4774 SSE_PUNPCKLDQRR,
4775 op0.as_operand(),
4776 op1.as_operand(),
4777 &NOREG,
4778 &NOREG,
4779 );
4780 }
4781}
4782
4783impl<'a> SsePunpckldqEmitter<Xmm, Mem> for Assembler<'a> {
4784 fn sse_punpckldq(&mut self, op0: Xmm, op1: Mem) {
4785 self.emit(
4786 SSE_PUNPCKLDQRM,
4787 op0.as_operand(),
4788 op1.as_operand(),
4789 &NOREG,
4790 &NOREG,
4791 );
4792 }
4793}
4794
4795pub trait SsePunpcklqdqEmitter<A, B> {
4808 fn sse_punpcklqdq(&mut self, op0: A, op1: B);
4809}
4810
4811impl<'a> SsePunpcklqdqEmitter<Xmm, Xmm> for Assembler<'a> {
4812 fn sse_punpcklqdq(&mut self, op0: Xmm, op1: Xmm) {
4813 self.emit(
4814 SSE_PUNPCKLQDQRR,
4815 op0.as_operand(),
4816 op1.as_operand(),
4817 &NOREG,
4818 &NOREG,
4819 );
4820 }
4821}
4822
4823impl<'a> SsePunpcklqdqEmitter<Xmm, Mem> for Assembler<'a> {
4824 fn sse_punpcklqdq(&mut self, op0: Xmm, op1: Mem) {
4825 self.emit(
4826 SSE_PUNPCKLQDQRM,
4827 op0.as_operand(),
4828 op1.as_operand(),
4829 &NOREG,
4830 &NOREG,
4831 );
4832 }
4833}
4834
4835pub trait SsePunpcklwdEmitter<A, B> {
4848 fn sse_punpcklwd(&mut self, op0: A, op1: B);
4849}
4850
4851impl<'a> SsePunpcklwdEmitter<Xmm, Xmm> for Assembler<'a> {
4852 fn sse_punpcklwd(&mut self, op0: Xmm, op1: Xmm) {
4853 self.emit(
4854 SSE_PUNPCKLWDRR,
4855 op0.as_operand(),
4856 op1.as_operand(),
4857 &NOREG,
4858 &NOREG,
4859 );
4860 }
4861}
4862
4863impl<'a> SsePunpcklwdEmitter<Xmm, Mem> for Assembler<'a> {
4864 fn sse_punpcklwd(&mut self, op0: Xmm, op1: Mem) {
4865 self.emit(
4866 SSE_PUNPCKLWDRM,
4867 op0.as_operand(),
4868 op1.as_operand(),
4869 &NOREG,
4870 &NOREG,
4871 );
4872 }
4873}
4874
4875pub trait SsePxorEmitter<A, B> {
4888 fn sse_pxor(&mut self, op0: A, op1: B);
4889}
4890
4891impl<'a> SsePxorEmitter<Xmm, Xmm> for Assembler<'a> {
4892 fn sse_pxor(&mut self, op0: Xmm, op1: Xmm) {
4893 self.emit(
4894 SSE_PXORRR,
4895 op0.as_operand(),
4896 op1.as_operand(),
4897 &NOREG,
4898 &NOREG,
4899 );
4900 }
4901}
4902
4903impl<'a> SsePxorEmitter<Xmm, Mem> for Assembler<'a> {
4904 fn sse_pxor(&mut self, op0: Xmm, op1: Mem) {
4905 self.emit(
4906 SSE_PXORRM,
4907 op0.as_operand(),
4908 op1.as_operand(),
4909 &NOREG,
4910 &NOREG,
4911 );
4912 }
4913}
4914
4915pub trait SseShufpdEmitter<A, B, C> {
4928 fn sse_shufpd(&mut self, op0: A, op1: B, op2: C);
4929}
4930
4931impl<'a> SseShufpdEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
4932 fn sse_shufpd(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
4933 self.emit(
4934 SSE_SHUFPDRRI,
4935 op0.as_operand(),
4936 op1.as_operand(),
4937 op2.as_operand(),
4938 &NOREG,
4939 );
4940 }
4941}
4942
4943impl<'a> SseShufpdEmitter<Xmm, Mem, Imm> for Assembler<'a> {
4944 fn sse_shufpd(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
4945 self.emit(
4946 SSE_SHUFPDRMI,
4947 op0.as_operand(),
4948 op1.as_operand(),
4949 op2.as_operand(),
4950 &NOREG,
4951 );
4952 }
4953}
4954
4955pub trait SseSqrtpdEmitter<A, B> {
4968 fn sse_sqrtpd(&mut self, op0: A, op1: B);
4969}
4970
4971impl<'a> SseSqrtpdEmitter<Xmm, Xmm> for Assembler<'a> {
4972 fn sse_sqrtpd(&mut self, op0: Xmm, op1: Xmm) {
4973 self.emit(
4974 SSE_SQRTPDRR,
4975 op0.as_operand(),
4976 op1.as_operand(),
4977 &NOREG,
4978 &NOREG,
4979 );
4980 }
4981}
4982
4983impl<'a> SseSqrtpdEmitter<Xmm, Mem> for Assembler<'a> {
4984 fn sse_sqrtpd(&mut self, op0: Xmm, op1: Mem) {
4985 self.emit(
4986 SSE_SQRTPDRM,
4987 op0.as_operand(),
4988 op1.as_operand(),
4989 &NOREG,
4990 &NOREG,
4991 );
4992 }
4993}
4994
4995pub trait SseSqrtsdEmitter<A, B> {
5008 fn sse_sqrtsd(&mut self, op0: A, op1: B);
5009}
5010
5011impl<'a> SseSqrtsdEmitter<Xmm, Xmm> for Assembler<'a> {
5012 fn sse_sqrtsd(&mut self, op0: Xmm, op1: Xmm) {
5013 self.emit(
5014 SSE_SQRTSDRR,
5015 op0.as_operand(),
5016 op1.as_operand(),
5017 &NOREG,
5018 &NOREG,
5019 );
5020 }
5021}
5022
5023impl<'a> SseSqrtsdEmitter<Xmm, Mem> for Assembler<'a> {
5024 fn sse_sqrtsd(&mut self, op0: Xmm, op1: Mem) {
5025 self.emit(
5026 SSE_SQRTSDRM,
5027 op0.as_operand(),
5028 op1.as_operand(),
5029 &NOREG,
5030 &NOREG,
5031 );
5032 }
5033}
5034
5035pub trait SseSubpdEmitter<A, B> {
5048 fn sse_subpd(&mut self, op0: A, op1: B);
5049}
5050
5051impl<'a> SseSubpdEmitter<Xmm, Xmm> for Assembler<'a> {
5052 fn sse_subpd(&mut self, op0: Xmm, op1: Xmm) {
5053 self.emit(
5054 SSE_SUBPDRR,
5055 op0.as_operand(),
5056 op1.as_operand(),
5057 &NOREG,
5058 &NOREG,
5059 );
5060 }
5061}
5062
5063impl<'a> SseSubpdEmitter<Xmm, Mem> for Assembler<'a> {
5064 fn sse_subpd(&mut self, op0: Xmm, op1: Mem) {
5065 self.emit(
5066 SSE_SUBPDRM,
5067 op0.as_operand(),
5068 op1.as_operand(),
5069 &NOREG,
5070 &NOREG,
5071 );
5072 }
5073}
5074
5075pub trait SseSubsdEmitter<A, B> {
5088 fn sse_subsd(&mut self, op0: A, op1: B);
5089}
5090
5091impl<'a> SseSubsdEmitter<Xmm, Xmm> for Assembler<'a> {
5092 fn sse_subsd(&mut self, op0: Xmm, op1: Xmm) {
5093 self.emit(
5094 SSE_SUBSDRR,
5095 op0.as_operand(),
5096 op1.as_operand(),
5097 &NOREG,
5098 &NOREG,
5099 );
5100 }
5101}
5102
5103impl<'a> SseSubsdEmitter<Xmm, Mem> for Assembler<'a> {
5104 fn sse_subsd(&mut self, op0: Xmm, op1: Mem) {
5105 self.emit(
5106 SSE_SUBSDRM,
5107 op0.as_operand(),
5108 op1.as_operand(),
5109 &NOREG,
5110 &NOREG,
5111 );
5112 }
5113}
5114
5115pub trait SseUcomisdEmitter<A, B> {
5128 fn sse_ucomisd(&mut self, op0: A, op1: B);
5129}
5130
5131impl<'a> SseUcomisdEmitter<Xmm, Xmm> for Assembler<'a> {
5132 fn sse_ucomisd(&mut self, op0: Xmm, op1: Xmm) {
5133 self.emit(
5134 SSE_UCOMISDRR,
5135 op0.as_operand(),
5136 op1.as_operand(),
5137 &NOREG,
5138 &NOREG,
5139 );
5140 }
5141}
5142
5143impl<'a> SseUcomisdEmitter<Xmm, Mem> for Assembler<'a> {
5144 fn sse_ucomisd(&mut self, op0: Xmm, op1: Mem) {
5145 self.emit(
5146 SSE_UCOMISDRM,
5147 op0.as_operand(),
5148 op1.as_operand(),
5149 &NOREG,
5150 &NOREG,
5151 );
5152 }
5153}
5154
5155pub trait SseUnpckhpdEmitter<A, B> {
5168 fn sse_unpckhpd(&mut self, op0: A, op1: B);
5169}
5170
5171impl<'a> SseUnpckhpdEmitter<Xmm, Xmm> for Assembler<'a> {
5172 fn sse_unpckhpd(&mut self, op0: Xmm, op1: Xmm) {
5173 self.emit(
5174 SSE_UNPCKHPDRR,
5175 op0.as_operand(),
5176 op1.as_operand(),
5177 &NOREG,
5178 &NOREG,
5179 );
5180 }
5181}
5182
5183impl<'a> SseUnpckhpdEmitter<Xmm, Mem> for Assembler<'a> {
5184 fn sse_unpckhpd(&mut self, op0: Xmm, op1: Mem) {
5185 self.emit(
5186 SSE_UNPCKHPDRM,
5187 op0.as_operand(),
5188 op1.as_operand(),
5189 &NOREG,
5190 &NOREG,
5191 );
5192 }
5193}
5194
5195pub trait SseUnpcklpdEmitter<A, B> {
5208 fn sse_unpcklpd(&mut self, op0: A, op1: B);
5209}
5210
5211impl<'a> SseUnpcklpdEmitter<Xmm, Xmm> for Assembler<'a> {
5212 fn sse_unpcklpd(&mut self, op0: Xmm, op1: Xmm) {
5213 self.emit(
5214 SSE_UNPCKLPDRR,
5215 op0.as_operand(),
5216 op1.as_operand(),
5217 &NOREG,
5218 &NOREG,
5219 );
5220 }
5221}
5222
5223impl<'a> SseUnpcklpdEmitter<Xmm, Mem> for Assembler<'a> {
5224 fn sse_unpcklpd(&mut self, op0: Xmm, op1: Mem) {
5225 self.emit(
5226 SSE_UNPCKLPDRM,
5227 op0.as_operand(),
5228 op1.as_operand(),
5229 &NOREG,
5230 &NOREG,
5231 );
5232 }
5233}
5234
5235pub trait SseXorpdEmitter<A, B> {
5248 fn sse_xorpd(&mut self, op0: A, op1: B);
5249}
5250
5251impl<'a> SseXorpdEmitter<Xmm, Xmm> for Assembler<'a> {
5252 fn sse_xorpd(&mut self, op0: Xmm, op1: Xmm) {
5253 self.emit(
5254 SSE_XORPDRR,
5255 op0.as_operand(),
5256 op1.as_operand(),
5257 &NOREG,
5258 &NOREG,
5259 );
5260 }
5261}
5262
5263impl<'a> SseXorpdEmitter<Xmm, Mem> for Assembler<'a> {
5264 fn sse_xorpd(&mut self, op0: Xmm, op1: Mem) {
5265 self.emit(
5266 SSE_XORPDRM,
5267 op0.as_operand(),
5268 op1.as_operand(),
5269 &NOREG,
5270 &NOREG,
5271 );
5272 }
5273}
5274
5275impl<'a> Assembler<'a> {
5276 #[inline]
5288 pub fn lfence(&mut self)
5289 where
5290 Assembler<'a>: LfenceEmitter,
5291 {
5292 <Self as LfenceEmitter>::lfence(self);
5293 }
5294 #[inline]
5306 pub fn mfence(&mut self)
5307 where
5308 Assembler<'a>: MfenceEmitter,
5309 {
5310 <Self as MfenceEmitter>::mfence(self);
5311 }
5312 #[inline]
5325 pub fn mmx_cvtpd2pi<A, B>(&mut self, op0: A, op1: B)
5326 where
5327 Assembler<'a>: MmxCvtpd2piEmitter<A, B>,
5328 {
5329 <Self as MmxCvtpd2piEmitter<A, B>>::mmx_cvtpd2pi(self, op0, op1);
5330 }
5331 #[inline]
5344 pub fn mmx_cvtpi2pd<A, B>(&mut self, op0: A, op1: B)
5345 where
5346 Assembler<'a>: MmxCvtpi2pdEmitter<A, B>,
5347 {
5348 <Self as MmxCvtpi2pdEmitter<A, B>>::mmx_cvtpi2pd(self, op0, op1);
5349 }
5350 #[inline]
5363 pub fn mmx_cvtpi2ps<A, B>(&mut self, op0: A, op1: B)
5364 where
5365 Assembler<'a>: MmxCvtpi2psEmitter<A, B>,
5366 {
5367 <Self as MmxCvtpi2psEmitter<A, B>>::mmx_cvtpi2ps(self, op0, op1);
5368 }
5369 #[inline]
5382 pub fn mmx_cvtps2pi<A, B>(&mut self, op0: A, op1: B)
5383 where
5384 Assembler<'a>: MmxCvtps2piEmitter<A, B>,
5385 {
5386 <Self as MmxCvtps2piEmitter<A, B>>::mmx_cvtps2pi(self, op0, op1);
5387 }
5388 #[inline]
5401 pub fn mmx_cvttpd2pi<A, B>(&mut self, op0: A, op1: B)
5402 where
5403 Assembler<'a>: MmxCvttpd2piEmitter<A, B>,
5404 {
5405 <Self as MmxCvttpd2piEmitter<A, B>>::mmx_cvttpd2pi(self, op0, op1);
5406 }
5407 #[inline]
5420 pub fn mmx_cvttps2pi<A, B>(&mut self, op0: A, op1: B)
5421 where
5422 Assembler<'a>: MmxCvttps2piEmitter<A, B>,
5423 {
5424 <Self as MmxCvttps2piEmitter<A, B>>::mmx_cvttps2pi(self, op0, op1);
5425 }
5426 #[inline]
5439 pub fn movnti<A, B>(&mut self, op0: A, op1: B)
5440 where
5441 Assembler<'a>: MovntiEmitter<A, B>,
5442 {
5443 <Self as MovntiEmitter<A, B>>::movnti(self, op0, op1);
5444 }
5445 #[inline]
5458 pub fn sse_addpd<A, B>(&mut self, op0: A, op1: B)
5459 where
5460 Assembler<'a>: SseAddpdEmitter<A, B>,
5461 {
5462 <Self as SseAddpdEmitter<A, B>>::sse_addpd(self, op0, op1);
5463 }
5464 #[inline]
5477 pub fn sse_addsd<A, B>(&mut self, op0: A, op1: B)
5478 where
5479 Assembler<'a>: SseAddsdEmitter<A, B>,
5480 {
5481 <Self as SseAddsdEmitter<A, B>>::sse_addsd(self, op0, op1);
5482 }
5483 #[inline]
5496 pub fn sse_andnpd<A, B>(&mut self, op0: A, op1: B)
5497 where
5498 Assembler<'a>: SseAndnpdEmitter<A, B>,
5499 {
5500 <Self as SseAndnpdEmitter<A, B>>::sse_andnpd(self, op0, op1);
5501 }
5502 #[inline]
5515 pub fn sse_andpd<A, B>(&mut self, op0: A, op1: B)
5516 where
5517 Assembler<'a>: SseAndpdEmitter<A, B>,
5518 {
5519 <Self as SseAndpdEmitter<A, B>>::sse_andpd(self, op0, op1);
5520 }
5521 #[inline]
5534 pub fn sse_cmppd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
5535 where
5536 Assembler<'a>: SseCmppdEmitter<A, B, C>,
5537 {
5538 <Self as SseCmppdEmitter<A, B, C>>::sse_cmppd(self, op0, op1, op2);
5539 }
5540 #[inline]
5553 pub fn sse_cmpsd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
5554 where
5555 Assembler<'a>: SseCmpsdEmitter<A, B, C>,
5556 {
5557 <Self as SseCmpsdEmitter<A, B, C>>::sse_cmpsd(self, op0, op1, op2);
5558 }
5559 #[inline]
5572 pub fn sse_comisd<A, B>(&mut self, op0: A, op1: B)
5573 where
5574 Assembler<'a>: SseComisdEmitter<A, B>,
5575 {
5576 <Self as SseComisdEmitter<A, B>>::sse_comisd(self, op0, op1);
5577 }
5578 #[inline]
5591 pub fn sse_cvtdq2pd<A, B>(&mut self, op0: A, op1: B)
5592 where
5593 Assembler<'a>: SseCvtdq2pdEmitter<A, B>,
5594 {
5595 <Self as SseCvtdq2pdEmitter<A, B>>::sse_cvtdq2pd(self, op0, op1);
5596 }
5597 #[inline]
5610 pub fn sse_cvtdq2ps<A, B>(&mut self, op0: A, op1: B)
5611 where
5612 Assembler<'a>: SseCvtdq2psEmitter<A, B>,
5613 {
5614 <Self as SseCvtdq2psEmitter<A, B>>::sse_cvtdq2ps(self, op0, op1);
5615 }
5616 #[inline]
5629 pub fn sse_cvtpd2dq<A, B>(&mut self, op0: A, op1: B)
5630 where
5631 Assembler<'a>: SseCvtpd2dqEmitter<A, B>,
5632 {
5633 <Self as SseCvtpd2dqEmitter<A, B>>::sse_cvtpd2dq(self, op0, op1);
5634 }
5635 #[inline]
5648 pub fn sse_cvtpd2ps<A, B>(&mut self, op0: A, op1: B)
5649 where
5650 Assembler<'a>: SseCvtpd2psEmitter<A, B>,
5651 {
5652 <Self as SseCvtpd2psEmitter<A, B>>::sse_cvtpd2ps(self, op0, op1);
5653 }
5654 #[inline]
5667 pub fn sse_cvtps2dq<A, B>(&mut self, op0: A, op1: B)
5668 where
5669 Assembler<'a>: SseCvtps2dqEmitter<A, B>,
5670 {
5671 <Self as SseCvtps2dqEmitter<A, B>>::sse_cvtps2dq(self, op0, op1);
5672 }
5673 #[inline]
5686 pub fn sse_cvtps2pd<A, B>(&mut self, op0: A, op1: B)
5687 where
5688 Assembler<'a>: SseCvtps2pdEmitter<A, B>,
5689 {
5690 <Self as SseCvtps2pdEmitter<A, B>>::sse_cvtps2pd(self, op0, op1);
5691 }
5692 #[inline]
5707 pub fn sse_cvtsd2si<A, B>(&mut self, op0: A, op1: B)
5708 where
5709 Assembler<'a>: SseCvtsd2siEmitter<A, B>,
5710 {
5711 <Self as SseCvtsd2siEmitter<A, B>>::sse_cvtsd2si(self, op0, op1);
5712 }
5713 #[inline]
5726 pub fn sse_cvtsd2ss<A, B>(&mut self, op0: A, op1: B)
5727 where
5728 Assembler<'a>: SseCvtsd2ssEmitter<A, B>,
5729 {
5730 <Self as SseCvtsd2ssEmitter<A, B>>::sse_cvtsd2ss(self, op0, op1);
5731 }
5732 #[inline]
5746 pub fn sse_cvtsi2sd<A, B>(&mut self, op0: A, op1: B)
5747 where
5748 Assembler<'a>: SseCvtsi2sdEmitter<A, B>,
5749 {
5750 <Self as SseCvtsi2sdEmitter<A, B>>::sse_cvtsi2sd(self, op0, op1);
5751 }
5752 #[inline]
5765 pub fn sse_cvtss2sd<A, B>(&mut self, op0: A, op1: B)
5766 where
5767 Assembler<'a>: SseCvtss2sdEmitter<A, B>,
5768 {
5769 <Self as SseCvtss2sdEmitter<A, B>>::sse_cvtss2sd(self, op0, op1);
5770 }
5771 #[inline]
5784 pub fn sse_cvttpd2dq<A, B>(&mut self, op0: A, op1: B)
5785 where
5786 Assembler<'a>: SseCvttpd2dqEmitter<A, B>,
5787 {
5788 <Self as SseCvttpd2dqEmitter<A, B>>::sse_cvttpd2dq(self, op0, op1);
5789 }
5790 #[inline]
5803 pub fn sse_cvttps2dq<A, B>(&mut self, op0: A, op1: B)
5804 where
5805 Assembler<'a>: SseCvttps2dqEmitter<A, B>,
5806 {
5807 <Self as SseCvttps2dqEmitter<A, B>>::sse_cvttps2dq(self, op0, op1);
5808 }
5809 #[inline]
5824 pub fn sse_cvttsd2si<A, B>(&mut self, op0: A, op1: B)
5825 where
5826 Assembler<'a>: SseCvttsd2siEmitter<A, B>,
5827 {
5828 <Self as SseCvttsd2siEmitter<A, B>>::sse_cvttsd2si(self, op0, op1);
5829 }
5830 #[inline]
5843 pub fn sse_divpd<A, B>(&mut self, op0: A, op1: B)
5844 where
5845 Assembler<'a>: SseDivpdEmitter<A, B>,
5846 {
5847 <Self as SseDivpdEmitter<A, B>>::sse_divpd(self, op0, op1);
5848 }
5849 #[inline]
5862 pub fn sse_divsd<A, B>(&mut self, op0: A, op1: B)
5863 where
5864 Assembler<'a>: SseDivsdEmitter<A, B>,
5865 {
5866 <Self as SseDivsdEmitter<A, B>>::sse_divsd(self, op0, op1);
5867 }
5868 #[inline]
5880 pub fn sse_maskmovdqu<A, B>(&mut self, op0: A, op1: B)
5881 where
5882 Assembler<'a>: SseMaskmovdquEmitter<A, B>,
5883 {
5884 <Self as SseMaskmovdquEmitter<A, B>>::sse_maskmovdqu(self, op0, op1);
5885 }
5886 #[inline]
5899 pub fn sse_maxpd<A, B>(&mut self, op0: A, op1: B)
5900 where
5901 Assembler<'a>: SseMaxpdEmitter<A, B>,
5902 {
5903 <Self as SseMaxpdEmitter<A, B>>::sse_maxpd(self, op0, op1);
5904 }
5905 #[inline]
5918 pub fn sse_maxsd<A, B>(&mut self, op0: A, op1: B)
5919 where
5920 Assembler<'a>: SseMaxsdEmitter<A, B>,
5921 {
5922 <Self as SseMaxsdEmitter<A, B>>::sse_maxsd(self, op0, op1);
5923 }
5924 #[inline]
5937 pub fn sse_minpd<A, B>(&mut self, op0: A, op1: B)
5938 where
5939 Assembler<'a>: SseMinpdEmitter<A, B>,
5940 {
5941 <Self as SseMinpdEmitter<A, B>>::sse_minpd(self, op0, op1);
5942 }
5943 #[inline]
5956 pub fn sse_minsd<A, B>(&mut self, op0: A, op1: B)
5957 where
5958 Assembler<'a>: SseMinsdEmitter<A, B>,
5959 {
5960 <Self as SseMinsdEmitter<A, B>>::sse_minsd(self, op0, op1);
5961 }
5962 #[inline]
5976 pub fn sse_movapd<A, B>(&mut self, op0: A, op1: B)
5977 where
5978 Assembler<'a>: SseMovapdEmitter<A, B>,
5979 {
5980 <Self as SseMovapdEmitter<A, B>>::sse_movapd(self, op0, op1);
5981 }
5982 #[inline]
5996 pub fn sse_movdqa<A, B>(&mut self, op0: A, op1: B)
5997 where
5998 Assembler<'a>: SseMovdqaEmitter<A, B>,
5999 {
6000 <Self as SseMovdqaEmitter<A, B>>::sse_movdqa(self, op0, op1);
6001 }
6002 #[inline]
6016 pub fn sse_movdqu<A, B>(&mut self, op0: A, op1: B)
6017 where
6018 Assembler<'a>: SseMovdquEmitter<A, B>,
6019 {
6020 <Self as SseMovdquEmitter<A, B>>::sse_movdqu(self, op0, op1);
6021 }
6022 #[inline]
6035 pub fn sse_movd_g2x<A, B>(&mut self, op0: A, op1: B)
6036 where
6037 Assembler<'a>: SseMovdG2xEmitter<A, B>,
6038 {
6039 <Self as SseMovdG2xEmitter<A, B>>::sse_movd_g2x(self, op0, op1);
6040 }
6041 #[inline]
6054 pub fn sse_movd_x2g<A, B>(&mut self, op0: A, op1: B)
6055 where
6056 Assembler<'a>: SseMovdX2gEmitter<A, B>,
6057 {
6058 <Self as SseMovdX2gEmitter<A, B>>::sse_movd_x2g(self, op0, op1);
6059 }
6060 #[inline]
6073 pub fn sse_movhpd<A, B>(&mut self, op0: A, op1: B)
6074 where
6075 Assembler<'a>: SseMovhpdEmitter<A, B>,
6076 {
6077 <Self as SseMovhpdEmitter<A, B>>::sse_movhpd(self, op0, op1);
6078 }
6079 #[inline]
6092 pub fn sse_movlpd<A, B>(&mut self, op0: A, op1: B)
6093 where
6094 Assembler<'a>: SseMovlpdEmitter<A, B>,
6095 {
6096 <Self as SseMovlpdEmitter<A, B>>::sse_movlpd(self, op0, op1);
6097 }
6098 #[inline]
6110 pub fn sse_movmskpd<A, B>(&mut self, op0: A, op1: B)
6111 where
6112 Assembler<'a>: SseMovmskpdEmitter<A, B>,
6113 {
6114 <Self as SseMovmskpdEmitter<A, B>>::sse_movmskpd(self, op0, op1);
6115 }
6116 #[inline]
6128 pub fn sse_movntdq<A, B>(&mut self, op0: A, op1: B)
6129 where
6130 Assembler<'a>: SseMovntdqEmitter<A, B>,
6131 {
6132 <Self as SseMovntdqEmitter<A, B>>::sse_movntdq(self, op0, op1);
6133 }
6134 #[inline]
6146 pub fn sse_movntpd<A, B>(&mut self, op0: A, op1: B)
6147 where
6148 Assembler<'a>: SseMovntpdEmitter<A, B>,
6149 {
6150 <Self as SseMovntpdEmitter<A, B>>::sse_movntpd(self, op0, op1);
6151 }
6152 #[inline]
6164 pub fn sse_movntsd<A, B>(&mut self, op0: A, op1: B)
6165 where
6166 Assembler<'a>: SseMovntsdEmitter<A, B>,
6167 {
6168 <Self as SseMovntsdEmitter<A, B>>::sse_movntsd(self, op0, op1);
6169 }
6170 #[inline]
6184 pub fn sse_movq<A, B>(&mut self, op0: A, op1: B)
6185 where
6186 Assembler<'a>: SseMovqEmitter<A, B>,
6187 {
6188 <Self as SseMovqEmitter<A, B>>::sse_movq(self, op0, op1);
6189 }
6190 #[inline]
6203 pub fn sse_movq_g2x<A, B>(&mut self, op0: A, op1: B)
6204 where
6205 Assembler<'a>: SseMovqG2xEmitter<A, B>,
6206 {
6207 <Self as SseMovqG2xEmitter<A, B>>::sse_movq_g2x(self, op0, op1);
6208 }
6209 #[inline]
6222 pub fn sse_movq_x2g<A, B>(&mut self, op0: A, op1: B)
6223 where
6224 Assembler<'a>: SseMovqX2gEmitter<A, B>,
6225 {
6226 <Self as SseMovqX2gEmitter<A, B>>::sse_movq_x2g(self, op0, op1);
6227 }
6228 #[inline]
6242 pub fn sse_movsd<A, B>(&mut self, op0: A, op1: B)
6243 where
6244 Assembler<'a>: SseMovsdEmitter<A, B>,
6245 {
6246 <Self as SseMovsdEmitter<A, B>>::sse_movsd(self, op0, op1);
6247 }
6248 #[inline]
6262 pub fn sse_movupd<A, B>(&mut self, op0: A, op1: B)
6263 where
6264 Assembler<'a>: SseMovupdEmitter<A, B>,
6265 {
6266 <Self as SseMovupdEmitter<A, B>>::sse_movupd(self, op0, op1);
6267 }
6268 #[inline]
6281 pub fn sse_mulpd<A, B>(&mut self, op0: A, op1: B)
6282 where
6283 Assembler<'a>: SseMulpdEmitter<A, B>,
6284 {
6285 <Self as SseMulpdEmitter<A, B>>::sse_mulpd(self, op0, op1);
6286 }
6287 #[inline]
6300 pub fn sse_mulsd<A, B>(&mut self, op0: A, op1: B)
6301 where
6302 Assembler<'a>: SseMulsdEmitter<A, B>,
6303 {
6304 <Self as SseMulsdEmitter<A, B>>::sse_mulsd(self, op0, op1);
6305 }
6306 #[inline]
6319 pub fn sse_orpd<A, B>(&mut self, op0: A, op1: B)
6320 where
6321 Assembler<'a>: SseOrpdEmitter<A, B>,
6322 {
6323 <Self as SseOrpdEmitter<A, B>>::sse_orpd(self, op0, op1);
6324 }
6325 #[inline]
6338 pub fn sse_packssdw<A, B>(&mut self, op0: A, op1: B)
6339 where
6340 Assembler<'a>: SsePackssdwEmitter<A, B>,
6341 {
6342 <Self as SsePackssdwEmitter<A, B>>::sse_packssdw(self, op0, op1);
6343 }
6344 #[inline]
6357 pub fn sse_packsswb<A, B>(&mut self, op0: A, op1: B)
6358 where
6359 Assembler<'a>: SsePacksswbEmitter<A, B>,
6360 {
6361 <Self as SsePacksswbEmitter<A, B>>::sse_packsswb(self, op0, op1);
6362 }
6363 #[inline]
6376 pub fn sse_packuswb<A, B>(&mut self, op0: A, op1: B)
6377 where
6378 Assembler<'a>: SsePackuswbEmitter<A, B>,
6379 {
6380 <Self as SsePackuswbEmitter<A, B>>::sse_packuswb(self, op0, op1);
6381 }
6382 #[inline]
6395 pub fn sse_paddb<A, B>(&mut self, op0: A, op1: B)
6396 where
6397 Assembler<'a>: SsePaddbEmitter<A, B>,
6398 {
6399 <Self as SsePaddbEmitter<A, B>>::sse_paddb(self, op0, op1);
6400 }
6401 #[inline]
6414 pub fn sse_paddd<A, B>(&mut self, op0: A, op1: B)
6415 where
6416 Assembler<'a>: SsePadddEmitter<A, B>,
6417 {
6418 <Self as SsePadddEmitter<A, B>>::sse_paddd(self, op0, op1);
6419 }
6420 #[inline]
6433 pub fn sse_paddq<A, B>(&mut self, op0: A, op1: B)
6434 where
6435 Assembler<'a>: SsePaddqEmitter<A, B>,
6436 {
6437 <Self as SsePaddqEmitter<A, B>>::sse_paddq(self, op0, op1);
6438 }
6439 #[inline]
6452 pub fn sse_paddsb<A, B>(&mut self, op0: A, op1: B)
6453 where
6454 Assembler<'a>: SsePaddsbEmitter<A, B>,
6455 {
6456 <Self as SsePaddsbEmitter<A, B>>::sse_paddsb(self, op0, op1);
6457 }
6458 #[inline]
6471 pub fn sse_paddsw<A, B>(&mut self, op0: A, op1: B)
6472 where
6473 Assembler<'a>: SsePaddswEmitter<A, B>,
6474 {
6475 <Self as SsePaddswEmitter<A, B>>::sse_paddsw(self, op0, op1);
6476 }
6477 #[inline]
6490 pub fn sse_paddusb<A, B>(&mut self, op0: A, op1: B)
6491 where
6492 Assembler<'a>: SsePaddusbEmitter<A, B>,
6493 {
6494 <Self as SsePaddusbEmitter<A, B>>::sse_paddusb(self, op0, op1);
6495 }
6496 #[inline]
6509 pub fn sse_paddusw<A, B>(&mut self, op0: A, op1: B)
6510 where
6511 Assembler<'a>: SsePadduswEmitter<A, B>,
6512 {
6513 <Self as SsePadduswEmitter<A, B>>::sse_paddusw(self, op0, op1);
6514 }
6515 #[inline]
6528 pub fn sse_paddw<A, B>(&mut self, op0: A, op1: B)
6529 where
6530 Assembler<'a>: SsePaddwEmitter<A, B>,
6531 {
6532 <Self as SsePaddwEmitter<A, B>>::sse_paddw(self, op0, op1);
6533 }
6534 #[inline]
6547 pub fn sse_pand<A, B>(&mut self, op0: A, op1: B)
6548 where
6549 Assembler<'a>: SsePandEmitter<A, B>,
6550 {
6551 <Self as SsePandEmitter<A, B>>::sse_pand(self, op0, op1);
6552 }
6553 #[inline]
6566 pub fn sse_pandn<A, B>(&mut self, op0: A, op1: B)
6567 where
6568 Assembler<'a>: SsePandnEmitter<A, B>,
6569 {
6570 <Self as SsePandnEmitter<A, B>>::sse_pandn(self, op0, op1);
6571 }
6572 #[inline]
6585 pub fn sse_pavgb<A, B>(&mut self, op0: A, op1: B)
6586 where
6587 Assembler<'a>: SsePavgbEmitter<A, B>,
6588 {
6589 <Self as SsePavgbEmitter<A, B>>::sse_pavgb(self, op0, op1);
6590 }
6591 #[inline]
6604 pub fn sse_pavgw<A, B>(&mut self, op0: A, op1: B)
6605 where
6606 Assembler<'a>: SsePavgwEmitter<A, B>,
6607 {
6608 <Self as SsePavgwEmitter<A, B>>::sse_pavgw(self, op0, op1);
6609 }
6610 #[inline]
6623 pub fn sse_pcmpeqb<A, B>(&mut self, op0: A, op1: B)
6624 where
6625 Assembler<'a>: SsePcmpeqbEmitter<A, B>,
6626 {
6627 <Self as SsePcmpeqbEmitter<A, B>>::sse_pcmpeqb(self, op0, op1);
6628 }
6629 #[inline]
6642 pub fn sse_pcmpeqd<A, B>(&mut self, op0: A, op1: B)
6643 where
6644 Assembler<'a>: SsePcmpeqdEmitter<A, B>,
6645 {
6646 <Self as SsePcmpeqdEmitter<A, B>>::sse_pcmpeqd(self, op0, op1);
6647 }
6648 #[inline]
6661 pub fn sse_pcmpeqw<A, B>(&mut self, op0: A, op1: B)
6662 where
6663 Assembler<'a>: SsePcmpeqwEmitter<A, B>,
6664 {
6665 <Self as SsePcmpeqwEmitter<A, B>>::sse_pcmpeqw(self, op0, op1);
6666 }
6667 #[inline]
6680 pub fn sse_pcmpgtb<A, B>(&mut self, op0: A, op1: B)
6681 where
6682 Assembler<'a>: SsePcmpgtbEmitter<A, B>,
6683 {
6684 <Self as SsePcmpgtbEmitter<A, B>>::sse_pcmpgtb(self, op0, op1);
6685 }
6686 #[inline]
6699 pub fn sse_pcmpgtd<A, B>(&mut self, op0: A, op1: B)
6700 where
6701 Assembler<'a>: SsePcmpgtdEmitter<A, B>,
6702 {
6703 <Self as SsePcmpgtdEmitter<A, B>>::sse_pcmpgtd(self, op0, op1);
6704 }
6705 #[inline]
6718 pub fn sse_pcmpgtw<A, B>(&mut self, op0: A, op1: B)
6719 where
6720 Assembler<'a>: SsePcmpgtwEmitter<A, B>,
6721 {
6722 <Self as SsePcmpgtwEmitter<A, B>>::sse_pcmpgtw(self, op0, op1);
6723 }
6724 #[inline]
6737 pub fn sse_pextrw<A, B, C>(&mut self, op0: A, op1: B, op2: C)
6738 where
6739 Assembler<'a>: SsePextrwEmitter<A, B, C>,
6740 {
6741 <Self as SsePextrwEmitter<A, B, C>>::sse_pextrw(self, op0, op1, op2);
6742 }
6743 #[inline]
6756 pub fn sse_pinsrw<A, B, C>(&mut self, op0: A, op1: B, op2: C)
6757 where
6758 Assembler<'a>: SsePinsrwEmitter<A, B, C>,
6759 {
6760 <Self as SsePinsrwEmitter<A, B, C>>::sse_pinsrw(self, op0, op1, op2);
6761 }
6762 #[inline]
6775 pub fn sse_pmaddwd<A, B>(&mut self, op0: A, op1: B)
6776 where
6777 Assembler<'a>: SsePmaddwdEmitter<A, B>,
6778 {
6779 <Self as SsePmaddwdEmitter<A, B>>::sse_pmaddwd(self, op0, op1);
6780 }
6781 #[inline]
6794 pub fn sse_pmaxsw<A, B>(&mut self, op0: A, op1: B)
6795 where
6796 Assembler<'a>: SsePmaxswEmitter<A, B>,
6797 {
6798 <Self as SsePmaxswEmitter<A, B>>::sse_pmaxsw(self, op0, op1);
6799 }
6800 #[inline]
6813 pub fn sse_pmaxub<A, B>(&mut self, op0: A, op1: B)
6814 where
6815 Assembler<'a>: SsePmaxubEmitter<A, B>,
6816 {
6817 <Self as SsePmaxubEmitter<A, B>>::sse_pmaxub(self, op0, op1);
6818 }
6819 #[inline]
6832 pub fn sse_pminsw<A, B>(&mut self, op0: A, op1: B)
6833 where
6834 Assembler<'a>: SsePminswEmitter<A, B>,
6835 {
6836 <Self as SsePminswEmitter<A, B>>::sse_pminsw(self, op0, op1);
6837 }
6838 #[inline]
6851 pub fn sse_pminub<A, B>(&mut self, op0: A, op1: B)
6852 where
6853 Assembler<'a>: SsePminubEmitter<A, B>,
6854 {
6855 <Self as SsePminubEmitter<A, B>>::sse_pminub(self, op0, op1);
6856 }
6857 #[inline]
6869 pub fn sse_pmovmskb<A, B>(&mut self, op0: A, op1: B)
6870 where
6871 Assembler<'a>: SsePmovmskbEmitter<A, B>,
6872 {
6873 <Self as SsePmovmskbEmitter<A, B>>::sse_pmovmskb(self, op0, op1);
6874 }
6875 #[inline]
6888 pub fn sse_pmulhuw<A, B>(&mut self, op0: A, op1: B)
6889 where
6890 Assembler<'a>: SsePmulhuwEmitter<A, B>,
6891 {
6892 <Self as SsePmulhuwEmitter<A, B>>::sse_pmulhuw(self, op0, op1);
6893 }
6894 #[inline]
6907 pub fn sse_pmulhw<A, B>(&mut self, op0: A, op1: B)
6908 where
6909 Assembler<'a>: SsePmulhwEmitter<A, B>,
6910 {
6911 <Self as SsePmulhwEmitter<A, B>>::sse_pmulhw(self, op0, op1);
6912 }
6913 #[inline]
6926 pub fn sse_pmullw<A, B>(&mut self, op0: A, op1: B)
6927 where
6928 Assembler<'a>: SsePmullwEmitter<A, B>,
6929 {
6930 <Self as SsePmullwEmitter<A, B>>::sse_pmullw(self, op0, op1);
6931 }
6932 #[inline]
6945 pub fn sse_pmuludq<A, B>(&mut self, op0: A, op1: B)
6946 where
6947 Assembler<'a>: SsePmuludqEmitter<A, B>,
6948 {
6949 <Self as SsePmuludqEmitter<A, B>>::sse_pmuludq(self, op0, op1);
6950 }
6951 #[inline]
6964 pub fn sse_por<A, B>(&mut self, op0: A, op1: B)
6965 where
6966 Assembler<'a>: SsePorEmitter<A, B>,
6967 {
6968 <Self as SsePorEmitter<A, B>>::sse_por(self, op0, op1);
6969 }
6970 #[inline]
6983 pub fn sse_psadbw<A, B>(&mut self, op0: A, op1: B)
6984 where
6985 Assembler<'a>: SsePsadbwEmitter<A, B>,
6986 {
6987 <Self as SsePsadbwEmitter<A, B>>::sse_psadbw(self, op0, op1);
6988 }
6989 #[inline]
7002 pub fn sse_pshufd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
7003 where
7004 Assembler<'a>: SsePshufdEmitter<A, B, C>,
7005 {
7006 <Self as SsePshufdEmitter<A, B, C>>::sse_pshufd(self, op0, op1, op2);
7007 }
7008 #[inline]
7021 pub fn sse_pshufhw<A, B, C>(&mut self, op0: A, op1: B, op2: C)
7022 where
7023 Assembler<'a>: SsePshufhwEmitter<A, B, C>,
7024 {
7025 <Self as SsePshufhwEmitter<A, B, C>>::sse_pshufhw(self, op0, op1, op2);
7026 }
7027 #[inline]
7040 pub fn sse_pshuflw<A, B, C>(&mut self, op0: A, op1: B, op2: C)
7041 where
7042 Assembler<'a>: SsePshuflwEmitter<A, B, C>,
7043 {
7044 <Self as SsePshuflwEmitter<A, B, C>>::sse_pshuflw(self, op0, op1, op2);
7045 }
7046 #[inline]
7060 pub fn sse_pslld<A, B>(&mut self, op0: A, op1: B)
7061 where
7062 Assembler<'a>: SsePslldEmitter<A, B>,
7063 {
7064 <Self as SsePslldEmitter<A, B>>::sse_pslld(self, op0, op1);
7065 }
7066 #[inline]
7078 pub fn sse_pslldq<A, B>(&mut self, op0: A, op1: B)
7079 where
7080 Assembler<'a>: SsePslldqEmitter<A, B>,
7081 {
7082 <Self as SsePslldqEmitter<A, B>>::sse_pslldq(self, op0, op1);
7083 }
7084 #[inline]
7098 pub fn sse_psllq<A, B>(&mut self, op0: A, op1: B)
7099 where
7100 Assembler<'a>: SsePsllqEmitter<A, B>,
7101 {
7102 <Self as SsePsllqEmitter<A, B>>::sse_psllq(self, op0, op1);
7103 }
7104 #[inline]
7118 pub fn sse_psllw<A, B>(&mut self, op0: A, op1: B)
7119 where
7120 Assembler<'a>: SsePsllwEmitter<A, B>,
7121 {
7122 <Self as SsePsllwEmitter<A, B>>::sse_psllw(self, op0, op1);
7123 }
7124 #[inline]
7138 pub fn sse_psrad<A, B>(&mut self, op0: A, op1: B)
7139 where
7140 Assembler<'a>: SsePsradEmitter<A, B>,
7141 {
7142 <Self as SsePsradEmitter<A, B>>::sse_psrad(self, op0, op1);
7143 }
7144 #[inline]
7158 pub fn sse_psraw<A, B>(&mut self, op0: A, op1: B)
7159 where
7160 Assembler<'a>: SsePsrawEmitter<A, B>,
7161 {
7162 <Self as SsePsrawEmitter<A, B>>::sse_psraw(self, op0, op1);
7163 }
7164 #[inline]
7178 pub fn sse_psrld<A, B>(&mut self, op0: A, op1: B)
7179 where
7180 Assembler<'a>: SsePsrldEmitter<A, B>,
7181 {
7182 <Self as SsePsrldEmitter<A, B>>::sse_psrld(self, op0, op1);
7183 }
7184 #[inline]
7196 pub fn sse_psrldq<A, B>(&mut self, op0: A, op1: B)
7197 where
7198 Assembler<'a>: SsePsrldqEmitter<A, B>,
7199 {
7200 <Self as SsePsrldqEmitter<A, B>>::sse_psrldq(self, op0, op1);
7201 }
7202 #[inline]
7216 pub fn sse_psrlq<A, B>(&mut self, op0: A, op1: B)
7217 where
7218 Assembler<'a>: SsePsrlqEmitter<A, B>,
7219 {
7220 <Self as SsePsrlqEmitter<A, B>>::sse_psrlq(self, op0, op1);
7221 }
7222 #[inline]
7236 pub fn sse_psrlw<A, B>(&mut self, op0: A, op1: B)
7237 where
7238 Assembler<'a>: SsePsrlwEmitter<A, B>,
7239 {
7240 <Self as SsePsrlwEmitter<A, B>>::sse_psrlw(self, op0, op1);
7241 }
7242 #[inline]
7255 pub fn sse_psubb<A, B>(&mut self, op0: A, op1: B)
7256 where
7257 Assembler<'a>: SsePsubbEmitter<A, B>,
7258 {
7259 <Self as SsePsubbEmitter<A, B>>::sse_psubb(self, op0, op1);
7260 }
7261 #[inline]
7274 pub fn sse_psubd<A, B>(&mut self, op0: A, op1: B)
7275 where
7276 Assembler<'a>: SsePsubdEmitter<A, B>,
7277 {
7278 <Self as SsePsubdEmitter<A, B>>::sse_psubd(self, op0, op1);
7279 }
7280 #[inline]
7293 pub fn sse_psubq<A, B>(&mut self, op0: A, op1: B)
7294 where
7295 Assembler<'a>: SsePsubqEmitter<A, B>,
7296 {
7297 <Self as SsePsubqEmitter<A, B>>::sse_psubq(self, op0, op1);
7298 }
7299 #[inline]
7312 pub fn sse_psubsb<A, B>(&mut self, op0: A, op1: B)
7313 where
7314 Assembler<'a>: SsePsubsbEmitter<A, B>,
7315 {
7316 <Self as SsePsubsbEmitter<A, B>>::sse_psubsb(self, op0, op1);
7317 }
7318 #[inline]
7331 pub fn sse_psubsw<A, B>(&mut self, op0: A, op1: B)
7332 where
7333 Assembler<'a>: SsePsubswEmitter<A, B>,
7334 {
7335 <Self as SsePsubswEmitter<A, B>>::sse_psubsw(self, op0, op1);
7336 }
7337 #[inline]
7350 pub fn sse_psubusb<A, B>(&mut self, op0: A, op1: B)
7351 where
7352 Assembler<'a>: SsePsubusbEmitter<A, B>,
7353 {
7354 <Self as SsePsubusbEmitter<A, B>>::sse_psubusb(self, op0, op1);
7355 }
7356 #[inline]
7369 pub fn sse_psubusw<A, B>(&mut self, op0: A, op1: B)
7370 where
7371 Assembler<'a>: SsePsubuswEmitter<A, B>,
7372 {
7373 <Self as SsePsubuswEmitter<A, B>>::sse_psubusw(self, op0, op1);
7374 }
7375 #[inline]
7388 pub fn sse_psubw<A, B>(&mut self, op0: A, op1: B)
7389 where
7390 Assembler<'a>: SsePsubwEmitter<A, B>,
7391 {
7392 <Self as SsePsubwEmitter<A, B>>::sse_psubw(self, op0, op1);
7393 }
7394 #[inline]
7407 pub fn sse_punpckhbw<A, B>(&mut self, op0: A, op1: B)
7408 where
7409 Assembler<'a>: SsePunpckhbwEmitter<A, B>,
7410 {
7411 <Self as SsePunpckhbwEmitter<A, B>>::sse_punpckhbw(self, op0, op1);
7412 }
7413 #[inline]
7426 pub fn sse_punpckhdq<A, B>(&mut self, op0: A, op1: B)
7427 where
7428 Assembler<'a>: SsePunpckhdqEmitter<A, B>,
7429 {
7430 <Self as SsePunpckhdqEmitter<A, B>>::sse_punpckhdq(self, op0, op1);
7431 }
7432 #[inline]
7445 pub fn sse_punpckhqdq<A, B>(&mut self, op0: A, op1: B)
7446 where
7447 Assembler<'a>: SsePunpckhqdqEmitter<A, B>,
7448 {
7449 <Self as SsePunpckhqdqEmitter<A, B>>::sse_punpckhqdq(self, op0, op1);
7450 }
7451 #[inline]
7464 pub fn sse_punpckhwd<A, B>(&mut self, op0: A, op1: B)
7465 where
7466 Assembler<'a>: SsePunpckhwdEmitter<A, B>,
7467 {
7468 <Self as SsePunpckhwdEmitter<A, B>>::sse_punpckhwd(self, op0, op1);
7469 }
7470 #[inline]
7483 pub fn sse_punpcklbw<A, B>(&mut self, op0: A, op1: B)
7484 where
7485 Assembler<'a>: SsePunpcklbwEmitter<A, B>,
7486 {
7487 <Self as SsePunpcklbwEmitter<A, B>>::sse_punpcklbw(self, op0, op1);
7488 }
7489 #[inline]
7502 pub fn sse_punpckldq<A, B>(&mut self, op0: A, op1: B)
7503 where
7504 Assembler<'a>: SsePunpckldqEmitter<A, B>,
7505 {
7506 <Self as SsePunpckldqEmitter<A, B>>::sse_punpckldq(self, op0, op1);
7507 }
7508 #[inline]
7521 pub fn sse_punpcklqdq<A, B>(&mut self, op0: A, op1: B)
7522 where
7523 Assembler<'a>: SsePunpcklqdqEmitter<A, B>,
7524 {
7525 <Self as SsePunpcklqdqEmitter<A, B>>::sse_punpcklqdq(self, op0, op1);
7526 }
7527 #[inline]
7540 pub fn sse_punpcklwd<A, B>(&mut self, op0: A, op1: B)
7541 where
7542 Assembler<'a>: SsePunpcklwdEmitter<A, B>,
7543 {
7544 <Self as SsePunpcklwdEmitter<A, B>>::sse_punpcklwd(self, op0, op1);
7545 }
7546 #[inline]
7559 pub fn sse_pxor<A, B>(&mut self, op0: A, op1: B)
7560 where
7561 Assembler<'a>: SsePxorEmitter<A, B>,
7562 {
7563 <Self as SsePxorEmitter<A, B>>::sse_pxor(self, op0, op1);
7564 }
7565 #[inline]
7578 pub fn sse_shufpd<A, B, C>(&mut self, op0: A, op1: B, op2: C)
7579 where
7580 Assembler<'a>: SseShufpdEmitter<A, B, C>,
7581 {
7582 <Self as SseShufpdEmitter<A, B, C>>::sse_shufpd(self, op0, op1, op2);
7583 }
7584 #[inline]
7597 pub fn sse_sqrtpd<A, B>(&mut self, op0: A, op1: B)
7598 where
7599 Assembler<'a>: SseSqrtpdEmitter<A, B>,
7600 {
7601 <Self as SseSqrtpdEmitter<A, B>>::sse_sqrtpd(self, op0, op1);
7602 }
7603 #[inline]
7616 pub fn sse_sqrtsd<A, B>(&mut self, op0: A, op1: B)
7617 where
7618 Assembler<'a>: SseSqrtsdEmitter<A, B>,
7619 {
7620 <Self as SseSqrtsdEmitter<A, B>>::sse_sqrtsd(self, op0, op1);
7621 }
7622 #[inline]
7635 pub fn sse_subpd<A, B>(&mut self, op0: A, op1: B)
7636 where
7637 Assembler<'a>: SseSubpdEmitter<A, B>,
7638 {
7639 <Self as SseSubpdEmitter<A, B>>::sse_subpd(self, op0, op1);
7640 }
7641 #[inline]
7654 pub fn sse_subsd<A, B>(&mut self, op0: A, op1: B)
7655 where
7656 Assembler<'a>: SseSubsdEmitter<A, B>,
7657 {
7658 <Self as SseSubsdEmitter<A, B>>::sse_subsd(self, op0, op1);
7659 }
7660 #[inline]
7673 pub fn sse_ucomisd<A, B>(&mut self, op0: A, op1: B)
7674 where
7675 Assembler<'a>: SseUcomisdEmitter<A, B>,
7676 {
7677 <Self as SseUcomisdEmitter<A, B>>::sse_ucomisd(self, op0, op1);
7678 }
7679 #[inline]
7692 pub fn sse_unpckhpd<A, B>(&mut self, op0: A, op1: B)
7693 where
7694 Assembler<'a>: SseUnpckhpdEmitter<A, B>,
7695 {
7696 <Self as SseUnpckhpdEmitter<A, B>>::sse_unpckhpd(self, op0, op1);
7697 }
7698 #[inline]
7711 pub fn sse_unpcklpd<A, B>(&mut self, op0: A, op1: B)
7712 where
7713 Assembler<'a>: SseUnpcklpdEmitter<A, B>,
7714 {
7715 <Self as SseUnpcklpdEmitter<A, B>>::sse_unpcklpd(self, op0, op1);
7716 }
7717 #[inline]
7730 pub fn sse_xorpd<A, B>(&mut self, op0: A, op1: B)
7731 where
7732 Assembler<'a>: SseXorpdEmitter<A, B>,
7733 {
7734 <Self as SseXorpdEmitter<A, B>>::sse_xorpd(self, op0, op1);
7735 }
7736}