asmkit/x86/features/387.rs
1use super::super::opcodes::*;
2use crate::core::emitter::*;
3use crate::core::operand::*;
4use crate::x86::assembler::*;
5use crate::x86::operands::*;
6
7/// A dummy operand that represents no register. Here just for simplicity.
8const NOREG: Operand = Operand::new();
9
10/// `F2XM1`.
11///
12/// Supported operand variants:
13///
14/// ```text
15/// +---+----------+
16/// | # | Operands |
17/// +---+----------+
18/// | 1 | (none) |
19/// +---+----------+
20/// ```
21pub trait F2xm1Emitter {
22 fn f2xm1(&mut self);
23}
24
25impl<'a> F2xm1Emitter for Assembler<'a> {
26 fn f2xm1(&mut self) {
27 self.emit(F2XM1, &NOREG, &NOREG, &NOREG, &NOREG);
28 }
29}
30
31/// `FABS`.
32///
33/// Supported operand variants:
34///
35/// ```text
36/// +---+----------+
37/// | # | Operands |
38/// +---+----------+
39/// | 1 | (none) |
40/// +---+----------+
41/// ```
42pub trait FabsEmitter {
43 fn fabs(&mut self);
44}
45
46impl<'a> FabsEmitter for Assembler<'a> {
47 fn fabs(&mut self) {
48 self.emit(FABS, &NOREG, &NOREG, &NOREG, &NOREG);
49 }
50}
51
52/// `FADD`.
53///
54/// Supported operand variants:
55///
56/// ```text
57/// +---+----------+
58/// | # | Operands |
59/// +---+----------+
60/// | 1 | Mem |
61/// +---+----------+
62/// ```
63pub trait FaddEmitter_1<A> {
64 fn fadd_1(&mut self, op0: A);
65}
66
67impl<'a> FaddEmitter_1<Mem> for Assembler<'a> {
68 fn fadd_1(&mut self, op0: Mem) {
69 self.emit(FADDM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
70 }
71}
72
73/// `FADD`.
74///
75/// Supported operand variants:
76///
77/// ```text
78/// +---+----------+
79/// | # | Operands |
80/// +---+----------+
81/// | 1 | St, St |
82/// +---+----------+
83/// ```
84pub trait FaddEmitter_2<A, B> {
85 fn fadd_2(&mut self, op0: A, op1: B);
86}
87
88impl<'a> FaddEmitter_2<St, St> for Assembler<'a> {
89 fn fadd_2(&mut self, op0: St, op1: St) {
90 self.emit(FADDRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
91 }
92}
93
94/// `FADDP`.
95///
96/// Supported operand variants:
97///
98/// ```text
99/// +---+----------+
100/// | # | Operands |
101/// +---+----------+
102/// | 1 | St, St |
103/// +---+----------+
104/// ```
105pub trait FaddpEmitter<A, B> {
106 fn faddp(&mut self, op0: A, op1: B);
107}
108
109impl<'a> FaddpEmitter<St, St> for Assembler<'a> {
110 fn faddp(&mut self, op0: St, op1: St) {
111 self.emit(FADDPRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
112 }
113}
114
115/// `FBLD`.
116///
117/// Supported operand variants:
118///
119/// ```text
120/// +---+----------+
121/// | # | Operands |
122/// +---+----------+
123/// | 1 | Mem |
124/// +---+----------+
125/// ```
126pub trait FbldEmitter<A> {
127 fn fbld(&mut self, op0: A);
128}
129
130impl<'a> FbldEmitter<Mem> for Assembler<'a> {
131 fn fbld(&mut self, op0: Mem) {
132 self.emit(FBLDM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
133 }
134}
135
136/// `FBSTP`.
137///
138/// Supported operand variants:
139///
140/// ```text
141/// +---+----------+
142/// | # | Operands |
143/// +---+----------+
144/// | 1 | Mem |
145/// +---+----------+
146/// ```
147pub trait FbstpEmitter<A> {
148 fn fbstp(&mut self, op0: A);
149}
150
151impl<'a> FbstpEmitter<Mem> for Assembler<'a> {
152 fn fbstp(&mut self, op0: Mem) {
153 self.emit(FBSTPM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
154 }
155}
156
157/// `FCHS`.
158///
159/// Supported operand variants:
160///
161/// ```text
162/// +---+----------+
163/// | # | Operands |
164/// +---+----------+
165/// | 1 | (none) |
166/// +---+----------+
167/// ```
168pub trait FchsEmitter {
169 fn fchs(&mut self);
170}
171
172impl<'a> FchsEmitter for Assembler<'a> {
173 fn fchs(&mut self) {
174 self.emit(FCHS, &NOREG, &NOREG, &NOREG, &NOREG);
175 }
176}
177
178/// `FCLEX`.
179///
180/// Supported operand variants:
181///
182/// ```text
183/// +---+----------+
184/// | # | Operands |
185/// +---+----------+
186/// | 1 | (none) |
187/// +---+----------+
188/// ```
189pub trait FclexEmitter {
190 fn fclex(&mut self);
191}
192
193impl<'a> FclexEmitter for Assembler<'a> {
194 fn fclex(&mut self) {
195 self.emit(FCLEX, &NOREG, &NOREG, &NOREG, &NOREG);
196 }
197}
198
199/// `FCOM`.
200///
201/// Supported operand variants:
202///
203/// ```text
204/// +---+----------+
205/// | # | Operands |
206/// +---+----------+
207/// | 1 | Mem |
208/// +---+----------+
209/// ```
210pub trait FcomEmitter_1<A> {
211 fn fcom_1(&mut self, op0: A);
212}
213
214impl<'a> FcomEmitter_1<Mem> for Assembler<'a> {
215 fn fcom_1(&mut self, op0: Mem) {
216 self.emit(FCOMM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
217 }
218}
219
220/// `FCOM`.
221///
222/// Supported operand variants:
223///
224/// ```text
225/// +---+----------+
226/// | # | Operands |
227/// +---+----------+
228/// | 1 | St, St |
229/// +---+----------+
230/// ```
231pub trait FcomEmitter_2<A, B> {
232 fn fcom_2(&mut self, op0: A, op1: B);
233}
234
235impl<'a> FcomEmitter_2<St, St> for Assembler<'a> {
236 fn fcom_2(&mut self, op0: St, op1: St) {
237 self.emit(FCOMRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
238 }
239}
240
241/// `FCOMP`.
242///
243/// Supported operand variants:
244///
245/// ```text
246/// +---+----------+
247/// | # | Operands |
248/// +---+----------+
249/// | 1 | Mem |
250/// +---+----------+
251/// ```
252pub trait FcompEmitter_1<A> {
253 fn fcomp_1(&mut self, op0: A);
254}
255
256impl<'a> FcompEmitter_1<Mem> for Assembler<'a> {
257 fn fcomp_1(&mut self, op0: Mem) {
258 self.emit(FCOMPM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
259 }
260}
261
262/// `FCOMP`.
263///
264/// Supported operand variants:
265///
266/// ```text
267/// +---+----------+
268/// | # | Operands |
269/// +---+----------+
270/// | 1 | St, St |
271/// +---+----------+
272/// ```
273pub trait FcompEmitter_2<A, B> {
274 fn fcomp_2(&mut self, op0: A, op1: B);
275}
276
277impl<'a> FcompEmitter_2<St, St> for Assembler<'a> {
278 fn fcomp_2(&mut self, op0: St, op1: St) {
279 self.emit(FCOMPRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
280 }
281}
282
283/// `FCOMPP`.
284///
285/// Supported operand variants:
286///
287/// ```text
288/// +---+----------+
289/// | # | Operands |
290/// +---+----------+
291/// | 1 | (none) |
292/// +---+----------+
293/// ```
294pub trait FcomppEmitter {
295 fn fcompp(&mut self);
296}
297
298impl<'a> FcomppEmitter for Assembler<'a> {
299 fn fcompp(&mut self) {
300 self.emit(FCOMPP, &NOREG, &NOREG, &NOREG, &NOREG);
301 }
302}
303
304/// `FCOS`.
305///
306/// Supported operand variants:
307///
308/// ```text
309/// +---+----------+
310/// | # | Operands |
311/// +---+----------+
312/// | 1 | (none) |
313/// +---+----------+
314/// ```
315pub trait FcosEmitter {
316 fn fcos(&mut self);
317}
318
319impl<'a> FcosEmitter for Assembler<'a> {
320 fn fcos(&mut self) {
321 self.emit(FCOS, &NOREG, &NOREG, &NOREG, &NOREG);
322 }
323}
324
325/// `FDECSTP`.
326///
327/// Supported operand variants:
328///
329/// ```text
330/// +---+----------+
331/// | # | Operands |
332/// +---+----------+
333/// | 1 | (none) |
334/// +---+----------+
335/// ```
336pub trait FdecstpEmitter {
337 fn fdecstp(&mut self);
338}
339
340impl<'a> FdecstpEmitter for Assembler<'a> {
341 fn fdecstp(&mut self) {
342 self.emit(FDECSTP, &NOREG, &NOREG, &NOREG, &NOREG);
343 }
344}
345
346/// `FDIV`.
347///
348/// Supported operand variants:
349///
350/// ```text
351/// +---+----------+
352/// | # | Operands |
353/// +---+----------+
354/// | 1 | Mem |
355/// +---+----------+
356/// ```
357pub trait FdivEmitter_1<A> {
358 fn fdiv_1(&mut self, op0: A);
359}
360
361impl<'a> FdivEmitter_1<Mem> for Assembler<'a> {
362 fn fdiv_1(&mut self, op0: Mem) {
363 self.emit(FDIVM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
364 }
365}
366
367/// `FDIV`.
368///
369/// Supported operand variants:
370///
371/// ```text
372/// +---+----------+
373/// | # | Operands |
374/// +---+----------+
375/// | 1 | St, St |
376/// +---+----------+
377/// ```
378pub trait FdivEmitter_2<A, B> {
379 fn fdiv_2(&mut self, op0: A, op1: B);
380}
381
382impl<'a> FdivEmitter_2<St, St> for Assembler<'a> {
383 fn fdiv_2(&mut self, op0: St, op1: St) {
384 self.emit(FDIVRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
385 }
386}
387
388/// `FDIVP`.
389///
390/// Supported operand variants:
391///
392/// ```text
393/// +---+----------+
394/// | # | Operands |
395/// +---+----------+
396/// | 1 | St, St |
397/// +---+----------+
398/// ```
399pub trait FdivpEmitter<A, B> {
400 fn fdivp(&mut self, op0: A, op1: B);
401}
402
403impl<'a> FdivpEmitter<St, St> for Assembler<'a> {
404 fn fdivp(&mut self, op0: St, op1: St) {
405 self.emit(FDIVPRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
406 }
407}
408
409/// `FDIVR`.
410///
411/// Supported operand variants:
412///
413/// ```text
414/// +---+----------+
415/// | # | Operands |
416/// +---+----------+
417/// | 1 | Mem |
418/// +---+----------+
419/// ```
420pub trait FdivrEmitter_1<A> {
421 fn fdivr_1(&mut self, op0: A);
422}
423
424impl<'a> FdivrEmitter_1<Mem> for Assembler<'a> {
425 fn fdivr_1(&mut self, op0: Mem) {
426 self.emit(FDIVRM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
427 }
428}
429
430/// `FDIVR`.
431///
432/// Supported operand variants:
433///
434/// ```text
435/// +---+----------+
436/// | # | Operands |
437/// +---+----------+
438/// | 1 | St, St |
439/// +---+----------+
440/// ```
441pub trait FdivrEmitter_2<A, B> {
442 fn fdivr_2(&mut self, op0: A, op1: B);
443}
444
445impl<'a> FdivrEmitter_2<St, St> for Assembler<'a> {
446 fn fdivr_2(&mut self, op0: St, op1: St) {
447 self.emit(FDIVRRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
448 }
449}
450
451/// `FDIVRP`.
452///
453/// Supported operand variants:
454///
455/// ```text
456/// +---+----------+
457/// | # | Operands |
458/// +---+----------+
459/// | 1 | St, St |
460/// +---+----------+
461/// ```
462pub trait FdivrpEmitter<A, B> {
463 fn fdivrp(&mut self, op0: A, op1: B);
464}
465
466impl<'a> FdivrpEmitter<St, St> for Assembler<'a> {
467 fn fdivrp(&mut self, op0: St, op1: St) {
468 self.emit(FDIVRPRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
469 }
470}
471
472/// `FFREE`.
473///
474/// Supported operand variants:
475///
476/// ```text
477/// +---+----------+
478/// | # | Operands |
479/// +---+----------+
480/// | 1 | St |
481/// +---+----------+
482/// ```
483pub trait FfreeEmitter<A> {
484 fn ffree(&mut self, op0: A);
485}
486
487impl<'a> FfreeEmitter<St> for Assembler<'a> {
488 fn ffree(&mut self, op0: St) {
489 self.emit(FFREER, op0.as_operand(), &NOREG, &NOREG, &NOREG);
490 }
491}
492
493/// `FIADD`.
494///
495/// Supported operand variants:
496///
497/// ```text
498/// +---+----------+
499/// | # | Operands |
500/// +---+----------+
501/// | 1 | Mem |
502/// +---+----------+
503/// ```
504pub trait FiaddEmitter<A> {
505 fn fiadd(&mut self, op0: A);
506}
507
508impl<'a> FiaddEmitter<Mem> for Assembler<'a> {
509 fn fiadd(&mut self, op0: Mem) {
510 self.emit(FIADDM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
511 }
512}
513
514/// `FICOM`.
515///
516/// Supported operand variants:
517///
518/// ```text
519/// +---+----------+
520/// | # | Operands |
521/// +---+----------+
522/// | 1 | Mem |
523/// +---+----------+
524/// ```
525pub trait FicomEmitter<A> {
526 fn ficom(&mut self, op0: A);
527}
528
529impl<'a> FicomEmitter<Mem> for Assembler<'a> {
530 fn ficom(&mut self, op0: Mem) {
531 self.emit(FICOMM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
532 }
533}
534
535/// `FICOMP`.
536///
537/// Supported operand variants:
538///
539/// ```text
540/// +---+----------+
541/// | # | Operands |
542/// +---+----------+
543/// | 1 | Mem |
544/// +---+----------+
545/// ```
546pub trait FicompEmitter<A> {
547 fn ficomp(&mut self, op0: A);
548}
549
550impl<'a> FicompEmitter<Mem> for Assembler<'a> {
551 fn ficomp(&mut self, op0: Mem) {
552 self.emit(FICOMPM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
553 }
554}
555
556/// `FIDIV`.
557///
558/// Supported operand variants:
559///
560/// ```text
561/// +---+----------+
562/// | # | Operands |
563/// +---+----------+
564/// | 1 | Mem |
565/// +---+----------+
566/// ```
567pub trait FidivEmitter<A> {
568 fn fidiv(&mut self, op0: A);
569}
570
571impl<'a> FidivEmitter<Mem> for Assembler<'a> {
572 fn fidiv(&mut self, op0: Mem) {
573 self.emit(FIDIVM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
574 }
575}
576
577/// `FIDIVR`.
578///
579/// Supported operand variants:
580///
581/// ```text
582/// +---+----------+
583/// | # | Operands |
584/// +---+----------+
585/// | 1 | Mem |
586/// +---+----------+
587/// ```
588pub trait FidivrEmitter<A> {
589 fn fidivr(&mut self, op0: A);
590}
591
592impl<'a> FidivrEmitter<Mem> for Assembler<'a> {
593 fn fidivr(&mut self, op0: Mem) {
594 self.emit(FIDIVRM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
595 }
596}
597
598/// `FILD`.
599///
600/// Supported operand variants:
601///
602/// ```text
603/// +---+----------+
604/// | # | Operands |
605/// +---+----------+
606/// | 1 | Mem |
607/// +---+----------+
608/// ```
609pub trait FildEmitter<A> {
610 fn fild(&mut self, op0: A);
611}
612
613impl<'a> FildEmitter<Mem> for Assembler<'a> {
614 fn fild(&mut self, op0: Mem) {
615 self.emit(FILDM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
616 }
617}
618
619/// `FIMUL`.
620///
621/// Supported operand variants:
622///
623/// ```text
624/// +---+----------+
625/// | # | Operands |
626/// +---+----------+
627/// | 1 | Mem |
628/// +---+----------+
629/// ```
630pub trait FimulEmitter<A> {
631 fn fimul(&mut self, op0: A);
632}
633
634impl<'a> FimulEmitter<Mem> for Assembler<'a> {
635 fn fimul(&mut self, op0: Mem) {
636 self.emit(FIMULM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
637 }
638}
639
640/// `FINCSTP`.
641///
642/// Supported operand variants:
643///
644/// ```text
645/// +---+----------+
646/// | # | Operands |
647/// +---+----------+
648/// | 1 | (none) |
649/// +---+----------+
650/// ```
651pub trait FincstpEmitter {
652 fn fincstp(&mut self);
653}
654
655impl<'a> FincstpEmitter for Assembler<'a> {
656 fn fincstp(&mut self) {
657 self.emit(FINCSTP, &NOREG, &NOREG, &NOREG, &NOREG);
658 }
659}
660
661/// `FINIT`.
662///
663/// Supported operand variants:
664///
665/// ```text
666/// +---+----------+
667/// | # | Operands |
668/// +---+----------+
669/// | 1 | (none) |
670/// +---+----------+
671/// ```
672pub trait FinitEmitter {
673 fn finit(&mut self);
674}
675
676impl<'a> FinitEmitter for Assembler<'a> {
677 fn finit(&mut self) {
678 self.emit(FINIT, &NOREG, &NOREG, &NOREG, &NOREG);
679 }
680}
681
682/// `FIST`.
683///
684/// Supported operand variants:
685///
686/// ```text
687/// +---+----------+
688/// | # | Operands |
689/// +---+----------+
690/// | 1 | Mem |
691/// +---+----------+
692/// ```
693pub trait FistEmitter<A> {
694 fn fist(&mut self, op0: A);
695}
696
697impl<'a> FistEmitter<Mem> for Assembler<'a> {
698 fn fist(&mut self, op0: Mem) {
699 self.emit(FISTM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
700 }
701}
702
703/// `FISTP`.
704///
705/// Supported operand variants:
706///
707/// ```text
708/// +---+----------+
709/// | # | Operands |
710/// +---+----------+
711/// | 1 | Mem |
712/// +---+----------+
713/// ```
714pub trait FistpEmitter<A> {
715 fn fistp(&mut self, op0: A);
716}
717
718impl<'a> FistpEmitter<Mem> for Assembler<'a> {
719 fn fistp(&mut self, op0: Mem) {
720 self.emit(FISTPM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
721 }
722}
723
724/// `FISUB`.
725///
726/// Supported operand variants:
727///
728/// ```text
729/// +---+----------+
730/// | # | Operands |
731/// +---+----------+
732/// | 1 | Mem |
733/// +---+----------+
734/// ```
735pub trait FisubEmitter<A> {
736 fn fisub(&mut self, op0: A);
737}
738
739impl<'a> FisubEmitter<Mem> for Assembler<'a> {
740 fn fisub(&mut self, op0: Mem) {
741 self.emit(FISUBM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
742 }
743}
744
745/// `FISUBR`.
746///
747/// Supported operand variants:
748///
749/// ```text
750/// +---+----------+
751/// | # | Operands |
752/// +---+----------+
753/// | 1 | Mem |
754/// +---+----------+
755/// ```
756pub trait FisubrEmitter<A> {
757 fn fisubr(&mut self, op0: A);
758}
759
760impl<'a> FisubrEmitter<Mem> for Assembler<'a> {
761 fn fisubr(&mut self, op0: Mem) {
762 self.emit(FISUBRM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
763 }
764}
765
766/// `FLD`.
767///
768/// Supported operand variants:
769///
770/// ```text
771/// +---+----------+
772/// | # | Operands |
773/// +---+----------+
774/// | 1 | Mem |
775/// | 2 | St |
776/// +---+----------+
777/// ```
778pub trait FldEmitter<A> {
779 fn fld(&mut self, op0: A);
780}
781
782impl<'a> FldEmitter<Mem> for Assembler<'a> {
783 fn fld(&mut self, op0: Mem) {
784 self.emit(FLDM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
785 }
786}
787
788impl<'a> FldEmitter<St> for Assembler<'a> {
789 fn fld(&mut self, op0: St) {
790 self.emit(FLDR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
791 }
792}
793
794/// `FLD1`.
795///
796/// Supported operand variants:
797///
798/// ```text
799/// +---+----------+
800/// | # | Operands |
801/// +---+----------+
802/// | 1 | (none) |
803/// +---+----------+
804/// ```
805pub trait Fld1Emitter {
806 fn fld1(&mut self);
807}
808
809impl<'a> Fld1Emitter for Assembler<'a> {
810 fn fld1(&mut self) {
811 self.emit(FLD1, &NOREG, &NOREG, &NOREG, &NOREG);
812 }
813}
814
815/// `FLDCW`.
816///
817/// Supported operand variants:
818///
819/// ```text
820/// +---+----------+
821/// | # | Operands |
822/// +---+----------+
823/// | 1 | Mem |
824/// +---+----------+
825/// ```
826pub trait FldcwEmitter<A> {
827 fn fldcw(&mut self, op0: A);
828}
829
830impl<'a> FldcwEmitter<Mem> for Assembler<'a> {
831 fn fldcw(&mut self, op0: Mem) {
832 self.emit(FLDCWM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
833 }
834}
835
836/// `FLDENV`.
837///
838/// Supported operand variants:
839///
840/// ```text
841/// +---+----------+
842/// | # | Operands |
843/// +---+----------+
844/// | 1 | Mem |
845/// +---+----------+
846/// ```
847pub trait FldenvEmitter<A> {
848 fn fldenv(&mut self, op0: A);
849}
850
851impl<'a> FldenvEmitter<Mem> for Assembler<'a> {
852 fn fldenv(&mut self, op0: Mem) {
853 self.emit(FLDENVM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
854 }
855}
856
857/// `FLDL2E`.
858///
859/// Supported operand variants:
860///
861/// ```text
862/// +---+----------+
863/// | # | Operands |
864/// +---+----------+
865/// | 1 | (none) |
866/// +---+----------+
867/// ```
868pub trait Fldl2eEmitter {
869 fn fldl2e(&mut self);
870}
871
872impl<'a> Fldl2eEmitter for Assembler<'a> {
873 fn fldl2e(&mut self) {
874 self.emit(FLDL2E, &NOREG, &NOREG, &NOREG, &NOREG);
875 }
876}
877
878/// `FLDL2T`.
879///
880/// Supported operand variants:
881///
882/// ```text
883/// +---+----------+
884/// | # | Operands |
885/// +---+----------+
886/// | 1 | (none) |
887/// +---+----------+
888/// ```
889pub trait Fldl2tEmitter {
890 fn fldl2t(&mut self);
891}
892
893impl<'a> Fldl2tEmitter for Assembler<'a> {
894 fn fldl2t(&mut self) {
895 self.emit(FLDL2T, &NOREG, &NOREG, &NOREG, &NOREG);
896 }
897}
898
899/// `FLDLG2`.
900///
901/// Supported operand variants:
902///
903/// ```text
904/// +---+----------+
905/// | # | Operands |
906/// +---+----------+
907/// | 1 | (none) |
908/// +---+----------+
909/// ```
910pub trait Fldlg2Emitter {
911 fn fldlg2(&mut self);
912}
913
914impl<'a> Fldlg2Emitter for Assembler<'a> {
915 fn fldlg2(&mut self) {
916 self.emit(FLDLG2, &NOREG, &NOREG, &NOREG, &NOREG);
917 }
918}
919
920/// `FLDLN2`.
921///
922/// Supported operand variants:
923///
924/// ```text
925/// +---+----------+
926/// | # | Operands |
927/// +---+----------+
928/// | 1 | (none) |
929/// +---+----------+
930/// ```
931pub trait Fldln2Emitter {
932 fn fldln2(&mut self);
933}
934
935impl<'a> Fldln2Emitter for Assembler<'a> {
936 fn fldln2(&mut self) {
937 self.emit(FLDLN2, &NOREG, &NOREG, &NOREG, &NOREG);
938 }
939}
940
941/// `FLDPI`.
942///
943/// Supported operand variants:
944///
945/// ```text
946/// +---+----------+
947/// | # | Operands |
948/// +---+----------+
949/// | 1 | (none) |
950/// +---+----------+
951/// ```
952pub trait FldpiEmitter {
953 fn fldpi(&mut self);
954}
955
956impl<'a> FldpiEmitter for Assembler<'a> {
957 fn fldpi(&mut self) {
958 self.emit(FLDPI, &NOREG, &NOREG, &NOREG, &NOREG);
959 }
960}
961
962/// `FLDZ`.
963///
964/// Supported operand variants:
965///
966/// ```text
967/// +---+----------+
968/// | # | Operands |
969/// +---+----------+
970/// | 1 | (none) |
971/// +---+----------+
972/// ```
973pub trait FldzEmitter {
974 fn fldz(&mut self);
975}
976
977impl<'a> FldzEmitter for Assembler<'a> {
978 fn fldz(&mut self) {
979 self.emit(FLDZ, &NOREG, &NOREG, &NOREG, &NOREG);
980 }
981}
982
983/// `FMUL`.
984///
985/// Supported operand variants:
986///
987/// ```text
988/// +---+----------+
989/// | # | Operands |
990/// +---+----------+
991/// | 1 | Mem |
992/// +---+----------+
993/// ```
994pub trait FmulEmitter_1<A> {
995 fn fmul_1(&mut self, op0: A);
996}
997
998impl<'a> FmulEmitter_1<Mem> for Assembler<'a> {
999 fn fmul_1(&mut self, op0: Mem) {
1000 self.emit(FMULM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1001 }
1002}
1003
1004/// `FMUL`.
1005///
1006/// Supported operand variants:
1007///
1008/// ```text
1009/// +---+----------+
1010/// | # | Operands |
1011/// +---+----------+
1012/// | 1 | St, St |
1013/// +---+----------+
1014/// ```
1015pub trait FmulEmitter_2<A, B> {
1016 fn fmul_2(&mut self, op0: A, op1: B);
1017}
1018
1019impl<'a> FmulEmitter_2<St, St> for Assembler<'a> {
1020 fn fmul_2(&mut self, op0: St, op1: St) {
1021 self.emit(FMULRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1022 }
1023}
1024
1025/// `FMULP`.
1026///
1027/// Supported operand variants:
1028///
1029/// ```text
1030/// +---+----------+
1031/// | # | Operands |
1032/// +---+----------+
1033/// | 1 | St, St |
1034/// +---+----------+
1035/// ```
1036pub trait FmulpEmitter<A, B> {
1037 fn fmulp(&mut self, op0: A, op1: B);
1038}
1039
1040impl<'a> FmulpEmitter<St, St> for Assembler<'a> {
1041 fn fmulp(&mut self, op0: St, op1: St) {
1042 self.emit(FMULPRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1043 }
1044}
1045
1046/// `FNOP`.
1047///
1048/// Supported operand variants:
1049///
1050/// ```text
1051/// +---+----------+
1052/// | # | Operands |
1053/// +---+----------+
1054/// | 1 | (none) |
1055/// +---+----------+
1056/// ```
1057pub trait FnopEmitter {
1058 fn fnop(&mut self);
1059}
1060
1061impl<'a> FnopEmitter for Assembler<'a> {
1062 fn fnop(&mut self) {
1063 self.emit(FNOP, &NOREG, &NOREG, &NOREG, &NOREG);
1064 }
1065}
1066
1067/// `FPATAN`.
1068///
1069/// Supported operand variants:
1070///
1071/// ```text
1072/// +---+----------+
1073/// | # | Operands |
1074/// +---+----------+
1075/// | 1 | (none) |
1076/// +---+----------+
1077/// ```
1078pub trait FpatanEmitter {
1079 fn fpatan(&mut self);
1080}
1081
1082impl<'a> FpatanEmitter for Assembler<'a> {
1083 fn fpatan(&mut self) {
1084 self.emit(FPATAN, &NOREG, &NOREG, &NOREG, &NOREG);
1085 }
1086}
1087
1088/// `FPREM`.
1089///
1090/// Supported operand variants:
1091///
1092/// ```text
1093/// +---+----------+
1094/// | # | Operands |
1095/// +---+----------+
1096/// | 1 | (none) |
1097/// +---+----------+
1098/// ```
1099pub trait FpremEmitter {
1100 fn fprem(&mut self);
1101}
1102
1103impl<'a> FpremEmitter for Assembler<'a> {
1104 fn fprem(&mut self) {
1105 self.emit(FPREM, &NOREG, &NOREG, &NOREG, &NOREG);
1106 }
1107}
1108
1109/// `FPREM1`.
1110///
1111/// Supported operand variants:
1112///
1113/// ```text
1114/// +---+----------+
1115/// | # | Operands |
1116/// +---+----------+
1117/// | 1 | (none) |
1118/// +---+----------+
1119/// ```
1120pub trait Fprem1Emitter {
1121 fn fprem1(&mut self);
1122}
1123
1124impl<'a> Fprem1Emitter for Assembler<'a> {
1125 fn fprem1(&mut self) {
1126 self.emit(FPREM1, &NOREG, &NOREG, &NOREG, &NOREG);
1127 }
1128}
1129
1130/// `FPTAN`.
1131///
1132/// Supported operand variants:
1133///
1134/// ```text
1135/// +---+----------+
1136/// | # | Operands |
1137/// +---+----------+
1138/// | 1 | (none) |
1139/// +---+----------+
1140/// ```
1141pub trait FptanEmitter {
1142 fn fptan(&mut self);
1143}
1144
1145impl<'a> FptanEmitter for Assembler<'a> {
1146 fn fptan(&mut self) {
1147 self.emit(FPTAN, &NOREG, &NOREG, &NOREG, &NOREG);
1148 }
1149}
1150
1151/// `FRNDINT`.
1152///
1153/// Supported operand variants:
1154///
1155/// ```text
1156/// +---+----------+
1157/// | # | Operands |
1158/// +---+----------+
1159/// | 1 | (none) |
1160/// +---+----------+
1161/// ```
1162pub trait FrndintEmitter {
1163 fn frndint(&mut self);
1164}
1165
1166impl<'a> FrndintEmitter for Assembler<'a> {
1167 fn frndint(&mut self) {
1168 self.emit(FRNDINT, &NOREG, &NOREG, &NOREG, &NOREG);
1169 }
1170}
1171
1172/// `FRSTOR`.
1173///
1174/// Supported operand variants:
1175///
1176/// ```text
1177/// +---+----------+
1178/// | # | Operands |
1179/// +---+----------+
1180/// | 1 | Mem |
1181/// +---+----------+
1182/// ```
1183pub trait FrstorEmitter<A> {
1184 fn frstor(&mut self, op0: A);
1185}
1186
1187impl<'a> FrstorEmitter<Mem> for Assembler<'a> {
1188 fn frstor(&mut self, op0: Mem) {
1189 self.emit(FRSTORM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1190 }
1191}
1192
1193/// `FSAVE`.
1194///
1195/// Supported operand variants:
1196///
1197/// ```text
1198/// +---+----------+
1199/// | # | Operands |
1200/// +---+----------+
1201/// | 1 | Mem |
1202/// +---+----------+
1203/// ```
1204pub trait FsaveEmitter<A> {
1205 fn fsave(&mut self, op0: A);
1206}
1207
1208impl<'a> FsaveEmitter<Mem> for Assembler<'a> {
1209 fn fsave(&mut self, op0: Mem) {
1210 self.emit(FSAVEM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1211 }
1212}
1213
1214/// `FSCALE`.
1215///
1216/// Supported operand variants:
1217///
1218/// ```text
1219/// +---+----------+
1220/// | # | Operands |
1221/// +---+----------+
1222/// | 1 | (none) |
1223/// +---+----------+
1224/// ```
1225pub trait FscaleEmitter {
1226 fn fscale(&mut self);
1227}
1228
1229impl<'a> FscaleEmitter for Assembler<'a> {
1230 fn fscale(&mut self) {
1231 self.emit(FSCALE, &NOREG, &NOREG, &NOREG, &NOREG);
1232 }
1233}
1234
1235/// `FSIN`.
1236///
1237/// Supported operand variants:
1238///
1239/// ```text
1240/// +---+----------+
1241/// | # | Operands |
1242/// +---+----------+
1243/// | 1 | (none) |
1244/// +---+----------+
1245/// ```
1246pub trait FsinEmitter {
1247 fn fsin(&mut self);
1248}
1249
1250impl<'a> FsinEmitter for Assembler<'a> {
1251 fn fsin(&mut self) {
1252 self.emit(FSIN, &NOREG, &NOREG, &NOREG, &NOREG);
1253 }
1254}
1255
1256/// `FSINCOS`.
1257///
1258/// Supported operand variants:
1259///
1260/// ```text
1261/// +---+----------+
1262/// | # | Operands |
1263/// +---+----------+
1264/// | 1 | (none) |
1265/// +---+----------+
1266/// ```
1267pub trait FsincosEmitter {
1268 fn fsincos(&mut self);
1269}
1270
1271impl<'a> FsincosEmitter for Assembler<'a> {
1272 fn fsincos(&mut self) {
1273 self.emit(FSINCOS, &NOREG, &NOREG, &NOREG, &NOREG);
1274 }
1275}
1276
1277/// `FSQRT`.
1278///
1279/// Supported operand variants:
1280///
1281/// ```text
1282/// +---+----------+
1283/// | # | Operands |
1284/// +---+----------+
1285/// | 1 | (none) |
1286/// +---+----------+
1287/// ```
1288pub trait FsqrtEmitter {
1289 fn fsqrt(&mut self);
1290}
1291
1292impl<'a> FsqrtEmitter for Assembler<'a> {
1293 fn fsqrt(&mut self) {
1294 self.emit(FSQRT, &NOREG, &NOREG, &NOREG, &NOREG);
1295 }
1296}
1297
1298/// `FST`.
1299///
1300/// Supported operand variants:
1301///
1302/// ```text
1303/// +---+----------+
1304/// | # | Operands |
1305/// +---+----------+
1306/// | 1 | Mem |
1307/// | 2 | St |
1308/// +---+----------+
1309/// ```
1310pub trait FstEmitter<A> {
1311 fn fst(&mut self, op0: A);
1312}
1313
1314impl<'a> FstEmitter<Mem> for Assembler<'a> {
1315 fn fst(&mut self, op0: Mem) {
1316 self.emit(FSTM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1317 }
1318}
1319
1320impl<'a> FstEmitter<St> for Assembler<'a> {
1321 fn fst(&mut self, op0: St) {
1322 self.emit(FSTR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1323 }
1324}
1325
1326/// `FSTCW`.
1327///
1328/// Supported operand variants:
1329///
1330/// ```text
1331/// +---+----------+
1332/// | # | Operands |
1333/// +---+----------+
1334/// | 1 | Mem |
1335/// +---+----------+
1336/// ```
1337pub trait FstcwEmitter<A> {
1338 fn fstcw(&mut self, op0: A);
1339}
1340
1341impl<'a> FstcwEmitter<Mem> for Assembler<'a> {
1342 fn fstcw(&mut self, op0: Mem) {
1343 self.emit(FSTCWM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1344 }
1345}
1346
1347/// `FSTENV`.
1348///
1349/// Supported operand variants:
1350///
1351/// ```text
1352/// +---+----------+
1353/// | # | Operands |
1354/// +---+----------+
1355/// | 1 | Mem |
1356/// +---+----------+
1357/// ```
1358pub trait FstenvEmitter<A> {
1359 fn fstenv(&mut self, op0: A);
1360}
1361
1362impl<'a> FstenvEmitter<Mem> for Assembler<'a> {
1363 fn fstenv(&mut self, op0: Mem) {
1364 self.emit(FSTENVM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1365 }
1366}
1367
1368/// `FSTP`.
1369///
1370/// Supported operand variants:
1371///
1372/// ```text
1373/// +---+----------+
1374/// | # | Operands |
1375/// +---+----------+
1376/// | 1 | Mem |
1377/// | 2 | St |
1378/// +---+----------+
1379/// ```
1380pub trait FstpEmitter<A> {
1381 fn fstp(&mut self, op0: A);
1382}
1383
1384impl<'a> FstpEmitter<Mem> for Assembler<'a> {
1385 fn fstp(&mut self, op0: Mem) {
1386 self.emit(FSTPM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1387 }
1388}
1389
1390impl<'a> FstpEmitter<St> for Assembler<'a> {
1391 fn fstp(&mut self, op0: St) {
1392 self.emit(FSTPR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1393 }
1394}
1395
1396/// `FSTSW`.
1397///
1398/// Supported operand variants:
1399///
1400/// ```text
1401/// +---+----------+
1402/// | # | Operands |
1403/// +---+----------+
1404/// | 1 | Gpd |
1405/// | 2 | Mem |
1406/// +---+----------+
1407/// ```
1408pub trait FstswEmitter<A> {
1409 fn fstsw(&mut self, op0: A);
1410}
1411
1412impl<'a> FstswEmitter<Mem> for Assembler<'a> {
1413 fn fstsw(&mut self, op0: Mem) {
1414 self.emit(FSTSWM, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1415 }
1416}
1417
1418impl<'a> FstswEmitter<Gpd> for Assembler<'a> {
1419 fn fstsw(&mut self, op0: Gpd) {
1420 self.emit(FSTSWR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1421 }
1422}
1423
1424/// `FSUB`.
1425///
1426/// Supported operand variants:
1427///
1428/// ```text
1429/// +---+----------+
1430/// | # | Operands |
1431/// +---+----------+
1432/// | 1 | Mem |
1433/// +---+----------+
1434/// ```
1435pub trait FsubEmitter_1<A> {
1436 fn fsub_1(&mut self, op0: A);
1437}
1438
1439impl<'a> FsubEmitter_1<Mem> for Assembler<'a> {
1440 fn fsub_1(&mut self, op0: Mem) {
1441 self.emit(FSUBM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1442 }
1443}
1444
1445/// `FSUB`.
1446///
1447/// Supported operand variants:
1448///
1449/// ```text
1450/// +---+----------+
1451/// | # | Operands |
1452/// +---+----------+
1453/// | 1 | St, St |
1454/// +---+----------+
1455/// ```
1456pub trait FsubEmitter_2<A, B> {
1457 fn fsub_2(&mut self, op0: A, op1: B);
1458}
1459
1460impl<'a> FsubEmitter_2<St, St> for Assembler<'a> {
1461 fn fsub_2(&mut self, op0: St, op1: St) {
1462 self.emit(FSUBRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1463 }
1464}
1465
1466/// `FSUBP`.
1467///
1468/// Supported operand variants:
1469///
1470/// ```text
1471/// +---+----------+
1472/// | # | Operands |
1473/// +---+----------+
1474/// | 1 | St, St |
1475/// +---+----------+
1476/// ```
1477pub trait FsubpEmitter<A, B> {
1478 fn fsubp(&mut self, op0: A, op1: B);
1479}
1480
1481impl<'a> FsubpEmitter<St, St> for Assembler<'a> {
1482 fn fsubp(&mut self, op0: St, op1: St) {
1483 self.emit(FSUBPRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1484 }
1485}
1486
1487/// `FSUBR`.
1488///
1489/// Supported operand variants:
1490///
1491/// ```text
1492/// +---+----------+
1493/// | # | Operands |
1494/// +---+----------+
1495/// | 1 | Mem |
1496/// +---+----------+
1497/// ```
1498pub trait FsubrEmitter_1<A> {
1499 fn fsubr_1(&mut self, op0: A);
1500}
1501
1502impl<'a> FsubrEmitter_1<Mem> for Assembler<'a> {
1503 fn fsubr_1(&mut self, op0: Mem) {
1504 self.emit(FSUBRM32, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1505 }
1506}
1507
1508/// `FSUBR`.
1509///
1510/// Supported operand variants:
1511///
1512/// ```text
1513/// +---+----------+
1514/// | # | Operands |
1515/// +---+----------+
1516/// | 1 | St, St |
1517/// +---+----------+
1518/// ```
1519pub trait FsubrEmitter_2<A, B> {
1520 fn fsubr_2(&mut self, op0: A, op1: B);
1521}
1522
1523impl<'a> FsubrEmitter_2<St, St> for Assembler<'a> {
1524 fn fsubr_2(&mut self, op0: St, op1: St) {
1525 self.emit(FSUBRRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1526 }
1527}
1528
1529/// `FSUBRP`.
1530///
1531/// Supported operand variants:
1532///
1533/// ```text
1534/// +---+----------+
1535/// | # | Operands |
1536/// +---+----------+
1537/// | 1 | St, St |
1538/// +---+----------+
1539/// ```
1540pub trait FsubrpEmitter<A, B> {
1541 fn fsubrp(&mut self, op0: A, op1: B);
1542}
1543
1544impl<'a> FsubrpEmitter<St, St> for Assembler<'a> {
1545 fn fsubrp(&mut self, op0: St, op1: St) {
1546 self.emit(FSUBRPRR, op0.as_operand(), op1.as_operand(), &NOREG, &NOREG);
1547 }
1548}
1549
1550/// `FTST`.
1551///
1552/// Supported operand variants:
1553///
1554/// ```text
1555/// +---+----------+
1556/// | # | Operands |
1557/// +---+----------+
1558/// | 1 | (none) |
1559/// +---+----------+
1560/// ```
1561pub trait FtstEmitter {
1562 fn ftst(&mut self);
1563}
1564
1565impl<'a> FtstEmitter for Assembler<'a> {
1566 fn ftst(&mut self) {
1567 self.emit(FTST, &NOREG, &NOREG, &NOREG, &NOREG);
1568 }
1569}
1570
1571/// `FUCOM`.
1572///
1573/// Supported operand variants:
1574///
1575/// ```text
1576/// +---+----------+
1577/// | # | Operands |
1578/// +---+----------+
1579/// | 1 | St |
1580/// +---+----------+
1581/// ```
1582pub trait FucomEmitter<A> {
1583 fn fucom(&mut self, op0: A);
1584}
1585
1586impl<'a> FucomEmitter<St> for Assembler<'a> {
1587 fn fucom(&mut self, op0: St) {
1588 self.emit(FUCOMR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1589 }
1590}
1591
1592/// `FUCOMP`.
1593///
1594/// Supported operand variants:
1595///
1596/// ```text
1597/// +---+----------+
1598/// | # | Operands |
1599/// +---+----------+
1600/// | 1 | St |
1601/// +---+----------+
1602/// ```
1603pub trait FucompEmitter<A> {
1604 fn fucomp(&mut self, op0: A);
1605}
1606
1607impl<'a> FucompEmitter<St> for Assembler<'a> {
1608 fn fucomp(&mut self, op0: St) {
1609 self.emit(FUCOMPR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1610 }
1611}
1612
1613/// `FUCOMPP`.
1614///
1615/// Supported operand variants:
1616///
1617/// ```text
1618/// +---+----------+
1619/// | # | Operands |
1620/// +---+----------+
1621/// | 1 | (none) |
1622/// +---+----------+
1623/// ```
1624pub trait FucomppEmitter {
1625 fn fucompp(&mut self);
1626}
1627
1628impl<'a> FucomppEmitter for Assembler<'a> {
1629 fn fucompp(&mut self) {
1630 self.emit(FUCOMPP, &NOREG, &NOREG, &NOREG, &NOREG);
1631 }
1632}
1633
1634/// `FXAM`.
1635///
1636/// Supported operand variants:
1637///
1638/// ```text
1639/// +---+----------+
1640/// | # | Operands |
1641/// +---+----------+
1642/// | 1 | (none) |
1643/// +---+----------+
1644/// ```
1645pub trait FxamEmitter {
1646 fn fxam(&mut self);
1647}
1648
1649impl<'a> FxamEmitter for Assembler<'a> {
1650 fn fxam(&mut self) {
1651 self.emit(FXAM, &NOREG, &NOREG, &NOREG, &NOREG);
1652 }
1653}
1654
1655/// `FXCH`.
1656///
1657/// Supported operand variants:
1658///
1659/// ```text
1660/// +---+----------+
1661/// | # | Operands |
1662/// +---+----------+
1663/// | 1 | St |
1664/// +---+----------+
1665/// ```
1666pub trait FxchEmitter<A> {
1667 fn fxch(&mut self, op0: A);
1668}
1669
1670impl<'a> FxchEmitter<St> for Assembler<'a> {
1671 fn fxch(&mut self, op0: St) {
1672 self.emit(FXCHR, op0.as_operand(), &NOREG, &NOREG, &NOREG);
1673 }
1674}
1675
1676/// `FXTRACT`.
1677///
1678/// Supported operand variants:
1679///
1680/// ```text
1681/// +---+----------+
1682/// | # | Operands |
1683/// +---+----------+
1684/// | 1 | (none) |
1685/// +---+----------+
1686/// ```
1687pub trait FxtractEmitter {
1688 fn fxtract(&mut self);
1689}
1690
1691impl<'a> FxtractEmitter for Assembler<'a> {
1692 fn fxtract(&mut self) {
1693 self.emit(FXTRACT, &NOREG, &NOREG, &NOREG, &NOREG);
1694 }
1695}
1696
1697/// `FYL2X`.
1698///
1699/// Supported operand variants:
1700///
1701/// ```text
1702/// +---+----------+
1703/// | # | Operands |
1704/// +---+----------+
1705/// | 1 | (none) |
1706/// +---+----------+
1707/// ```
1708pub trait Fyl2xEmitter {
1709 fn fyl2x(&mut self);
1710}
1711
1712impl<'a> Fyl2xEmitter for Assembler<'a> {
1713 fn fyl2x(&mut self) {
1714 self.emit(FYL2X, &NOREG, &NOREG, &NOREG, &NOREG);
1715 }
1716}
1717
1718/// `FYL2XP1`.
1719///
1720/// Supported operand variants:
1721///
1722/// ```text
1723/// +---+----------+
1724/// | # | Operands |
1725/// +---+----------+
1726/// | 1 | (none) |
1727/// +---+----------+
1728/// ```
1729pub trait Fyl2xp1Emitter {
1730 fn fyl2xp1(&mut self);
1731}
1732
1733impl<'a> Fyl2xp1Emitter for Assembler<'a> {
1734 fn fyl2xp1(&mut self) {
1735 self.emit(FYL2XP1, &NOREG, &NOREG, &NOREG, &NOREG);
1736 }
1737}
1738
1739impl<'a> Assembler<'a> {
1740 /// `F2XM1`.
1741 ///
1742 /// Supported operand variants:
1743 ///
1744 /// ```text
1745 /// +---+----------+
1746 /// | # | Operands |
1747 /// +---+----------+
1748 /// | 1 | (none) |
1749 /// +---+----------+
1750 /// ```
1751 #[inline]
1752 pub fn f2xm1(&mut self)
1753 where
1754 Assembler<'a>: F2xm1Emitter,
1755 {
1756 <Self as F2xm1Emitter>::f2xm1(self);
1757 }
1758 /// `FABS`.
1759 ///
1760 /// Supported operand variants:
1761 ///
1762 /// ```text
1763 /// +---+----------+
1764 /// | # | Operands |
1765 /// +---+----------+
1766 /// | 1 | (none) |
1767 /// +---+----------+
1768 /// ```
1769 #[inline]
1770 pub fn fabs(&mut self)
1771 where
1772 Assembler<'a>: FabsEmitter,
1773 {
1774 <Self as FabsEmitter>::fabs(self);
1775 }
1776 /// `FADD`.
1777 ///
1778 /// Supported operand variants:
1779 ///
1780 /// ```text
1781 /// +---+----------+
1782 /// | # | Operands |
1783 /// +---+----------+
1784 /// | 1 | Mem |
1785 /// +---+----------+
1786 /// ```
1787 #[inline]
1788 pub fn fadd_1<A>(&mut self, op0: A)
1789 where
1790 Assembler<'a>: FaddEmitter_1<A>,
1791 {
1792 <Self as FaddEmitter_1<A>>::fadd_1(self, op0);
1793 }
1794 /// `FADD`.
1795 ///
1796 /// Supported operand variants:
1797 ///
1798 /// ```text
1799 /// +---+----------+
1800 /// | # | Operands |
1801 /// +---+----------+
1802 /// | 1 | St, St |
1803 /// +---+----------+
1804 /// ```
1805 #[inline]
1806 pub fn fadd_2<A, B>(&mut self, op0: A, op1: B)
1807 where
1808 Assembler<'a>: FaddEmitter_2<A, B>,
1809 {
1810 <Self as FaddEmitter_2<A, B>>::fadd_2(self, op0, op1);
1811 }
1812 /// `FADDP`.
1813 ///
1814 /// Supported operand variants:
1815 ///
1816 /// ```text
1817 /// +---+----------+
1818 /// | # | Operands |
1819 /// +---+----------+
1820 /// | 1 | St, St |
1821 /// +---+----------+
1822 /// ```
1823 #[inline]
1824 pub fn faddp<A, B>(&mut self, op0: A, op1: B)
1825 where
1826 Assembler<'a>: FaddpEmitter<A, B>,
1827 {
1828 <Self as FaddpEmitter<A, B>>::faddp(self, op0, op1);
1829 }
1830 /// `FBLD`.
1831 ///
1832 /// Supported operand variants:
1833 ///
1834 /// ```text
1835 /// +---+----------+
1836 /// | # | Operands |
1837 /// +---+----------+
1838 /// | 1 | Mem |
1839 /// +---+----------+
1840 /// ```
1841 #[inline]
1842 pub fn fbld<A>(&mut self, op0: A)
1843 where
1844 Assembler<'a>: FbldEmitter<A>,
1845 {
1846 <Self as FbldEmitter<A>>::fbld(self, op0);
1847 }
1848 /// `FBSTP`.
1849 ///
1850 /// Supported operand variants:
1851 ///
1852 /// ```text
1853 /// +---+----------+
1854 /// | # | Operands |
1855 /// +---+----------+
1856 /// | 1 | Mem |
1857 /// +---+----------+
1858 /// ```
1859 #[inline]
1860 pub fn fbstp<A>(&mut self, op0: A)
1861 where
1862 Assembler<'a>: FbstpEmitter<A>,
1863 {
1864 <Self as FbstpEmitter<A>>::fbstp(self, op0);
1865 }
1866 /// `FCHS`.
1867 ///
1868 /// Supported operand variants:
1869 ///
1870 /// ```text
1871 /// +---+----------+
1872 /// | # | Operands |
1873 /// +---+----------+
1874 /// | 1 | (none) |
1875 /// +---+----------+
1876 /// ```
1877 #[inline]
1878 pub fn fchs(&mut self)
1879 where
1880 Assembler<'a>: FchsEmitter,
1881 {
1882 <Self as FchsEmitter>::fchs(self);
1883 }
1884 /// `FCLEX`.
1885 ///
1886 /// Supported operand variants:
1887 ///
1888 /// ```text
1889 /// +---+----------+
1890 /// | # | Operands |
1891 /// +---+----------+
1892 /// | 1 | (none) |
1893 /// +---+----------+
1894 /// ```
1895 #[inline]
1896 pub fn fclex(&mut self)
1897 where
1898 Assembler<'a>: FclexEmitter,
1899 {
1900 <Self as FclexEmitter>::fclex(self);
1901 }
1902 /// `FCOM`.
1903 ///
1904 /// Supported operand variants:
1905 ///
1906 /// ```text
1907 /// +---+----------+
1908 /// | # | Operands |
1909 /// +---+----------+
1910 /// | 1 | Mem |
1911 /// +---+----------+
1912 /// ```
1913 #[inline]
1914 pub fn fcom_1<A>(&mut self, op0: A)
1915 where
1916 Assembler<'a>: FcomEmitter_1<A>,
1917 {
1918 <Self as FcomEmitter_1<A>>::fcom_1(self, op0);
1919 }
1920 /// `FCOM`.
1921 ///
1922 /// Supported operand variants:
1923 ///
1924 /// ```text
1925 /// +---+----------+
1926 /// | # | Operands |
1927 /// +---+----------+
1928 /// | 1 | St, St |
1929 /// +---+----------+
1930 /// ```
1931 #[inline]
1932 pub fn fcom_2<A, B>(&mut self, op0: A, op1: B)
1933 where
1934 Assembler<'a>: FcomEmitter_2<A, B>,
1935 {
1936 <Self as FcomEmitter_2<A, B>>::fcom_2(self, op0, op1);
1937 }
1938 /// `FCOMP`.
1939 ///
1940 /// Supported operand variants:
1941 ///
1942 /// ```text
1943 /// +---+----------+
1944 /// | # | Operands |
1945 /// +---+----------+
1946 /// | 1 | Mem |
1947 /// +---+----------+
1948 /// ```
1949 #[inline]
1950 pub fn fcomp_1<A>(&mut self, op0: A)
1951 where
1952 Assembler<'a>: FcompEmitter_1<A>,
1953 {
1954 <Self as FcompEmitter_1<A>>::fcomp_1(self, op0);
1955 }
1956 /// `FCOMP`.
1957 ///
1958 /// Supported operand variants:
1959 ///
1960 /// ```text
1961 /// +---+----------+
1962 /// | # | Operands |
1963 /// +---+----------+
1964 /// | 1 | St, St |
1965 /// +---+----------+
1966 /// ```
1967 #[inline]
1968 pub fn fcomp_2<A, B>(&mut self, op0: A, op1: B)
1969 where
1970 Assembler<'a>: FcompEmitter_2<A, B>,
1971 {
1972 <Self as FcompEmitter_2<A, B>>::fcomp_2(self, op0, op1);
1973 }
1974 /// `FCOMPP`.
1975 ///
1976 /// Supported operand variants:
1977 ///
1978 /// ```text
1979 /// +---+----------+
1980 /// | # | Operands |
1981 /// +---+----------+
1982 /// | 1 | (none) |
1983 /// +---+----------+
1984 /// ```
1985 #[inline]
1986 pub fn fcompp(&mut self)
1987 where
1988 Assembler<'a>: FcomppEmitter,
1989 {
1990 <Self as FcomppEmitter>::fcompp(self);
1991 }
1992 /// `FCOS`.
1993 ///
1994 /// Supported operand variants:
1995 ///
1996 /// ```text
1997 /// +---+----------+
1998 /// | # | Operands |
1999 /// +---+----------+
2000 /// | 1 | (none) |
2001 /// +---+----------+
2002 /// ```
2003 #[inline]
2004 pub fn fcos(&mut self)
2005 where
2006 Assembler<'a>: FcosEmitter,
2007 {
2008 <Self as FcosEmitter>::fcos(self);
2009 }
2010 /// `FDECSTP`.
2011 ///
2012 /// Supported operand variants:
2013 ///
2014 /// ```text
2015 /// +---+----------+
2016 /// | # | Operands |
2017 /// +---+----------+
2018 /// | 1 | (none) |
2019 /// +---+----------+
2020 /// ```
2021 #[inline]
2022 pub fn fdecstp(&mut self)
2023 where
2024 Assembler<'a>: FdecstpEmitter,
2025 {
2026 <Self as FdecstpEmitter>::fdecstp(self);
2027 }
2028 /// `FDIV`.
2029 ///
2030 /// Supported operand variants:
2031 ///
2032 /// ```text
2033 /// +---+----------+
2034 /// | # | Operands |
2035 /// +---+----------+
2036 /// | 1 | Mem |
2037 /// +---+----------+
2038 /// ```
2039 #[inline]
2040 pub fn fdiv_1<A>(&mut self, op0: A)
2041 where
2042 Assembler<'a>: FdivEmitter_1<A>,
2043 {
2044 <Self as FdivEmitter_1<A>>::fdiv_1(self, op0);
2045 }
2046 /// `FDIV`.
2047 ///
2048 /// Supported operand variants:
2049 ///
2050 /// ```text
2051 /// +---+----------+
2052 /// | # | Operands |
2053 /// +---+----------+
2054 /// | 1 | St, St |
2055 /// +---+----------+
2056 /// ```
2057 #[inline]
2058 pub fn fdiv_2<A, B>(&mut self, op0: A, op1: B)
2059 where
2060 Assembler<'a>: FdivEmitter_2<A, B>,
2061 {
2062 <Self as FdivEmitter_2<A, B>>::fdiv_2(self, op0, op1);
2063 }
2064 /// `FDIVP`.
2065 ///
2066 /// Supported operand variants:
2067 ///
2068 /// ```text
2069 /// +---+----------+
2070 /// | # | Operands |
2071 /// +---+----------+
2072 /// | 1 | St, St |
2073 /// +---+----------+
2074 /// ```
2075 #[inline]
2076 pub fn fdivp<A, B>(&mut self, op0: A, op1: B)
2077 where
2078 Assembler<'a>: FdivpEmitter<A, B>,
2079 {
2080 <Self as FdivpEmitter<A, B>>::fdivp(self, op0, op1);
2081 }
2082 /// `FDIVR`.
2083 ///
2084 /// Supported operand variants:
2085 ///
2086 /// ```text
2087 /// +---+----------+
2088 /// | # | Operands |
2089 /// +---+----------+
2090 /// | 1 | Mem |
2091 /// +---+----------+
2092 /// ```
2093 #[inline]
2094 pub fn fdivr_1<A>(&mut self, op0: A)
2095 where
2096 Assembler<'a>: FdivrEmitter_1<A>,
2097 {
2098 <Self as FdivrEmitter_1<A>>::fdivr_1(self, op0);
2099 }
2100 /// `FDIVR`.
2101 ///
2102 /// Supported operand variants:
2103 ///
2104 /// ```text
2105 /// +---+----------+
2106 /// | # | Operands |
2107 /// +---+----------+
2108 /// | 1 | St, St |
2109 /// +---+----------+
2110 /// ```
2111 #[inline]
2112 pub fn fdivr_2<A, B>(&mut self, op0: A, op1: B)
2113 where
2114 Assembler<'a>: FdivrEmitter_2<A, B>,
2115 {
2116 <Self as FdivrEmitter_2<A, B>>::fdivr_2(self, op0, op1);
2117 }
2118 /// `FDIVRP`.
2119 ///
2120 /// Supported operand variants:
2121 ///
2122 /// ```text
2123 /// +---+----------+
2124 /// | # | Operands |
2125 /// +---+----------+
2126 /// | 1 | St, St |
2127 /// +---+----------+
2128 /// ```
2129 #[inline]
2130 pub fn fdivrp<A, B>(&mut self, op0: A, op1: B)
2131 where
2132 Assembler<'a>: FdivrpEmitter<A, B>,
2133 {
2134 <Self as FdivrpEmitter<A, B>>::fdivrp(self, op0, op1);
2135 }
2136 /// `FFREE`.
2137 ///
2138 /// Supported operand variants:
2139 ///
2140 /// ```text
2141 /// +---+----------+
2142 /// | # | Operands |
2143 /// +---+----------+
2144 /// | 1 | St |
2145 /// +---+----------+
2146 /// ```
2147 #[inline]
2148 pub fn ffree<A>(&mut self, op0: A)
2149 where
2150 Assembler<'a>: FfreeEmitter<A>,
2151 {
2152 <Self as FfreeEmitter<A>>::ffree(self, op0);
2153 }
2154 /// `FIADD`.
2155 ///
2156 /// Supported operand variants:
2157 ///
2158 /// ```text
2159 /// +---+----------+
2160 /// | # | Operands |
2161 /// +---+----------+
2162 /// | 1 | Mem |
2163 /// +---+----------+
2164 /// ```
2165 #[inline]
2166 pub fn fiadd<A>(&mut self, op0: A)
2167 where
2168 Assembler<'a>: FiaddEmitter<A>,
2169 {
2170 <Self as FiaddEmitter<A>>::fiadd(self, op0);
2171 }
2172 /// `FICOM`.
2173 ///
2174 /// Supported operand variants:
2175 ///
2176 /// ```text
2177 /// +---+----------+
2178 /// | # | Operands |
2179 /// +---+----------+
2180 /// | 1 | Mem |
2181 /// +---+----------+
2182 /// ```
2183 #[inline]
2184 pub fn ficom<A>(&mut self, op0: A)
2185 where
2186 Assembler<'a>: FicomEmitter<A>,
2187 {
2188 <Self as FicomEmitter<A>>::ficom(self, op0);
2189 }
2190 /// `FICOMP`.
2191 ///
2192 /// Supported operand variants:
2193 ///
2194 /// ```text
2195 /// +---+----------+
2196 /// | # | Operands |
2197 /// +---+----------+
2198 /// | 1 | Mem |
2199 /// +---+----------+
2200 /// ```
2201 #[inline]
2202 pub fn ficomp<A>(&mut self, op0: A)
2203 where
2204 Assembler<'a>: FicompEmitter<A>,
2205 {
2206 <Self as FicompEmitter<A>>::ficomp(self, op0);
2207 }
2208 /// `FIDIV`.
2209 ///
2210 /// Supported operand variants:
2211 ///
2212 /// ```text
2213 /// +---+----------+
2214 /// | # | Operands |
2215 /// +---+----------+
2216 /// | 1 | Mem |
2217 /// +---+----------+
2218 /// ```
2219 #[inline]
2220 pub fn fidiv<A>(&mut self, op0: A)
2221 where
2222 Assembler<'a>: FidivEmitter<A>,
2223 {
2224 <Self as FidivEmitter<A>>::fidiv(self, op0);
2225 }
2226 /// `FIDIVR`.
2227 ///
2228 /// Supported operand variants:
2229 ///
2230 /// ```text
2231 /// +---+----------+
2232 /// | # | Operands |
2233 /// +---+----------+
2234 /// | 1 | Mem |
2235 /// +---+----------+
2236 /// ```
2237 #[inline]
2238 pub fn fidivr<A>(&mut self, op0: A)
2239 where
2240 Assembler<'a>: FidivrEmitter<A>,
2241 {
2242 <Self as FidivrEmitter<A>>::fidivr(self, op0);
2243 }
2244 /// `FILD`.
2245 ///
2246 /// Supported operand variants:
2247 ///
2248 /// ```text
2249 /// +---+----------+
2250 /// | # | Operands |
2251 /// +---+----------+
2252 /// | 1 | Mem |
2253 /// +---+----------+
2254 /// ```
2255 #[inline]
2256 pub fn fild<A>(&mut self, op0: A)
2257 where
2258 Assembler<'a>: FildEmitter<A>,
2259 {
2260 <Self as FildEmitter<A>>::fild(self, op0);
2261 }
2262 /// `FIMUL`.
2263 ///
2264 /// Supported operand variants:
2265 ///
2266 /// ```text
2267 /// +---+----------+
2268 /// | # | Operands |
2269 /// +---+----------+
2270 /// | 1 | Mem |
2271 /// +---+----------+
2272 /// ```
2273 #[inline]
2274 pub fn fimul<A>(&mut self, op0: A)
2275 where
2276 Assembler<'a>: FimulEmitter<A>,
2277 {
2278 <Self as FimulEmitter<A>>::fimul(self, op0);
2279 }
2280 /// `FINCSTP`.
2281 ///
2282 /// Supported operand variants:
2283 ///
2284 /// ```text
2285 /// +---+----------+
2286 /// | # | Operands |
2287 /// +---+----------+
2288 /// | 1 | (none) |
2289 /// +---+----------+
2290 /// ```
2291 #[inline]
2292 pub fn fincstp(&mut self)
2293 where
2294 Assembler<'a>: FincstpEmitter,
2295 {
2296 <Self as FincstpEmitter>::fincstp(self);
2297 }
2298 /// `FINIT`.
2299 ///
2300 /// Supported operand variants:
2301 ///
2302 /// ```text
2303 /// +---+----------+
2304 /// | # | Operands |
2305 /// +---+----------+
2306 /// | 1 | (none) |
2307 /// +---+----------+
2308 /// ```
2309 #[inline]
2310 pub fn finit(&mut self)
2311 where
2312 Assembler<'a>: FinitEmitter,
2313 {
2314 <Self as FinitEmitter>::finit(self);
2315 }
2316 /// `FIST`.
2317 ///
2318 /// Supported operand variants:
2319 ///
2320 /// ```text
2321 /// +---+----------+
2322 /// | # | Operands |
2323 /// +---+----------+
2324 /// | 1 | Mem |
2325 /// +---+----------+
2326 /// ```
2327 #[inline]
2328 pub fn fist<A>(&mut self, op0: A)
2329 where
2330 Assembler<'a>: FistEmitter<A>,
2331 {
2332 <Self as FistEmitter<A>>::fist(self, op0);
2333 }
2334 /// `FISTP`.
2335 ///
2336 /// Supported operand variants:
2337 ///
2338 /// ```text
2339 /// +---+----------+
2340 /// | # | Operands |
2341 /// +---+----------+
2342 /// | 1 | Mem |
2343 /// +---+----------+
2344 /// ```
2345 #[inline]
2346 pub fn fistp<A>(&mut self, op0: A)
2347 where
2348 Assembler<'a>: FistpEmitter<A>,
2349 {
2350 <Self as FistpEmitter<A>>::fistp(self, op0);
2351 }
2352 /// `FISUB`.
2353 ///
2354 /// Supported operand variants:
2355 ///
2356 /// ```text
2357 /// +---+----------+
2358 /// | # | Operands |
2359 /// +---+----------+
2360 /// | 1 | Mem |
2361 /// +---+----------+
2362 /// ```
2363 #[inline]
2364 pub fn fisub<A>(&mut self, op0: A)
2365 where
2366 Assembler<'a>: FisubEmitter<A>,
2367 {
2368 <Self as FisubEmitter<A>>::fisub(self, op0);
2369 }
2370 /// `FISUBR`.
2371 ///
2372 /// Supported operand variants:
2373 ///
2374 /// ```text
2375 /// +---+----------+
2376 /// | # | Operands |
2377 /// +---+----------+
2378 /// | 1 | Mem |
2379 /// +---+----------+
2380 /// ```
2381 #[inline]
2382 pub fn fisubr<A>(&mut self, op0: A)
2383 where
2384 Assembler<'a>: FisubrEmitter<A>,
2385 {
2386 <Self as FisubrEmitter<A>>::fisubr(self, op0);
2387 }
2388 /// `FLD`.
2389 ///
2390 /// Supported operand variants:
2391 ///
2392 /// ```text
2393 /// +---+----------+
2394 /// | # | Operands |
2395 /// +---+----------+
2396 /// | 1 | Mem |
2397 /// | 2 | St |
2398 /// +---+----------+
2399 /// ```
2400 #[inline]
2401 pub fn fld<A>(&mut self, op0: A)
2402 where
2403 Assembler<'a>: FldEmitter<A>,
2404 {
2405 <Self as FldEmitter<A>>::fld(self, op0);
2406 }
2407 /// `FLD1`.
2408 ///
2409 /// Supported operand variants:
2410 ///
2411 /// ```text
2412 /// +---+----------+
2413 /// | # | Operands |
2414 /// +---+----------+
2415 /// | 1 | (none) |
2416 /// +---+----------+
2417 /// ```
2418 #[inline]
2419 pub fn fld1(&mut self)
2420 where
2421 Assembler<'a>: Fld1Emitter,
2422 {
2423 <Self as Fld1Emitter>::fld1(self);
2424 }
2425 /// `FLDCW`.
2426 ///
2427 /// Supported operand variants:
2428 ///
2429 /// ```text
2430 /// +---+----------+
2431 /// | # | Operands |
2432 /// +---+----------+
2433 /// | 1 | Mem |
2434 /// +---+----------+
2435 /// ```
2436 #[inline]
2437 pub fn fldcw<A>(&mut self, op0: A)
2438 where
2439 Assembler<'a>: FldcwEmitter<A>,
2440 {
2441 <Self as FldcwEmitter<A>>::fldcw(self, op0);
2442 }
2443 /// `FLDENV`.
2444 ///
2445 /// Supported operand variants:
2446 ///
2447 /// ```text
2448 /// +---+----------+
2449 /// | # | Operands |
2450 /// +---+----------+
2451 /// | 1 | Mem |
2452 /// +---+----------+
2453 /// ```
2454 #[inline]
2455 pub fn fldenv<A>(&mut self, op0: A)
2456 where
2457 Assembler<'a>: FldenvEmitter<A>,
2458 {
2459 <Self as FldenvEmitter<A>>::fldenv(self, op0);
2460 }
2461 /// `FLDL2E`.
2462 ///
2463 /// Supported operand variants:
2464 ///
2465 /// ```text
2466 /// +---+----------+
2467 /// | # | Operands |
2468 /// +---+----------+
2469 /// | 1 | (none) |
2470 /// +---+----------+
2471 /// ```
2472 #[inline]
2473 pub fn fldl2e(&mut self)
2474 where
2475 Assembler<'a>: Fldl2eEmitter,
2476 {
2477 <Self as Fldl2eEmitter>::fldl2e(self);
2478 }
2479 /// `FLDL2T`.
2480 ///
2481 /// Supported operand variants:
2482 ///
2483 /// ```text
2484 /// +---+----------+
2485 /// | # | Operands |
2486 /// +---+----------+
2487 /// | 1 | (none) |
2488 /// +---+----------+
2489 /// ```
2490 #[inline]
2491 pub fn fldl2t(&mut self)
2492 where
2493 Assembler<'a>: Fldl2tEmitter,
2494 {
2495 <Self as Fldl2tEmitter>::fldl2t(self);
2496 }
2497 /// `FLDLG2`.
2498 ///
2499 /// Supported operand variants:
2500 ///
2501 /// ```text
2502 /// +---+----------+
2503 /// | # | Operands |
2504 /// +---+----------+
2505 /// | 1 | (none) |
2506 /// +---+----------+
2507 /// ```
2508 #[inline]
2509 pub fn fldlg2(&mut self)
2510 where
2511 Assembler<'a>: Fldlg2Emitter,
2512 {
2513 <Self as Fldlg2Emitter>::fldlg2(self);
2514 }
2515 /// `FLDLN2`.
2516 ///
2517 /// Supported operand variants:
2518 ///
2519 /// ```text
2520 /// +---+----------+
2521 /// | # | Operands |
2522 /// +---+----------+
2523 /// | 1 | (none) |
2524 /// +---+----------+
2525 /// ```
2526 #[inline]
2527 pub fn fldln2(&mut self)
2528 where
2529 Assembler<'a>: Fldln2Emitter,
2530 {
2531 <Self as Fldln2Emitter>::fldln2(self);
2532 }
2533 /// `FLDPI`.
2534 ///
2535 /// Supported operand variants:
2536 ///
2537 /// ```text
2538 /// +---+----------+
2539 /// | # | Operands |
2540 /// +---+----------+
2541 /// | 1 | (none) |
2542 /// +---+----------+
2543 /// ```
2544 #[inline]
2545 pub fn fldpi(&mut self)
2546 where
2547 Assembler<'a>: FldpiEmitter,
2548 {
2549 <Self as FldpiEmitter>::fldpi(self);
2550 }
2551 /// `FLDZ`.
2552 ///
2553 /// Supported operand variants:
2554 ///
2555 /// ```text
2556 /// +---+----------+
2557 /// | # | Operands |
2558 /// +---+----------+
2559 /// | 1 | (none) |
2560 /// +---+----------+
2561 /// ```
2562 #[inline]
2563 pub fn fldz(&mut self)
2564 where
2565 Assembler<'a>: FldzEmitter,
2566 {
2567 <Self as FldzEmitter>::fldz(self);
2568 }
2569 /// `FMUL`.
2570 ///
2571 /// Supported operand variants:
2572 ///
2573 /// ```text
2574 /// +---+----------+
2575 /// | # | Operands |
2576 /// +---+----------+
2577 /// | 1 | Mem |
2578 /// +---+----------+
2579 /// ```
2580 #[inline]
2581 pub fn fmul_1<A>(&mut self, op0: A)
2582 where
2583 Assembler<'a>: FmulEmitter_1<A>,
2584 {
2585 <Self as FmulEmitter_1<A>>::fmul_1(self, op0);
2586 }
2587 /// `FMUL`.
2588 ///
2589 /// Supported operand variants:
2590 ///
2591 /// ```text
2592 /// +---+----------+
2593 /// | # | Operands |
2594 /// +---+----------+
2595 /// | 1 | St, St |
2596 /// +---+----------+
2597 /// ```
2598 #[inline]
2599 pub fn fmul_2<A, B>(&mut self, op0: A, op1: B)
2600 where
2601 Assembler<'a>: FmulEmitter_2<A, B>,
2602 {
2603 <Self as FmulEmitter_2<A, B>>::fmul_2(self, op0, op1);
2604 }
2605 /// `FMULP`.
2606 ///
2607 /// Supported operand variants:
2608 ///
2609 /// ```text
2610 /// +---+----------+
2611 /// | # | Operands |
2612 /// +---+----------+
2613 /// | 1 | St, St |
2614 /// +---+----------+
2615 /// ```
2616 #[inline]
2617 pub fn fmulp<A, B>(&mut self, op0: A, op1: B)
2618 where
2619 Assembler<'a>: FmulpEmitter<A, B>,
2620 {
2621 <Self as FmulpEmitter<A, B>>::fmulp(self, op0, op1);
2622 }
2623 /// `FNOP`.
2624 ///
2625 /// Supported operand variants:
2626 ///
2627 /// ```text
2628 /// +---+----------+
2629 /// | # | Operands |
2630 /// +---+----------+
2631 /// | 1 | (none) |
2632 /// +---+----------+
2633 /// ```
2634 #[inline]
2635 pub fn fnop(&mut self)
2636 where
2637 Assembler<'a>: FnopEmitter,
2638 {
2639 <Self as FnopEmitter>::fnop(self);
2640 }
2641 /// `FPATAN`.
2642 ///
2643 /// Supported operand variants:
2644 ///
2645 /// ```text
2646 /// +---+----------+
2647 /// | # | Operands |
2648 /// +---+----------+
2649 /// | 1 | (none) |
2650 /// +---+----------+
2651 /// ```
2652 #[inline]
2653 pub fn fpatan(&mut self)
2654 where
2655 Assembler<'a>: FpatanEmitter,
2656 {
2657 <Self as FpatanEmitter>::fpatan(self);
2658 }
2659 /// `FPREM`.
2660 ///
2661 /// Supported operand variants:
2662 ///
2663 /// ```text
2664 /// +---+----------+
2665 /// | # | Operands |
2666 /// +---+----------+
2667 /// | 1 | (none) |
2668 /// +---+----------+
2669 /// ```
2670 #[inline]
2671 pub fn fprem(&mut self)
2672 where
2673 Assembler<'a>: FpremEmitter,
2674 {
2675 <Self as FpremEmitter>::fprem(self);
2676 }
2677 /// `FPREM1`.
2678 ///
2679 /// Supported operand variants:
2680 ///
2681 /// ```text
2682 /// +---+----------+
2683 /// | # | Operands |
2684 /// +---+----------+
2685 /// | 1 | (none) |
2686 /// +---+----------+
2687 /// ```
2688 #[inline]
2689 pub fn fprem1(&mut self)
2690 where
2691 Assembler<'a>: Fprem1Emitter,
2692 {
2693 <Self as Fprem1Emitter>::fprem1(self);
2694 }
2695 /// `FPTAN`.
2696 ///
2697 /// Supported operand variants:
2698 ///
2699 /// ```text
2700 /// +---+----------+
2701 /// | # | Operands |
2702 /// +---+----------+
2703 /// | 1 | (none) |
2704 /// +---+----------+
2705 /// ```
2706 #[inline]
2707 pub fn fptan(&mut self)
2708 where
2709 Assembler<'a>: FptanEmitter,
2710 {
2711 <Self as FptanEmitter>::fptan(self);
2712 }
2713 /// `FRNDINT`.
2714 ///
2715 /// Supported operand variants:
2716 ///
2717 /// ```text
2718 /// +---+----------+
2719 /// | # | Operands |
2720 /// +---+----------+
2721 /// | 1 | (none) |
2722 /// +---+----------+
2723 /// ```
2724 #[inline]
2725 pub fn frndint(&mut self)
2726 where
2727 Assembler<'a>: FrndintEmitter,
2728 {
2729 <Self as FrndintEmitter>::frndint(self);
2730 }
2731 /// `FRSTOR`.
2732 ///
2733 /// Supported operand variants:
2734 ///
2735 /// ```text
2736 /// +---+----------+
2737 /// | # | Operands |
2738 /// +---+----------+
2739 /// | 1 | Mem |
2740 /// +---+----------+
2741 /// ```
2742 #[inline]
2743 pub fn frstor<A>(&mut self, op0: A)
2744 where
2745 Assembler<'a>: FrstorEmitter<A>,
2746 {
2747 <Self as FrstorEmitter<A>>::frstor(self, op0);
2748 }
2749 /// `FSAVE`.
2750 ///
2751 /// Supported operand variants:
2752 ///
2753 /// ```text
2754 /// +---+----------+
2755 /// | # | Operands |
2756 /// +---+----------+
2757 /// | 1 | Mem |
2758 /// +---+----------+
2759 /// ```
2760 #[inline]
2761 pub fn fsave<A>(&mut self, op0: A)
2762 where
2763 Assembler<'a>: FsaveEmitter<A>,
2764 {
2765 <Self as FsaveEmitter<A>>::fsave(self, op0);
2766 }
2767 /// `FSCALE`.
2768 ///
2769 /// Supported operand variants:
2770 ///
2771 /// ```text
2772 /// +---+----------+
2773 /// | # | Operands |
2774 /// +---+----------+
2775 /// | 1 | (none) |
2776 /// +---+----------+
2777 /// ```
2778 #[inline]
2779 pub fn fscale(&mut self)
2780 where
2781 Assembler<'a>: FscaleEmitter,
2782 {
2783 <Self as FscaleEmitter>::fscale(self);
2784 }
2785 /// `FSIN`.
2786 ///
2787 /// Supported operand variants:
2788 ///
2789 /// ```text
2790 /// +---+----------+
2791 /// | # | Operands |
2792 /// +---+----------+
2793 /// | 1 | (none) |
2794 /// +---+----------+
2795 /// ```
2796 #[inline]
2797 pub fn fsin(&mut self)
2798 where
2799 Assembler<'a>: FsinEmitter,
2800 {
2801 <Self as FsinEmitter>::fsin(self);
2802 }
2803 /// `FSINCOS`.
2804 ///
2805 /// Supported operand variants:
2806 ///
2807 /// ```text
2808 /// +---+----------+
2809 /// | # | Operands |
2810 /// +---+----------+
2811 /// | 1 | (none) |
2812 /// +---+----------+
2813 /// ```
2814 #[inline]
2815 pub fn fsincos(&mut self)
2816 where
2817 Assembler<'a>: FsincosEmitter,
2818 {
2819 <Self as FsincosEmitter>::fsincos(self);
2820 }
2821 /// `FSQRT`.
2822 ///
2823 /// Supported operand variants:
2824 ///
2825 /// ```text
2826 /// +---+----------+
2827 /// | # | Operands |
2828 /// +---+----------+
2829 /// | 1 | (none) |
2830 /// +---+----------+
2831 /// ```
2832 #[inline]
2833 pub fn fsqrt(&mut self)
2834 where
2835 Assembler<'a>: FsqrtEmitter,
2836 {
2837 <Self as FsqrtEmitter>::fsqrt(self);
2838 }
2839 /// `FST`.
2840 ///
2841 /// Supported operand variants:
2842 ///
2843 /// ```text
2844 /// +---+----------+
2845 /// | # | Operands |
2846 /// +---+----------+
2847 /// | 1 | Mem |
2848 /// | 2 | St |
2849 /// +---+----------+
2850 /// ```
2851 #[inline]
2852 pub fn fst<A>(&mut self, op0: A)
2853 where
2854 Assembler<'a>: FstEmitter<A>,
2855 {
2856 <Self as FstEmitter<A>>::fst(self, op0);
2857 }
2858 /// `FSTCW`.
2859 ///
2860 /// Supported operand variants:
2861 ///
2862 /// ```text
2863 /// +---+----------+
2864 /// | # | Operands |
2865 /// +---+----------+
2866 /// | 1 | Mem |
2867 /// +---+----------+
2868 /// ```
2869 #[inline]
2870 pub fn fstcw<A>(&mut self, op0: A)
2871 where
2872 Assembler<'a>: FstcwEmitter<A>,
2873 {
2874 <Self as FstcwEmitter<A>>::fstcw(self, op0);
2875 }
2876 /// `FSTENV`.
2877 ///
2878 /// Supported operand variants:
2879 ///
2880 /// ```text
2881 /// +---+----------+
2882 /// | # | Operands |
2883 /// +---+----------+
2884 /// | 1 | Mem |
2885 /// +---+----------+
2886 /// ```
2887 #[inline]
2888 pub fn fstenv<A>(&mut self, op0: A)
2889 where
2890 Assembler<'a>: FstenvEmitter<A>,
2891 {
2892 <Self as FstenvEmitter<A>>::fstenv(self, op0);
2893 }
2894 /// `FSTP`.
2895 ///
2896 /// Supported operand variants:
2897 ///
2898 /// ```text
2899 /// +---+----------+
2900 /// | # | Operands |
2901 /// +---+----------+
2902 /// | 1 | Mem |
2903 /// | 2 | St |
2904 /// +---+----------+
2905 /// ```
2906 #[inline]
2907 pub fn fstp<A>(&mut self, op0: A)
2908 where
2909 Assembler<'a>: FstpEmitter<A>,
2910 {
2911 <Self as FstpEmitter<A>>::fstp(self, op0);
2912 }
2913 /// `FSTSW`.
2914 ///
2915 /// Supported operand variants:
2916 ///
2917 /// ```text
2918 /// +---+----------+
2919 /// | # | Operands |
2920 /// +---+----------+
2921 /// | 1 | Gpd |
2922 /// | 2 | Mem |
2923 /// +---+----------+
2924 /// ```
2925 #[inline]
2926 pub fn fstsw<A>(&mut self, op0: A)
2927 where
2928 Assembler<'a>: FstswEmitter<A>,
2929 {
2930 <Self as FstswEmitter<A>>::fstsw(self, op0);
2931 }
2932 /// `FSUB`.
2933 ///
2934 /// Supported operand variants:
2935 ///
2936 /// ```text
2937 /// +---+----------+
2938 /// | # | Operands |
2939 /// +---+----------+
2940 /// | 1 | Mem |
2941 /// +---+----------+
2942 /// ```
2943 #[inline]
2944 pub fn fsub_1<A>(&mut self, op0: A)
2945 where
2946 Assembler<'a>: FsubEmitter_1<A>,
2947 {
2948 <Self as FsubEmitter_1<A>>::fsub_1(self, op0);
2949 }
2950 /// `FSUB`.
2951 ///
2952 /// Supported operand variants:
2953 ///
2954 /// ```text
2955 /// +---+----------+
2956 /// | # | Operands |
2957 /// +---+----------+
2958 /// | 1 | St, St |
2959 /// +---+----------+
2960 /// ```
2961 #[inline]
2962 pub fn fsub_2<A, B>(&mut self, op0: A, op1: B)
2963 where
2964 Assembler<'a>: FsubEmitter_2<A, B>,
2965 {
2966 <Self as FsubEmitter_2<A, B>>::fsub_2(self, op0, op1);
2967 }
2968 /// `FSUBP`.
2969 ///
2970 /// Supported operand variants:
2971 ///
2972 /// ```text
2973 /// +---+----------+
2974 /// | # | Operands |
2975 /// +---+----------+
2976 /// | 1 | St, St |
2977 /// +---+----------+
2978 /// ```
2979 #[inline]
2980 pub fn fsubp<A, B>(&mut self, op0: A, op1: B)
2981 where
2982 Assembler<'a>: FsubpEmitter<A, B>,
2983 {
2984 <Self as FsubpEmitter<A, B>>::fsubp(self, op0, op1);
2985 }
2986 /// `FSUBR`.
2987 ///
2988 /// Supported operand variants:
2989 ///
2990 /// ```text
2991 /// +---+----------+
2992 /// | # | Operands |
2993 /// +---+----------+
2994 /// | 1 | Mem |
2995 /// +---+----------+
2996 /// ```
2997 #[inline]
2998 pub fn fsubr_1<A>(&mut self, op0: A)
2999 where
3000 Assembler<'a>: FsubrEmitter_1<A>,
3001 {
3002 <Self as FsubrEmitter_1<A>>::fsubr_1(self, op0);
3003 }
3004 /// `FSUBR`.
3005 ///
3006 /// Supported operand variants:
3007 ///
3008 /// ```text
3009 /// +---+----------+
3010 /// | # | Operands |
3011 /// +---+----------+
3012 /// | 1 | St, St |
3013 /// +---+----------+
3014 /// ```
3015 #[inline]
3016 pub fn fsubr_2<A, B>(&mut self, op0: A, op1: B)
3017 where
3018 Assembler<'a>: FsubrEmitter_2<A, B>,
3019 {
3020 <Self as FsubrEmitter_2<A, B>>::fsubr_2(self, op0, op1);
3021 }
3022 /// `FSUBRP`.
3023 ///
3024 /// Supported operand variants:
3025 ///
3026 /// ```text
3027 /// +---+----------+
3028 /// | # | Operands |
3029 /// +---+----------+
3030 /// | 1 | St, St |
3031 /// +---+----------+
3032 /// ```
3033 #[inline]
3034 pub fn fsubrp<A, B>(&mut self, op0: A, op1: B)
3035 where
3036 Assembler<'a>: FsubrpEmitter<A, B>,
3037 {
3038 <Self as FsubrpEmitter<A, B>>::fsubrp(self, op0, op1);
3039 }
3040 /// `FTST`.
3041 ///
3042 /// Supported operand variants:
3043 ///
3044 /// ```text
3045 /// +---+----------+
3046 /// | # | Operands |
3047 /// +---+----------+
3048 /// | 1 | (none) |
3049 /// +---+----------+
3050 /// ```
3051 #[inline]
3052 pub fn ftst(&mut self)
3053 where
3054 Assembler<'a>: FtstEmitter,
3055 {
3056 <Self as FtstEmitter>::ftst(self);
3057 }
3058 /// `FUCOM`.
3059 ///
3060 /// Supported operand variants:
3061 ///
3062 /// ```text
3063 /// +---+----------+
3064 /// | # | Operands |
3065 /// +---+----------+
3066 /// | 1 | St |
3067 /// +---+----------+
3068 /// ```
3069 #[inline]
3070 pub fn fucom<A>(&mut self, op0: A)
3071 where
3072 Assembler<'a>: FucomEmitter<A>,
3073 {
3074 <Self as FucomEmitter<A>>::fucom(self, op0);
3075 }
3076 /// `FUCOMP`.
3077 ///
3078 /// Supported operand variants:
3079 ///
3080 /// ```text
3081 /// +---+----------+
3082 /// | # | Operands |
3083 /// +---+----------+
3084 /// | 1 | St |
3085 /// +---+----------+
3086 /// ```
3087 #[inline]
3088 pub fn fucomp<A>(&mut self, op0: A)
3089 where
3090 Assembler<'a>: FucompEmitter<A>,
3091 {
3092 <Self as FucompEmitter<A>>::fucomp(self, op0);
3093 }
3094 /// `FUCOMPP`.
3095 ///
3096 /// Supported operand variants:
3097 ///
3098 /// ```text
3099 /// +---+----------+
3100 /// | # | Operands |
3101 /// +---+----------+
3102 /// | 1 | (none) |
3103 /// +---+----------+
3104 /// ```
3105 #[inline]
3106 pub fn fucompp(&mut self)
3107 where
3108 Assembler<'a>: FucomppEmitter,
3109 {
3110 <Self as FucomppEmitter>::fucompp(self);
3111 }
3112 /// `FXAM`.
3113 ///
3114 /// Supported operand variants:
3115 ///
3116 /// ```text
3117 /// +---+----------+
3118 /// | # | Operands |
3119 /// +---+----------+
3120 /// | 1 | (none) |
3121 /// +---+----------+
3122 /// ```
3123 #[inline]
3124 pub fn fxam(&mut self)
3125 where
3126 Assembler<'a>: FxamEmitter,
3127 {
3128 <Self as FxamEmitter>::fxam(self);
3129 }
3130 /// `FXCH`.
3131 ///
3132 /// Supported operand variants:
3133 ///
3134 /// ```text
3135 /// +---+----------+
3136 /// | # | Operands |
3137 /// +---+----------+
3138 /// | 1 | St |
3139 /// +---+----------+
3140 /// ```
3141 #[inline]
3142 pub fn fxch<A>(&mut self, op0: A)
3143 where
3144 Assembler<'a>: FxchEmitter<A>,
3145 {
3146 <Self as FxchEmitter<A>>::fxch(self, op0);
3147 }
3148 /// `FXTRACT`.
3149 ///
3150 /// Supported operand variants:
3151 ///
3152 /// ```text
3153 /// +---+----------+
3154 /// | # | Operands |
3155 /// +---+----------+
3156 /// | 1 | (none) |
3157 /// +---+----------+
3158 /// ```
3159 #[inline]
3160 pub fn fxtract(&mut self)
3161 where
3162 Assembler<'a>: FxtractEmitter,
3163 {
3164 <Self as FxtractEmitter>::fxtract(self);
3165 }
3166 /// `FYL2X`.
3167 ///
3168 /// Supported operand variants:
3169 ///
3170 /// ```text
3171 /// +---+----------+
3172 /// | # | Operands |
3173 /// +---+----------+
3174 /// | 1 | (none) |
3175 /// +---+----------+
3176 /// ```
3177 #[inline]
3178 pub fn fyl2x(&mut self)
3179 where
3180 Assembler<'a>: Fyl2xEmitter,
3181 {
3182 <Self as Fyl2xEmitter>::fyl2x(self);
3183 }
3184 /// `FYL2XP1`.
3185 ///
3186 /// Supported operand variants:
3187 ///
3188 /// ```text
3189 /// +---+----------+
3190 /// | # | Operands |
3191 /// +---+----------+
3192 /// | 1 | (none) |
3193 /// +---+----------+
3194 /// ```
3195 #[inline]
3196 pub fn fyl2xp1(&mut self)
3197 where
3198 Assembler<'a>: Fyl2xp1Emitter,
3199 {
3200 <Self as Fyl2xp1Emitter>::fyl2xp1(self);
3201 }
3202}