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 LdmxcsrEmitter<A> {
22 fn ldmxcsr(&mut self, op0: A);
23}
24
25impl<'a> LdmxcsrEmitter<Mem> for Assembler<'a> {
26 fn ldmxcsr(&mut self, op0: Mem) {
27 self.emit(LDMXCSRM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
28 }
29}
30
31pub trait MmxMaskmovqEmitter<A, B> {
43 fn mmx_maskmovq(&mut self, op0: A, op1: B);
44}
45
46impl<'a> MmxMaskmovqEmitter<Mm, Mm> for Assembler<'a> {
47 fn mmx_maskmovq(&mut self, op0: Mm, op1: Mm) {
48 self.emit(
49 MMX_MASKMOVQRR,
50 op0.as_operand(),
51 op1.as_operand(),
52 &NOREG,
53 &NOREG,
54 );
55 }
56}
57
58pub trait MmxMovdq2qEmitter<A, B> {
70 fn mmx_movdq2q(&mut self, op0: A, op1: B);
71}
72
73impl<'a> MmxMovdq2qEmitter<Mm, Xmm> for Assembler<'a> {
74 fn mmx_movdq2q(&mut self, op0: Mm, op1: Xmm) {
75 self.emit(
76 MMX_MOVDQ2QRR,
77 op0.as_operand(),
78 op1.as_operand(),
79 &NOREG,
80 &NOREG,
81 );
82 }
83}
84
85pub trait MmxMovntqEmitter<A, B> {
97 fn mmx_movntq(&mut self, op0: A, op1: B);
98}
99
100impl<'a> MmxMovntqEmitter<Mem, Mm> for Assembler<'a> {
101 fn mmx_movntq(&mut self, op0: Mem, op1: Mm) {
102 self.emit(
103 MMX_MOVNTQMR,
104 op0.as_operand(),
105 op1.as_operand(),
106 &NOREG,
107 &NOREG,
108 );
109 }
110}
111
112pub trait MmxMovq2dqEmitter<A, B> {
124 fn mmx_movq2dq(&mut self, op0: A, op1: B);
125}
126
127impl<'a> MmxMovq2dqEmitter<Xmm, Mm> for Assembler<'a> {
128 fn mmx_movq2dq(&mut self, op0: Xmm, op1: Mm) {
129 self.emit(
130 MMX_MOVQ2DQRR,
131 op0.as_operand(),
132 op1.as_operand(),
133 &NOREG,
134 &NOREG,
135 );
136 }
137}
138
139pub trait MmxPavgbEmitter<A, B> {
152 fn mmx_pavgb(&mut self, op0: A, op1: B);
153}
154
155impl<'a> MmxPavgbEmitter<Mm, Mm> for Assembler<'a> {
156 fn mmx_pavgb(&mut self, op0: Mm, op1: Mm) {
157 self.emit(
158 MMX_PAVGBRR,
159 op0.as_operand(),
160 op1.as_operand(),
161 &NOREG,
162 &NOREG,
163 );
164 }
165}
166
167impl<'a> MmxPavgbEmitter<Mm, Mem> for Assembler<'a> {
168 fn mmx_pavgb(&mut self, op0: Mm, op1: Mem) {
169 self.emit(
170 MMX_PAVGBRM,
171 op0.as_operand(),
172 op1.as_operand(),
173 &NOREG,
174 &NOREG,
175 );
176 }
177}
178
179pub trait MmxPavgwEmitter<A, B> {
192 fn mmx_pavgw(&mut self, op0: A, op1: B);
193}
194
195impl<'a> MmxPavgwEmitter<Mm, Mm> for Assembler<'a> {
196 fn mmx_pavgw(&mut self, op0: Mm, op1: Mm) {
197 self.emit(
198 MMX_PAVGWRR,
199 op0.as_operand(),
200 op1.as_operand(),
201 &NOREG,
202 &NOREG,
203 );
204 }
205}
206
207impl<'a> MmxPavgwEmitter<Mm, Mem> for Assembler<'a> {
208 fn mmx_pavgw(&mut self, op0: Mm, op1: Mem) {
209 self.emit(
210 MMX_PAVGWRM,
211 op0.as_operand(),
212 op1.as_operand(),
213 &NOREG,
214 &NOREG,
215 );
216 }
217}
218
219pub trait MmxPextrwEmitter<A, B, C> {
231 fn mmx_pextrw(&mut self, op0: A, op1: B, op2: C);
232}
233
234impl<'a> MmxPextrwEmitter<Gpq, Mm, Imm> for Assembler<'a> {
235 fn mmx_pextrw(&mut self, op0: Gpq, op1: Mm, op2: Imm) {
236 self.emit(
237 MMX_PEXTRWRRI,
238 op0.as_operand(),
239 op1.as_operand(),
240 op2.as_operand(),
241 &NOREG,
242 );
243 }
244}
245
246pub trait MmxPinsrwEmitter<A, B, C> {
259 fn mmx_pinsrw(&mut self, op0: A, op1: B, op2: C);
260}
261
262impl<'a> MmxPinsrwEmitter<Mm, Gpd, Imm> for Assembler<'a> {
263 fn mmx_pinsrw(&mut self, op0: Mm, op1: Gpd, op2: Imm) {
264 self.emit(
265 MMX_PINSRWRRI,
266 op0.as_operand(),
267 op1.as_operand(),
268 op2.as_operand(),
269 &NOREG,
270 );
271 }
272}
273
274impl<'a> MmxPinsrwEmitter<Mm, Mem, Imm> for Assembler<'a> {
275 fn mmx_pinsrw(&mut self, op0: Mm, op1: Mem, op2: Imm) {
276 self.emit(
277 MMX_PINSRWRMI,
278 op0.as_operand(),
279 op1.as_operand(),
280 op2.as_operand(),
281 &NOREG,
282 );
283 }
284}
285
286pub trait MmxPmaxswEmitter<A, B> {
299 fn mmx_pmaxsw(&mut self, op0: A, op1: B);
300}
301
302impl<'a> MmxPmaxswEmitter<Mm, Mm> for Assembler<'a> {
303 fn mmx_pmaxsw(&mut self, op0: Mm, op1: Mm) {
304 self.emit(
305 MMX_PMAXSWRR,
306 op0.as_operand(),
307 op1.as_operand(),
308 &NOREG,
309 &NOREG,
310 );
311 }
312}
313
314impl<'a> MmxPmaxswEmitter<Mm, Mem> for Assembler<'a> {
315 fn mmx_pmaxsw(&mut self, op0: Mm, op1: Mem) {
316 self.emit(
317 MMX_PMAXSWRM,
318 op0.as_operand(),
319 op1.as_operand(),
320 &NOREG,
321 &NOREG,
322 );
323 }
324}
325
326pub trait MmxPmaxubEmitter<A, B> {
339 fn mmx_pmaxub(&mut self, op0: A, op1: B);
340}
341
342impl<'a> MmxPmaxubEmitter<Mm, Mm> for Assembler<'a> {
343 fn mmx_pmaxub(&mut self, op0: Mm, op1: Mm) {
344 self.emit(
345 MMX_PMAXUBRR,
346 op0.as_operand(),
347 op1.as_operand(),
348 &NOREG,
349 &NOREG,
350 );
351 }
352}
353
354impl<'a> MmxPmaxubEmitter<Mm, Mem> for Assembler<'a> {
355 fn mmx_pmaxub(&mut self, op0: Mm, op1: Mem) {
356 self.emit(
357 MMX_PMAXUBRM,
358 op0.as_operand(),
359 op1.as_operand(),
360 &NOREG,
361 &NOREG,
362 );
363 }
364}
365
366pub trait MmxPminswEmitter<A, B> {
379 fn mmx_pminsw(&mut self, op0: A, op1: B);
380}
381
382impl<'a> MmxPminswEmitter<Mm, Mm> for Assembler<'a> {
383 fn mmx_pminsw(&mut self, op0: Mm, op1: Mm) {
384 self.emit(
385 MMX_PMINSWRR,
386 op0.as_operand(),
387 op1.as_operand(),
388 &NOREG,
389 &NOREG,
390 );
391 }
392}
393
394impl<'a> MmxPminswEmitter<Mm, Mem> for Assembler<'a> {
395 fn mmx_pminsw(&mut self, op0: Mm, op1: Mem) {
396 self.emit(
397 MMX_PMINSWRM,
398 op0.as_operand(),
399 op1.as_operand(),
400 &NOREG,
401 &NOREG,
402 );
403 }
404}
405
406pub trait MmxPminubEmitter<A, B> {
419 fn mmx_pminub(&mut self, op0: A, op1: B);
420}
421
422impl<'a> MmxPminubEmitter<Mm, Mm> for Assembler<'a> {
423 fn mmx_pminub(&mut self, op0: Mm, op1: Mm) {
424 self.emit(
425 MMX_PMINUBRR,
426 op0.as_operand(),
427 op1.as_operand(),
428 &NOREG,
429 &NOREG,
430 );
431 }
432}
433
434impl<'a> MmxPminubEmitter<Mm, Mem> for Assembler<'a> {
435 fn mmx_pminub(&mut self, op0: Mm, op1: Mem) {
436 self.emit(
437 MMX_PMINUBRM,
438 op0.as_operand(),
439 op1.as_operand(),
440 &NOREG,
441 &NOREG,
442 );
443 }
444}
445
446pub trait MmxPmovmskbEmitter<A, B> {
458 fn mmx_pmovmskb(&mut self, op0: A, op1: B);
459}
460
461impl<'a> MmxPmovmskbEmitter<Gpq, Mm> for Assembler<'a> {
462 fn mmx_pmovmskb(&mut self, op0: Gpq, op1: Mm) {
463 self.emit(
464 MMX_PMOVMSKBRR,
465 op0.as_operand(),
466 op1.as_operand(),
467 &NOREG,
468 &NOREG,
469 );
470 }
471}
472
473pub trait MmxPmulhuwEmitter<A, B> {
486 fn mmx_pmulhuw(&mut self, op0: A, op1: B);
487}
488
489impl<'a> MmxPmulhuwEmitter<Mm, Mm> for Assembler<'a> {
490 fn mmx_pmulhuw(&mut self, op0: Mm, op1: Mm) {
491 self.emit(
492 MMX_PMULHUWRR,
493 op0.as_operand(),
494 op1.as_operand(),
495 &NOREG,
496 &NOREG,
497 );
498 }
499}
500
501impl<'a> MmxPmulhuwEmitter<Mm, Mem> for Assembler<'a> {
502 fn mmx_pmulhuw(&mut self, op0: Mm, op1: Mem) {
503 self.emit(
504 MMX_PMULHUWRM,
505 op0.as_operand(),
506 op1.as_operand(),
507 &NOREG,
508 &NOREG,
509 );
510 }
511}
512
513pub trait MmxPsadbwEmitter<A, B> {
526 fn mmx_psadbw(&mut self, op0: A, op1: B);
527}
528
529impl<'a> MmxPsadbwEmitter<Mm, Mm> for Assembler<'a> {
530 fn mmx_psadbw(&mut self, op0: Mm, op1: Mm) {
531 self.emit(
532 MMX_PSADBWRR,
533 op0.as_operand(),
534 op1.as_operand(),
535 &NOREG,
536 &NOREG,
537 );
538 }
539}
540
541impl<'a> MmxPsadbwEmitter<Mm, Mem> for Assembler<'a> {
542 fn mmx_psadbw(&mut self, op0: Mm, op1: Mem) {
543 self.emit(
544 MMX_PSADBWRM,
545 op0.as_operand(),
546 op1.as_operand(),
547 &NOREG,
548 &NOREG,
549 );
550 }
551}
552
553pub trait MmxPshufwEmitter<A, B, C> {
566 fn mmx_pshufw(&mut self, op0: A, op1: B, op2: C);
567}
568
569impl<'a> MmxPshufwEmitter<Mm, Mm, Imm> for Assembler<'a> {
570 fn mmx_pshufw(&mut self, op0: Mm, op1: Mm, op2: Imm) {
571 self.emit(
572 MMX_PSHUFWRRI,
573 op0.as_operand(),
574 op1.as_operand(),
575 op2.as_operand(),
576 &NOREG,
577 );
578 }
579}
580
581impl<'a> MmxPshufwEmitter<Mm, Mem, Imm> for Assembler<'a> {
582 fn mmx_pshufw(&mut self, op0: Mm, op1: Mem, op2: Imm) {
583 self.emit(
584 MMX_PSHUFWRMI,
585 op0.as_operand(),
586 op1.as_operand(),
587 op2.as_operand(),
588 &NOREG,
589 );
590 }
591}
592
593pub trait PrefetchntaEmitter<A> {
605 fn prefetchnta(&mut self, op0: A);
606}
607
608impl<'a> PrefetchntaEmitter<Mem> for Assembler<'a> {
609 fn prefetchnta(&mut self, op0: Mem) {
610 self.emit(PREFETCHNTAM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
611 }
612}
613
614pub trait Prefetcht0Emitter<A> {
626 fn prefetcht0(&mut self, op0: A);
627}
628
629impl<'a> Prefetcht0Emitter<Mem> for Assembler<'a> {
630 fn prefetcht0(&mut self, op0: Mem) {
631 self.emit(PREFETCHT0M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
632 }
633}
634
635pub trait Prefetcht1Emitter<A> {
647 fn prefetcht1(&mut self, op0: A);
648}
649
650impl<'a> Prefetcht1Emitter<Mem> for Assembler<'a> {
651 fn prefetcht1(&mut self, op0: Mem) {
652 self.emit(PREFETCHT1M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
653 }
654}
655
656pub trait Prefetcht2Emitter<A> {
668 fn prefetcht2(&mut self, op0: A);
669}
670
671impl<'a> Prefetcht2Emitter<Mem> for Assembler<'a> {
672 fn prefetcht2(&mut self, op0: Mem) {
673 self.emit(PREFETCHT2M, op0.as_operand(), &NOREG, &NOREG, &NOREG);
674 }
675}
676
677pub trait SfenceEmitter {
689 fn sfence(&mut self);
690}
691
692impl<'a> SfenceEmitter for Assembler<'a> {
693 fn sfence(&mut self) {
694 self.emit(SFENCE, &NOREG, &NOREG, &NOREG, &NOREG);
695 }
696}
697
698pub trait SseAddpsEmitter<A, B> {
711 fn sse_addps(&mut self, op0: A, op1: B);
712}
713
714impl<'a> SseAddpsEmitter<Xmm, Xmm> for Assembler<'a> {
715 fn sse_addps(&mut self, op0: Xmm, op1: Xmm) {
716 self.emit(
717 SSE_ADDPSRR,
718 op0.as_operand(),
719 op1.as_operand(),
720 &NOREG,
721 &NOREG,
722 );
723 }
724}
725
726impl<'a> SseAddpsEmitter<Xmm, Mem> for Assembler<'a> {
727 fn sse_addps(&mut self, op0: Xmm, op1: Mem) {
728 self.emit(
729 SSE_ADDPSRM,
730 op0.as_operand(),
731 op1.as_operand(),
732 &NOREG,
733 &NOREG,
734 );
735 }
736}
737
738pub trait SseAddssEmitter<A, B> {
751 fn sse_addss(&mut self, op0: A, op1: B);
752}
753
754impl<'a> SseAddssEmitter<Xmm, Xmm> for Assembler<'a> {
755 fn sse_addss(&mut self, op0: Xmm, op1: Xmm) {
756 self.emit(
757 SSE_ADDSSRR,
758 op0.as_operand(),
759 op1.as_operand(),
760 &NOREG,
761 &NOREG,
762 );
763 }
764}
765
766impl<'a> SseAddssEmitter<Xmm, Mem> for Assembler<'a> {
767 fn sse_addss(&mut self, op0: Xmm, op1: Mem) {
768 self.emit(
769 SSE_ADDSSRM,
770 op0.as_operand(),
771 op1.as_operand(),
772 &NOREG,
773 &NOREG,
774 );
775 }
776}
777
778pub trait SseAndnpsEmitter<A, B> {
791 fn sse_andnps(&mut self, op0: A, op1: B);
792}
793
794impl<'a> SseAndnpsEmitter<Xmm, Xmm> for Assembler<'a> {
795 fn sse_andnps(&mut self, op0: Xmm, op1: Xmm) {
796 self.emit(
797 SSE_ANDNPSRR,
798 op0.as_operand(),
799 op1.as_operand(),
800 &NOREG,
801 &NOREG,
802 );
803 }
804}
805
806impl<'a> SseAndnpsEmitter<Xmm, Mem> for Assembler<'a> {
807 fn sse_andnps(&mut self, op0: Xmm, op1: Mem) {
808 self.emit(
809 SSE_ANDNPSRM,
810 op0.as_operand(),
811 op1.as_operand(),
812 &NOREG,
813 &NOREG,
814 );
815 }
816}
817
818pub trait SseAndpsEmitter<A, B> {
831 fn sse_andps(&mut self, op0: A, op1: B);
832}
833
834impl<'a> SseAndpsEmitter<Xmm, Xmm> for Assembler<'a> {
835 fn sse_andps(&mut self, op0: Xmm, op1: Xmm) {
836 self.emit(
837 SSE_ANDPSRR,
838 op0.as_operand(),
839 op1.as_operand(),
840 &NOREG,
841 &NOREG,
842 );
843 }
844}
845
846impl<'a> SseAndpsEmitter<Xmm, Mem> for Assembler<'a> {
847 fn sse_andps(&mut self, op0: Xmm, op1: Mem) {
848 self.emit(
849 SSE_ANDPSRM,
850 op0.as_operand(),
851 op1.as_operand(),
852 &NOREG,
853 &NOREG,
854 );
855 }
856}
857
858pub trait SseCmppsEmitter<A, B, C> {
871 fn sse_cmpps(&mut self, op0: A, op1: B, op2: C);
872}
873
874impl<'a> SseCmppsEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
875 fn sse_cmpps(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
876 self.emit(
877 SSE_CMPPSRRI,
878 op0.as_operand(),
879 op1.as_operand(),
880 op2.as_operand(),
881 &NOREG,
882 );
883 }
884}
885
886impl<'a> SseCmppsEmitter<Xmm, Mem, Imm> for Assembler<'a> {
887 fn sse_cmpps(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
888 self.emit(
889 SSE_CMPPSRMI,
890 op0.as_operand(),
891 op1.as_operand(),
892 op2.as_operand(),
893 &NOREG,
894 );
895 }
896}
897
898pub trait SseCmpssEmitter<A, B, C> {
911 fn sse_cmpss(&mut self, op0: A, op1: B, op2: C);
912}
913
914impl<'a> SseCmpssEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
915 fn sse_cmpss(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
916 self.emit(
917 SSE_CMPSSRRI,
918 op0.as_operand(),
919 op1.as_operand(),
920 op2.as_operand(),
921 &NOREG,
922 );
923 }
924}
925
926impl<'a> SseCmpssEmitter<Xmm, Mem, Imm> for Assembler<'a> {
927 fn sse_cmpss(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
928 self.emit(
929 SSE_CMPSSRMI,
930 op0.as_operand(),
931 op1.as_operand(),
932 op2.as_operand(),
933 &NOREG,
934 );
935 }
936}
937
938pub trait SseComissEmitter<A, B> {
951 fn sse_comiss(&mut self, op0: A, op1: B);
952}
953
954impl<'a> SseComissEmitter<Xmm, Xmm> for Assembler<'a> {
955 fn sse_comiss(&mut self, op0: Xmm, op1: Xmm) {
956 self.emit(
957 SSE_COMISSRR,
958 op0.as_operand(),
959 op1.as_operand(),
960 &NOREG,
961 &NOREG,
962 );
963 }
964}
965
966impl<'a> SseComissEmitter<Xmm, Mem> for Assembler<'a> {
967 fn sse_comiss(&mut self, op0: Xmm, op1: Mem) {
968 self.emit(
969 SSE_COMISSRM,
970 op0.as_operand(),
971 op1.as_operand(),
972 &NOREG,
973 &NOREG,
974 );
975 }
976}
977
978pub trait SseCvtsi2ssEmitter<A, B> {
992 fn sse_cvtsi2ss(&mut self, op0: A, op1: B);
993}
994
995impl<'a> SseCvtsi2ssEmitter<Xmm, Gpd> for Assembler<'a> {
996 fn sse_cvtsi2ss(&mut self, op0: Xmm, op1: Gpd) {
997 self.emit(
998 SSE_CVTSI2SS32RR,
999 op0.as_operand(),
1000 op1.as_operand(),
1001 &NOREG,
1002 &NOREG,
1003 );
1004 }
1005}
1006
1007impl<'a> SseCvtsi2ssEmitter<Xmm, Mem> for Assembler<'a> {
1008 fn sse_cvtsi2ss(&mut self, op0: Xmm, op1: Mem) {
1009 self.emit(
1010 SSE_CVTSI2SS32RM,
1011 op0.as_operand(),
1012 op1.as_operand(),
1013 &NOREG,
1014 &NOREG,
1015 );
1016 }
1017}
1018
1019impl<'a> SseCvtsi2ssEmitter<Xmm, Gpq> for Assembler<'a> {
1020 fn sse_cvtsi2ss(&mut self, op0: Xmm, op1: Gpq) {
1021 self.emit(
1022 SSE_CVTSI2SS64RR,
1023 op0.as_operand(),
1024 op1.as_operand(),
1025 &NOREG,
1026 &NOREG,
1027 );
1028 }
1029}
1030
1031pub trait SseCvtss2siEmitter<A, B> {
1046 fn sse_cvtss2si(&mut self, op0: A, op1: B);
1047}
1048
1049impl<'a> SseCvtss2siEmitter<Gpd, Xmm> for Assembler<'a> {
1050 fn sse_cvtss2si(&mut self, op0: Gpd, op1: Xmm) {
1051 self.emit(
1052 SSE_CVTSS2SI32RR,
1053 op0.as_operand(),
1054 op1.as_operand(),
1055 &NOREG,
1056 &NOREG,
1057 );
1058 }
1059}
1060
1061impl<'a> SseCvtss2siEmitter<Gpd, Mem> for Assembler<'a> {
1062 fn sse_cvtss2si(&mut self, op0: Gpd, op1: Mem) {
1063 self.emit(
1064 SSE_CVTSS2SI32RM,
1065 op0.as_operand(),
1066 op1.as_operand(),
1067 &NOREG,
1068 &NOREG,
1069 );
1070 }
1071}
1072
1073impl<'a> SseCvtss2siEmitter<Gpq, Xmm> for Assembler<'a> {
1074 fn sse_cvtss2si(&mut self, op0: Gpq, op1: Xmm) {
1075 self.emit(
1076 SSE_CVTSS2SI64RR,
1077 op0.as_operand(),
1078 op1.as_operand(),
1079 &NOREG,
1080 &NOREG,
1081 );
1082 }
1083}
1084
1085impl<'a> SseCvtss2siEmitter<Gpq, Mem> for Assembler<'a> {
1086 fn sse_cvtss2si(&mut self, op0: Gpq, op1: Mem) {
1087 self.emit(
1088 SSE_CVTSS2SI64RM,
1089 op0.as_operand(),
1090 op1.as_operand(),
1091 &NOREG,
1092 &NOREG,
1093 );
1094 }
1095}
1096
1097pub trait SseCvttss2siEmitter<A, B> {
1112 fn sse_cvttss2si(&mut self, op0: A, op1: B);
1113}
1114
1115impl<'a> SseCvttss2siEmitter<Gpd, Xmm> for Assembler<'a> {
1116 fn sse_cvttss2si(&mut self, op0: Gpd, op1: Xmm) {
1117 self.emit(
1118 SSE_CVTTSS2SI32RR,
1119 op0.as_operand(),
1120 op1.as_operand(),
1121 &NOREG,
1122 &NOREG,
1123 );
1124 }
1125}
1126
1127impl<'a> SseCvttss2siEmitter<Gpd, Mem> for Assembler<'a> {
1128 fn sse_cvttss2si(&mut self, op0: Gpd, op1: Mem) {
1129 self.emit(
1130 SSE_CVTTSS2SI32RM,
1131 op0.as_operand(),
1132 op1.as_operand(),
1133 &NOREG,
1134 &NOREG,
1135 );
1136 }
1137}
1138
1139impl<'a> SseCvttss2siEmitter<Gpq, Xmm> for Assembler<'a> {
1140 fn sse_cvttss2si(&mut self, op0: Gpq, op1: Xmm) {
1141 self.emit(
1142 SSE_CVTTSS2SI64RR,
1143 op0.as_operand(),
1144 op1.as_operand(),
1145 &NOREG,
1146 &NOREG,
1147 );
1148 }
1149}
1150
1151impl<'a> SseCvttss2siEmitter<Gpq, Mem> for Assembler<'a> {
1152 fn sse_cvttss2si(&mut self, op0: Gpq, op1: Mem) {
1153 self.emit(
1154 SSE_CVTTSS2SI64RM,
1155 op0.as_operand(),
1156 op1.as_operand(),
1157 &NOREG,
1158 &NOREG,
1159 );
1160 }
1161}
1162
1163pub trait SseDivpsEmitter<A, B> {
1176 fn sse_divps(&mut self, op0: A, op1: B);
1177}
1178
1179impl<'a> SseDivpsEmitter<Xmm, Xmm> for Assembler<'a> {
1180 fn sse_divps(&mut self, op0: Xmm, op1: Xmm) {
1181 self.emit(
1182 SSE_DIVPSRR,
1183 op0.as_operand(),
1184 op1.as_operand(),
1185 &NOREG,
1186 &NOREG,
1187 );
1188 }
1189}
1190
1191impl<'a> SseDivpsEmitter<Xmm, Mem> for Assembler<'a> {
1192 fn sse_divps(&mut self, op0: Xmm, op1: Mem) {
1193 self.emit(
1194 SSE_DIVPSRM,
1195 op0.as_operand(),
1196 op1.as_operand(),
1197 &NOREG,
1198 &NOREG,
1199 );
1200 }
1201}
1202
1203pub trait SseDivssEmitter<A, B> {
1216 fn sse_divss(&mut self, op0: A, op1: B);
1217}
1218
1219impl<'a> SseDivssEmitter<Xmm, Xmm> for Assembler<'a> {
1220 fn sse_divss(&mut self, op0: Xmm, op1: Xmm) {
1221 self.emit(
1222 SSE_DIVSSRR,
1223 op0.as_operand(),
1224 op1.as_operand(),
1225 &NOREG,
1226 &NOREG,
1227 );
1228 }
1229}
1230
1231impl<'a> SseDivssEmitter<Xmm, Mem> for Assembler<'a> {
1232 fn sse_divss(&mut self, op0: Xmm, op1: Mem) {
1233 self.emit(
1234 SSE_DIVSSRM,
1235 op0.as_operand(),
1236 op1.as_operand(),
1237 &NOREG,
1238 &NOREG,
1239 );
1240 }
1241}
1242
1243pub trait SseMaxpsEmitter<A, B> {
1256 fn sse_maxps(&mut self, op0: A, op1: B);
1257}
1258
1259impl<'a> SseMaxpsEmitter<Xmm, Xmm> for Assembler<'a> {
1260 fn sse_maxps(&mut self, op0: Xmm, op1: Xmm) {
1261 self.emit(
1262 SSE_MAXPSRR,
1263 op0.as_operand(),
1264 op1.as_operand(),
1265 &NOREG,
1266 &NOREG,
1267 );
1268 }
1269}
1270
1271impl<'a> SseMaxpsEmitter<Xmm, Mem> for Assembler<'a> {
1272 fn sse_maxps(&mut self, op0: Xmm, op1: Mem) {
1273 self.emit(
1274 SSE_MAXPSRM,
1275 op0.as_operand(),
1276 op1.as_operand(),
1277 &NOREG,
1278 &NOREG,
1279 );
1280 }
1281}
1282
1283pub trait SseMaxssEmitter<A, B> {
1296 fn sse_maxss(&mut self, op0: A, op1: B);
1297}
1298
1299impl<'a> SseMaxssEmitter<Xmm, Xmm> for Assembler<'a> {
1300 fn sse_maxss(&mut self, op0: Xmm, op1: Xmm) {
1301 self.emit(
1302 SSE_MAXSSRR,
1303 op0.as_operand(),
1304 op1.as_operand(),
1305 &NOREG,
1306 &NOREG,
1307 );
1308 }
1309}
1310
1311impl<'a> SseMaxssEmitter<Xmm, Mem> for Assembler<'a> {
1312 fn sse_maxss(&mut self, op0: Xmm, op1: Mem) {
1313 self.emit(
1314 SSE_MAXSSRM,
1315 op0.as_operand(),
1316 op1.as_operand(),
1317 &NOREG,
1318 &NOREG,
1319 );
1320 }
1321}
1322
1323pub trait SseMinpsEmitter<A, B> {
1336 fn sse_minps(&mut self, op0: A, op1: B);
1337}
1338
1339impl<'a> SseMinpsEmitter<Xmm, Xmm> for Assembler<'a> {
1340 fn sse_minps(&mut self, op0: Xmm, op1: Xmm) {
1341 self.emit(
1342 SSE_MINPSRR,
1343 op0.as_operand(),
1344 op1.as_operand(),
1345 &NOREG,
1346 &NOREG,
1347 );
1348 }
1349}
1350
1351impl<'a> SseMinpsEmitter<Xmm, Mem> for Assembler<'a> {
1352 fn sse_minps(&mut self, op0: Xmm, op1: Mem) {
1353 self.emit(
1354 SSE_MINPSRM,
1355 op0.as_operand(),
1356 op1.as_operand(),
1357 &NOREG,
1358 &NOREG,
1359 );
1360 }
1361}
1362
1363pub trait SseMinssEmitter<A, B> {
1376 fn sse_minss(&mut self, op0: A, op1: B);
1377}
1378
1379impl<'a> SseMinssEmitter<Xmm, Xmm> for Assembler<'a> {
1380 fn sse_minss(&mut self, op0: Xmm, op1: Xmm) {
1381 self.emit(
1382 SSE_MINSSRR,
1383 op0.as_operand(),
1384 op1.as_operand(),
1385 &NOREG,
1386 &NOREG,
1387 );
1388 }
1389}
1390
1391impl<'a> SseMinssEmitter<Xmm, Mem> for Assembler<'a> {
1392 fn sse_minss(&mut self, op0: Xmm, op1: Mem) {
1393 self.emit(
1394 SSE_MINSSRM,
1395 op0.as_operand(),
1396 op1.as_operand(),
1397 &NOREG,
1398 &NOREG,
1399 );
1400 }
1401}
1402
1403pub trait SseMovapsEmitter<A, B> {
1417 fn sse_movaps(&mut self, op0: A, op1: B);
1418}
1419
1420impl<'a> SseMovapsEmitter<Xmm, Xmm> for Assembler<'a> {
1421 fn sse_movaps(&mut self, op0: Xmm, op1: Xmm) {
1422 self.emit(
1423 SSE_MOVAPSRR,
1424 op0.as_operand(),
1425 op1.as_operand(),
1426 &NOREG,
1427 &NOREG,
1428 );
1429 }
1430}
1431
1432impl<'a> SseMovapsEmitter<Xmm, Mem> for Assembler<'a> {
1433 fn sse_movaps(&mut self, op0: Xmm, op1: Mem) {
1434 self.emit(
1435 SSE_MOVAPSRM,
1436 op0.as_operand(),
1437 op1.as_operand(),
1438 &NOREG,
1439 &NOREG,
1440 );
1441 }
1442}
1443
1444impl<'a> SseMovapsEmitter<Mem, Xmm> for Assembler<'a> {
1445 fn sse_movaps(&mut self, op0: Mem, op1: Xmm) {
1446 self.emit(
1447 SSE_MOVAPSMR,
1448 op0.as_operand(),
1449 op1.as_operand(),
1450 &NOREG,
1451 &NOREG,
1452 );
1453 }
1454}
1455
1456pub trait SseMovhlpsEmitter<A, B> {
1468 fn sse_movhlps(&mut self, op0: A, op1: B);
1469}
1470
1471impl<'a> SseMovhlpsEmitter<Xmm, Xmm> for Assembler<'a> {
1472 fn sse_movhlps(&mut self, op0: Xmm, op1: Xmm) {
1473 self.emit(
1474 SSE_MOVHLPSRR,
1475 op0.as_operand(),
1476 op1.as_operand(),
1477 &NOREG,
1478 &NOREG,
1479 );
1480 }
1481}
1482
1483pub trait SseMovhpsEmitter<A, B> {
1496 fn sse_movhps(&mut self, op0: A, op1: B);
1497}
1498
1499impl<'a> SseMovhpsEmitter<Xmm, Mem> for Assembler<'a> {
1500 fn sse_movhps(&mut self, op0: Xmm, op1: Mem) {
1501 self.emit(
1502 SSE_MOVHPSRM,
1503 op0.as_operand(),
1504 op1.as_operand(),
1505 &NOREG,
1506 &NOREG,
1507 );
1508 }
1509}
1510
1511impl<'a> SseMovhpsEmitter<Mem, Xmm> for Assembler<'a> {
1512 fn sse_movhps(&mut self, op0: Mem, op1: Xmm) {
1513 self.emit(
1514 SSE_MOVHPSMR,
1515 op0.as_operand(),
1516 op1.as_operand(),
1517 &NOREG,
1518 &NOREG,
1519 );
1520 }
1521}
1522
1523pub trait SseMovlhpsEmitter<A, B> {
1535 fn sse_movlhps(&mut self, op0: A, op1: B);
1536}
1537
1538impl<'a> SseMovlhpsEmitter<Xmm, Xmm> for Assembler<'a> {
1539 fn sse_movlhps(&mut self, op0: Xmm, op1: Xmm) {
1540 self.emit(
1541 SSE_MOVLHPSRR,
1542 op0.as_operand(),
1543 op1.as_operand(),
1544 &NOREG,
1545 &NOREG,
1546 );
1547 }
1548}
1549
1550pub trait SseMovlpsEmitter<A, B> {
1563 fn sse_movlps(&mut self, op0: A, op1: B);
1564}
1565
1566impl<'a> SseMovlpsEmitter<Xmm, Mem> for Assembler<'a> {
1567 fn sse_movlps(&mut self, op0: Xmm, op1: Mem) {
1568 self.emit(
1569 SSE_MOVLPSRM,
1570 op0.as_operand(),
1571 op1.as_operand(),
1572 &NOREG,
1573 &NOREG,
1574 );
1575 }
1576}
1577
1578impl<'a> SseMovlpsEmitter<Mem, Xmm> for Assembler<'a> {
1579 fn sse_movlps(&mut self, op0: Mem, op1: Xmm) {
1580 self.emit(
1581 SSE_MOVLPSMR,
1582 op0.as_operand(),
1583 op1.as_operand(),
1584 &NOREG,
1585 &NOREG,
1586 );
1587 }
1588}
1589
1590pub trait SseMovmskpsEmitter<A, B> {
1602 fn sse_movmskps(&mut self, op0: A, op1: B);
1603}
1604
1605impl<'a> SseMovmskpsEmitter<Gpq, Xmm> for Assembler<'a> {
1606 fn sse_movmskps(&mut self, op0: Gpq, op1: Xmm) {
1607 self.emit(
1608 SSE_MOVMSKPSRR,
1609 op0.as_operand(),
1610 op1.as_operand(),
1611 &NOREG,
1612 &NOREG,
1613 );
1614 }
1615}
1616
1617pub trait SseMovntpsEmitter<A, B> {
1629 fn sse_movntps(&mut self, op0: A, op1: B);
1630}
1631
1632impl<'a> SseMovntpsEmitter<Mem, Xmm> for Assembler<'a> {
1633 fn sse_movntps(&mut self, op0: Mem, op1: Xmm) {
1634 self.emit(
1635 SSE_MOVNTPSMR,
1636 op0.as_operand(),
1637 op1.as_operand(),
1638 &NOREG,
1639 &NOREG,
1640 );
1641 }
1642}
1643
1644pub trait SseMovntssEmitter<A, B> {
1656 fn sse_movntss(&mut self, op0: A, op1: B);
1657}
1658
1659impl<'a> SseMovntssEmitter<Mem, Xmm> for Assembler<'a> {
1660 fn sse_movntss(&mut self, op0: Mem, op1: Xmm) {
1661 self.emit(
1662 SSE_MOVNTSSMR,
1663 op0.as_operand(),
1664 op1.as_operand(),
1665 &NOREG,
1666 &NOREG,
1667 );
1668 }
1669}
1670
1671pub trait SseMovssEmitter<A, B> {
1685 fn sse_movss(&mut self, op0: A, op1: B);
1686}
1687
1688impl<'a> SseMovssEmitter<Xmm, Xmm> for Assembler<'a> {
1689 fn sse_movss(&mut self, op0: Xmm, op1: Xmm) {
1690 self.emit(
1691 SSE_MOVSSRR,
1692 op0.as_operand(),
1693 op1.as_operand(),
1694 &NOREG,
1695 &NOREG,
1696 );
1697 }
1698}
1699
1700impl<'a> SseMovssEmitter<Xmm, Mem> for Assembler<'a> {
1701 fn sse_movss(&mut self, op0: Xmm, op1: Mem) {
1702 self.emit(
1703 SSE_MOVSSRM,
1704 op0.as_operand(),
1705 op1.as_operand(),
1706 &NOREG,
1707 &NOREG,
1708 );
1709 }
1710}
1711
1712impl<'a> SseMovssEmitter<Mem, Xmm> for Assembler<'a> {
1713 fn sse_movss(&mut self, op0: Mem, op1: Xmm) {
1714 self.emit(
1715 SSE_MOVSSMR,
1716 op0.as_operand(),
1717 op1.as_operand(),
1718 &NOREG,
1719 &NOREG,
1720 );
1721 }
1722}
1723
1724pub trait SseMovupsEmitter<A, B> {
1738 fn sse_movups(&mut self, op0: A, op1: B);
1739}
1740
1741impl<'a> SseMovupsEmitter<Xmm, Xmm> for Assembler<'a> {
1742 fn sse_movups(&mut self, op0: Xmm, op1: Xmm) {
1743 self.emit(
1744 SSE_MOVUPSRR,
1745 op0.as_operand(),
1746 op1.as_operand(),
1747 &NOREG,
1748 &NOREG,
1749 );
1750 }
1751}
1752
1753impl<'a> SseMovupsEmitter<Xmm, Mem> for Assembler<'a> {
1754 fn sse_movups(&mut self, op0: Xmm, op1: Mem) {
1755 self.emit(
1756 SSE_MOVUPSRM,
1757 op0.as_operand(),
1758 op1.as_operand(),
1759 &NOREG,
1760 &NOREG,
1761 );
1762 }
1763}
1764
1765impl<'a> SseMovupsEmitter<Mem, Xmm> for Assembler<'a> {
1766 fn sse_movups(&mut self, op0: Mem, op1: Xmm) {
1767 self.emit(
1768 SSE_MOVUPSMR,
1769 op0.as_operand(),
1770 op1.as_operand(),
1771 &NOREG,
1772 &NOREG,
1773 );
1774 }
1775}
1776
1777pub trait SseMulpsEmitter<A, B> {
1790 fn sse_mulps(&mut self, op0: A, op1: B);
1791}
1792
1793impl<'a> SseMulpsEmitter<Xmm, Xmm> for Assembler<'a> {
1794 fn sse_mulps(&mut self, op0: Xmm, op1: Xmm) {
1795 self.emit(
1796 SSE_MULPSRR,
1797 op0.as_operand(),
1798 op1.as_operand(),
1799 &NOREG,
1800 &NOREG,
1801 );
1802 }
1803}
1804
1805impl<'a> SseMulpsEmitter<Xmm, Mem> for Assembler<'a> {
1806 fn sse_mulps(&mut self, op0: Xmm, op1: Mem) {
1807 self.emit(
1808 SSE_MULPSRM,
1809 op0.as_operand(),
1810 op1.as_operand(),
1811 &NOREG,
1812 &NOREG,
1813 );
1814 }
1815}
1816
1817pub trait SseMulssEmitter<A, B> {
1830 fn sse_mulss(&mut self, op0: A, op1: B);
1831}
1832
1833impl<'a> SseMulssEmitter<Xmm, Xmm> for Assembler<'a> {
1834 fn sse_mulss(&mut self, op0: Xmm, op1: Xmm) {
1835 self.emit(
1836 SSE_MULSSRR,
1837 op0.as_operand(),
1838 op1.as_operand(),
1839 &NOREG,
1840 &NOREG,
1841 );
1842 }
1843}
1844
1845impl<'a> SseMulssEmitter<Xmm, Mem> for Assembler<'a> {
1846 fn sse_mulss(&mut self, op0: Xmm, op1: Mem) {
1847 self.emit(
1848 SSE_MULSSRM,
1849 op0.as_operand(),
1850 op1.as_operand(),
1851 &NOREG,
1852 &NOREG,
1853 );
1854 }
1855}
1856
1857pub trait SseOrpsEmitter<A, B> {
1870 fn sse_orps(&mut self, op0: A, op1: B);
1871}
1872
1873impl<'a> SseOrpsEmitter<Xmm, Xmm> for Assembler<'a> {
1874 fn sse_orps(&mut self, op0: Xmm, op1: Xmm) {
1875 self.emit(
1876 SSE_ORPSRR,
1877 op0.as_operand(),
1878 op1.as_operand(),
1879 &NOREG,
1880 &NOREG,
1881 );
1882 }
1883}
1884
1885impl<'a> SseOrpsEmitter<Xmm, Mem> for Assembler<'a> {
1886 fn sse_orps(&mut self, op0: Xmm, op1: Mem) {
1887 self.emit(
1888 SSE_ORPSRM,
1889 op0.as_operand(),
1890 op1.as_operand(),
1891 &NOREG,
1892 &NOREG,
1893 );
1894 }
1895}
1896
1897pub trait SseRcppsEmitter<A, B> {
1910 fn sse_rcpps(&mut self, op0: A, op1: B);
1911}
1912
1913impl<'a> SseRcppsEmitter<Xmm, Xmm> for Assembler<'a> {
1914 fn sse_rcpps(&mut self, op0: Xmm, op1: Xmm) {
1915 self.emit(
1916 SSE_RCPPSRR,
1917 op0.as_operand(),
1918 op1.as_operand(),
1919 &NOREG,
1920 &NOREG,
1921 );
1922 }
1923}
1924
1925impl<'a> SseRcppsEmitter<Xmm, Mem> for Assembler<'a> {
1926 fn sse_rcpps(&mut self, op0: Xmm, op1: Mem) {
1927 self.emit(
1928 SSE_RCPPSRM,
1929 op0.as_operand(),
1930 op1.as_operand(),
1931 &NOREG,
1932 &NOREG,
1933 );
1934 }
1935}
1936
1937pub trait SseRcpssEmitter<A, B> {
1950 fn sse_rcpss(&mut self, op0: A, op1: B);
1951}
1952
1953impl<'a> SseRcpssEmitter<Xmm, Xmm> for Assembler<'a> {
1954 fn sse_rcpss(&mut self, op0: Xmm, op1: Xmm) {
1955 self.emit(
1956 SSE_RCPSSRR,
1957 op0.as_operand(),
1958 op1.as_operand(),
1959 &NOREG,
1960 &NOREG,
1961 );
1962 }
1963}
1964
1965impl<'a> SseRcpssEmitter<Xmm, Mem> for Assembler<'a> {
1966 fn sse_rcpss(&mut self, op0: Xmm, op1: Mem) {
1967 self.emit(
1968 SSE_RCPSSRM,
1969 op0.as_operand(),
1970 op1.as_operand(),
1971 &NOREG,
1972 &NOREG,
1973 );
1974 }
1975}
1976
1977pub trait SseRsqrtpsEmitter<A, B> {
1990 fn sse_rsqrtps(&mut self, op0: A, op1: B);
1991}
1992
1993impl<'a> SseRsqrtpsEmitter<Xmm, Xmm> for Assembler<'a> {
1994 fn sse_rsqrtps(&mut self, op0: Xmm, op1: Xmm) {
1995 self.emit(
1996 SSE_RSQRTPSRR,
1997 op0.as_operand(),
1998 op1.as_operand(),
1999 &NOREG,
2000 &NOREG,
2001 );
2002 }
2003}
2004
2005impl<'a> SseRsqrtpsEmitter<Xmm, Mem> for Assembler<'a> {
2006 fn sse_rsqrtps(&mut self, op0: Xmm, op1: Mem) {
2007 self.emit(
2008 SSE_RSQRTPSRM,
2009 op0.as_operand(),
2010 op1.as_operand(),
2011 &NOREG,
2012 &NOREG,
2013 );
2014 }
2015}
2016
2017pub trait SseRsqrtssEmitter<A, B> {
2030 fn sse_rsqrtss(&mut self, op0: A, op1: B);
2031}
2032
2033impl<'a> SseRsqrtssEmitter<Xmm, Xmm> for Assembler<'a> {
2034 fn sse_rsqrtss(&mut self, op0: Xmm, op1: Xmm) {
2035 self.emit(
2036 SSE_RSQRTSSRR,
2037 op0.as_operand(),
2038 op1.as_operand(),
2039 &NOREG,
2040 &NOREG,
2041 );
2042 }
2043}
2044
2045impl<'a> SseRsqrtssEmitter<Xmm, Mem> for Assembler<'a> {
2046 fn sse_rsqrtss(&mut self, op0: Xmm, op1: Mem) {
2047 self.emit(
2048 SSE_RSQRTSSRM,
2049 op0.as_operand(),
2050 op1.as_operand(),
2051 &NOREG,
2052 &NOREG,
2053 );
2054 }
2055}
2056
2057pub trait SseShufpsEmitter<A, B, C> {
2070 fn sse_shufps(&mut self, op0: A, op1: B, op2: C);
2071}
2072
2073impl<'a> SseShufpsEmitter<Xmm, Xmm, Imm> for Assembler<'a> {
2074 fn sse_shufps(&mut self, op0: Xmm, op1: Xmm, op2: Imm) {
2075 self.emit(
2076 SSE_SHUFPSRRI,
2077 op0.as_operand(),
2078 op1.as_operand(),
2079 op2.as_operand(),
2080 &NOREG,
2081 );
2082 }
2083}
2084
2085impl<'a> SseShufpsEmitter<Xmm, Mem, Imm> for Assembler<'a> {
2086 fn sse_shufps(&mut self, op0: Xmm, op1: Mem, op2: Imm) {
2087 self.emit(
2088 SSE_SHUFPSRMI,
2089 op0.as_operand(),
2090 op1.as_operand(),
2091 op2.as_operand(),
2092 &NOREG,
2093 );
2094 }
2095}
2096
2097pub trait SseSqrtpsEmitter<A, B> {
2110 fn sse_sqrtps(&mut self, op0: A, op1: B);
2111}
2112
2113impl<'a> SseSqrtpsEmitter<Xmm, Xmm> for Assembler<'a> {
2114 fn sse_sqrtps(&mut self, op0: Xmm, op1: Xmm) {
2115 self.emit(
2116 SSE_SQRTPSRR,
2117 op0.as_operand(),
2118 op1.as_operand(),
2119 &NOREG,
2120 &NOREG,
2121 );
2122 }
2123}
2124
2125impl<'a> SseSqrtpsEmitter<Xmm, Mem> for Assembler<'a> {
2126 fn sse_sqrtps(&mut self, op0: Xmm, op1: Mem) {
2127 self.emit(
2128 SSE_SQRTPSRM,
2129 op0.as_operand(),
2130 op1.as_operand(),
2131 &NOREG,
2132 &NOREG,
2133 );
2134 }
2135}
2136
2137pub trait SseSqrtssEmitter<A, B> {
2150 fn sse_sqrtss(&mut self, op0: A, op1: B);
2151}
2152
2153impl<'a> SseSqrtssEmitter<Xmm, Xmm> for Assembler<'a> {
2154 fn sse_sqrtss(&mut self, op0: Xmm, op1: Xmm) {
2155 self.emit(
2156 SSE_SQRTSSRR,
2157 op0.as_operand(),
2158 op1.as_operand(),
2159 &NOREG,
2160 &NOREG,
2161 );
2162 }
2163}
2164
2165impl<'a> SseSqrtssEmitter<Xmm, Mem> for Assembler<'a> {
2166 fn sse_sqrtss(&mut self, op0: Xmm, op1: Mem) {
2167 self.emit(
2168 SSE_SQRTSSRM,
2169 op0.as_operand(),
2170 op1.as_operand(),
2171 &NOREG,
2172 &NOREG,
2173 );
2174 }
2175}
2176
2177pub trait SseSubpsEmitter<A, B> {
2190 fn sse_subps(&mut self, op0: A, op1: B);
2191}
2192
2193impl<'a> SseSubpsEmitter<Xmm, Xmm> for Assembler<'a> {
2194 fn sse_subps(&mut self, op0: Xmm, op1: Xmm) {
2195 self.emit(
2196 SSE_SUBPSRR,
2197 op0.as_operand(),
2198 op1.as_operand(),
2199 &NOREG,
2200 &NOREG,
2201 );
2202 }
2203}
2204
2205impl<'a> SseSubpsEmitter<Xmm, Mem> for Assembler<'a> {
2206 fn sse_subps(&mut self, op0: Xmm, op1: Mem) {
2207 self.emit(
2208 SSE_SUBPSRM,
2209 op0.as_operand(),
2210 op1.as_operand(),
2211 &NOREG,
2212 &NOREG,
2213 );
2214 }
2215}
2216
2217pub trait SseSubssEmitter<A, B> {
2230 fn sse_subss(&mut self, op0: A, op1: B);
2231}
2232
2233impl<'a> SseSubssEmitter<Xmm, Xmm> for Assembler<'a> {
2234 fn sse_subss(&mut self, op0: Xmm, op1: Xmm) {
2235 self.emit(
2236 SSE_SUBSSRR,
2237 op0.as_operand(),
2238 op1.as_operand(),
2239 &NOREG,
2240 &NOREG,
2241 );
2242 }
2243}
2244
2245impl<'a> SseSubssEmitter<Xmm, Mem> for Assembler<'a> {
2246 fn sse_subss(&mut self, op0: Xmm, op1: Mem) {
2247 self.emit(
2248 SSE_SUBSSRM,
2249 op0.as_operand(),
2250 op1.as_operand(),
2251 &NOREG,
2252 &NOREG,
2253 );
2254 }
2255}
2256
2257pub trait SseUcomissEmitter<A, B> {
2270 fn sse_ucomiss(&mut self, op0: A, op1: B);
2271}
2272
2273impl<'a> SseUcomissEmitter<Xmm, Xmm> for Assembler<'a> {
2274 fn sse_ucomiss(&mut self, op0: Xmm, op1: Xmm) {
2275 self.emit(
2276 SSE_UCOMISSRR,
2277 op0.as_operand(),
2278 op1.as_operand(),
2279 &NOREG,
2280 &NOREG,
2281 );
2282 }
2283}
2284
2285impl<'a> SseUcomissEmitter<Xmm, Mem> for Assembler<'a> {
2286 fn sse_ucomiss(&mut self, op0: Xmm, op1: Mem) {
2287 self.emit(
2288 SSE_UCOMISSRM,
2289 op0.as_operand(),
2290 op1.as_operand(),
2291 &NOREG,
2292 &NOREG,
2293 );
2294 }
2295}
2296
2297pub trait SseUnpckhpsEmitter<A, B> {
2310 fn sse_unpckhps(&mut self, op0: A, op1: B);
2311}
2312
2313impl<'a> SseUnpckhpsEmitter<Xmm, Xmm> for Assembler<'a> {
2314 fn sse_unpckhps(&mut self, op0: Xmm, op1: Xmm) {
2315 self.emit(
2316 SSE_UNPCKHPSRR,
2317 op0.as_operand(),
2318 op1.as_operand(),
2319 &NOREG,
2320 &NOREG,
2321 );
2322 }
2323}
2324
2325impl<'a> SseUnpckhpsEmitter<Xmm, Mem> for Assembler<'a> {
2326 fn sse_unpckhps(&mut self, op0: Xmm, op1: Mem) {
2327 self.emit(
2328 SSE_UNPCKHPSRM,
2329 op0.as_operand(),
2330 op1.as_operand(),
2331 &NOREG,
2332 &NOREG,
2333 );
2334 }
2335}
2336
2337pub trait SseUnpcklpsEmitter<A, B> {
2350 fn sse_unpcklps(&mut self, op0: A, op1: B);
2351}
2352
2353impl<'a> SseUnpcklpsEmitter<Xmm, Xmm> for Assembler<'a> {
2354 fn sse_unpcklps(&mut self, op0: Xmm, op1: Xmm) {
2355 self.emit(
2356 SSE_UNPCKLPSRR,
2357 op0.as_operand(),
2358 op1.as_operand(),
2359 &NOREG,
2360 &NOREG,
2361 );
2362 }
2363}
2364
2365impl<'a> SseUnpcklpsEmitter<Xmm, Mem> for Assembler<'a> {
2366 fn sse_unpcklps(&mut self, op0: Xmm, op1: Mem) {
2367 self.emit(
2368 SSE_UNPCKLPSRM,
2369 op0.as_operand(),
2370 op1.as_operand(),
2371 &NOREG,
2372 &NOREG,
2373 );
2374 }
2375}
2376
2377pub trait SseXorpsEmitter<A, B> {
2390 fn sse_xorps(&mut self, op0: A, op1: B);
2391}
2392
2393impl<'a> SseXorpsEmitter<Xmm, Xmm> for Assembler<'a> {
2394 fn sse_xorps(&mut self, op0: Xmm, op1: Xmm) {
2395 self.emit(
2396 SSE_XORPSRR,
2397 op0.as_operand(),
2398 op1.as_operand(),
2399 &NOREG,
2400 &NOREG,
2401 );
2402 }
2403}
2404
2405impl<'a> SseXorpsEmitter<Xmm, Mem> for Assembler<'a> {
2406 fn sse_xorps(&mut self, op0: Xmm, op1: Mem) {
2407 self.emit(
2408 SSE_XORPSRM,
2409 op0.as_operand(),
2410 op1.as_operand(),
2411 &NOREG,
2412 &NOREG,
2413 );
2414 }
2415}
2416
2417pub trait StmxcsrEmitter<A> {
2429 fn stmxcsr(&mut self, op0: A);
2430}
2431
2432impl<'a> StmxcsrEmitter<Mem> for Assembler<'a> {
2433 fn stmxcsr(&mut self, op0: Mem) {
2434 self.emit(STMXCSRM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
2435 }
2436}
2437
2438impl<'a> Assembler<'a> {
2439 #[inline]
2451 pub fn ldmxcsr<A>(&mut self, op0: A)
2452 where
2453 Assembler<'a>: LdmxcsrEmitter<A>,
2454 {
2455 <Self as LdmxcsrEmitter<A>>::ldmxcsr(self, op0);
2456 }
2457 #[inline]
2469 pub fn mmx_maskmovq<A, B>(&mut self, op0: A, op1: B)
2470 where
2471 Assembler<'a>: MmxMaskmovqEmitter<A, B>,
2472 {
2473 <Self as MmxMaskmovqEmitter<A, B>>::mmx_maskmovq(self, op0, op1);
2474 }
2475 #[inline]
2487 pub fn mmx_movdq2q<A, B>(&mut self, op0: A, op1: B)
2488 where
2489 Assembler<'a>: MmxMovdq2qEmitter<A, B>,
2490 {
2491 <Self as MmxMovdq2qEmitter<A, B>>::mmx_movdq2q(self, op0, op1);
2492 }
2493 #[inline]
2505 pub fn mmx_movntq<A, B>(&mut self, op0: A, op1: B)
2506 where
2507 Assembler<'a>: MmxMovntqEmitter<A, B>,
2508 {
2509 <Self as MmxMovntqEmitter<A, B>>::mmx_movntq(self, op0, op1);
2510 }
2511 #[inline]
2523 pub fn mmx_movq2dq<A, B>(&mut self, op0: A, op1: B)
2524 where
2525 Assembler<'a>: MmxMovq2dqEmitter<A, B>,
2526 {
2527 <Self as MmxMovq2dqEmitter<A, B>>::mmx_movq2dq(self, op0, op1);
2528 }
2529 #[inline]
2542 pub fn mmx_pavgb<A, B>(&mut self, op0: A, op1: B)
2543 where
2544 Assembler<'a>: MmxPavgbEmitter<A, B>,
2545 {
2546 <Self as MmxPavgbEmitter<A, B>>::mmx_pavgb(self, op0, op1);
2547 }
2548 #[inline]
2561 pub fn mmx_pavgw<A, B>(&mut self, op0: A, op1: B)
2562 where
2563 Assembler<'a>: MmxPavgwEmitter<A, B>,
2564 {
2565 <Self as MmxPavgwEmitter<A, B>>::mmx_pavgw(self, op0, op1);
2566 }
2567 #[inline]
2579 pub fn mmx_pextrw<A, B, C>(&mut self, op0: A, op1: B, op2: C)
2580 where
2581 Assembler<'a>: MmxPextrwEmitter<A, B, C>,
2582 {
2583 <Self as MmxPextrwEmitter<A, B, C>>::mmx_pextrw(self, op0, op1, op2);
2584 }
2585 #[inline]
2598 pub fn mmx_pinsrw<A, B, C>(&mut self, op0: A, op1: B, op2: C)
2599 where
2600 Assembler<'a>: MmxPinsrwEmitter<A, B, C>,
2601 {
2602 <Self as MmxPinsrwEmitter<A, B, C>>::mmx_pinsrw(self, op0, op1, op2);
2603 }
2604 #[inline]
2617 pub fn mmx_pmaxsw<A, B>(&mut self, op0: A, op1: B)
2618 where
2619 Assembler<'a>: MmxPmaxswEmitter<A, B>,
2620 {
2621 <Self as MmxPmaxswEmitter<A, B>>::mmx_pmaxsw(self, op0, op1);
2622 }
2623 #[inline]
2636 pub fn mmx_pmaxub<A, B>(&mut self, op0: A, op1: B)
2637 where
2638 Assembler<'a>: MmxPmaxubEmitter<A, B>,
2639 {
2640 <Self as MmxPmaxubEmitter<A, B>>::mmx_pmaxub(self, op0, op1);
2641 }
2642 #[inline]
2655 pub fn mmx_pminsw<A, B>(&mut self, op0: A, op1: B)
2656 where
2657 Assembler<'a>: MmxPminswEmitter<A, B>,
2658 {
2659 <Self as MmxPminswEmitter<A, B>>::mmx_pminsw(self, op0, op1);
2660 }
2661 #[inline]
2674 pub fn mmx_pminub<A, B>(&mut self, op0: A, op1: B)
2675 where
2676 Assembler<'a>: MmxPminubEmitter<A, B>,
2677 {
2678 <Self as MmxPminubEmitter<A, B>>::mmx_pminub(self, op0, op1);
2679 }
2680 #[inline]
2692 pub fn mmx_pmovmskb<A, B>(&mut self, op0: A, op1: B)
2693 where
2694 Assembler<'a>: MmxPmovmskbEmitter<A, B>,
2695 {
2696 <Self as MmxPmovmskbEmitter<A, B>>::mmx_pmovmskb(self, op0, op1);
2697 }
2698 #[inline]
2711 pub fn mmx_pmulhuw<A, B>(&mut self, op0: A, op1: B)
2712 where
2713 Assembler<'a>: MmxPmulhuwEmitter<A, B>,
2714 {
2715 <Self as MmxPmulhuwEmitter<A, B>>::mmx_pmulhuw(self, op0, op1);
2716 }
2717 #[inline]
2730 pub fn mmx_psadbw<A, B>(&mut self, op0: A, op1: B)
2731 where
2732 Assembler<'a>: MmxPsadbwEmitter<A, B>,
2733 {
2734 <Self as MmxPsadbwEmitter<A, B>>::mmx_psadbw(self, op0, op1);
2735 }
2736 #[inline]
2749 pub fn mmx_pshufw<A, B, C>(&mut self, op0: A, op1: B, op2: C)
2750 where
2751 Assembler<'a>: MmxPshufwEmitter<A, B, C>,
2752 {
2753 <Self as MmxPshufwEmitter<A, B, C>>::mmx_pshufw(self, op0, op1, op2);
2754 }
2755 #[inline]
2767 pub fn prefetchnta<A>(&mut self, op0: A)
2768 where
2769 Assembler<'a>: PrefetchntaEmitter<A>,
2770 {
2771 <Self as PrefetchntaEmitter<A>>::prefetchnta(self, op0);
2772 }
2773 #[inline]
2785 pub fn prefetcht0<A>(&mut self, op0: A)
2786 where
2787 Assembler<'a>: Prefetcht0Emitter<A>,
2788 {
2789 <Self as Prefetcht0Emitter<A>>::prefetcht0(self, op0);
2790 }
2791 #[inline]
2803 pub fn prefetcht1<A>(&mut self, op0: A)
2804 where
2805 Assembler<'a>: Prefetcht1Emitter<A>,
2806 {
2807 <Self as Prefetcht1Emitter<A>>::prefetcht1(self, op0);
2808 }
2809 #[inline]
2821 pub fn prefetcht2<A>(&mut self, op0: A)
2822 where
2823 Assembler<'a>: Prefetcht2Emitter<A>,
2824 {
2825 <Self as Prefetcht2Emitter<A>>::prefetcht2(self, op0);
2826 }
2827 #[inline]
2839 pub fn sfence(&mut self)
2840 where
2841 Assembler<'a>: SfenceEmitter,
2842 {
2843 <Self as SfenceEmitter>::sfence(self);
2844 }
2845 #[inline]
2858 pub fn sse_addps<A, B>(&mut self, op0: A, op1: B)
2859 where
2860 Assembler<'a>: SseAddpsEmitter<A, B>,
2861 {
2862 <Self as SseAddpsEmitter<A, B>>::sse_addps(self, op0, op1);
2863 }
2864 #[inline]
2877 pub fn sse_addss<A, B>(&mut self, op0: A, op1: B)
2878 where
2879 Assembler<'a>: SseAddssEmitter<A, B>,
2880 {
2881 <Self as SseAddssEmitter<A, B>>::sse_addss(self, op0, op1);
2882 }
2883 #[inline]
2896 pub fn sse_andnps<A, B>(&mut self, op0: A, op1: B)
2897 where
2898 Assembler<'a>: SseAndnpsEmitter<A, B>,
2899 {
2900 <Self as SseAndnpsEmitter<A, B>>::sse_andnps(self, op0, op1);
2901 }
2902 #[inline]
2915 pub fn sse_andps<A, B>(&mut self, op0: A, op1: B)
2916 where
2917 Assembler<'a>: SseAndpsEmitter<A, B>,
2918 {
2919 <Self as SseAndpsEmitter<A, B>>::sse_andps(self, op0, op1);
2920 }
2921 #[inline]
2934 pub fn sse_cmpps<A, B, C>(&mut self, op0: A, op1: B, op2: C)
2935 where
2936 Assembler<'a>: SseCmppsEmitter<A, B, C>,
2937 {
2938 <Self as SseCmppsEmitter<A, B, C>>::sse_cmpps(self, op0, op1, op2);
2939 }
2940 #[inline]
2953 pub fn sse_cmpss<A, B, C>(&mut self, op0: A, op1: B, op2: C)
2954 where
2955 Assembler<'a>: SseCmpssEmitter<A, B, C>,
2956 {
2957 <Self as SseCmpssEmitter<A, B, C>>::sse_cmpss(self, op0, op1, op2);
2958 }
2959 #[inline]
2972 pub fn sse_comiss<A, B>(&mut self, op0: A, op1: B)
2973 where
2974 Assembler<'a>: SseComissEmitter<A, B>,
2975 {
2976 <Self as SseComissEmitter<A, B>>::sse_comiss(self, op0, op1);
2977 }
2978 #[inline]
2992 pub fn sse_cvtsi2ss<A, B>(&mut self, op0: A, op1: B)
2993 where
2994 Assembler<'a>: SseCvtsi2ssEmitter<A, B>,
2995 {
2996 <Self as SseCvtsi2ssEmitter<A, B>>::sse_cvtsi2ss(self, op0, op1);
2997 }
2998 #[inline]
3013 pub fn sse_cvtss2si<A, B>(&mut self, op0: A, op1: B)
3014 where
3015 Assembler<'a>: SseCvtss2siEmitter<A, B>,
3016 {
3017 <Self as SseCvtss2siEmitter<A, B>>::sse_cvtss2si(self, op0, op1);
3018 }
3019 #[inline]
3034 pub fn sse_cvttss2si<A, B>(&mut self, op0: A, op1: B)
3035 where
3036 Assembler<'a>: SseCvttss2siEmitter<A, B>,
3037 {
3038 <Self as SseCvttss2siEmitter<A, B>>::sse_cvttss2si(self, op0, op1);
3039 }
3040 #[inline]
3053 pub fn sse_divps<A, B>(&mut self, op0: A, op1: B)
3054 where
3055 Assembler<'a>: SseDivpsEmitter<A, B>,
3056 {
3057 <Self as SseDivpsEmitter<A, B>>::sse_divps(self, op0, op1);
3058 }
3059 #[inline]
3072 pub fn sse_divss<A, B>(&mut self, op0: A, op1: B)
3073 where
3074 Assembler<'a>: SseDivssEmitter<A, B>,
3075 {
3076 <Self as SseDivssEmitter<A, B>>::sse_divss(self, op0, op1);
3077 }
3078 #[inline]
3091 pub fn sse_maxps<A, B>(&mut self, op0: A, op1: B)
3092 where
3093 Assembler<'a>: SseMaxpsEmitter<A, B>,
3094 {
3095 <Self as SseMaxpsEmitter<A, B>>::sse_maxps(self, op0, op1);
3096 }
3097 #[inline]
3110 pub fn sse_maxss<A, B>(&mut self, op0: A, op1: B)
3111 where
3112 Assembler<'a>: SseMaxssEmitter<A, B>,
3113 {
3114 <Self as SseMaxssEmitter<A, B>>::sse_maxss(self, op0, op1);
3115 }
3116 #[inline]
3129 pub fn sse_minps<A, B>(&mut self, op0: A, op1: B)
3130 where
3131 Assembler<'a>: SseMinpsEmitter<A, B>,
3132 {
3133 <Self as SseMinpsEmitter<A, B>>::sse_minps(self, op0, op1);
3134 }
3135 #[inline]
3148 pub fn sse_minss<A, B>(&mut self, op0: A, op1: B)
3149 where
3150 Assembler<'a>: SseMinssEmitter<A, B>,
3151 {
3152 <Self as SseMinssEmitter<A, B>>::sse_minss(self, op0, op1);
3153 }
3154 #[inline]
3168 pub fn sse_movaps<A, B>(&mut self, op0: A, op1: B)
3169 where
3170 Assembler<'a>: SseMovapsEmitter<A, B>,
3171 {
3172 <Self as SseMovapsEmitter<A, B>>::sse_movaps(self, op0, op1);
3173 }
3174 #[inline]
3186 pub fn sse_movhlps<A, B>(&mut self, op0: A, op1: B)
3187 where
3188 Assembler<'a>: SseMovhlpsEmitter<A, B>,
3189 {
3190 <Self as SseMovhlpsEmitter<A, B>>::sse_movhlps(self, op0, op1);
3191 }
3192 #[inline]
3205 pub fn sse_movhps<A, B>(&mut self, op0: A, op1: B)
3206 where
3207 Assembler<'a>: SseMovhpsEmitter<A, B>,
3208 {
3209 <Self as SseMovhpsEmitter<A, B>>::sse_movhps(self, op0, op1);
3210 }
3211 #[inline]
3223 pub fn sse_movlhps<A, B>(&mut self, op0: A, op1: B)
3224 where
3225 Assembler<'a>: SseMovlhpsEmitter<A, B>,
3226 {
3227 <Self as SseMovlhpsEmitter<A, B>>::sse_movlhps(self, op0, op1);
3228 }
3229 #[inline]
3242 pub fn sse_movlps<A, B>(&mut self, op0: A, op1: B)
3243 where
3244 Assembler<'a>: SseMovlpsEmitter<A, B>,
3245 {
3246 <Self as SseMovlpsEmitter<A, B>>::sse_movlps(self, op0, op1);
3247 }
3248 #[inline]
3260 pub fn sse_movmskps<A, B>(&mut self, op0: A, op1: B)
3261 where
3262 Assembler<'a>: SseMovmskpsEmitter<A, B>,
3263 {
3264 <Self as SseMovmskpsEmitter<A, B>>::sse_movmskps(self, op0, op1);
3265 }
3266 #[inline]
3278 pub fn sse_movntps<A, B>(&mut self, op0: A, op1: B)
3279 where
3280 Assembler<'a>: SseMovntpsEmitter<A, B>,
3281 {
3282 <Self as SseMovntpsEmitter<A, B>>::sse_movntps(self, op0, op1);
3283 }
3284 #[inline]
3296 pub fn sse_movntss<A, B>(&mut self, op0: A, op1: B)
3297 where
3298 Assembler<'a>: SseMovntssEmitter<A, B>,
3299 {
3300 <Self as SseMovntssEmitter<A, B>>::sse_movntss(self, op0, op1);
3301 }
3302 #[inline]
3316 pub fn sse_movss<A, B>(&mut self, op0: A, op1: B)
3317 where
3318 Assembler<'a>: SseMovssEmitter<A, B>,
3319 {
3320 <Self as SseMovssEmitter<A, B>>::sse_movss(self, op0, op1);
3321 }
3322 #[inline]
3336 pub fn sse_movups<A, B>(&mut self, op0: A, op1: B)
3337 where
3338 Assembler<'a>: SseMovupsEmitter<A, B>,
3339 {
3340 <Self as SseMovupsEmitter<A, B>>::sse_movups(self, op0, op1);
3341 }
3342 #[inline]
3355 pub fn sse_mulps<A, B>(&mut self, op0: A, op1: B)
3356 where
3357 Assembler<'a>: SseMulpsEmitter<A, B>,
3358 {
3359 <Self as SseMulpsEmitter<A, B>>::sse_mulps(self, op0, op1);
3360 }
3361 #[inline]
3374 pub fn sse_mulss<A, B>(&mut self, op0: A, op1: B)
3375 where
3376 Assembler<'a>: SseMulssEmitter<A, B>,
3377 {
3378 <Self as SseMulssEmitter<A, B>>::sse_mulss(self, op0, op1);
3379 }
3380 #[inline]
3393 pub fn sse_orps<A, B>(&mut self, op0: A, op1: B)
3394 where
3395 Assembler<'a>: SseOrpsEmitter<A, B>,
3396 {
3397 <Self as SseOrpsEmitter<A, B>>::sse_orps(self, op0, op1);
3398 }
3399 #[inline]
3412 pub fn sse_rcpps<A, B>(&mut self, op0: A, op1: B)
3413 where
3414 Assembler<'a>: SseRcppsEmitter<A, B>,
3415 {
3416 <Self as SseRcppsEmitter<A, B>>::sse_rcpps(self, op0, op1);
3417 }
3418 #[inline]
3431 pub fn sse_rcpss<A, B>(&mut self, op0: A, op1: B)
3432 where
3433 Assembler<'a>: SseRcpssEmitter<A, B>,
3434 {
3435 <Self as SseRcpssEmitter<A, B>>::sse_rcpss(self, op0, op1);
3436 }
3437 #[inline]
3450 pub fn sse_rsqrtps<A, B>(&mut self, op0: A, op1: B)
3451 where
3452 Assembler<'a>: SseRsqrtpsEmitter<A, B>,
3453 {
3454 <Self as SseRsqrtpsEmitter<A, B>>::sse_rsqrtps(self, op0, op1);
3455 }
3456 #[inline]
3469 pub fn sse_rsqrtss<A, B>(&mut self, op0: A, op1: B)
3470 where
3471 Assembler<'a>: SseRsqrtssEmitter<A, B>,
3472 {
3473 <Self as SseRsqrtssEmitter<A, B>>::sse_rsqrtss(self, op0, op1);
3474 }
3475 #[inline]
3488 pub fn sse_shufps<A, B, C>(&mut self, op0: A, op1: B, op2: C)
3489 where
3490 Assembler<'a>: SseShufpsEmitter<A, B, C>,
3491 {
3492 <Self as SseShufpsEmitter<A, B, C>>::sse_shufps(self, op0, op1, op2);
3493 }
3494 #[inline]
3507 pub fn sse_sqrtps<A, B>(&mut self, op0: A, op1: B)
3508 where
3509 Assembler<'a>: SseSqrtpsEmitter<A, B>,
3510 {
3511 <Self as SseSqrtpsEmitter<A, B>>::sse_sqrtps(self, op0, op1);
3512 }
3513 #[inline]
3526 pub fn sse_sqrtss<A, B>(&mut self, op0: A, op1: B)
3527 where
3528 Assembler<'a>: SseSqrtssEmitter<A, B>,
3529 {
3530 <Self as SseSqrtssEmitter<A, B>>::sse_sqrtss(self, op0, op1);
3531 }
3532 #[inline]
3545 pub fn sse_subps<A, B>(&mut self, op0: A, op1: B)
3546 where
3547 Assembler<'a>: SseSubpsEmitter<A, B>,
3548 {
3549 <Self as SseSubpsEmitter<A, B>>::sse_subps(self, op0, op1);
3550 }
3551 #[inline]
3564 pub fn sse_subss<A, B>(&mut self, op0: A, op1: B)
3565 where
3566 Assembler<'a>: SseSubssEmitter<A, B>,
3567 {
3568 <Self as SseSubssEmitter<A, B>>::sse_subss(self, op0, op1);
3569 }
3570 #[inline]
3583 pub fn sse_ucomiss<A, B>(&mut self, op0: A, op1: B)
3584 where
3585 Assembler<'a>: SseUcomissEmitter<A, B>,
3586 {
3587 <Self as SseUcomissEmitter<A, B>>::sse_ucomiss(self, op0, op1);
3588 }
3589 #[inline]
3602 pub fn sse_unpckhps<A, B>(&mut self, op0: A, op1: B)
3603 where
3604 Assembler<'a>: SseUnpckhpsEmitter<A, B>,
3605 {
3606 <Self as SseUnpckhpsEmitter<A, B>>::sse_unpckhps(self, op0, op1);
3607 }
3608 #[inline]
3621 pub fn sse_unpcklps<A, B>(&mut self, op0: A, op1: B)
3622 where
3623 Assembler<'a>: SseUnpcklpsEmitter<A, B>,
3624 {
3625 <Self as SseUnpcklpsEmitter<A, B>>::sse_unpcklps(self, op0, op1);
3626 }
3627 #[inline]
3640 pub fn sse_xorps<A, B>(&mut self, op0: A, op1: B)
3641 where
3642 Assembler<'a>: SseXorpsEmitter<A, B>,
3643 {
3644 <Self as SseXorpsEmitter<A, B>>::sse_xorps(self, op0, op1);
3645 }
3646 #[inline]
3658 pub fn stmxcsr<A>(&mut self, op0: A)
3659 where
3660 Assembler<'a>: StmxcsrEmitter<A>,
3661 {
3662 <Self as StmxcsrEmitter<A>>::stmxcsr(self, op0);
3663 }
3664}